A robot that cooks
The robot here is a π0-family VLA: it looks at the scene and emits 10 joint-action frames at a time, twenty per second. The task is LIBERO-10 SCENE8 — put two moka pots onto the stove, one after the other.
Robot-Whisper · VLA · LIBERO-10
The hands keep moving, but something has already gone wrong — and the first to know is neither the image nor the action, but the neurons deep inside the model. We learned to hear that unspoken warning, and rewrote the ending before it was written.
向内探寻,向外进化。 Seek within. Evolve beyond.
The idea
Start with an old result on reasoning LLMs: a probe we called NAD could pick, among a model's candidate answers, the one more likely to be right — without reading a single word, from neuron activity alone. Confidence and hesitation were never written into the tokens, but the internal state carried them. Take the same idea into embodied AI: would the inside of a VLA model hold a similar signal?
The robot here is a π0-family VLA: it looks at the scene and emits 10 joint-action frames at a time, twenty per second. The task is LIBERO-10 SCENE8 — put two moka pots onto the stove, one after the other.
Not a wrong answer — an arm hanging frozen in mid-air, or a pot picked up and put down, shuttling between the two, until the 52-step timeout.
Inside its backbone, every step and every layer lights up a small, sparse set of neuron activations. If the NAD idea holds, a frozen sense of confidence should be written on that roster too.
The physical world
Fix one initial state, vary only the sampling noise, run 32 rollouts: 14 succeed, 18 repeat the same motion until timeout. Some hover without moving; some circle in place — two faces of the same thing: caught in a trap. And on the action stream, nothing shows.
At every stuck step the model still emits 10 action frames of ordinary magnitude — the action sequence cannot tell "working" from "spinning".
Success waits for a boolean check to flip at the last moment; and "long" is ambiguous — a slow success and a fast failure read the same.
Hovering or circling, the action stream reads the same — the trap is not written in the actions. Next: into the neurons.
Neurons
At every control step the model lights a small set of neurons — across four deep layers and 11 action tokens, together they form the shape of the model's thinking at that instant. We call it the pattern. At first we tried to read anomaly out of who was lit. Identity gave no answer: it is a fingerprint of the scene, wholly reshuffled by a new initial state. What carries meaning is its dynamics — when things go well, the pattern turns over with the world, thought in flow; when the run is caught, the turnover stops, the same neurons fire again and again, and the thinking freezes onto a single instant. The signal is not in the content. It is in the flow.
The alarm
In plain terms: think of the neurons lit at each step as one point in a high-dimensional space. A rollout traces those points into a path. While the arm is working, the path keeps moving; the moment it falls into a trap, the path stops moving — even though the arm is still waving. So the alarm never has to understand the task. It only straps a speedometer to that path: when the speed drops to nearly zero, the run has stalled.
Compare the neurons lit on adjacent steps: the more they overlap, the less this step moved. Measure that displacement as 1 − intersection/union, average it into one number, ds — the path's instantaneous speed. It never asks which neurons are lit, only how many changed.
Every run cruises at its own speed, so there is no universal scale to compare against. Take its own first 8 steps as 1, then divide the mean of the last 4 steps by it — the ratio r(t) simply says how much slower it is now than when it started. Below 1 it is slowing down; sliding further down, it is coming to a stop.
Three consecutive control steps with r(t) < 0.95 — i.e. more than 5% slower than its own start — and the run is ruled stalled: the alarm fires. No exemptions, no context; all four constants were frozen before the rescue experiment and never retuned across data.
This alarm knows nothing of the task — only the path. From start to finish it asks one question: is this orbit still moving? To make an analogy: it is like an ECG taped to the model — the moment the beat stops, it speaks.
Results
Tested online, across different tasks and different initial states — 864 rollouts. The alarm sees no images, no actions, no task labels — only the pattern.
Between the cruising zone and the stall point lies a wide, gentle slope: wherever θ is drawn on it, the false-alarm rate varies smoothly. Nudge the constants, and the conclusion stands.
Nearly every false alarm is a slow success — an orbit that decelerates, grazes the rim of the stall point's pull, then climbs back to cruising. The alarm names them at their slowest steps, and it isn't wrong: at that moment they really are sliding toward the trap. So read the alarm as "falling", not "doomed" — exactly the reading the first-aid experiment uses.
Stuck → observations unchanged → model inputs unchanged → neuron activations unchanged — what this alarm hears is the echo, inside the neurons, of a world that has stopped. But for a robot that is supposed to be putting pots on a stove, the world is not supposed to stop: at every step the model emits actions of ordinary magnitude, and the world doesn't move — the actions themselves are wrong. The stalled world isn't weather from outside; it is a stall point of the model's own making: model → action → world → observation → model, the whole loop seized in place. What the alarm hears is that loop idling — which is also why it is reliable, cheap, and portable: the verdict needs no understanding of the task, only an ear for idling.
864 rollouts · 4 layers · sparse neuron activations layers 12–15 × 11 action tokens · denoise round 9 · 1 control step = 10 frames = 0.5 s · LIBERO-10 SCENE8
First aid!!
Detection is an offline judge; rescue is an online bet. Let the frozen detector watch a live rollout: it fires at q32 → freeze the state → inject a little perturbation, say a big change of the sampling noise → continue. Everything else stays put. A kick that knocks the path out of the stall point's pull — then see if it climbs back to cruising.
Overview
Summary


@misc{cckfdu2026robotwhisper,
title = {Robot-Whisper: Neurons See the State the Tokens Don't —
An Embodied Anomaly Alarm Read from Neuron Activations},
author = {Chen, Kang},
year = {2026},
howpublished = {\url{https://cckfdu.com/demo/robot-whisper/}},
note = {Technical demo. Code: https://github.com/Cck123123/Robot-Whisper},
}
@misc{chen2025nad,
title = {Do LLMs Signal When They're Right? Evidence from Neuron Agreement},
author = {Chen, Kang and Wang, Yaoning and Xiong, Kai and Feng, Zhuoka and
Sun, Wenhe and Chen, Haotian and Cao, Yixin},
year = {2025},
eprint = {2510.26277},
archivePrefix = {arXiv},
primaryClass = {cs.CL},
note = {Neuron Agreement Decoding (NAD). ICML 2026 (Spotlight)},
url = {https://arxiv.org/abs/2510.26277},
}detector neuron-set overlap distance, layers 12–15 × 11 action tokens, denoise 9 r(t) mean(last W=4) / mean(own first W0=8) alarm K=3 consecutive control steps with r(t) < θ=0.95 frozen constants fixed before the rescue run; never tuned on it corpus 864 rollouts · one frozen set of constants result 81.2% correct online (majority baseline 61.5%) alarms archived batch: 203 = 184 hits + 19 false alarms · q18–q36, median q28 recall 80% of failures · false-alarm 17% rescue alarm q32 → resample noise → 3/8 succeed · 8 vs 52 steps · 26.0 s → 3.9 s limits other init 0/8 · random-step also 3/8 · magnitude picks no winner (n=1)
向内探寻,向外进化。Seek within. Evolve beyond.