惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tenable Blog
博客园_首页
Vercel News
Vercel News
WordPress大学
WordPress大学
美团技术团队
G
Google Developers Blog
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
Y
Y Combinator Blog
博客园 - 【当耐特】
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
The Cloudflare Blog
T
The Blog of Author Tim Ferriss
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News
云风的 BLOG
云风的 BLOG
腾讯CDC
M
MIT News - Artificial intelligence
爱范儿
爱范儿
Recent Announcements
Recent Announcements
雷峰网
雷峰网
Last Week in AI
Last Week in AI
宝玉的分享
宝玉的分享
The Register - Security
The Register - Security
Jina AI
Jina AI
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Hugging Face - Blog
Hugging Face - Blog
P
Privacy & Cybersecurity Law Blog
Recorded Future
Recorded Future
Help Net Security
Help Net Security
N
News and Events Feed by Topic
博客园 - Franky
P
Proofpoint News Feed
L
LINUX DO - 热门话题
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
D
Docker
Google DeepMind News
Google DeepMind News
有赞技术团队
有赞技术团队
IT之家
IT之家
Security Latest
Security Latest
L
LangChain Blog
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
J
Java Code Geeks

Hacker News

randoFont GitHub - onehorizonai/silo-terminal: A dark phosphor Apple Terminal profile inspired by the sealed systems and green-blue screens of Silo. GitHub - unihosted/unifi-os-server-docker Show HN: Onboard-CLI–a fast developer tool built in Go uses AST and LLM Show HN: Finterm.ai Finance CLI for Claude Code and Codex Show HN: Codex Explorer,一款用于 Codex CLI 的本地会话管理器 Pylon — full-stack framework for coding agents GitHub - Corgea/Sighthound: Corgea's rule-based SAST scanner Kastra | Execution Governance for AI Systems devthropology.com Embersent — Know Exactly Who Read Your Document GodUI — UI Collection for Modern Interfaces Show HN: Reverse-engineering web apps into agent tools GitHub - Kuberwastaken/subagentmaxxing: Drive OpenAI Codex & Cursor CLI coding agents as subagents with the same ergonomics as native Claude Code subagents (grok-4.5, composer-2.5, gpt-5.5). Uniform run/fanout CLI + Claude Code skill. Aside Today I’m launching papercrane-cli: a BI tool built for Claude Code | Papercrane Blog Strata - Guess the City from a 3D Map a dark terminal Blocks.ai | Connect your agent to the world. Noticky — Sticky Notes & Always-on-Top Windows for Mac Make the hard day easier for the people you love CASHFLOW — Debt Network Optimizer 0 A.D.: Empires Ascendant FormGrid - Create Delightful Forms & Surveys for Free Codapult — Everything Your SaaS Needs, Already Wired Together LaTeX Diff Viewer - GitHub Marketplace LinguaGuessr analog.watch Estimania — Daily Estimation Game I Replaced Whisper with Parakeet on a $55/Month CPU Server. Here Is What Actually Happened. HyperSwitcher – Mac App & Window Switcher CLERC-DATA/epee · Datasets at Hugging Face GitHub - gladiaio/gladia-cli EvenKeel — your money coach BareMetalRT — Bare Metal AI Build a Second Brain That Actually Remembers Why It Changed Tokenstead - Find AI Models for Your Hardware Fideby - Standing by the people you trust, when you can rubber duck GitHub - forgedculture/legibility-field-kit GitHub - ronak-create/FableCut: Zero-dependency browser video editor that AI agents can drive — JSON timeline, MCP + REST, live-reloading UI Fehu - Apps on Google Play GitHub - fresswolf/Slopera: The browser for the slop era Release Kiyeovo 1.0.0 · Realman78/Kiyeovo Noema — AI Company Analysis GitHub - hamidi-dev/opentab: 📊 Browse your AI coding spend in the terminal — OpenCode, Claude Code, Codex & more GitHub - sgInnora/wc2026-prediction-ledger: Receipt-verified AI prediction ledger for World Cup 2026: pre-kickoff sha256-locked forecasts scored vs results, with calibration + market baselines. Live: goalpulse.io/open-data GitHub - michaelwrites67-ctrl/yogen: 予言 Yogen — a 500-agent AI swarm that debates your idea and predicts the outcome. Self-host free with your own Anthropic key. GitHub - teddytennant/wizard: Self-extending autonomous agent in one Rust binary. One-line install, any provider (OpenAI-compatible, Anthropic, xAI) or fully local via llama.cpp, live /evolve self-modification, MCP, messaging gateway, built-in bench arcaide.foo Show HN: Android Developer Verification Package blacklisted in Aurora Store OpenDescent: Private messaging for normal people GitHub - tarunlnmiit/autopilot-jobhunt: AI job agent: scans 130+ careers pages nightly, scores every role against your resume with an LLM (0–100), alerts you on Telegram, and drafts tailored cover letters + resumes. Free & open source. 18 Words - Daily Word Challenge The State of US Local Government Accessibility 2026 flow - Real-time network throughput dashboard for the terminal. - Terminal Trove Battle LLM Robots GitHub - robesris/ffvii-realtime: Speed up Final Fantasy VII (Rebirth / Remake / Revelation) Tactical Mode slow-motion so combat plays at real-time speed Agent Sessions - Local History for AI Coding Agents Scrutora — code, cloud & consent compliance in one platform SoulOS Tutorials GitHub - gaemi/agentic-fc: Open-source football management simulation played by AI agents through MCP and watched through a TUI console. GitHub - talalalrwas/ocr-grab: Flameshot clone that adds OCR. GitHub - JustVugg/colibri: Run GLM-5.2 (744B MoE) on a 25GB-RAM consumer machine — pure C, zero deps, experts streamed from disk. Tiny engine, immense model. 🐦 GitHub - saifmukhtar/kinetic figment computer linear.gratis - Free Linear Client Feedback Forms GitHub - atelier-ws/atelier: Runtime for coding agents. Models are getting smarter, but a model is only as capable as the environment supporting it. Atelier is that environment. https://atelier.ws Atlas · Tomesphere | Tomesphere Codenames Generator GitHub - lyfeninja/lyfeninja_blkseal_python_sdk: Lightweight Python client for signing and verifying digital content using lyfe.ninja's BlkSeal product powered by BlkBolt™. Designed for zero dependencies, simple integration, and exact content verification. DateTimeMate OpenScreenShot — Full-page screenshot & annotation tool for Chrome 38-0 — Build Your Premier League Dream Team Cyrinx — data over sound, measured GitHub - BhaveshThapar/mcp-audit HN Work GitHub - Northwood-Systems/foreman: Self-hosted LLM gateway. Cost effective, deterministic, and fast. Secure and private by default. A Visualization Language for the AI Era GitHub - weirdGuy/kastor: Declarative language and toolchain for AI agents: define agents, tools and prompts in HCL, then compile to frameworks or manage them on hosted platforms with plan/apply semantics. Abralo - Run multiple Claude Code agents in one window GitHub - mehranzand/repofleet: RepoFleet is an issue-centered CLI tool for managing Git workflows across multiple repositories. Pug — Open Source Product Analytics Chiptune Radio — Aleph Void, LLC Free Mermaid Live Editor & Diagram Maker GitHub - hirasso/html-obfuscator: Obfuscate emails, phone numbers, and other sensitive data in PHP. Invisible to humans, hidden from bots until they interact. Davit — a native macOS UI for Apple containers GitHub - rowboatlabs/rowboat: Open-source AI coworker, with memory Yamanote.fun PostgreSQL on AWS: Size & Benchmark EC2 Instances GitHub - Rodiun/frugon: Free, local, open-source LLM cost analyzer — see where your LLM bill leaks, on your machine. WhimFiles - Find Any File in Seconds Agent Draw: An agent draws while you talk, built on TLDraw Neil the Seal GitHub - animesh-94/Onboard-CLI: An AST-powered, local-first CLI that visualizes complex system architectures and enforces architectural boundaries via instant Git hooks. ridealong — live London trains Clusy | Agent-Native Notebook for ML and Data Science snowscroll · Instagram, without the spiral. GitHub - vishal-dehurdle/state-harness: Runtime safety net for LLM agents. Detects token spirals, kills doomed tasks early, tells you exactly why. Rust core, Python SDK. pip install state-harness GitHub - DO-SAY-GO/freelang: I love freelang
GitHub - BuceaGeorgia/VIRENA: A minimal Vision-Language-Action model you can read: frozen CLIP + a tiny head on ManiSkill PickCube. Runs on a Mac, no GPU.
georgia_buce · 2026-07-09 · via Hacker News

