<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://sinwang20.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://sinwang20.github.io/" rel="alternate" type="text/html" /><updated>2026-09-02T22:32:42-07:00</updated><id>https://sinwang20.github.io/feed.xml</id><title type="html">Siyin Wang</title><subtitle>PhD Student at Fudan University</subtitle><author><name>Siyin Wang 王思尹</name><email>siyinwang20@fudan.edu.cn</email></author><entry><title type="html">In-Context Learning for Robots: What Should Actually Go in the Context?</title><link href="https://sinwang20.github.io/blog/robot-icl-en/" rel="alternate" type="text/html" title="In-Context Learning for Robots: What Should Actually Go in the Context?" /><published>2026-08-22T00:00:00-07:00</published><updated>2026-08-22T00:00:00-07:00</updated><id>https://sinwang20.github.io/blog/robot-icl-blog-en</id><content type="html" xml:base="https://sinwang20.github.io/blog/robot-icl-en/"><![CDATA[<p><a href="https://generalistai.com/blog/gen-1.5">GEN-1.5</a> takes a few seconds of sensorimotor data as a <em>physical prompt</em> and one-shots a new task. <a href="https://www.pi.website/blog/pi07">$\pi_{0.7}$</a> stuffs language, goal images, episode metadata, and history into a single prompt. RoboTTT \ref{RoboTTT} pushes visuomotor context out to 8K steps. Over the past year, “in-context learning” has quietly become one of the highest-frequency phrases in robot learning.</p>

<p>But lumping all of this under “robot ICL” hides something important: <strong>the things being loaded into the context are not the same kind of thing.</strong></p>

<p>Some contexts carry a task demonstration. Some carry human motion intent. Some carry a behavioral style. Some carry nothing but the robot’s own aimless flailing from five seconds ago. They share a word. They are not solving the same problem.</p>

<hr />

<h2 id="1-why-a-policy-needs-context-at-all">1. Why a policy needs context at all</h2>

<p>Almost every VLA policy today can be written as the same function, $\pi(a_t \mid o_t, l)$: given the current frame plus proprioception $o_t$, and a language instruction $l$, output the next action $a_t$.</p>

<p>The form is clean and it trains well. But it smuggles in a strong <strong>Markov assumption</strong>: everything you need to decide the next action is already present in the current frame. History doesn’t have to appear explicitly — its role has been compressed into the weights.</p>

<p>Statistical language models made exactly the same bet. The probability of a sentence should factor by the chain rule, each word conditioned on every word before it. That’s unestimable, so n-gram models stepped back and assumed each word depends only on the previous one or two.</p>

<p>That approximation died of two things.</p>

<p><strong>Long-range dependency.</strong> <em>“The keys to the cabinet ___ on the table.”</em> The blank is <em>are</em>, agreeing with <em>keys</em> five words back. The nearest noun is <em>cabinet</em>, which pulls hard toward <em>is</em>. A model that sees only the last two words is guaranteed to get it wrong.</p>

<p><strong>Data sparsity.</strong> With a 10K vocabulary, bigrams give you 10⁸ combinations and trigrams 10¹². No corpus is large enough; the overwhelming majority of counts are zero. Every token you add to the context makes sparsity worse by an order of magnitude — unless you stop counting and start generalizing.</p>

<p>Robotics is standing in roughly the same place.</p>

<p>Inside the training distribution, the Markov assumption works fine. Fixed camera, fixed arm, fixed table height, bounded task set: the model only has to learn one mapping from observation to action. But deployment produces changes it cannot absorb:</p>

<ul>
  <li>the current frame doesn’t reveal how far into the task you already are;</li>
  <li>the camera moved, so the relationship between pixel motion and robot coordinates changed;</li>
  <li>the arm or the end-effector was swapped, so the same action command now means different kinematics;</li>
  <li>the same task admits many styles — fast, slow, careful, brutal;</li>
  <li>new objects, new scenes, combinations that never appeared in training.</li>
</ul>

<p>These share one property: <strong>the current observation is not sufficient to determine the action, and the missing piece happens to be available somewhere else.</strong></p>

<p>So the policy gets one more input:</p>

\[\pi(a_t \mid o_t, l, \mathcal{C})\]

<p>$\mathcal{C}$ is the context. It might be a demonstration trajectory, a human video, a goal image, a few seconds of the robot’s own poking around, or the execution history of this episode so far.</p>

<p>Which leaves exactly one question: <strong>what should go in $\mathcal{C}$?</strong></p>

<hr />

<h2 id="2-which-uncertainty-is-the-context-resolving">2. Which uncertainty is the context resolving?</h2>

<p>The term <em>in-context learning</em> started with language models. Give the model this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Translate English to French:

sea otter    =&gt;  loutre de mer
peppermint   =&gt;  menthe poivrée
plush girafe =&gt;  girafe peluche

cheese =&gt;
</code></pre></div></div>

<p>and it completes <em>fromage</em>.</p>

<p>The model was never trained as an English–French translator. Not one byte of the weights moved. It inferred from a handful of examples what was going on here, and then did the fourth one.</p>

<p>It’s <strong>in-context</strong> because the acquisition happens inside the context window. It’s <strong>learning</strong> because the model ends up with a mapping it didn’t have before, and that mapping holds on inputs it never saw.</p>

<p>The robot analogue is nearly one-to-one: the language instruction is the spec, the demonstration trajectory is the worked example — a run of (observation, action) pairs from which the model figures out what this task <em>is</em>, then does it in a new scene. Weights still frozen.</p>

<p><img src="/images/icl_blog/icl-to-robot.png" alt="From few-shot prompting to robot in-context imitation" /></p>

<p>Robot context windows keep getting fuller, but the contents are not resolving the same uncertainty. There are roughly three kinds.</p>

<p><strong>(1) Which mapping to use.</strong> Language instructions, goal images, URDF and other embodiment metadata. These say what the objective is — but the mapping that achieves it was already in the weights. The instruction just selects one.</p>

<p><strong>(2) What the current state is.</strong> The last several frames of execution. The cup went into the left drawer; three of the five steps are done. The mapping is unchanged; what changed is the state you feed into it.</p>

<p><strong>(3) What the mapping itself is.</strong> Demonstration trajectories, human video. The model didn’t know how to do this. After reading the context, it does.</p>

<p><strong>Only the third one is learning.</strong> It resolves uncertainty about the mapping itself. The first two are just as useful and just as context-dependent, but after the model finishes reading, the function it uses to turn observations into actions has not changed.</p>

<p>Written out, the difference lands in one place. Split the policy into the part frozen at training time and the part determined by context:</p>

\[\pi(a_t \mid o_t, l, \mathcal{C}) = f_\theta(a_t \mid o_t, z), \qquad z = z(\mathcal{C})\]

<table>
  <thead>
    <tr>
      <th> </th>
      <th>$z$ is</th>
      <th>$z(\mathcal{C})$ is</th>
      <th>the context contains</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Selection</strong></td>
      <td>an index into existing mappings</td>
      <td>a lookup</td>
      <td>a description of $z$</td>
    </tr>
    <tr>
      <td><strong>State</strong></td>
      <td>the hidden state of this episode</td>
      <td>filtering / retrieval</td>
      <td>fragments of world state</td>
    </tr>
    <tr>
      <td><strong>Learning</strong></td>
      <td>the mapping itself</td>
      <td>induction</td>
      <td>samples from $f_z$</td>
    </tr>
  </tbody>
</table>

<p>The question is whether the context gives you the <em>name</em> of $z$, or <em>sample points on</em> $f_z$. “Put the red block in the tray” names $z$ directly. A demonstration hands you a set of $(o, a)$ pairs from which $z$ has to be inverted — and the recovered $f_z$ has to keep holding on observations that were never in the context.</p>

<hr />

<h2 id="3-learning-from-robot-demos-teleop-trajectories-as-context">3. Learning from robot demos: teleop trajectories as context</h2>

<p>The most direct source of context is the robot’s own demonstration trajectory, usually collected by human teleoperation. Observations and actions are recorded in the robot’s own frame. No representational gap to cross.</p>

<p>For a policy to recover a task mapping from such a trajectory, several things have to hold at once: the model must be capable of induction from pairs; the demo has to enter the context in a form the model can read; and training needs enough demo–query pairs to learn from.</p>

<h3 id="31-the-induction-ability-comes-from-the-training-objective">3.1 The induction ability comes from the training objective</h3>

<p>The ability to invert a task mapping out of a demonstration does not appear by itself. It’s shaped by the objective.</p>

<p><strong>One-Shot Imitation Learning \ref{One-Shot Imitation Learning,OSI}</strong> constructs a large number of distinct tasks at training time, pairs each with one demonstration and one execution, and optimizes performance <em>after reading the demo</em>. The demonstration here is a task condition, not a history buffer. The model is repeatedly forced to infer a task rule from one trajectory and apply it to new objects or scenes.</p>

<p><img src="/images/icl_blog/OSIL.png" alt="One-Shot Imitation Learning" /></p>

<blockquote>
  <p><strong>Fig 3-1:</strong> One-Shot Imitation Learning.</p>
</blockquote>

<h3 id="32-what-form-the-demo-takes">3.2 What form the demo takes</h3>

<p>A teleop trajectory is a mixed sequence of images, proprioception, and continuous actions. The form it takes on entry determines how hard the induction is.</p>

<p><strong>ICRT \ref{ICRT}</strong> goes with the most literal option: tokenize images, states, and actions, concatenate into one sequence, train a causal Transformer with next-token prediction. At test time you prepend one or two teleop trajectories, append the current observation, and the model just keeps writing actions. Parameters unchanged. The paper validates adaptation to unseen tasks on a Franka. The takeaway: recovering a task mapping from a demonstration does not require robot-specific machinery — sequence modeling alone can carry it.</p>

<p><img src="/images/icl_blog/blogv2-icrt.png" alt="ICRT sequence organization" /></p>

<blockquote>
  <p><strong>Fig 3-2:</strong> ICRT interleaves image / state / action into a single token stream.</p>
</blockquote>

