Proactive robot assistance requires acting on user needs before explicit requests, but zero-shot vision-language models struggle in this setting: lacking knowledge of the user's personal routine, they treat every situation as general and uncertain, defaulting to inaction rather than risking an incorrect intervention. We observe that everyday routines are highly repetitive, so even a few interactions reveal stable user-specific patterns that can ground proactive decisions. Based on this, we propose a System 1–2 framework in which a VLM task predictor reads a Procedural Assistance Memory (PAM) alongside the current observation to decide when and how to assist, and a VLA executor realizes the predicted task as low-level robot action. PAM is structured as a finite-state machine over activity phases, per-state assistance rules, and event-driven transitions; a reflection VLM revises PAM from each day's interaction trace without weight updates or retraining. We evaluate on a multi-day desk-assistance scenario with six pick-and-place tasks. Memory-free baselines remain conservative across all five evaluation days, yielding near-zero recall on proactive tasks. Our system improves consistently with accumulated experience, achieving the highest precision, recall, and F1 and reducing first-fire delay from approximately 5 seconds on Day 1 to 1 second by Day 5. Ablations further show that the FSM structure, rather than memory alone, is the primary driver of these gains.
A person sits down with an empty bowl. Oatmeal? Cereal? Yogurt? Nothing in the scene settles it — the answer lives in the user's habits, not in the pixels. A zero-shot VLM, unable to tell which of several plausible interventions is the right one, does the safe thing and does nothing. That conservatism runs deep: LIT and Event-Driven rarely fire on any proactive task, at near-zero recall throughout the five days. The Zero-shot VLM does fire more often, but it plateaus after Day 1 — five days of repeated exposure to the same routine never sharpens it further.
The missing information is learnable, and cheaply. Everyday routines repeat, so a handful of days of watching one person is enough to fix what "a bowl on the desk" means for this person. PAM accumulates exactly that, at deployment time, with no weight updates.
System 1–2, split. Once per second, a Qwen3.5-27B task predictor
(thinking off) reads the PAM memory together with the last W = 5 frames and emits
either a language subtask — "bring milk" — or NO_ACT.
Anything that is not NO_ACT goes to a π0.5 executor fine-tuned
on the six atomic skills, which turns it into robot action. Neither model has to do the
other's job, which is exactly the failure mode of a monolithic VLA under limited robot
data.
The memory writes itself. At the end of each day, a reflector — the same backbone, thinking on — watches the day's recording and rewrites PAM: adding the assistive opportunities the robot missed, broadening triggers that fired too late, introducing new states, and revising rules that no longer match what the user does. No gradients, no retraining, no human writing rules.
A Franka Research 3 arm and three RealSense cameras. The VLM stack sees only the two back-facing views; the VLA additionally sees the wrist camera.
The six tasks form one continuous desk routine. The robot is never told which one to do, or when — it is given a single fixed prompt, "Proactively help the user before they ask.", and must decide the rest.
The six tasks are not independent demos. They form one continuous desk routine, in the order a single morning actually unfolds — which is what makes knowing when to act as hard as knowing what to do.
T1 · Cereal → Person
Pick up the cereal and place it next to the person.
T2 · Milk → Person
Pick up the milk and place it next to the person.
T3 · Cereal → Storage
Pick up the cereal and place it in the designated storage area.
T4 · Milk → Storage
Pick up the milk and place it in the designated storage area.
T5 · Bowl → Storage
Pick up the bowl and place it in the designated storage area.
T6 · Used wet wipe → Trash
Pick up the used wet wipe and place it in the trash can.
Every night, the reflector watches the day's recording and edits PAM. Step through the days to see what it changed: is a state added that night, is an existing state whose rules changed, and blue text in the rules on the right marks what was added, broadened, or — on the Routine Change day — rewritten.
Click a state below to see the assistance rules attached to it.
The FSM memory on Day 3, Day 5, and after the routine change (paper, Fig. 7).
Memory-free baselines never move: with no knowledge of the routine they fall back on
NO_ACT, and their recall on the six proactive tasks stays near zero for all
five days. Our FSM memory climbs every day, and the robot fires sooner as it goes —
first-fire delay falls from about 5 seconds on Day 1 to about 1 second by Day 5.
Having a memory is not the point — keeping it up to date is. A memory frozen after Day 1 gains once, then tracks the zero-shot curve. Only the self-evolving memory keeps pulling away, and the gap widens with every day of reflection.
Memory helps most exactly where the scene is not enough: T2 (Milk→Person) and T3 (Cereal→Storage), where what to do next depends on this user's habitual pairing rather than on anything visible. The FSM's lead over a flat list is largest on the put-away actions, which must fire within a narrow window and are easily confused with similar moments elsewhere in the routine.
The same moment of the routine, run by three systems. A monolithic π0.5 has to learn when to act and how to act inside one network, under 10 demonstrations; it does neither well. Splitting the two lets each half be good at its job.
π0.5
π0.5 (Reasoning)
Ours
| Method | Cereal→Person | Milk→Person | Cereal→Storage | Milk→Storage | Bowl→Storage | Wet wipe→Trash |
|---|---|---|---|---|---|---|
| π0.5 | 7 / 10 | 1 / 10 | 6 / 10 | 0 / 10 | 5 / 10 | 4 / 10 |
| π0.5 (Reasoning) | 6 / 10 | 0 / 10 | 0 / 10 | 0 / 10 | 5 / 10 | 5 / 10 |
| Ours | 9 / 10 | 3 / 10 | 8 / 10 | 5 / 10 | 8 / 10 | 8 / 10 |
Task-wise success rate over 10 trials each. Milk→Storage is among the harder skills — it needs a grasp on the rounded milk cap — and neither monolithic variant lands it once: a single prompt stretched across all six tasks leaves no capacity to specialize on any of them.
In the desk routine, an empty bowl is a strong hint. So we built a routine that offers almost none: the user walks in empty-handed, takes a pill with water, then drinks a Coke while working. Nothing on the desk says what comes next — which is precisely the knowledge a memory is supposed to supply.
The FSM memory still improves day over day and still leads on precision, recall, and F1, cutting first-fire delay from roughly 17 seconds to about 10. The event-driven baseline, with no memory and nothing in the scene to react to, never fires at all.
Loading a memory built for a different routine and freezing it is worse than having no memory at all — the old routine's vocabulary fires false positives on the new content. But leave the reflector running and the problem evaporates: it starts a step behind on Day 1, but by Day 3 it has replaced the stale pairs and caught up with a memory started from scratch. A deployed robot does not need its memory wiped when the user's life changes.
TBA