VIRENA: a minimal Vision-Language-Action model you can read


I built a small robot-learning model from scratch. It takes a camera image, an instruction, and the robot's joint state, and outputs motor commands to pick up a cube and place it at a target. It sat at 0% success for days. Bigger heads, more layers, different losses: none of it moved the number.

The fix was never the model. It was what the model could see. Twice, the thing that unblocked me was fixing the observation, not the architecture. Getting from 0% to a working policy turned out to be a debugging story rather than a modelling one, and that story is the most useful thing in this repo. (The exact number, 68% and later 93%, comes with a twist from the ablations further down.)

So VIRENA is really three things:

  1. A working VLA in about 2,000 lines that trains on a laptop (frozen CLIP plus a tiny trained head, no GPU needed).
  2. An ablation cookbook that measures what each trick is actually worth, with confidence intervals.
  3. A failure-diagnosis toolkit that tells you whether your policy is failing because of perception, control, or data. That is the thing I had to work out by hand, now packaged so you don't have to.

It's small enough to read in an afternoon, it runs on a Mac without a GPU, and it's built to teach you how these systems actually work and how they fail. If you're learning how a VLA fits together, or you want a compact base to hack your own ideas onto, that's who it's for.


The task

PickCube-v1 in the ManiSkill3 simulator. A Panda arm has to pick up a red cube and place it at a random 3D goal, within 2.5 cm, then hold still. The scene is randomized every episode. The model only ever gets a 128x128 camera image, the arm's joint angles, and the goal coordinate.