<p><strong>Instant Policy \ref{Instant Policy}</strong> swaps in a graph. Demonstration, current observation, and the actions to be generated all become nodes; actions are produced by diffusion over the graph. The structure explicitly encodes correspondence between demo and current scene, whereas the sequence form makes the model discover that correspondence at the token level itself.</p>

<p><img src="/images/icl_blog/blogv2-instant-policy.png" alt="Instant Policy graph structure" /></p>

<blockquote>
  <p><strong>Fig 3-3:</strong> Instant Policy: demo nodes, current-observation nodes, and action nodes to be generated.</p>
</blockquote>

<p><strong>Keypoint Action Tokens \ref{KAT}</strong> abstracts further out: visual observations become keypoint tokens, action trajectories become action tokens, and a pretrained <em>text</em> Transformer does the few-shot imitation directly. The keypoint layer strips the dimensionality out of pixels and continuous control, and what’s left looks a lot like the pattern matching a text Transformer already does.</p>

<p>Tokenization on the action side matters too. <strong>Action Tokenizer Matters \ref{Action Tokenizer Matters}</strong> compares several action tokenizers and finds that a scheme that reconstructs trajectories well does not necessarily preserve temporal smoothness — after quantization, adjacent actions can land far apart in latent space. Their LipVQ-VAE imposes a Lipschitz constraint on the latent action space. When action tokens are geometrically discontinuous, the local correspondences the model extracted from the demo can’t turn into smooth control output.</p>

<p><img src="/images/icl_blog/blogv2-action-tokenizer.png" alt="Trajectory smoothness across action tokenizers" /></p>

<blockquote>
  <p><strong>Fig 3-4:</strong> Trajectory smoothness under different action tokenizers — source: Action Tokenizer Matters paper</p>
</blockquote>

<p><strong>Behavior Prompting Policy (BPP) \ref{BPP}</strong> also compresses the demo into an embedding, but drops the single-causal-Transformer setup: a prompt encoder cross-attends over the demo embedding with the current observation as query, and hands the result to an action decoder. It also ships with a handheld collection UMI, which moves the source of demonstrations from the lab teleop station to the deployment site.</p>

<p><img src="/images/icl_blog/BPP.png" alt="BPP's architecture" /></p>

<blockquote>
  <p><strong>Fig 3-5:</strong> Architecture of BPP.</p>
</blockquote>

<p><strong>StellaVLA \ref{StellaVLA}</strong> goes further still: raw trajectories are converted into task plans, subgoal descriptions, and 3D motion information, entering the context in structured form. What the demonstration carries shifts from <em>what the expert did</em> to <em>what steps this task consists of</em>.</p>

<p><img src="/images/icl_blog/StellaVLA.png" alt="StellaVLA's architecture" /></p>

<blockquote>
  <p><strong>Fig 3-6:</strong> Overview of StellaVLA, which conditions a VLA policy on in-context structured demonstrations.</p>
</blockquote>

<h3 id="33-where-the-training-pairs-come-from">3.3 Where the training pairs come from</h3>

<p>All of the above requires large numbers of demo–query pairs, and real robot data does not contain them natively — one collection session gives you one trajectory, not a pair. Besides collecting paired data on purpose, there are two routes.</p>

<p><strong>Recombine what you already have.</strong> If a task has multiple demonstrations, take one as prompt and the rest as queries; the pairs appear for free (ICRT \ref{ICRT}, BPP \ref{BPP}).</p>

<p><strong>Generate them.</strong> One-Shot Imitation Learning \ref{One-Shot Imitation Learning} procedurally generates task instances in simulation, manufacturing the task distribution itself. <strong>Instant Policy \ref{Instant Policy}</strong> generates pseudo-demonstrations in sim to push pair counts to trainable scale. <strong>SynthICL \ref{SynthICL}</strong> goes all the way and trains ICIL policies on purely synthetic RGB.</p>

<h3 id="34-bolting-the-ability-onto-an-existing-model">3.4 Bolting the ability onto an existing model</h3>

<p>ICL doesn’t have to wait for scale to make it emerge. <strong>RICL \ref{RICL}</strong> starts from a trained π0-FAST, runs one round of small-scale in-context post-training, then retrieves snippets from the ten-to-twenty new-task demos a user provides and drops them into the context. No parameter updates at test time. Cheaper than training a dedicated ICL policy from scratch.</p>

<p><img src="/images/icl_blog/RICL.png" alt="RICL's architecture" /></p>

<blockquote>
  <p><strong>Fig 3-7:</strong> Architecture of RICL.</p>
</blockquote>

<hr />

<h2 id="4-human-video-as-an-in-context-demo">4. Human video as an in-context demo</h2>

<p>Teleop demonstrations are expensive on both ends: you need a robot, and you need somebody who can drive it. Human video is far cheaper. One person, one camera — and there is already an enormous backlog of it sitting on the internet.</p>

<p>The cost is equally clear. <strong>Video has no action labels.</strong> You can see how the hand moved; you cannot see joint angles, and you cannot see how hard the gripper squeezed. Worse, <strong>a human body is not a robot body.</strong> The mapping the model needs to induce has an embodiment gap running through the middle of it.</p>

<p>Three ways across.</p>

<h3 id="41-vid2robot-align-the-two-representations-directly">4.1 Vid2Robot: align the two representations directly</h3>

<p><strong>Vid2Robot \ref{Vid2Robot}</strong> takes a human manipulation video plus the robot’s current state and emits actions through cross-attention. Training uses video–trajectory pairs plus a contrastive loss that pulls human-video and robot-video representations together.</p>

<p><img src="/images/icl_blog/blogv2-vid2robot.png" alt="Vid2Robot cross-attention and contrastive alignment" /></p>

<blockquote>
  <p><strong>Fig 4-1:</strong> Vid2Robot’s cross-attention architecture and contrastive alignment loss.</p>
</blockquote>

<p>The paper reports cross-object motion transfer: a manipulation demonstrated on one object in video gets applied by the robot to a different object in its own environment. That transfer happening at all says the aligned representation carries more than pixel-level similarity.</p>

<h3 id="42-mimicdroid-skip-the-pairing-entirely">4.2 MimicDroid: skip the pairing entirely</h3>

<p><strong>MimicDroid \ref{MimicDroid}</strong> uses only continuous, unlabeled human <em>play</em> video. It mines the video for trajectory pairs with similar manipulation behavior and trains the model to watch one and predict the other. Human video serves as both context and supervision; no robot data is needed to form the pairs at all.</p>

<p>To narrow the appearance and kinematics gap, it uses wrist-pose retargeting and random patch masking, the latter reducing dependence on appearance detail.</p>

<p><img src="/images/icl_blog/MimicDroid.png" alt="MimicDroid constructing trajectory pairs from play video" /></p>

<blockquote>
  <p><strong>Fig 4-2:</strong> How MimicDroid builds trajectory pairs out of play video.</p>
</blockquote>

<p>The question it attacks isn’t <em>how do we back-fill action labels onto video</em>. It’s <em>which part of human behavior is structurally reusable across embodiments</em>.</p>

<h3 id="43-point-policy-pick-a-representation-both-sides-can-read">4.3 Point Policy: pick a representation both sides can read</h3>

<p><strong>Point Policy \ref{Point Policy}</strong> routes around raw pixels: human hand pose and object state become semantic keypoints, lifting the human manipulation into a morphology-agnostic representation. Humans and robots look very different in raw images and quite similar in keypoint space, which makes the mapping easier to induce. The paper validates robustness to novel objects and background distractors across 8 real tasks.</p>

<p><img src="/images/icl_blog/point_policy.png" alt="Point policy" /></p>

<blockquote>
  <p><strong>Fig 4-3:</strong> Point Policy translates sparse human hand and object annotations into key points, predicts future 3D point tracks with a transformer policy.</p>
</blockquote>

<hr />

<h2 id="5-task-agnostic-random-motion-is-also-a-good-demonstration">5. Task-agnostic random motion is also a good demonstration</h2>

<p>The camera moved twenty centimeters to the left. The task didn’t change. The demonstration didn’t change. The image still looks reasonable to the model, and the output is still confident — and the action lands in the wrong place.</p>

<p>What the robot is missing here isn’t task information. It’s this: <strong>under this camera and this body, if I issue an action command, how does the image change?</strong></p>

<p>That’s a <strong>system identification</strong> problem, not a task inference problem. And everything above — teleop demos, human video — silently assumes the system configuration is fixed. They assume the robot already knows how its actions map to visual change, and the demo only has to say <em>where to go</em>.</p>

<h3 id="51-icwm-let-the-robot-move-at-random-for-a-few-seconds-first">5.1 ICWM: let the robot move at random for a few seconds first</h3>

<p><strong>In-Context World Modeling for Robotic Control (ICWM) \ref{ICWM}</strong> sets it up like this: before the task starts, let the robot move randomly for a few seconds.</p>

<p>Not demonstrating the task. Not approaching the target object. Just moving. Record three things per action — image before, the action, image after — and pack these $(o_{\text{start}}, a, o_{\text{end}})$ triplets into the context.</p>

<p><img src="/images/icl_blog/icwm-overview.png" alt="ICWM problem setup" /></p>

<blockquote>
  <p><strong>Fig 5-1:</strong> ICWM: a self-exploration segment before task execution, used as in-context interaction evidence.</p>
</blockquote>

<p>These are <strong>task-agnostic prompts</strong>. They don’t tell the model where to put the object; they tell it <strong>what a given action does to the image in this particular system.</strong> After reading them, the way the model turns observations into actions has changed — and what changed is the mapping itself, not a selection among existing mappings, and not an estimate of current state. <strong>So this is still in-context learning. The object of induction has just switched: not the task, the system.</strong></p>

<p>Being task-agnostic drives the collection cost down further: no human present, no labels, no task binding. One exploration segment serves every task at that workstation, and when the camera gets bumped, the gripper gets swapped, or the bench gets moved, you re-run a few seconds and you’re recalibrated.</p>

<hr />

<h2 id="6-when-context-reaches-pretraining-scale">6. When context reaches pretraining scale</h2>

<h3 id="61-qwen-robotmanip-inducing-behavioral-style-from-execution-history">6.1 Qwen-RobotManip: inducing behavioral style from execution history</h3>

<p>Generalization from cross-embodiment pretraining does not solve fast behavioral adaptation when you deploy onto a new robot or a new environment. Qwen-RobotManip \ref{Qwen-RobotManip} adds an in-context policy adaptation mechanism for exactly this: recent $(o_h, s_h, a_h)$ triplets from within the same episode — what was seen, what state it was in, which $K$ steps it executed — are strung into a context that conditions the current action prediction. No parameter updates at deployment, no task-specific finetuning.</p>

<p><img src="/images/icl_blog/qwen-robotmanip.png" alt="Qwen-RobotManip architecture" /></p>

<blockquote>
  <p><strong>Fig 6-1:</strong> Qwen-RobotManip: canonical representation, action expert, and history context.</p>
</blockquote>

<p>Qwen-RobotManip \ref{Qwen-RobotManip} also reports a <strong>context shortcut</strong>, which is the most instructive result in the section. If training always supplies the $H$ chunks immediately preceding the current step, the model takes the cheap path: the last chunk is temporally closest, so copying its action block is enough to drive training loss down. The context mechanism degenerates into a recency-based copy heuristic — and it collapses the moment recent history is ambiguous, atypical, or unrepresentative of how the robot executes overall.</p>

<p>The fix is <strong>stochastic context sampling</strong>: during training, the context window no longer abuts the current step but is sampled from random positions in the episode. Sampled chunks may be far away in time, so recency is no longer exploitable and the model has to extract behavioral style that runs through the whole episode. At deployment it gets a rolling window of the most recent $H$ chunks. The paper reports that removing this term gives you very low training loss and very poor task success.</p>

<p>Unlike a task demonstration, this context doesn’t describe <em>what to do</em>. It describes <em>how this machine is currently doing things</em>.</p>

<h3 id="62-gen-15-a-one-shot-ability-nobody-trained-for">6.2 GEN-1.5: a one-shot ability nobody trained for</h3>

<p>GEN-1.5 \ref{GEN-1.5}’s physical prompt is a sensorimotor sequence — sensor data plus action trajectory — which can come from handheld-gripper human collection or from the robot’s own rollout. The prompt goes into a 30-second context window; the rest is left for the rolling current observation. Once the prompt is in context, the model just executes. Zero training steps.</p>

<div class="blog-video">
  <iframe src="https://www.youtube.com/embed/1cllCVK-9lo" title="GEN-1.5 physical prompt demonstration" loading="lazy" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe>
</div>

<p class="blog-video-caption"><strong>Fig 6-2:</strong> GEN-1.5 physical prompt demonstration.</p>

<p>Across 10 tasks, one-shot in-context averages <strong>59% success (std 10%)</strong>. With five minutes of per-task data (~50 demos) and 10 gradient steps, it goes to <strong>83% (std 9%)</strong>. On some tasks, in-context beats 1–5 gradient steps on the same data. The write-up is also candid about limits: the test tasks are short-horizon atomic manipulations, success rates aren’t high, and in-context-acquired skills are more brittle than finetuned ones — though they do handle some perturbations and recover from mistakes.</p>

<p>What separates this from everything above is <strong>where the ability came from</strong>. The earlier ICL methods write “performance after reading a demo” directly into the training objective. GEN-1.5 \ref{GEN-1.5} did none of that — no architectural modification for in-context learning, no auxiliary objective encouraging fast adaptation. Pretraining used randomly sampled continuous segments from a data engine, with no special handling for packing examples into context, and a physical prompt actually introduces a temporal discontinuity that never occurred during training. The capability showed up over eight months of pretraining.</p>

<p>The offered explanation is explicitly a hypothesis: the distribution of physical observations and actions may have the same burstiness and Zipfian structure as language, structure that has previously been linked to ICL in language models. Alternatively, physical labor contains repeated cycles, and the model learned to detect and continue those patterns.</p>

<p>A few derivative results around the physical prompt:</p>

<ul>
  <li><strong>Composition.</strong> Put two independently recorded prompts for different tasks into the context, with no transition between them, and the model chains them into one continuous behavior — inventing intermediate actions that appear in neither demo: repositioning, regrasping, error recovery.</li>
  <li><strong>Sim-to-real prompting.</strong> A prompt built entirely from simulation rollouts (scripted policy, RL agent, or a human teleoperating in sim) drives a real robot to complete the task — despite the pretraining data containing no simulation at all.</li>
  <li><strong>Cross-embodiment.</strong> A human demonstrates with their own hands inside the robot’s camera view; the robot then reproduces it with its own.</li>
  <li><strong>Few-step adaptation.</strong> 1–10 gradient steps and 1–5 minutes of data adapt to a new task; after 10 steps, weights change by less than 0.15% on held-out tasks. At one step and one minute of data, held-out success is 66.5%.</li>
</ul>

<p>A physical prompt is sensorimotor pairs, and what the model induces from it is a task mapping — same category as the human-video section. What’s distinctive is that the prompt can come from a human hand, the robot itself, or a simulator: <strong>the source of the context does not have to share an embodiment with the executor.</strong></p>

<hr />

<h2 id="7-two-other-things-you-can-do-with-a-context-window">7. Two other things you can do with a context window</h2>

<p>The other two kinds of uncertainty also depend on context, and are also useful. There just isn’t any learning in them.</p>

<h3 id="71-selection-which-mapping-to-use">7.1 Selection: which mapping to use</h3>

<p><strong>π0.7 \ref{π0.7}</strong> is the most complete example. Language instruction, next semantic subtask, episode metadata like speed and quality, multi-view subgoal images — all in one prompt, forming a genuinely powerful control interface over the policy. The same task can be done at different speeds and with different grasps; the metadata says which one this time. The subgoal image says what the scene should look like a few seconds from now.</p>

<p><img src="/images/icl_blog/pi0.7.png" alt="pi0.7 architecture" /></p>

<blockquote>
  <p><strong>Fig 7-1:</strong> π0.7’s context includes multiple distinct modalities, including language commands, episode metadata that describes the data quality and strategy, and multimodal inputs such as subgoal images.</p>
</blockquote>

<p>These inputs describe objectives and style. The mappings that produce those behaviors already exist in the weights; the metadata picks one out. The input–output function is unchanged.</p>

<h3 id="72-state-the-part-the-current-frame-cant-see">7.2 State: the part the current frame can’t see</h3>

<p>The second kind is memory. <strong>MemoryVLA \ref{MemoryVLA}</strong> separates short-term working memory from long-term episodic memory. <strong>MemER \ref{MemER}</strong> has a high-level policy retrieve relevant keyframes and emit a language instruction for a low-level executor. <strong>ContextVLA \ref{ContextVLA}</strong> compresses multi-frame history into a single context token.  <strong>MEM \ref{MEM}</strong> pairs a video encoder for dense short-horizon visual memory with a language memory the policy rewrites itself, reaching fifteen-minute tasks.
<strong>HiMe \ref{HiMe}</strong> splits memory by timescale across three models — a fast Executor, a Sentry watching for subtask completion, and a slow Planner that edits episodic memory with explicit Add / Update / Delete.</p>

<p>What these solve is <strong>partial observability inside a single task</strong>: where did I just put the cup, which stage of this multi-step task am I on. Same task, same system — the current frame just doesn’t carry enough.</p>

<p><img src="/images/icl_blog/mem.png" alt="MEM architecture" /></p>

<blockquote>
  <p><strong>Fig 7-2:</strong> The MEM equips VLAs with long-horizon memory.</p>
</blockquote>

<p>Execution history written out is $(o_1,a_1),(o_2,a_2),\dots$ — formally identical to a demonstration trajectory. The difference is what changes after you read it. Read a demonstration and the way the model turns observations into actions changes. Read eight frames of history and that way is unchanged; what changed is the state you plug into it.</p>

<p>The real difficulty on this line isn’t <em>reading</em> the context either — it’s <strong>selection and compression</strong>. Longer history isn’t automatically better, and spurious correlations inside long sequences teach policies the wrong dependencies. Big Picture Policies uses a VLM to pick the minimal set of keyframes; Gated Memory Policy \ref{Gated Memory Policy} explicitly learns when to read and what to read. Both are attacking this.</p>

<h3 id="73-and-one-orthogonal-road">7.3 And one orthogonal road</h3>

<p>The same deployment-time evidence can either sit in the context window or be written into the weights by gradient. The latter is test-time training: <strong>RoboTTT \ref{RoboTTT}</strong> compresses 8K steps of visuomotor history into fast weights; <strong>VANE \ref{VANE}</strong> isolates candidate updates from the live policy and only commits when subsequent visual outcomes support the update. This path changes $\theta$, not $z$. The goals overlap heavily with ICL; the costs differ. It needs gradients, it’s hard to roll back, and it imposes extra online safety requirements.</p>

<hr />

<h2 id="8-whats-still-open">8. What’s still open</h2>

<p><strong>1. How does in-context learning emerge?</strong></p>

<p>ICL in language models was not a trained capability. It showed up after pretraining whose only objective was next-token prediction. Robotics is running the opposite way: most of the work above trains the ability explicitly — writing “performance after reading a demo” into the objective, post-training ICL into an existing VLA, or manufacturing large numbers of demo–query pairs.</p>

<p>GEN-1.5 \ref{GEN-1.5} is currently the only reported case of the ability appearing on its own, and the mechanism is unstudied. What data distributions produce it? Is there a predictable relationship to data volume and model scale? And do explicitly trained ICL and emergent ICL differ systematically in how they generalize?</p>

<p><strong>2. What form does a demo eventually take?</strong></p>

<p>For the same demonstration, existing work has proposed wildly different encodings: interleaved token sequences, graph nodes, keypoints, compressed chunk embeddings, task plans and subgoal descriptions, semantic keypoints, task-agnostic interaction triplets, raw sensorimotor sequences. Each works in some setting. Almost none of them have been compared head to head.</p>