VIRENA solving PickCube

A trained rollout (external view). The policy itself only sees the small wrist image.


The 30-second mental model

Only two small pieces get trained: the AttentionPool and the MLP head, about 950k parameters between them. Both CLIP towers stay frozen. That's why it trains in a couple of hours on an M2 and doesn't need a GPU. The full walk-through lives in docs/ARCHITECTURE.md, written for engineers who know PyTorch but not robotics. Every term is defined the first time it shows up.


From 0% to a working policy

Every failure below was an observability problem. No model change fixed them. Changing what the model could observe did.

Finding 1: the camera was blind at the worst possible moment. The first setup used a fixed external camera. At the instant of grasping, the gripper itself covers the cube from that viewpoint. Watch the cube (the little red patch) disappear as the arm closes in:

base camera, start base camera, approach base camera, grasp

Before: fixed external camera. Cube clearly visible at the start, then swallowed by the gripper right when precision matters most. Success: 30%.

The symptom was easy to read once I looked for it: the hand-to-cube distance would improve, then flatten out at a hard floor around 3.3 cm, and it was the same floor for every architecture I tried. A floor that no model change can break is the fingerprint of a perception problem, not a learning one. You can't learn to close the last 3 cm to something you can't see.

The fix was a wrist-mounted camera (an "eye in hand") that keeps pointing at the cube through the grasp. Same cube, same grasp, but now the model can actually see what it's doing:

wrist camera, start wrist camera, approach wrist camera, grasp

After: wrist camera. The cube stays centered and visible all the way into the grasp. Success: 68%. Same everything else, +38 points from the camera alone.

Same expert, same joint data, only the image source changed. The floor dropped to 1.5 cm and grasping started working. The ablation below puts a number on it: keeping everything else identical and swapping the wrist camera back for the external one drops success from 68% to 30%.

Finding 2: the goal was literally invisible. Even with grasping solved, placement was impossible. In PickCube the goal is a hidden marker at a random 3D point, and it isn't rendered in any camera. The model was being asked to move the cube to a location it had no way to perceive. The fix is goal-conditioning: feed the goal coordinate in as an explicit 3D vector. That coordinate is the task specification, not privileged internal state.

The takeaway, and the reason the two tools below exist: when a robot policy fails, first ask whether it can even see what it needs. Do that before you touch the model.


The ablation cookbook: what each trick is worth

Every design choice is a single flag in config.py, and scripts/ablation.py trains a fresh model for each variant, evaluates them all on the same 100 seeded scenes, and reports a Wilson 95% confidence interval. Turning off one component at a time turns "I think this helped" into a number:

Ablation Success 95% CI vs full
no_chunking (single-step, chunk=1) 93% [86, 97] +25
full (everything on) 68% [58, 76] baseline
pooled_vision (global embedding, not patches) 68% [58, 76] +0
no_history (no proprio history) 68% [58, 76] +0
no_proprio_norm (raw proprio) 61% [51, 70] -7
no_goal_norm (raw goal) 54% [44, 63] -14
base_camera (external camera, occluded at grasp) 30% [22, 40] -38
no_goal_cond (drop the goal input) 1% [0, 5] -67