<p>Behind that is an unresolved tradeoff. Highly abstracted representations (keypoints, structured plans) make induction easier, but what they throw away may be exactly the contact, force, and material properties that resist symbolization. Low-abstraction representations (raw sensorimotor sequences) keep everything, at the cost of making the model establish demo-to-scene correspondence by itself. It’s not obvious where this converges.</p>

<p><strong>3. How do we scale context?</strong></p>

<p>A VLA has to emit actions at a fairly high rate, and every token you add to the context adds inference cost to <em>every single decision</em>. This is not the long-context problem language models have: there, the cost is latency. Here, the cost is that the control loop may stop closing. Which information must be kept frame by frame, which can be squeezed into one token, which can be dropped — long-context scaling in robotics is its own problem.</p>

<hr />

<h2 id="conclusion">Conclusion</h2>

<p>Robot ICL is starting to move past the phase of transplanting the GPT prompt analogy wholesale.</p>

<p>What it actually changes is <em>what the policy looks at</em>. A robot no longer sees only the current image and one sentence. It can read a demonstration, read a video, read a goal state, read the results of its own poking around — and from that decide which parts of the scene in front of it are task information, which are system information, and which are just noise.</p>

<p>So the question worth caring about is not <em>how many tokens is the context</em>. It’s: <strong>Does the context contain the specific information the policy is missing but the task requires?</strong></p>

<p>Sometimes that’s a task demonstration. Sometimes it’s a human video. And when the camera or the body has changed, it might just be the few seconds the robot spent moving at random.</p>

<hr />

<h2 id="cheat-sheet">Cheat sheet</h2>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>What goes in the context</th>
      <th>What gets induced</th>
      <th>Adaptation budget</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>One-Shot IL</td>
      <td>one robot demo</td>
      <td>task rule</td>
      <td>1 demo</td>
    </tr>
    <tr>
      <td>ICRT</td>
      <td>1–2 teleop trajectories</td>
      <td>task rule</td>
      <td>1–2 demos</td>
    </tr>
    <tr>
      <td>RICL</td>
      <td>snippets retrieved from 10–20 demos</td>
      <td>task rule</td>
      <td>10–20 demos</td>
    </tr>
    <tr>
      <td>Instant Policy</td>
      <td>demo + current obs (as a graph)</td>
      <td>task and local correspondence</td>
      <td>1–2 demos</td>
    </tr>
    <tr>
      <td>BPP</td>
      <td>one handheld-collected demo</td>
      <td>new behavior</td>
      <td>1 demo</td>
    </tr>
    <tr>
      <td>KAT</td>
      <td>keypoints + action tokens</td>
      <td>vision–action correspondence</td>
      <td>~10 demos</td>
    </tr>
    <tr>
      <td>Action Tokenizer Matters</td>
      <td>demos (focus on tokenization itself)</td>
      <td>smooth action representation</td>
      <td>—</td>
    </tr>
    <tr>
      <td>Vid2Robot</td>
      <td>human manipulation video</td>
      <td>motion intent</td>
      <td>1 video</td>
    </tr>
    <tr>
      <td>MimicDroid</td>
      <td>unlabeled human play video</td>
      <td>cross-embodiment reusable behavior structure</td>
      <td>1 clip</td>
    </tr>
    <tr>
      <td>Point Policy</td>
      <td>human video → semantic keypoints</td>
      <td>morphology-agnostic manipulation intent</td>
      <td>offline video</td>
    </tr>
    <tr>
      <td>ICWM</td>
      <td>task-agnostic random interaction triplets</td>
      <td>this system’s observation–action mapping</td>
      <td>a few seconds of random motion</td>
    </tr>
    <tr>
      <td>GEN-1.5</td>
      <td>3–12s human demonstration</td>
      <td>task rule</td>
      <td>3–12 seconds</td>
    </tr>
    <tr>
      <td>Qwen-RobotManip</td>
      <td>within-episode execution history</td>
      <td>current embodiment identity</td>
      <td>within-episode</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="references">References</h2>

<ul>
  <li><a href="https://arxiv.org/abs/1703.07326">One-Shot Imitation Learning</a>, Neurips 2017</li>
  <li><a href="https://arxiv.org/abs/1802.01557">One-Shot Imitation from Observing Humans via Domain-Adaptive Meta-Learning</a>, arXiv 2018</li>
  <li><a href="https://arxiv.org/abs/2408.15980">In-Context Imitation Learning via Next-Token Prediction</a>, ICRA 2025</li>
  <li><a href="https://arxiv.org/abs/2508.02062">RICL: Adding In-Context Adaptability to Pre-Trained Vision-Language-Action Models</a>, CoRL 2025</li>
  <li><a href="https://arxiv.org/abs/2411.12633">Instant Policy: In-Context Imitation Learning via Graph Diffusion</a>, ICLR 2025</li>
  <li><a href="https://arxiv.org/abs/2606.08154">SynthICL: Scalable In-context Imitation Learning with Synthetic Data</a>, arXiv 2026</li>
  <li><a href="https://arxiv.org/abs/2606.30457">Behavior Prompting Policy: Demonstrations as Prompts for Manipulation</a>, arXiv 2026</li>
  <li><a href="https://arxiv.org/abs/2608.11671">StellaVLA: In-Context Structured Demonstration for Generalizable Vision-Language-Action Models</a>, arXiv 2026</li>
  <li><a href="https://arxiv.org/abs/2403.19578">Keypoint Action Tokens Enable In-Context Imitation Learning in Robotics</a>, RSS 2024</li>
  <li><a href="https://arxiv.org/abs/2503.01206">Action Tokenizer Matters in In-Context Imitation Learning</a>, IROS 2025</li>
  <li>
    <p><a href="https://arxiv.org/abs/2604.15215">A Hierarchical Spatiotemporal Action Tokenizer for In-Context Imitation Learning in Robotics</a>, arXiv 2026</p>
  </li>
  <li><a href="https://arxiv.org/abs/2403.12943">Vid2Robot: End-to-end Video-conditioned Policy Learning with Cross-Attention Transformers</a>, RSS 2024</li>
  <li><a href="https://arxiv.org/abs/2509.09769">MimicDroid: In-Context Learning for Humanoid Robot Manipulation from Human Play Videos</a>, ICRA 2026</li>
  <li>
    <p><a href="https://arxiv.org/abs/2502.20391">Point Policy: Unifying Observations and Actions with Key Points for Robot Manipulation</a>, arXiv 2025</p>
  </li>
  <li>
    <p><a href="https://arxiv.org/abs/2606.26025">In-Context World Modeling for Robotic Control</a>, arXiv 2026</p>
  </li>
  <li><a href="https://arxiv.org/abs/2606.17846">Qwen-RobotManip Technical Report: Alignment Unlocks Scale for Robotic Manipulation Foundation Models</a>, arXiv 2026</li>
  <li>
    <p><a href="https://generalistai.com/blog/gen-1.5">GEN-1.5: Embodied Foundation Models are One-Shot Learners</a>, Generalist AI 2026</p>
  </li>
  <li><a href="https://arxiv.org/abs/2604.15483">π0.7: A Steerable Generalist Robotic Foundation Model with Emergent Capabilities</a>, Physical Intelligence 2026</li>
  <li><a href="https://arxiv.org/abs/2508.19236">MemoryVLA: Perceptual-Cognitive Memory in Vision-Language-Action Models for Robotic Manipulation</a>, ICLR 2026</li>
  <li><a href="https://arxiv.org/abs/2510.20328">MemER: Scaling Up Memory for Robot Control via Experience Retrieval</a>, ICLR 2026</li>
  <li><a href="https://arxiv.org/abs/2510.04246">ContextVLA: Vision-Language-Action Model with Amortized Multi-Frame Context</a>, arXiv 2025</li>
  <li><a href="https://arxiv.org/abs/2603.03596">MEM: Multi-Scale Embodied Memory for Vision Language Action Models</a>, arXiv 2026</li>
  <li><a href="https://arxiv.org/abs/2607.03449">HiMe: Hierarchical Embodied Memory for Long-Horizon Vision-Language-Action Control</a>, ICML 2026</li>
  <li><a href="https://arxiv.org/abs/2604.18933">Gated Memory Policy: In-Context Memorization and Adaptation</a>, arXiv 2026</li>
  <li><a href="https://arxiv.org/abs/2607.15275">RoboTTT: Context Scaling for Robot Policies</a>, arXiv 2026</li>
  <li><a href="https://arxiv.org/abs/2608.09448">VANE: Reliable Test-Time Training for Vision-Language-Action Models via Future Visual Representation Prediction</a>, arXiv 2026</li>
</ul>

<h2 id="cite-this">Cite this</h2>

<div class="language-bibtex highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">@article</span><span class="p">{</span><span class="nl">Wang2026RobotICL</span><span class="p">,</span>
  <span class="na">title</span>   <span class="p">=</span> <span class="s">"In-Context Learning for Robots: What Should Actually Go in the Context?"</span><span class="p">,</span>
  <span class="na">author</span>  <span class="p">=</span> <span class="s">"Wang, Siyin"</span><span class="p">,</span>
  <span class="na">year</span>    <span class="p">=</span> <span class="s">"2026"</span><span class="p">,</span>
  <span class="na">url</span>     <span class="p">=</span> <span class="s">"https://sinwang20.github.io/blog/robot-icl-en/"</span>
<span class="p">}</span>
</code></pre></div></div>]]></content><author><name>Siyin Wang</name></author><category term="blog" /><category term="robotics" /><category term="in-context-learning" /><summary type="html"><![CDATA[A practical taxonomy of what robot policies put in context, and which uncertainty each kind of context actually resolves.]]></summary></entry><entry><title type="html">机器人的 In-Context Learning：上下文里应该装什么</title><link href="https://sinwang20.github.io/blog/robot-icl-zh/" rel="alternate" type="text/html" title="机器人的 In-Context Learning：上下文里应该装什么" /><published>2026-08-22T00:00:00-07:00</published><updated>2026-08-22T00:00:00-07:00</updated><id>https://sinwang20.github.io/blog/robot-icl-blog-zh</id><content type="html" xml:base="https://sinwang20.github.io/blog/robot-icl-zh/"><![CDATA[<p><a href="https://generalistai.com/blog/gen-1.5">GEN-1.5</a> 把一段几秒的感觉运动序列当作 physical prompt，让机器人 one-shot 学会一个新任务，<a href="https://www.pi.website/blog/pi07">$\pi_{0.7}$</a> 把语言、目标图像、metadata 和历史轨迹一起塞进同一个 prompt，RoboTTT \ref{RoboTTT} 把机器人策略的视觉运动上下文推到了 8K 步。过去一年里，in-context learning 在机器人领域重新变成了一个高频词。</p>

<p>但把这些工作统统叫做”机器人 ICL”，会掩盖一件事：<strong>它们往上下文里装的东西根本不是一类。</strong>有的装任务示范，有的装人的运动意图，有的装策略风格，还有的装机器人自己的探索轨迹。共用着一个词，它们解决的其实不是同一个问题。</p>

<hr />

<h2 id="一为什么策略需要上下文">一、为什么策略需要上下文</h2>

<p>今天绝大多数 VLA 策略都可以写成同一个函数 $\pi(a_t \mid o_t, l)$：给定当前这一帧的图像和本体状态 $o_t$，加上一句语言指令 $l$，输出下一个动作 $a_t$。</p>

<p>这个形式简洁，也好训练。但它隐含了一个相当强的 <strong>Markov 假设</strong>：当前这一帧里，已经包含了做出下一步决策所需要的全部信息。历史不必显式出现，它的作用被压进了模型参数里。</p>

<p>同样的 Markov 假设，早期的统计语言模型也做过。一个句子的概率本来要按链式法则展开，每个词都以它前面所有的词为条件；但那样条件太多、根本估不出来，于是 n-gram 模型退了一步，假设每个词只依赖前面一两个词。</p>

<p>这个近似最后败在两件事上。</p>

<p><strong>一是长距离依赖。</strong>“小明昨天买了一本书，他今天把[MASK]读完了”——[MASK]里要填的是”它”，可它在十几个字以外，而离得最近的名词是”他”。只看前两个词的模型，注定填错。</p>

<p><strong>二是数据稀疏。</strong>假设词表是一万个词，bigram 有一亿种组合，trigram 有一万亿种。真实语料再大，绝大多数组合的计数都是零。上下文每变长一点，稀疏就恶化一个数量级——除非你不再靠计数去估计，而是让模型学会泛化。</p>

<p>机器人现在处在类似的位置上。</p>

<p>在训练分布之内，Markov 假设工作得相当好：相机固定、机械臂固定、桌面高度固定、任务类别有限，模型只需要学一个从观测到动作的映射。但真实部署会遇到几类它处理不了的变化：</p>

<ul>
  <li>当前这一帧看不出任务已经进行到哪一步；</li>
  <li>相机换了位置，画面里的像素运动和机器人坐标之间的关系变了；</li>
  <li>换了机械臂或末端执行器，同样的动作指令有了不同的运动学含义；</li>
  <li>同一个任务有很多种做法——快的、慢的、稳的、粗暴的；</li>
  <li>新的物体、新的场景、训练集里没出现过的组合。</li>
</ul>

<p>这些情况有一个共同点：<strong>当前观测不足以决定动作，而缺失的那部分信息，恰好可以从别的地方拿到。</strong></p>

<p>于是策略多了一项输入：</p>

\[\pi(a_t \mid o_t, l, \mathcal{C})\]

<p>$\mathcal{C}$ 就是上下文。它可以是一条示范轨迹、一段人类视频、一张目标图像、机器人自己的一段探索，或者这个 episode 到目前为止的执行历史。</p>

<p>剩下的问题就只有一个：<strong>$\mathcal{C}$ 里应该装什么。</strong></p>

<hr />

<h2 id="二上下文消解的是哪一种不确定性">二、上下文消解的是哪一种不确定性</h2>

<p>in-context learning 这个说法最早是在语言模型上出现。给模型这样一段输入：</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Translate English to French:

sea otter    =&gt;  loutre de mer
peppermint   =&gt;  menthe poivrée
plush girafe =&gt;  girafe peluche

cheese =&gt;
</code></pre></div></div>

<p>它会补出 fromage。</p>

<p>模型并没有被训练成一个英法翻译器，权重一个字节都没有改变。它是从前面几个例子里看出了这里在做什么，然后照着做了第四个。</p>

<p>In-context learning 中<strong>in-context</strong>，是因为这个获得过程发生在上下文窗口里，<strong>learning</strong>，是因为模型获得一个此前没有的映射，并且这个映射对没见过的输入同样有效。</p>

<p>机器人上的对应几乎是一一的：语言指令是规格，示范轨迹是样例——一串（观测，动作）配对，让模型自己看出这个任务是怎么回事，然后在新场景里做一遍。参数同样不动。</p>

<p><img src="/images/icl_blog/icl-to-robot.png" alt="从 few-shot prompting 到机器人 in-context imitation" /></p>

<p>机器人的上下文窗口装的东西越来越多，但它们消解的不是同一种不确定性。大致有三类。</p>

<p><strong>一、该用哪个映射。</strong>语言指令、目标图像、本体的urdf信息这类 metadata。它们说明目标是什么，但完成这个目标的映射本来就在权重里，指令做的是从中挑一个出来。</p>

<p><strong>二、当前状态是什么。</strong>过去若干帧的执行历史。杯子刚才被放在左边抽屉，这个五步任务已经做完三步。映射不变，变的是代入映射的那个状态。</p>

<p><strong>三、映射本身是什么。</strong>示范轨迹、人类视频。模型此前不知道这件事该怎么做，读完上下文之后知道了。</p>

<p>只有第三类是 learning，它消解的是对映射本身的不确定性。前两类同样有用、也同样依赖上下文，但模型读完之后，它把观测转成动作的那个函数并没有改变。</p>

<p>写成公式，三类的差别落在同一个位置上。把策略拆成训练固化的部分和上下文决定的部分：</p>

\[\pi(a_t \mid o_t, l, \mathcal{C}) = f_\theta(a_t \mid o_t, z), \qquad z = z(\mathcal{C})\]

<table>
  <thead>
    <tr>
      <th> </th>
      <th>$z$</th>
      <th>$z(\mathcal{C})$ 是</th>
      <th>上下文里装的</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>选择</td>
      <td>已有映射的索引</td>
      <td>读取</td>
      <td>$z$ 的描述</td>
    </tr>
    <tr>
      <td>状态</td>
      <td>当前 episode 的隐藏状态</td>
      <td>滤波、检索</td>
      <td>世界状态的片段</td>
    </tr>
    <tr>
      <td>学习</td>
      <td>映射本身</td>
      <td>归纳</td>
      <td>$f_z$ 的样本</td>
    </tr>
  </tbody>
</table>

<p>上下文给的是 $z$ 的名字，还是 $f_z$ 上的采样点，区别就在这里。”把红色积木放进盘子”直接命名了 $z$；一条示范给出若干组 $(o,a)$，$z$ 需要从这些点反解出来，且反解出的 $f_z$ 必须在上下文之外的 $o$ 上依然成立。</p>

<hr />

<h2 id="三从机器人示范里学遥操作轨迹作为-context">三、从机器人示范里学：遥操作轨迹作为 context</h2>

<p>上下文最直接的来源是机器人自身的示范轨迹，通常由人类遥操作采集。观测和动作都记录在机器人自己的坐标系下，不需要跨越任何表示上的鸿沟。</p>

<p>要让策略从这样一段轨迹里恢复出任务映射，几个条件需要同时成立：模型本身具备从配对中归纳的能力，示范以模型能读的形式进入上下文，训练阶段有足够的”示范—查询”配对可用。</p>

<h3 id="31-归纳能力来自训练目标">3.1 归纳能力来自训练目标</h3>

<p>模型从示范里反解出任务映射的能力不会自动出现，它由训练目标塑造。</p>

<p><strong>One-Shot Imitation Learning \ref{One-Shot Imitation Learning,OSI}</strong> 在训练时构造大量不同的任务，每个任务配一条示范和一次执行，优化目标是读完示范之后的执行表现。示范在这里是任务条件而非历史帧，模型被反复要求从一条轨迹推出任务规则，再应用到新的物体或场景。</p>

<p><img src="/images/icl_blog/OSIL.png" alt="One-Shot Imitation Learning" /></p>

<blockquote>
  <p><strong>图 3-1：</strong> One-Shot Imitation Learning 的示范与执行设定</p>
</blockquote>

<h3 id="32-示范以什么形式进入上下文">3.2 示范以什么形式进入上下文</h3>

<p>一条遥操作轨迹是图像、本体状态和连续动作的混合序列。它以什么形式进入模型，决定了归纳的难度。</p>

<p><strong>ICRT \ref{ICRT}</strong> 采用最直接的形式：把图像、本体状态和动作全部 token 化，拼成一条序列，用因果 Transformer 做 next-token prediction。测试时把一两条遥操作轨迹放在序列前部，后面接当前观测，模型继续续写动作，参数不变。论文在 Franka 上验证了未见任务下的适应能力。这一设定说明，从示范中恢复任务映射不需要为机器人设计专门的机制，序列建模本身可以承担。</p>

<p><img src="/images/icl_blog/blogv2-icrt.png" alt="ICRT 的序列组织方式" /></p>

<blockquote>
  <p><strong>图 3-2：</strong> ICRT 的序列组织方式：图像 / 状态 / 动作交错成一条 token 序列</p>
</blockquote>

<p><strong>Instant Policy \ref{Instant Policy}</strong> 换用图结构：示范、当前观测和待生成的动作被组织成图中的节点，动作通过在图上做 diffusion 生成。图结构显式编码了示范与当前场景之间的对应关系，而序列形式需要模型自己在 token 层面建立这种对应。</p>

<p><img src="/images/icl_blog/blogv2-instant-policy.png" alt="Instant Policy 的图结构" /></p>