Reading it honestly, including two results I did not expect:

  • Goal-conditioning is the backbone (-67). Drop the goal vector and it collapses to 1%. That is Finding 2 quantified: with the goal invisible in the image, the model has nowhere to place the cube.
  • The wrist camera is worth +38. base_camera is Finding 1 quantified: identical everything, occluded viewpoint, and success falls from 68% to 30%.
  • Normalizing inputs matters (goal -14, proprio -7), the usual "keep your inputs on a sane scale" lesson.
  • Action chunking actually hurts here (+25 to remove it). This is the surprise. I added chunking because ACT does, but for PickCube at this scale, plain single-step closed-loop prediction (chunk=1) scores 93%, well above the chunked full at 68%. Chunking commits to stale actions; re-deciding every step wins. It also reframes an earlier inference-only result where temporal ensembling looked worth +25 points: ensembling was partly repairing the damage chunking did to the chunked model, but plain single-step beats both.
  • Two things I built make no measurable difference here: patch tokens vs the pooled CLIP embedding, and proprio history. Both land exactly at 68%. Good to know before I talk myself into believing they were essential.

The failure-diagnosis toolkit: perception, control, or data?

diagnose/ packages the debugging method into one command that returns a verdict of PERCEPTION, CONTROL, or DATA, with evidence. It combines a linear probe (can the frozen features even predict the actions?) with rollout signatures (distance floors, grasped-then-dropped, wandering).

$ python scripts/diagnose.py --checkpoint checkpoints/best.pt --seed 5

Perception probe   dim   probe R2
                    dx      0.754
                    dy      0.885     (features localise the cube fine)
                    dz      0.807
[rollout seed=5]  tcp_to_obj: min=0.028 (step 9) -> final=0.257
                  signatures: reached_then_left, grasped_then_lost

VERDICT: CONTROL  (confidence: high)
  - features encode the reach well, so perception is not the bottleneck
  - the target WAS grasped then lost, so it is clearly localizable
  -> Fix CONTROL: the failure is holding the grasp, not seeing it. If closed-loop
     is already on, the residual is fine-grained precision (edge-case data or resolution).

Point it at a policy and it tells you whether to fix the camera, the controller, or the data, with evidence instead of guesswork.


Quick start

One conda environment does everything (data collection, training, evaluation, diagnosis). Installing pinocchio from conda-forge first is the trick that lets ManiSkill's IK and the training stack coexist; a plain pip install of both hits a numpy conflict. On macOS the scripts set KMP_DUPLICATE_LIB_OK=TRUE for you so you don't hit the duplicate-OpenMP abort.

conda create -n virena python=3.12 && conda activate virena
conda install -c conda-forge pinocchio
pip install "mani-skill==3.0.1" torch torchvision transformers Pillow tqdm imageio

Try it without training

A pretrained single-step checkpoint (the 93% model) ships in the repo at pretrained/pickcube.pt, so after the install above you can run everything immediately, no data collection or training required:

python scripts/record_demo.py --checkpoint pretrained/pickcube.pt   # make the demo GIF
python scripts/eval_sim.py    --checkpoint pretrained/pickcube.pt --episodes 100
python scripts/diagnose.py    --checkpoint pretrained/pickcube.pt --seed 5

Train it yourself

# 1. Collect demonstrations (scripted expert, wrist camera, successes only)
python -m data_collection.collect --num-episodes 1200 --output-dir data/raw --success-only
python -m data_collection.build_dataset --episodes-dir data/raw/episodes --output data/dataset.jsonl --success-only

# 2. Train (single-step is the default; writes checkpoints/best.pt)
python scripts/train.py --epochs 50

# 3. Evaluate and diagnose
python scripts/eval_sim.py --episodes 100
python scripts/diagnose.py --checkpoint checkpoints/best.pt --seed 5

Optional: for fast model-only work (the perception probe, dataloader checks, training) you can use a lightweight pip venv with just requirements-model.txt and skip installing the simulator. It's a speed convenience, not a requirement.


Project layout

config.py                 every design toggle in one dataclass (saved into each checkpoint)
data_collection/          scripted expert -> sim rollouts -> JSONL dataset
model/
  vision/                 frozen CLIP patch tokens plus a trainable AttentionPool
  language/               frozen CLIP text encoder
  action/                 the trainable MLP head (action chunking)
  vla.py                  fuses the four input streams
  vla_policy.py           inference: temporal ensembling plus the gripper latch
dataset/                  chunks, masks, episode-level split, normalization stats
diagnose/                 the perception/control/data toolkit (probe, rollout, verdict, tasks)
scripts/                  train, eval_sim, ablation, diagnose
docs/ARCHITECTURE.md      the full guided explanation

Built on ManiSkill3 and OpenAI CLIP. Action chunking and temporal ensembling come from ACT (Zhao et al. 2023).

License

MIT. Do what you like with it; a link back is appreciated.