<blockquote>
  <p><strong>图 3-3：</strong> Instant Policy 的图结构：示范节点、当前观测节点与待生成动作节点</p>
</blockquote>

<p><strong>Keypoint Action Tokens \ref{KAT}</strong> 抽象得更远：视觉观测转成关键点 token，动作轨迹转成 action token，然后用预训练的文本 Transformer 直接做 few-shot 模仿。关键点这一层降低了像素和连续动作的维度，剩下的部分接近文本 Transformer 已经具备的模式匹配能力。</p>

<p>动作侧的 token 化本身也影响结果。<strong>Action Tokenizer Matters \ref{Action Tokenizer Matters}</strong> 比较了多种 action tokenizer，发现能够重建轨迹的方案未必保持时间上的平滑性——量化之后，相邻动作在 latent 空间中可能相距很远。该工作提出的 LipVQ-VAE 在 latent action space 上施加 Lipschitz 约束。当 action token 在几何空间中不连续时，模型从示范中获得的局部对应关系无法转化为平滑的控制输出。</p>

<p><img src="/images/icl_blog/blogv2-action-tokenizer.png" alt="不同 action tokenizer 下轨迹平滑性的对比" /></p>

<blockquote>
  <p><strong>图 3-4：</strong> 不同 action tokenizer 下轨迹平滑性的对比</p>
</blockquote>

<p><strong>Behavior Prompting Policy（BPP） \ref{BPP}</strong> 同样把示范压缩编码成 embedding，区别在于不再由一个因果 Transformer 统一续写：prompt encoder 以当前观测为 query 对示范 embedding 做 cross-attention，取出的结果交给 action decoder 解码动作。它同时配套了手持采集设备，示范的来源从实验室遥操作台扩展到部署现场。</p>

<p><img src="/images/icl_blog/BPP.png" alt="BPP 的策略结构" /></p>

<blockquote>
  <p><strong>图 3-5：</strong> BPP 的策略结构</p>
</blockquote>

<p><strong>StellaVLA \ref{StellaVLA}</strong> 走得更远：把原始轨迹转换为任务计划、子目标描述和 3D 运动信息，以结构化形式进入上下文。示范承载的内容因此从”专家做了什么”转向”这个任务由哪些步骤构成”。</p>

<p><img src="/images/icl_blog/StellaVLA.png" alt="StellaVLA 的结构化示范" /></p>

<blockquote>
  <p><strong>图 3-6：</strong> StellaVLA 的结构化示范</p>
</blockquote>

<h3 id="33-训练所需的配对从哪里来">3.3 训练所需的配对从哪里来</h3>

<p>前述训练目标要求大量”示范—查询”配对，而真实机器人数据中这种配对并不天然存在：一次采集得到一条轨迹，不会自动构成配对。除了专门去采集配对数据还有两种思路：</p>

<p>一是<strong>从已有示范里重组。</strong>同一个任务只要有多条示范，取一条作 prompt、其余作查询，配对就地产生（如ICRT \ref{ICRT},BPP \ref{BPP}）。</p>

<p>二是<strong>生成。</strong>One-Shot Imitation Learning \ref{One-Shot Imitation Learning} 在仿真中程序化生成任务实例，把任务分布本身造出来；<strong>Instant Policy \ref{Instant Policy}</strong> 在仿真中生成伪示范，把配对数量提升到可训练的规模；<strong>SynthICL \ref{SynthICL}</strong> 进一步完全使用合成 RGB 数据训练 ICIL 策略。</p>

<h3 id="34-给已有模型加装这一能力">3.4 给已有模型加装这一能力</h3>

<p>ICL 不必依赖模型规模自发涌现。<strong>RICL \ref{RICL}</strong> 以训练好的 π0-FAST 为基础，做一次小规模的 in-context post-training，再从用户提供的十几到二十条新任务示范中检索片段放入上下文，测试时参数不更新。这条路径的成本低于从头训练一个 ICL 专用策略。</p>

<p><img src="/images/icl_blog/RICL.png" alt="RICL 的策略结构" /></p>

<blockquote>
  <p><strong>图 3-7：</strong> RICL 的 in-context post-training 与检索结构</p>
</blockquote>

<hr />

<h2 id="四人类视频作为-in-context-demo">四、人类视频作为 in-context demo</h2>

<p>遥操作示范贵在两头：要有机器人，要有会用它的人。人类视频便宜得多。一个人、一部相机就够了，而且互联网上已经躺着海量存量。</p>

<p>代价也很明确：<strong>视频里没有动作标签。</strong>你看得见手怎么动，但看不见关节角，看不见夹爪合拢的力度。更麻烦的是，<strong>人的身体和机器人的身体不一样。</strong>模型要归纳的那个映射，中间隔着一道 embodiment gap。</p>

<p>跨越的方式大致有三种。</p>

<h3 id="41-vid2robot直接对齐两侧表示">4.1 Vid2Robot：直接对齐两侧表示</h3>

<p><strong>Vid2Robot \ref{Vid2Robot}</strong> 输入人类操作视频和机器人当前状态，通过 cross-attention 输出动作。训练时用视频—轨迹配对，另外加一个对比损失，把人类视频和机器人视频的表示往一起拉。</p>

<p><img src="/images/icl_blog/blogv2-vid2robot.png" alt="Vid2Robot 的 cross-attention 结构与对比对齐损失" /></p>

<blockquote>
  <p><strong>图 4-1：</strong> Vid2Robot 的 cross-attention 结构与对比对齐损失</p>
</blockquote>

<p>论文报告了跨物体的运动迁移：视频中针对某一物体的操作，机器人可以应用到自身环境里的另一个物体上。迁移能够发生，说明对齐后的表示携带的不只是像素层面的相似性。</p>

<h3 id="42-mimicdroid连配对都不要">4.2 MimicDroid：连配对都不要</h3>

<p><strong>MimicDroid \ref{MimicDroid}</strong> 只使用连续的、无标注的人类 play video。它从视频中找出操作行为相似的轨迹对，训练模型看一条、预测另一条。人类视频因此同时充当上下文和监督信号，训练过程不需要任何机器人数据来配对。</p>

<p>为缩小外观和运动学上的差距，该方法使用手腕姿态 retargeting 和随机 patch masking，后者降低模型对外观细节的依赖。</p>

<p><img src="/images/icl_blog/MimicDroid.png" alt="MimicDroid 的方法总览" /></p>

<blockquote>
  <p><strong>图 4-2：</strong> MimicDroid 的方法总览</p>
</blockquote>

<p>它处理的问题不是如何为视频补上动作标签，而是人类行为中哪一部分结构可以跨本体复用。</p>

<h3 id="43-point-policy换一个双方都能读的表示">4.3 Point Policy：换一个双方都能读的表示</h3>

<p><strong>Point Policy \ref{Point Policy}</strong> 绕开原始像素，用人手姿态和物体状态构造语义关键点，把人的操作提升为 morphology-agnostic 的表示。人和机器人在原始图像中差异很大，在关键点空间中则接近，映射因此更容易归纳。论文在 8 个真实任务上验证了这种表示对新物体和背景干扰的鲁棒性。</p>

<p><img src="/images/icl_blog/point_policy.png" alt="Point Policy" /></p>

<blockquote>
  <p><strong>图 4-3：</strong> Point Policy 将人手和物体状态转换为双方都能读取的关键点表示</p>
</blockquote>

<hr />

<h2 id="五任务无关的随机运动也是一段合格的示范">五、任务无关的随机运动，也是一段合格的示范</h2>

<p>相机往旁边挪了二十厘米。任务没变，示范没变，模型看到的画面依然合理，输出依然自信——但动作落在了错误的位置上。</p>

<p>这时候机器人缺的不是任务信息。它缺的是：<strong>在当前这套相机和这副身体下，我发出一个动作指令，画面会怎么变？</strong></p>

<p>这是一个<strong>系统辨识</strong>问题，不是任务推断问题。而前面那些工作，无论是遥操作示范还是人类视频，都默认系统配置是固定的——它们假设机器人已经知道自己的动作如何对应到视觉变化，示范只需要告诉它”往哪儿去”。</p>

<h3 id="51-icwm让机器人在做任务前先随便动几秒">5.1 ICWM：让机器人在做任务前先随便动几秒</h3>

<p><strong>In-Context World Modeling for Robotic Control（ICWM） \ref{ICWM}</strong> 的设定是：在开始任务之前，让机器人随机运动几秒。</p>

<p>不是演示任务，也不是靠近目标物体，就是随机运动。记录下每次动作的三样东西——动作前的图像、动作本身、动作后的图像——把这些 $(o_{\text{start}}, a, o_{\text{end}})$ 三元组拼成上下文，放进策略的输入。</p>

<p><img src="/images/icl_blog/icwm-overview.png" alt="ICWM 的问题设定" /></p>

<blockquote>
  <p><strong>图 5-1：</strong> ICWM 的问题设定：任务执行前的自探索片段作为 in-context 交互证据</p>
</blockquote>

<p>这些片段是 task-agnostic prompt, 它们不告诉模型该把物体放到哪儿，而是<strong>在当前这套系统里，某个动作会让画面发生什么变化。</strong> 读完这些三元组之后，模型把观测转成动作的方式发生了改变，改变的是映射本身，而不是对已有映射的选择，也不是对当前状态的估计。<strong>所以这仍然是 in-context learning，只是被归纳出来的映射换了对象：不是任务，是系统本身。</strong></p>

<p>任务无关这一点进一步降低了上下文的采集成本：不需要人在场，不需要标注，不绑定具体任务，同一段探索对这个工位上的所有任务都有效；相机被碰到、夹爪更换、工作台移动之后，重跑几秒即可重新校准。</p>

<h2 id="六当上下文进入预训练规模">六、当上下文进入预训练规模</h2>

<h3 id="61-qwen-robotmanip从执行历史中归纳行为风格">6.1 Qwen-RobotManip：从执行历史中归纳行为风格</h3>

<p>跨本体预训练带来的泛化能力，并不能解决部署到新机器人或新环境时的快速行为适配。Qwen-RobotManip \ref{Qwen-RobotManip} 为此加入了一套 in-context policy adaptation 机制：把同一 episode 内近期的 $(o_h, s_h, a_h)$ 三元组——看到了什么、处于什么状态、执行了哪 $K$ 步动作——串成上下文，条件化当前的动作预测，部署时不更新参数，也不做任务特定的微调。</p>

<p><img src="/images/icl_blog/qwen-robotmanip.png" alt="Qwen-RobotManip 的整体结构" /></p>

<blockquote>
  <p><strong>图 6-1：</strong> Qwen-RobotManip 的整体结构：canonical 表示、动作专家与历史上下文 —— 来源：Qwen-RobotManip 技术报告</p>
</blockquote>

<p>Qwen-RobotManip \ref{Qwen-RobotManip}还报告了一种上下文捷径。如果训练时总是提供紧邻当前步的 $H$ 个 chunk，模型会走一条捷径：最后一个 chunk 在时间上离当前步最近，直接复制它的动作块就足以把训练损失压下去。上下文机制因此退化成一个基于时序邻近的复制启发式，一旦近期历史含糊、反常，或者不能代表机器人整体的执行方式，它就会失效。</p>

<p>解法是 stochastic context sampling：训练时上下文窗口不再紧邻当前步，而是从 episode 中的随机位置采样。采到的 chunk 可能在时间上距离当前步很远，模型无法再依赖时序邻近性，只能去提取贯穿整个 episode 的行为风格。部署时则供给最近 $H$ 个 chunk 的滚动窗口。论文报告，去掉这一项之后，策略的训练损失很低，任务成功率却很差。</p>

<p>与任务示范不同，这段上下文描述的不是要做什么，而是这台机器人此刻正在以什么方式做事。</p>

<h3 id="62-gen-15没有被专门训练出来的-one-shot-能力">6.2 GEN-1.5：没有被专门训练出来的 one-shot 能力</h3>

<p>GEN-1.5 \ref{GEN-1.5} 的 physical prompt 是一段感觉运动序列——传感器数据加动作轨迹——可以来自手持夹爪采集的人类数据，也可以来自机器人自己的 rollout。这段 prompt 被放进 30 秒上下文窗口，其余部分留给滚动的当前观测。prompt 进入上下文之后，模型直接执行，不做任何训练步。</p>

<div class="blog-video">
  <iframe src="https://www.youtube.com/embed/1cllCVK-9lo" title="GEN-1.5 physical prompt demonstration" loading="lazy" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe>
</div>

<p class="blog-video-caption"><strong>图 6-2：</strong> GEN-1.5 physical prompt 演示。</p>

<p>在 10 个任务上，one-shot in-context 的平均成功率为 59%（标准差 10%）；用每个任务 5 分钟数据（约 50 条演示）做 10 步梯度更新，成功率升至 83%（标准差 9%）。部分任务上，in-context 的表现超过在同样数据上做 1 到 5 步梯度更新。官方同时说明，测试任务是短时程的原子操作，成功率不高，in-context 学到的技能比微调后的模型更脆弱，但能应对一部分扰动，并从失误中恢复。</p>

<p>与前面几节的工作相比，这一能力的不同之处在于它的来源。之前的ICL方法把”读完示范之后的表现”直接写进训练目标；它没有做任何这类设计——没有为 in-context learning 修改架构，没有鼓励快速适应的辅助目标。预训练使用的是从数据引擎中随机采样的连续片段，没有为”把样例打包进上下文”做过专门处理，而 physical prompt 会在时间上引入训练时从未出现过的跳变。这一能力是在持续八个月的预训练过程中出现的。</p>

<p>官方给出的解释是假设性的：物理观测与动作的分布可能具有与语言中类似的 burstiness 和 Zipfian 结构，而这类结构此前被认为与语言模型的 in-context learning 相关；另一种可能是物理劳动本身包含重复的循环，模型学会了检测并延续这类模式。</p>

<p>围绕 physical prompt 还有几个衍生结果：</p>

<ul>
  <li><strong>组合。</strong>两段独立录制、彼此之间没有过渡的不同任务 prompt 同时放入上下文，模型会把它们串成一段连续行为，并自行补出两段演示中都不存在的中间动作——重新定位、重新抓取、错误恢复。</li>
  <li><strong>跨仿真。</strong>prompt 完全由仿真中的 rollout 构成（脚本策略、RL agent，或人在仿真中遥操作），真实机器人据此完成任务，而预训练数据中不含任何仿真数据。</li>
  <li><strong>跨本体。</strong>人用自己的手在机器人相机视野内演示，机器人随后用自己的手复现。</li>
  <li><strong>少步适应。</strong>1 到 10 步梯度更新、1 到 5 分钟数据即可适应新任务；10 步之后，权重在留出任务上的变化小于 0.15%。单步、一分钟数据的设定下，留出任务成功率为 66.5%。</li>
</ul>

<p>physical prompt 是感觉运动配对，模型从中归纳的是任务映射，与人类视频那一节属于同一类。它的特殊之处在于这段 prompt 可以来自人手、机器人自身或仿真器——上下文的来源与执行者的本体不必一致。</p>

<hr />

<h2 id="七上下文窗口的另外两种玩法">七、上下文窗口的另外两种玩法</h2>

<p>另外两类不确定性同样依赖上下文，也同样有用，但并没有learning。</p>

<h3 id="71-选择该用哪个映射">7.1 选择：该用哪个映射</h3>

<p><strong>π0.7 \ref{π0.7}</strong> 是这一类最完整的例子。它把语言指令、下一个语义子任务、速度和质量等 episode metadata、多视角 subgoal image 一起放进 prompt，构成一个相当强大的策略控制接口。同一个任务可以有不同的速度和抓取方式，metadata 告诉模型这次该选哪一种；subgoal image 则描述几秒之后场景应该长成什么样。</p>

<p>这些输入描述的是目标和风格。完成这些行为的映射已经存在于权重中，metadata 的作用是从中选出一个，模型的输入-输出函数并未改变。</p>

<p><img src="/images/icl_blog/pi0.7.png" alt="π0.7 的多模态上下文" /></p>

<blockquote>
  <p><strong>图 7-1：</strong> π0.7 将语言、episode metadata 和目标图像等多种信息组合进上下文</p>
</blockquote>

<h3 id="72-状态当前帧看不到的那部分">7.2 状态：当前帧看不到的那部分</h3>

<p>第二类是 memory。<strong>MemoryVLA \ref{MemoryVLA}</strong> 区分短期工作记忆和长期情景记忆，<strong>MemER \ref{MemER}</strong> 让高层策略检索相关关键帧再生成语言指令交给低层执行，<strong>ContextVLA \ref{ContextVLA}</strong> 把多帧历史压缩成一个 context token。<strong>MEM \ref{MEM}</strong> 将用于密集短时视觉记忆的视频编码器，与策略自己不断改写的语言记忆结合起来，支持长达 15 分钟的任务。</p>

<p><strong>HiMe \ref{HiMe}</strong> 按时间尺度把记忆分给三个模型：快速执行器 Executor、监控子任务完成的 Sentry，以及通过显式 Add / Update / Delete 编辑情景记忆的慢速 Planner。</p>

<p>这些工作解决的是<strong>同一个任务内部的部分可观测</strong>：我刚才把杯子放在哪了、这个多阶段任务已经做到第几步了。同一个任务、同一套系统，只是当前这一帧信息不够。</p>

<p><img src="/images/icl_blog/mem.png" alt="MEM 的长时记忆结构" /></p>

<blockquote>
  <p><strong>图 7-2：</strong> MEM 为 VLA 提供长时程视觉与语言记忆</p>
</blockquote>

<p>执行历史写出来是 $(o_1,a_1),(o_2,a_2),\dots$，形式上与一条示范轨迹相同。区别在于读完之后什么发生了改变：读完一条示范，模型把观测转成动作的方式会变；读完八帧历史，这个方式不变，改变的是代入其中的状态。</p>

<p>这条线上真正的技术难点也不在”读上下文”，而在<strong>选择和压缩</strong>——更长的历史不一定更好，长序列里的伪相关会让策略学到错误的依赖。Big Picture Policies 先用 VLM 挑出最少的关键帧，Gated Memory Policy \ref{Gated Memory Policy} 显式学习何时读取、读取什么，都是在解决这个问题。</p>

<h3 id="73-还有一条正交的路">7.3 还有一条正交的路</h3>

<p>同样一段部署时的证据，可以留在上下文窗口中，也可以通过梯度写进权重。后者是 test-time training：<strong>RoboTTT \ref{RoboTTT}</strong> 把 8K 步的视觉运动历史压进 fast weights，<strong>VANE \ref{VANE}</strong> 把候选更新与在线策略隔离，只有当后续视觉结果支持该次更新时才提交。这条路径改变的是 $\theta$ 而不是 $z$。它与 ICL 的目标高度重叠，代价不同：需要梯度，难以回退，对在线安全性提出额外要求。</p>

<hr />

<h2 id="八还没解决的问题">八、还没解决的问题</h2>

<p><strong>1. in-context learning 是怎么涌现的？</strong></p>

<p>语言模型的 ICL 不是被专门训练出来的能力，它出现在以 next-token prediction 为唯一目标的预训练之后。机器人这边基本相反：前面提到的大部分工作都在显式地训练这个能力——把”读完示范之后的执行表现”写进训练目标，用后训练把 ICL 装进已有的 VLA，或者专门构造大量示范—查询配对。</p>

<p>GEN-1.5 \ref{GEN-1.5} 是目前唯一报告该能力自发出现的例子，但对于其具体的涌现机制还缺乏研究。什么样的数据分布会让这种能力出现？它与数据量和模型规模之间是否存在可预测的关系？显式训练出来的 ICL 和涌现出来的 ICL，在泛化行为上是否存在系统性差异？</p>

<p><strong>2. demo 最终会是什么形态？</strong></p>

<p>同一段示范，现有工作给出的形式差别很大：交错的 token 序列、图节点、关键点、压缩后的 chunk embedding、任务计划与子目标描述、语义关键点、任务无关的交互三元组、原始的感觉运动序列。每一种都在某个设定下有效，彼此之间缺少直接比较。</p>

<p>背后是一个尚未解决的取舍：抽象程度高的表示（关键点、结构化计划）降低了归纳难度，但丢弃的信息可能正是接触、力和材质这些难以符号化的部分；抽象程度低的表示（原始感觉运动序列）保留了全部信息，代价是模型需要自己建立示范与当前场景之间的对应。未来的技术路线会收敛到什么形态呢。</p>

<p><strong>3. 我们如何 scaling context？</strong></p>

<p>VLA 需要以较高频率输出动作，上下文每变长一点，每一步决策的推理开销都会增加。这与语言模型的长上下文问题不同：那里的代价是延迟，这里的代价是控制回路本身可能跟不上。哪些信息必须逐帧保留、哪些可以压缩成一个 token、哪些可以丢弃，如何解决机器人领域的long-context scaling问题？</p>

<hr />

<h2 id="结语">结语</h2>

<p>机器人 ICL 正在脱离”把 GPT 的 prompt 类比直接搬过来”的阶段。</p>

<p>它真正改变的是策略的输入对象：机器人不再只看当前图像和一句指令，它可以读示范、读视频、读目标状态、读自己刚才的探索结果，并据此判断眼前这个场景里，哪些是任务信息、哪些是系统信息、哪些只是噪声。</p>

<p>所以最值得关心的问题不是”上下文有多少 token”，而是：<strong>上下文里，有没有装上当前策略缺失、但完成任务所必需的那部分信息。</strong></p>

<p>有时候这部分信息是一条任务示范；有时候是一段人类视频；而当相机和本体发生变化时，它可能只是机器人自己随便动的那几秒。</p>

<hr />

<h2 id="速查表">速查表</h2>

<table>
  <thead>
    <tr>
      <th>方法</th>
      <th>上下文里装什么</th>
      <th>归纳出什么</th>
      <th>适应预算</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>One-Shot IL</td>
      <td>一条机器人示范</td>
      <td>任务规则</td>
      <td>1 条</td>
    </tr>
    <tr>
      <td>ICRT</td>
      <td>1–2 条遥操作轨迹</td>
      <td>任务规则</td>
      <td>1–2 条</td>
    </tr>
    <tr>
      <td>RICL</td>
      <td>从 10–20 条示范中检索的片段</td>
      <td>任务规则</td>
      <td>10–20 条</td>
    </tr>
    <tr>
      <td>Instant Policy</td>
      <td>示范 + 当前观测（图结构）</td>
      <td>任务与局部对应</td>
      <td>1–2 条</td>
    </tr>
    <tr>
      <td>BPP</td>
      <td>单条手持采集示范</td>
      <td>新行为</td>
      <td>1 条</td>
    </tr>
    <tr>
      <td>KAT</td>
      <td>关键点 + action token</td>
      <td>视觉—动作对应</td>
      <td>~10 条</td>
    </tr>
    <tr>
      <td>Action Tokenizer Matters</td>
      <td>示范（关注 token 化本身）</td>
      <td>平滑的动作表示</td>
      <td>—</td>
    </tr>
    <tr>
      <td>Vid2Robot</td>
      <td>人类操作视频</td>
      <td>运动意图</td>
      <td>1 段视频</td>
    </tr>
    <tr>
      <td>MimicDroid</td>
      <td>无标注 human play video</td>
      <td>可跨本体复用的行为结构</td>
      <td>1 段片段</td>
    </tr>
    <tr>
      <td>Point Policy</td>
      <td>人类视频 → 语义关键点</td>
      <td>与形态无关的操作意图</td>
      <td>离线视频</td>
    </tr>
    <tr>
      <td>ICWM</td>
      <td>任务无关的随机交互三元组</td>
      <td>当前系统的观测—动作映射</td>
      <td>几秒随机运动</td>
    </tr>
    <tr>
      <td>GEN-1.5</td>
      <td>3–12 秒人类演示</td>
      <td>任务规则</td>
      <td>3–12 秒</td>
    </tr>
    <tr>
      <td>Qwen-RobotManip</td>
      <td>episode 内历史轨迹</td>
      <td>当前本体身份</td>
      <td>episode 内</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="参考文献">参考文献</h2>

<ul>
  <li><a href="https://arxiv.org/abs/1703.07326">One-Shot Imitation Learning</a>, Neurips 2017</li>
  <li><a href="https://arxiv.org/abs/1802.01557">One-Shot Imitation from Observing Humans via Domain-Adaptive Meta-Learning</a>, arXiv 2018</li>
  <li><a href="https://arxiv.org/abs/2408.15980">In-Context Imitation Learning via Next-Token Prediction</a>, ICRA 2025</li>
  <li><a href="https://arxiv.org/abs/2508.02062">RICL: Adding In-Context Adaptability to Pre-Trained Vision-Language-Action Models</a>, CoRL 2025</li>
  <li><a href="https://arxiv.org/abs/2411.12633">Instant Policy: In-Context Imitation Learning via Graph Diffusion</a>, ICLR 2025</li>
  <li><a href="https://arxiv.org/abs/2606.08154">SynthICL: Scalable In-context Imitation Learning with Synthetic Data</a>, arXiv 2026</li>
  <li><a href="https://arxiv.org/abs/2606.30457">Behavior Prompting Policy: Demonstrations as Prompts for Manipulation</a>, arXiv 2026</li>
  <li><a href="https://arxiv.org/abs/2608.11671">StellaVLA: In-Context Structured Demonstration for Generalizable Vision-Language-Action Models</a>, arXiv 2026</li>
  <li><a href="https://arxiv.org/abs/2403.19578">Keypoint Action Tokens Enable In-Context Imitation Learning in Robotics</a>, RSS 2024</li>
  <li><a href="https://arxiv.org/abs/2503.01206">Action Tokenizer Matters in In-Context Imitation Learning</a>, IROS 2025</li>
  <li>
    <p><a href="https://arxiv.org/abs/2604.15215">A Hierarchical Spatiotemporal Action Tokenizer for In-Context Imitation Learning in Robotics</a>, arXiv 2026</p>
  </li>
  <li><a href="https://arxiv.org/abs/2403.12943">Vid2Robot: End-to-end Video-conditioned Policy Learning with Cross-Attention Transformers</a>, RSS 2024</li>
  <li><a href="https://arxiv.org/abs/2509.09769">MimicDroid: In-Context Learning for Humanoid Robot Manipulation from Human Play Videos</a>, ICRA 2026</li>
  <li>
    <p><a href="https://arxiv.org/abs/2502.20391">Point Policy: Unifying Observations and Actions with Key Points for Robot Manipulation</a>, arXiv 2025</p>
  </li>
  <li>
    <p><a href="https://arxiv.org/abs/2606.26025">In-Context World Modeling for Robotic Control</a>, arXiv 2026</p>
  </li>
  <li><a href="https://arxiv.org/abs/2606.17846">Qwen-RobotManip Technical Report: Alignment Unlocks Scale for Robotic Manipulation Foundation Models</a>, arXiv 2026</li>
  <li>
    <p><a href="https://generalistai.com/blog/gen-1.5">GEN-1.5: Embodied Foundation Models are One-Shot Learners</a>, Generalist AI 2026</p>
  </li>
  <li><a href="https://arxiv.org/abs/2604.15483">π0.7: A Steerable Generalist Robotic Foundation Model with Emergent Capabilities</a>, Physical Intelligence 2026</li>
  <li><a href="https://arxiv.org/abs/2508.19236">MemoryVLA: Perceptual-Cognitive Memory in Vision-Language-Action Models for Robotic Manipulation</a>, ICLR 2026</li>
  <li><a href="https://arxiv.org/abs/2510.20328">MemER: Scaling Up Memory for Robot Control via Experience Retrieval</a>, ICLR 2026</li>
  <li><a href="https://arxiv.org/abs/2510.04246">ContextVLA: Vision-Language-Action Model with Amortized Multi-Frame Context</a>, arXiv 2025</li>
  <li><a href="https://arxiv.org/abs/2603.03596">MEM: Multi-Scale Embodied Memory for Vision Language Action Models</a>, arXiv 2026</li>
  <li><a href="https://arxiv.org/abs/2607.03449">HiMe: Hierarchical Embodied Memory for Long-Horizon Vision-Language-Action Control</a>, ICML 2026</li>
  <li><a href="https://arxiv.org/abs/2604.18933">Gated Memory Policy: In-Context Memorization and Adaptation</a>, arXiv 2026</li>
  <li><a href="https://arxiv.org/abs/2607.15275">RoboTTT: Context Scaling for Robot Policies</a>, arXiv 2026</li>
  <li><a href="https://arxiv.org/abs/2608.09448">VANE: Reliable Test-Time Training for Vision-Language-Action Models via Future Visual Representation Prediction</a>, arXiv 2026</li>
</ul>

<h2 id="引用本文">引用本文</h2>

<div class="language-bibtex highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">@article</span><span class="p">{</span><span class="nl">Wang2026RobotICL</span><span class="p">,</span>
  <span class="na">title</span>   <span class="p">=</span> <span class="s">"机器人的 In-Context Learning：上下文里究竟应该装什么"</span><span class="p">,</span>
  <span class="na">author</span>  <span class="p">=</span> <span class="s">"Wang, Siyin"</span><span class="p">,</span>
  <span class="na">year</span>    <span class="p">=</span> <span class="s">"2026"</span><span class="p">,</span>
  <span class="na">url</span>     <span class="p">=</span> <span class="s">"https://sinwang20.github.io/blog/robot-icl-zh/"</span>
<span class="p">}</span>
</code></pre></div></div>]]></content><author><name>Siyin Wang</name></author><category term="blog" /><category term="robotics" /><category term="in-context-learning" /><summary type="html"><![CDATA[从任务示范、执行历史到系统辨识，梳理机器人上下文中不同信息分别消解的不确定性。]]></summary></entry></feed>