显示:
智能体式世界动作模型
Agentic World Action Models
Zhuoyang Liu^{1*}, Dantong Niu^{1,2*\dagger}, Botong Zhang^{3*}, Boning Shao^{1*},
Jing Wang^{2}, Ruijie Zheng^{2}, Yuvan Sharma^{2}, Runyu Lu^{2}, Jiaming Liu^{2},
Renrui Zhang^{3}, Roei Herzig^{1}, Yutong Bai^{1}, Ken Goldberg^{1}, Danfei Xu^{2},
Yuke Zhu^{2\dagger}, Guanzhi Wang^{2\dagger}, Linxi “Jim” Fan^{2\dagger}, Trevor Darrell^{1\dagger}
^1加州大学伯克利分校(UC Berkeley) ^2NVIDIA ^3宾夕法尼亚大学
^*共同第一作者 ^\dagger共同指导
arXiv:2610.30136v1 [cs.RO],2026 年 10 月 21 日提交(50 页,38 幅图,12 张表,2 个算法)
项目主页:https://agentic-wam.github.io/
中文逐段翻译与解释
整理日期:2026 年 11 月 7 日
解释
阅读方式。沿用本工作区已完成译文的三联框:灰色框保留英文原文,蓝色框给出中文译文,橙色框解释概念、设计动机、数字核对和结论边界。图片使用原论文源码中的矢量图和原始关键帧图片,表格完整重排,均附原注、译注和绿色解读框;两个算法改写为中文伪代码。保留原章节和图表编号(本文附录不重置图表编号,图 8–38、表 5–12 和算法 1–2 都在附录中)。原文正文的章节顺序是方法、实验、相关工作、结论,本译稿照此排列。正文引用沿用原文的“作者,年份”格式,参考文献列表从略。附录中的代码清单保持原样,译文框中把代码注释译成中文。解释框是本译稿的分析,不属于作者原文。
来源与许可。原论文:https://arxiv.org/abs/2610.30136v1;PDF:https://arxiv.org/pdf/2610.30136v1。本文以知识共享署名 4.0 国际许可(CC BY 4.0)发布。本译稿是在此许可下对原文的翻译与改编,原文版权归原作者所有;转载或再分发时请注明原作者、原文链接和许可,并说明本译稿对原文做了翻译和加注。英文内容以下载的 v1 源码及 PDF 为依据。
目录导读摘要(Abstract)1 引言(Introduction)2 智能体式世界动作模型(Agentic World Action Model)2.1 混合 Transformer 架构2.2 联合去噪生成2.3 WAM 中的智能体式编程2.4 训练方案3 实验(Experiments)3.1 仿真实验3.2 真实世界实验3.3 消融研究4 相关工作(Related Work)5 结论(Conclusion)致谢、AI 使用声明、伦理声明与可复现性声明A 模型与训练细节(Model and Training Details)B 预训练数据集分析(Analysis on Pretraining Dataset)B.1 预训练数据集统计B.2 技能库定义B.3 YAM 技能的可视化B.4 人类第一视角技能的可视化B.5 技能在嵌入空间中的分布C 基线实现细节(Baseline Implementation Details)D 真实世界实验设置(Real-world Experimental Setup)E 真实世界任务进度(Real-world Task Progress)E.1 YAM 任务E.2 Tianji–Sharpa 任务F 代码生成质量分析(Analysis on Code Generation Quality)F.1 预训练模型的代码生成质量F.2 后训练模型的代码生成质量G 真实世界结果的补充分析(Additional Analysis on Real-world Results)G.1 代码专家对语言跟随能力的影响G.2 代码专家对技能鲁棒性的影响G.3 混合动作的评测细节H 失败案例分析(Failure Case Analysis)I 混合动作算法(Hybrid Actions Algorithm)J 仿真实验的补充细节(Additional Simulation Experiment Details)J.1 RoboTwin 逐任务结果J.2 混合动作的评测细节K 智能体标注的细节(Agentic Annotation Details)K.1 底层原语K.2 标注智能体的提示词与协调者协议L 局限性与未来工作(Limitations and Future Work)译者附注:原文数字核对与阅读提示汇总

导读

本文要解决的问题。世界动作模型(WAM)把“预测未来画面”和“生成动作”放进同一个生成模型,能利用视频预训练带来的物理先验,但它输出的只是连续的视频和动作块,没有显式的任务结构:一个长任务该分几步、每步调用什么技能、参数是多少,模型只能隐式地学。另一条路线是以 Code-as-Policies 为代表的智能体式机器人,用大模型写代码调用感知与控制原语,结构清晰、技能可复用,却不知道物理世界会如何变化,执行质量完全取决于原语的可靠性。本文提出 AW-0,把“写代码”放进 WAM 内部,让代码与视频、动作一起生成。方法链条。(1) 三专家 MoT 架构:代码专家(SDAR-1.7B 主干,加冻结的 Qwen3-VL 视觉塔)、视频专家(Cosmos-Predict2.5-2B 初始化)和动作专家(从零训练的 DiT),各有独立参数,在 28 层中每层通过分块因果的联合注意力交换信息,顺序为代码 \to 视频 \to 动作。(2) 联合去噪:代码用 LLaDA 式掩码扩散,视频和动作用流匹配,三者在同样的 4 个去噪步中一起生成;视频噪声分布经重采样并用重要性权重平衡,使动作专家能读到信息更丰富的视频特征。(3) 自动标注流水线:Gemini 3.1 Pro 看关键帧、基于“仅声明”的原语 API 为每个子任务切片写程序,Claude Code 作为协调者把反复出现的模式提炼成技能,最终得到 YAM 23 个、人类 27 个技能;冻结技能库后用缓存复用为约 2,900 小时、207 万个切片补标代码。(4) 两种推理模式:默认模式下代码只作为条件,不执行;混合模式下代码通过有效性检查就交给 CaP 原语执行,否则执行动作块。
概念本文中的具体含义
WAM世界动作模型:联合生成未来视频与动作的策略,如 DreamZero。
代码专家 / 代码流AW-0 中负责生成技能程序的 Transformer 专家,及其 token 序列。默认不执行,只通过注意力影响视频和动作。
MoT混合 Transformer:按模态固定分工的多个专家,各有参数,共享一次联合注意力。
分块因果注意力专家内双向、专家间按 C\to V\to A 单向可见:视频能看代码,动作能看代码和视频。
联合去噪代码(掩码扩散)、视频与动作(流匹配)在同一组去噪步中一起生成;与之对照的是先自回归写完代码再生成视频和动作的 AR 方式。
切片(slice)一个人工子任务标注对应的时间区间,以及为它标注的一小段程序。模型每次只生成当前切片。
画布(canvas)推理时追加在提示后的 G=128 个掩码 token,在 T=4 步中每步揭开 32 个。
记忆缓存把此前已生成的切片压缩为 K 个可学习记忆槽,作为代码流的前缀,帮助判断任务进度。
原语 / 技能原语是 API 中的单步操作(grasp、move_arm 等);技能是由原语组合、带参数的 Python 函数(fold_edge_over 等)。
仅声明 API标注时使用的 API 只有函数签名和说明、没有实现,程序是对示范的“描述”,不被执行。
混合执行 / 仲裁每个重规划点同时得到代码切片和动作块;代码通过阶段、依赖、语法、白名单等检查就执行代码,否则执行动作块。
rubric 分数真机评测的可累加评分:每完成一个子步骤得部分分,满分 1,报告 3\times16 次试验的平均(%)。
干净 / 随机RoboTwin 2.0 的两种评测设置:只在干净数据上训练,在干净场景和域随机化场景下测试。
读实验时要抓住的几点。第一,两种推理模式要分开看:表 1、表 2 中“AW-0(本文)”是默认模式(代码不执行),“AW-0(混合)”只出现在仿真表 1 中,真机混合只在一个任务上测过。第二,仿真上的优势集中在干净设置:默认模式干净 80.8%、随机 20.6%,随机设置下不如 \pi_{0.5}(27.7%);混合模式随机 29.2% 为最高,但它的训练示范来源不同,附录 J.2 承认这一比较不能分离混合执行本身的作用。第三,真机结果是最强证据:8 个任务平均 71.1 对最强基线 46.0,并且每个任务都最好,灵巧手任务上的领先尤其大。第四,消融揭示了收益的来源:去掉代码流后平均只剩 32.9,低于 DreamZero 和 \pi_{0.5};把代码换成自然语言子目标仍有 63.6。也就是说,“有一条与视频、动作联合去噪的规划流”贡献了大部分收益,代码形式本身再贡献约 7.5 分。第五,代码的位置很关键:V\to C\to A(代码不能影响视频)平均只有 48.3。第六,真机指标是部分得分(rubric),并非完全成功率,且没有报告种子间方差。最有启发性的结果。其一,规划信号应当进入视频预测,而不只是进入动作:C\to V\to A 比 V\to C\to A 高约 23 分,附录 G 的视频对比也显示,有代码时预测的画面会“伸向”指令要求的物体。这为“在 WAM 中引入高层规划”提供了一条具体的设计原则。其二,离散规划与连续生成可以同步进行:用掩码扩散生成代码,使代码能和视频、动作在同样的 4 步中完成,比自回归先写代码更快(0.23 s 对 0.55 s)也更好(71.1 对 54.5)。其三,代码作为条件不必完全正确:预训练代码专家的原语 F1 只有 0.365,下游代码标签本身也存在不少不一致(见译者附注),但作为条件信号仍然带来大幅提升。这暗示代码的价值主要在于提供结构化的语义线索,而不在于精确可执行。其四,混合执行的互补性:在结构化、刚性物体的任务上(如按颜色排方块)代码执行非常可靠,在接触复杂、形状不规则的环节则需要学到的动作补救,但目前的仲裁只看合法性,不评估优劣。与工作区其他译稿的联系。AW-0 属于世界动作模型路线,可与 OpenWAM(WAM 预训练的系统性探索)、InternW0-Delta(连接预测动力学与动作的 WAM)、VPP2(视频预测策略)对照阅读:这些工作关心如何把视频预测与动作生成结合好,AW-0 则在此之上加入了显式的代码规划流。AW-0 用约 1,000 小时人类第一视角数据做预训练,并把人手重定向到 22 维灵巧手关节,这与 Ego2Robot、Liber-0 利用人类第一视角数据的思路相关。基线 \pi_{0.5}、GR00T 系列的背景可参考 StarVLA、LingBot-VLA-2.0。在“让大模型直接控制机器人”的智能体路线上,可参考 VLM-as-Policy。动作块的执行方式与重规划时机问题,可参考 Training-Time-RTC。
teaser_v6_1003.pdf
图 1:AW-0 概览。AW-0 是一个智能体式世界动作模型(agentic world action model),它通过对技能程序、未来视频和控制轨迹进行联合去噪,把基于代码的规划与世界动作建模统一起来。一条智能体流水线负责发现可复用技能,并为机器人示范和人类示范标注程序,这些标注同时用于预训练和下游微调。由此得到的策略在平行夹爪任务和灵巧手任务上都取得了很强的表现。
原图注:Overview of AW-0. AW-0 is an agentic world action model that unifies code-based planning with world action modeling by jointly denoising skill programs, future video, and control trajectories. An agentic pipeline discovers reusable skills and annotates robot and human demonstrations with programs for both pretraining and downstream fine-tuning. The resulting policy achieves strong performance on both parallel-gripper and dexterous-hand tasks.
图 1 解读
这张总览图分成左、中、右三栏,对应“数据—模型—任务”。左栏(Pre-training Data,预训练数据)列出两类预训练数据:上方是 YAM 双臂平行夹爪机器人的遥操作数据,下方是人类第一视角(egocentric)操作视频。底部三行数字概括了规模:约 3K 小时数据、子任务级(subtask-level)语言标注、50 个可复用技能。附录 B 给出精确数字:YAM 1,919 小时、人类视频 994 小时,合计约 2,913 小时;技能库 YAM 23 个、人类 27 个,合计 50 个。中栏上半(AW-0 Model)是模型本身。底部一条横贯的“Mixture-of-Transformers Backbone”(混合 Transformer 主干)上架着三个专家:代码专家(Code Expert,做基于代码的规划)、视频专家(Video Expert,预测未来视频)和动作专家(Action Expert,预测动作)。左上角是代码专家生成的一段程序,例如先 approach_best_grasp 靠近香蕉的最佳抓取位姿,再关闭右夹爪,再用 relocate_object 把它搬到右侧。图中把这种“执行代码得到的动作”称为 Code-as-Policy Action(CaP,代码即策略)。右上角是“混合执行”(Hybrid Execution):程序通过有效性检查(Valid program)就交给机器人执行;否则回退(Fallback)到 WAM 直接生成的动作块,即“纯 WAM 动作”(Pure: WAM actions)。中栏下半(Agentic Annotation Pipeline)是自动标注流水线:给定关键帧和一句子任务描述(如“Flatten out the blanket.”,把毯子铺平),编码智能体(Coding Agent)基于一组原语 API(pick、place、grasp、release、regrasp、insert、handover、rotate 等)编写程序;协调者(Coordinator)把反复出现的程序片段提炼(Distill)成技能库(Skill Library)中的函数,如 fold_edge_over、adjust_in_place、pour_into_target。最右侧的“Aligned Program”展示了标注结果:程序的每一小段都对齐到视频的某个帧区间(如 f3331–3364、f3365–3413)。右栏(Post-training Tasks)是下游微调评测的两组真机任务:YAM 平行夹爪任务和灵巧手(Dexterous Hands,即后文的 Tianji–Sharpa 平台)任务,以及作者声称的三项收益:语言跟随(Language Following)、语义推理(Semantic Reasoning)和通过代码生成实现的混合动作(Hybrid Action via Code Generation)。这张图的要点是:代码在本文中有两重身份。在模型内部,它是一条与视频、动作同步去噪的“规划流”;在模型外部,它又是可以直接拿去执行的程序。后文的默认模式只用前一重身份,混合模式两者都用。

摘要(Abstract)

原文
Recent world action models provide visual foresight and future prediction for robot manipulation, but lack explicit mechanisms for compositional skill reuse. Agentic robotics combines code-based planning and reasoning with reusable skills, but often lacks predictive grounding in physical dynamics.
译文
近来的世界动作模型(world action model, WAM)为机器人操作提供了视觉上的预见能力和对未来的预测,但缺少显式的机制来组合、复用技能。智能体式机器人(agentic robotics)把基于代码的规划与推理同可复用技能结合起来,却往往缺少以物理动力学为依据的预测能力(predictive grounding)。
解释
开头两句对比两条路线,各指出一个短板,后文的方法就是让二者互补。世界动作模型是把“视频预测”和“动作生成”放进同一个生成模型的策略:模型先(或同时)想象接下来几帧画面会怎样变化,再据此输出动作。它的长处是“会预见”,即知道推一下杯子杯子会怎么动;短处是生成的视频和动作块都是连续信号,本身并不表达“这个长任务分几步、每步调用哪个技能、参数是什么”。所谓“组合式技能复用”,就是把任务拆成有名字、带参数的技能调用,再像搭积木一样拼起来。智能体式机器人指以大模型为“大脑”、通过写代码调用感知与控制 API 来完成任务的系统,代表工作是 Code-as-Policies。它的长处是结构清晰、技能可复用;短处是代码只描述“意图”,不知道物理世界在执行时会怎样变化,动作的好坏完全取决于底层原语是否可靠。
原文
We introduce AW-0, an agentic world action model framework that integrates code-based planning with joint video and action prediction. We jointly model code, future video, and robot actions as three coupled generative streams within a unified mixture-of-transformers architecture. Within this architecture a code expert generates parameterized skill routines and control logic while video and action experts generate future visual states and low-level motor commands. Code serves two complementary roles: it structures multi-step prediction and control within the world model and represents skills as reusable programs for subsequent agentic execution.
译文
我们提出 AW-0,一个智能体式世界动作模型框架,它把基于代码的规划与视频—动作的联合预测整合在一起。我们在统一的混合 Transformer(mixture-of-transformers)架构中,把代码、未来视频和机器人动作建模为三条相互耦合的生成流。在这一架构里,代码专家(code expert)生成带参数的技能例程(skill routine)和控制逻辑,视频专家和动作专家分别生成未来的视觉状态和底层电机指令。代码承担两种互补的角色:在世界模型内部,它为多步预测与控制提供结构;同时,它把技能表示为可复用的程序,供后续的智能体式执行使用。
解释
“三条生成流”是全文的核心设计。代码是离散的 token 序列,视频和动作是连续张量,三者在同一个去噪过程中一起从“噪声 / 掩码”状态被还原出来(第 2.2 节)。“混合 Transformer”(MoT)指三个专家各自有一套参数(注意力投影、前馈网络、归一化层),但在每一层通过共享的注意力互相读取对方的表示,因此既能各自专精,又能相互条件化。代码的两种角色要分清。第一种是“内部条件”:生成的代码不一定被执行,只是作为规划信息,通过注意力引导视频和动作的生成,这是论文的默认推理模式。第二种是“外部程序”:生成的代码真的拿到机器人上执行(混合模式,第 2.3 节和附录 I)。后文的实验结论分别对应这两种角色,阅读时应留意某个数字来自哪种模式。
原文
We further introduce an automated curation pipeline that labels robot and human video trajectories with aligned programs and consolidates recurring routines into reusable skill libraries. Evaluations on RoboTwin 2.0 and physical bimanual manipulation tasks show improved task performance over VLA and WAM baselines, alongside gains in language following, semantic reasoning and robustness, demonstrating that agentic code enables connection between planning, prediction and execution within WAMs.
译文
我们还提出一条自动化的数据整理流水线:它为机器人和人类的视频轨迹标注与之对齐的程序,并把反复出现的例程归并为可复用的技能库。在 RoboTwin 2.0 和真实双臂操作任务上的评测表明,与 VLA 和 WAM 基线相比,AW-0 提升了任务表现,同时在语言跟随、语义推理和鲁棒性上也有收益。这说明,智能体式代码能够在 WAM 内部把规划、预测与执行连接起来。
解释
要训练“会写代码的 WAM”,训练数据里就必须有与动作对齐的代码,而现成的机器人数据集只有视频、动作和语言标注。作者因此用大模型智能体(Gemini 3.1 Pro 写程序,Claude Code 做协调者)自动为约 2,900 小时的数据补标代码,并在标注过程中提炼出技能库(第 2.3 节、附录 K)。摘要中的实验结论需要加两点限定。其一,RoboTwin 上 AW-0 默认模式的平均成功率最高(50.7%),但在随机化设置下(20.6%)低于 \pi_{0.5}(27.7%);“鲁棒性”上的优势来自混合模式(29.2%),而混合模式使用的是另一套训练示范(附录 J.2 承认这一比较“不能单独分离混合执行的效果”)。其二,真机 8 个任务上的平均 rubric 分数领先最强基线 25.1 个百分点,这是全文最强的证据。

1引言(Introduction)

原文
Learning-based robotic manipulation has progressed from small task-specific visuomotor policies over a decade ago to broadly supervised foundation models that connect perception, language, and action (Levine et al., 2016; Zitkovich et al., 2023; Kim et al., 2024; Niu et al., 2024; Black et al., 2024; Bjorck et al., 2025; Niu et al., 2025; Liu et al., 2025; Black et al., 2025; Liu et al., 2026). In parallel, self-supervised video prediction has long been valued as a learning signal to model the world: image inpainting extended to video prediction led to action-conditioned video predictors that can imagine the future before committing to an action (Pathak et al., 2016; He et al., 2021; Tong et al., 2022; Finn et al., 2016; Assran et al., 2025; Ye et al., 2026).
译文
基于学习的机器人操作已经从十多年前针对特定任务的小型视觉运动策略(visuomotor policy),发展到连接感知、语言与动作、经过广泛监督训练的基础模型(Levine et al., 2016; Zitkovich et al., 2023; Kim et al., 2024; Niu et al., 2024; Black et al., 2024; Bjorck et al., 2025; Niu et al., 2025; Liu et al., 2025; Black et al., 2025; Liu et al., 2026)。与此同时,自监督的视频预测长期被视为建模世界的一种学习信号:图像修复(inpainting)被推广到视频预测,进而发展出以动作为条件的视频预测器,它们能在执行动作之前先“想象”未来(Pathak et al., 2016; He et al., 2021; Tong et al., 2022; Finn et al., 2016; Assran et al., 2025; Ye et al., 2026)。
解释
这一段交代两条历史脉络,为 WAM 的出现做铺垫。第一条是策略学习:从 Levine 等人 2016 年的端到端视觉运动策略,到 RT-2(Zitkovich et al., 2023)、OpenVLA(Kim et al., 2024)、\pi_0/\pi_{0.5}(Black et al.)、GR00T(Bjorck et al., 2025)等视觉—语言—动作(VLA)基础模型。第二条是视频预测:从“补全被遮住的像素”(Context Encoders,Pathak et al., 2016;MAE,He et al., 2021;VideoMAE,Tong et al., 2022)这类自监督目标出发,到 Finn 等人 2016 年以动作为条件的视频预测,再到 V-JEPA 2(Assran et al., 2025)和 DreamZero(Ye et al., 2026)。“先想象再行动”正是 WAM 的直觉来源:如果模型能预测执行某个动作后画面会怎么变,它就在某种意义上理解了物理。
原文
World Action Models (WAMs) couple visual prediction with visuomotor policies, grounding control in representations of how the physical world evolves (Ye et al., 2026; Kim et al., 2026; Yuan et al., 2026). This predictive grounding is particularly valuable for complex manipulation, where successful execution depends on anticipating object motion, contact, and the consequences of low-level actions. Yet predicted video and action chunks do not by themselves specify how a long-horizon task should be decomposed: which reusable skills to invoke, how to parameterize them, or how to compose them across subtasks. Predicting the world and/or actions in general can also be expensive, especially as it can be difficult to establish limits on how many degrees of freedom need to be “world modeled” (or teleoperated, in the supervised setting).
译文
世界动作模型(WAM)把视觉预测与视觉运动策略耦合起来,让控制建立在“物理世界将如何演化”的表示之上(Ye et al., 2026; Kim et al., 2026; Yuan et al., 2026)。这种基于预测的依据对复杂操作尤其有价值,因为能否成功执行取决于能否预判物体的运动、接触以及底层动作的后果。然而,预测出的视频和动作块本身并不说明一个长时程任务应当如何分解:调用哪些可复用技能、如何为它们设定参数、如何在各子任务之间组合它们。此外,预测世界和 / 或动作一般而言代价高昂,尤其是很难界定究竟需要对多少自由度进行“世界建模”(在监督设定下,则是需要遥操作多少自由度)。
解释
这里点出 WAM 的两个问题。缺少任务分解。视频和动作块(action chunk,一次预测未来若干步的连续动作)都是“低层”信号。比如“打包背包”要先拉开拉链、再放物品、再拉上拉链,WAM 只能隐式地从像素和动作中学到这个顺序,没有一个显式的、可检查的“计划”。代价与边界。最后一句说得比较含糊,大意是:世界里可预测的东西太多(每个物体、每根手指),到底要把多少自由度纳入建模(或在采数据时由人遥操作出来)没有明确的上限,因此预测既昂贵又难以界定范围。作者暗示,代码作为一种紧凑的“抽象”,可以只描述与任务相关的部分。不过后文并没有直接用实验回应这一点,只在第 3.3 节报告了加入代码专家带来的延迟开销。
原文
Agentic robot systems provide complementary structure to WAMs: a programmatic harness that selects reusable skills and tools, binds them to the current scene, tracks progress, and replans as observations change (Liang et al., 2023; Fu et al., 2026; Zhang et al., 2026; Xiao et al., 2026; Lu et al., 2026). This programmatic representation makes the structure of multi-step tasks explicit, specifying which skills and tools to invoke, with what arguments, and in what sequence. Yet agentic robotics often lacks predictive grounding in real-world physical dynamics and does not leverage a learned model of how the world will change as the robot acts.
译文
智能体式机器人系统为 WAM 提供了互补的结构:它是一种程序化的“外壳”(harness),负责选择可复用的技能和工具,把它们绑定到当前场景,跟踪任务进度,并在观测变化时重新规划(Liang et al., 2023; Fu et al., 2026; Zhang et al., 2026; Xiao et al., 2026; Lu et al., 2026)。这种程序化表示把多步任务的结构显式化:调用哪些技能和工具、使用什么参数、按什么顺序。然而,智能体式机器人往往缺少以真实物理动力学为依据的预测,也没有利用一个学到的、关于“机器人行动时世界将如何变化”的模型。
解释
harness 原意是“挽具、外壳”,在智能体语境中指包在大模型外面的那层程序框架:它决定调用哪个工具、记录状态、出错时重试。这里列举的工作中,Code-as-Policies(Liang et al., 2023)是让 LLM 直接写机器人控制代码的开创性工作,CaP-X(Fu et al., 2026)和 ASPIRE(Lu et al., 2026)是本文后面直接借用的“智能体写代码”框架。本段与上一段形成镜像:WAM 有“物理预见”而无“结构”,智能体系统有“结构”而无“物理预见”。下一段的提案就是把两者合到一起。
原文
We advocate for an architecture that combines the foresight and action execution of WAMs with the cognitive efficiency, reusable skills, and potential for future self-improvement of agentic robotics. We propose AW-0, an agentic WAM framework that incorporates code-based planning and generation directly into world action modeling via a grounded code expert that harnesses broad programming priors to synthesize modular skills featuring explicit parameters and control logic. Code guides synchronized video and control modules within a mixture-of-transformers architecture, simultaneously denoising discrete code structures, predicted visual observations, and low-level motor commands.
译文
我们主张采用这样一种架构:它把 WAM 的预见能力与动作执行能力,同智能体式机器人的认知高效性、可复用技能以及未来自我改进的潜力结合起来。我们提出 AW-0,一个智能体式 WAM 框架。它通过一个有视觉依据的(grounded)代码专家,把基于代码的规划与生成直接纳入世界动作建模;这个代码专家借助广泛的编程先验,合成具有显式参数和控制逻辑的模块化技能。在混合 Transformer 架构中,代码引导同步运行的视频模块和控制模块,对离散的代码结构、预测的视觉观测和底层电机指令同时去噪。
解释
“广泛的编程先验”指代码专家的主体参数来自一个预训练语言模型(附录 A:SDAR-1.7B,一个扩散式语言模型),它在海量代码和文本上学到了“程序该怎么写”,因此只需少量机器人数据就能学会写出语法正确的技能调用。“有视觉依据”指代码专家能看到当前多视角图像(通过冻结的 Qwen3-VL 视觉塔),而不是只读文字指令。“同时去噪”是和“先生成代码、再生成视频和动作”的自回归流水线相对而言的。第 3.3 节 Q3 专门比较了这两种方式:联合去噪在 8 个真机任务中的 7 个上更好,延迟也从 0.55 s 降到 0.23 s。
原文
We first show that such agents can be realized by adding a code expert to a WAM, leveraging multisensor action and code generation in a planning stage. We develop a modular generation framework: planning via code generation significantly improves WAM performance, by appropriately conditioning the long-horizon generations required for complex robotic tasks. An automated curation pipeline extracts systematic routines into reusable program libraries, mapping code segments directly onto robotic and human video trajectories. This approach bridges high-level semantic reasoning with predictive physical dynamics, establishing a unified language for compositionality across distinct environments and tasks. We further demonstrate agentic skill reuse via a hybrid deployment strategy that selects between raw action chunk execution and programmatic skill invocation. Empirical evaluations across RoboTwin 2.0 benchmarks and physical bimanual setups show substantial performance gains compared to standard VLA and WAM baselines, highlighting programmatic code as an effective structural backbone for predictive planning, skill discovery, and embodied robotic control.
译文
我们首先表明,这样的智能体可以通过给 WAM 加上一个代码专家来实现,在规划阶段利用多传感器的动作生成与代码生成。我们构建了一个模块化的生成框架:通过代码生成来做规划,能为复杂机器人任务所需的长时程生成提供恰当的条件,从而显著提升 WAM 的性能。一条自动化整理流水线把系统性的例程提取为可复用的程序库,并把代码片段直接映射到机器人和人类的视频轨迹上。这一方法把高层语义推理与预测性的物理动力学连接起来,为跨不同环境和任务的组合性建立了一种统一的语言。我们还通过一种混合部署策略展示了智能体式的技能复用:该策略在直接执行原始动作块与以程序方式调用技能之间进行选择。在 RoboTwin 2.0 基准和真实双臂平台上的实证评测表明,与标准的 VLA 和 WAM 基线相比,AW-0 带来了显著的性能提升,凸显了程序代码作为预测性规划、技能发现与具身机器人控制的有效结构骨架的作用。
解释
这段按“模型—数据—部署—实验”的顺序预告全文。“把代码片段直接映射到视频轨迹上”是指标注时每一段程序都对应一个子任务的帧区间(图 1 中的 f3331–3364 等),因此训练时模型在某一时刻看到的是“当前子任务”对应的那一小段程序(第 2.3 节称之为 slice,“切片”)。“统一的语言”这一说法的依据是:YAM 机器人数据和人类视频虽然本体不同,却被标注成同一种形式的程序(都调用 grasp、release 等语义动词,见附录 K.1),从而在代码层面共享结构。不过两者的技能库是分开提炼的(23 个和 27 个),并没有合成一个库。
原文
Our primary contribution is the conceptualization and realization of agentic robotic skills within a world action model framework, showing that code generation improves action prediction in the world model, and that the code generated from the world model can be re-used in an agentic framework. Specific novel contribution elements include: a mixture-of-transformers framework integrating a code expert into world action models via simultaneous denoising of code, video, and control; an automated agentic pipeline designed for program annotation and skill discovery; a dataset of such structured skill programs; and a hybrid execution policy that dynamically toggles between programmatic skill invocation and direct deployment of action chunks from the WAM action expert.
译文
我们的主要贡献是在世界动作模型框架内提出并实现了智能体式机器人技能:我们表明代码生成能改进世界模型中的动作预测,并且世界模型生成的代码可以在智能体框架中复用。具体的新贡献包括:一个通过对代码、视频和控制同时去噪、把代码专家整合进世界动作模型的混合 Transformer 框架;一条为程序标注与技能发现而设计的自动化智能体流水线;一个由此类结构化技能程序构成的数据集;以及一种混合执行策略,它在以程序方式调用技能与直接部署 WAM 动作专家输出的动作块之间动态切换。
解释
贡献可以归为四项:(1) 模型结构,即带代码专家的三专家 MoT 与联合去噪(第 2.1–2.2 节);(2) 标注流水线,即智能体写程序并提炼技能库(第 2.3 节、附录 K);(3) 数据,即约 2,900 小时、207 万个子任务切片的程序标注(附录 B);(4) 部署策略,即混合执行(附录 I)。读者可以对照后文检查每项贡献有多少实验支撑。(1) 由消融 Q1、Q3 支撑;(2) 的标注质量没有直接的人工评估,只有通过下游性能(Q2)和代码专家的验证指标(附录 F)间接体现;(3) 论文没有说明是否公开;(4) 在仿真中有利有弊(干净设置下降、随机设置上升),在真机中只在一个任务上做了评测(Fold and Stack Towels,84.4% \to 90.6%)。

2智能体式世界动作模型(Agentic World Action Model)

原文
We formulate AW-0 as a unified conditional generative model over code, video, and actions, which respectively describe structured skill plans, future scene dynamics, and continuous robot motion. We represent a skill program as a discrete token sequence C_0=(c_1,\ldots,c_{N_c}), future observations as continuous video latents Z_0 encoded by a pretrained variational autoencoder, and robot motion as an action chunk A_0=(a_t,\ldots,a_{t+H-1}) over a horizon of H steps.
译文
我们把 AW-0 表述为一个关于代码、视频和动作的统一条件生成模型,三者分别描述结构化的技能计划、未来的场景动态和连续的机器人运动。我们把技能程序表示为离散 token 序列 C_0=(c_1,\ldots,c_{N_c}),把未来观测表示为由预训练变分自编码器(VAE)编码得到的连续视频潜变量 Z_0,把机器人运动表示为跨越 H 步时域的动作块 A_0=(a_t,\ldots,a_{t+H-1})。
解释
三种模态的数据形态不同:代码是长度为 N_c 的离散 token 序列,每个 c_i 取自分词器词表;视频是 VAE 把未来若干帧压缩后的连续张量 Z_0(附录 A:Wan2.2 VAE,48 个潜通道,每个视角取 9 帧);动作是从当前时刻 t 起连续 H 步的动作向量(附录 A:H=32,真机每步 64 维,RoboTwin 每步 14 维)。下标 0 是扩散模型的惯例,表示“干净数据”,即噪声水平为 0 的样本;后面带噪声的版本记作 Z_{\sigma_v}、A_{\sigma_a},带掩码的代码记作 \widetilde C_r。
原文
The model is conditioned on the current multi-view observations \mathcal{O}_t, a language instruction L, the current robot state S_t, and a compact memory M_t of the preceding program slices. Together, these inputs define the conditioning context for our joint generative model:
\mathcal{C}_t=\{\mathcal{O}_t,L,S_t,M_t\}, \qquad p_\theta(C_0,Z_0,A_0\mid\mathcal{C}_t).(1)
译文
模型以当前的多视角观测 \mathcal{O}_t、语言指令 L、当前机器人状态 S_t,以及对此前各程序切片的紧凑记忆 M_t 为条件。这些输入共同构成联合生成模型的条件上下文:
\mathcal{C}_t=\{\mathcal{O}_t,L,S_t,M_t\}, \qquad p_\theta(C_0,Z_0,A_0\mid\mathcal{C}_t).(1)
解释
式 (1) 说的是:给定上下文 \mathcal C_t,模型 p_\theta 建模的是三种输出的联合分布,而不是分别建模 p(C_0\mid\mathcal C_t)、p(Z_0\mid\mathcal C_t)、p(A_0\mid\mathcal C_t)。联合建模意味着生成的代码、视频和动作彼此一致,比如代码说“抓芒果”,视频里手就伸向芒果,动作也朝芒果走。四个条件中,M_t 是本文特有的。单帧观测往往看不出任务进行到哪一步(例如叠好的毛巾和没叠的毛巾都在桌上),所以模型额外记住“之前已经生成过哪些程序切片”。第 2.3 节的“记忆缓存”给出它的实现:把历史切片压缩成 K 个可学习的记忆槽。
原文
The unified conditional generation proceeds by jointly denoising the three modalities. Given masked code \widetilde C_r and noisy continuous states Z_{\sigma_v} and A_{\sigma_a}, the unified model predicts
(\ell_\theta^c,v_\theta^v,v_\theta^a) =F_\theta(\widetilde C_r,Z_{\sigma_v},A_{\sigma_a},\sigma_v,\sigma_a;\mathcal{C}_t),(2)
where r is the code-mask ratio, \sigma_v and \sigma_a are the video and action noise levels, \ell_\theta^c are code-token logits, and v_\theta^v,v_\theta^a are the video and action velocity predictions. The formulation unifies structured skill programming, future dynamics prediction, and continuous control in one generative process.
译文
这种统一的条件生成通过对三种模态联合去噪来进行。给定被掩码的代码 \widetilde C_r 以及带噪声的连续状态 Z_{\sigma_v} 和 A_{\sigma_a},统一模型预测
(\ell_\theta^c,v_\theta^v,v_\theta^a) =F_\theta(\widetilde C_r,Z_{\sigma_v},A_{\sigma_a},\sigma_v,\sigma_a;\mathcal{C}_t),(2)
其中 r 是代码掩码比例,\sigma_v 和 \sigma_a 分别是视频和动作的噪声水平,\ell_\theta^c 是代码 token 的 logits,v_\theta^v、v_\theta^a 是对视频和动作的速度预测。这一表述把结构化的技能编程、未来动态预测和连续控制统一到同一个生成过程之中。
解释
式 (2) 描述网络 F_\theta 的一次前向计算:输入是“部分被破坏”的三种模态,输出是“如何把它们修复”的预测。代码一侧采用掩码扩散(masked diffusion)。比例为 r 的 token 被替换成 [MASK],网络对每个位置输出词表上的 logits \ell_\theta^c,用来猜被遮住的 token 是什么。r=1 时全部被遮住,对应“从零开始写程序”。视频和动作一侧采用流匹配(flow matching)。\sigma\in[0,1] 表示噪声比例,网络输出“速度”v_\theta,即从当前带噪样本走向干净样本(或反方向)的方向向量。推理时从纯噪声出发,沿速度场积分若干步即可得到干净样本。两侧的噪声水平 \sigma_v、\sigma_a 作为输入告诉网络“现在有多脏”;代码一侧没有显式的时间步,掩码比例 r 隐含在输入中(图 2 中标注为“Discrete · No Timestep”)。三者在同一次前向中相互注意,因此每一步去噪时,代码的“半成品”就能影响视频和动作的去噪方向。

2.1混合 Transformer 架构

method_v6_0926.pdf
图 2:AW-0 框架。AW-0 包含一个混合 Transformer 主干,三个专家分别生成代码、视频和动作。三者被联合去噪:视频和动作采用连续流匹配,代码采用离散掩码扩散。
原图注:AW-0 Framework. AW-0 includes a Mixture-of-Transformers backbone with three experts generating code, video and action, respectively, which are denoised jointly, with video and action under continuous flow matching and the code under discrete masked diffusion.
图 2 解读
全图分上下两大块。上半部分(AW-0 Framework)是推理时的数据流。最底部是输入:三视角图像经过 ViT(黄色 token)送入代码专家;语言指令“Arrange Fruits …”经过文本编码器(灰色 token);代码画布是一串被掩码的 token(绿色带叉)。图像还经过 VAE 变成视频潜变量,与带噪的未来帧(蓝色)一起送入视频专家;机器人状态与带噪动作(紫色)送入动作专家,图中标明是“64-D Action Prediction”(64 维动作预测,对应附录 A 的统一状态—动作空间)。三个专家之间是“多模态共享注意力”(Multimodal Shared Attention)。上方输出依次是:解码出的程序(左上角的代码框)、预测的未来帧(中间的图片串)和动作曲线(右侧的多色轨迹)。最右侧(Action Execution)对比两种执行方式。“Pure”(纯动作模式,即默认模式):直接把动作块交给机器人。“Hybrid”(混合模式):先拿到技能程序,判断是否有效(Valid?);有效就运行代码(Run Code),否则执行动作块(Action Chunk)。底部注明“Code Guides Both Modes”:无论哪种模式,代码都在引导生成。左下(Joint Denoising Step,联合去噪的一步):代码是“离散、无时间步”,视频和动作是“连续,分别带噪声水平 \sigma_v、\sigma_a”。中间的“模态间因果注意力”(Modality-wise Causal Attention)小矩阵画出 C、V、A 的可见关系:下三角结构,即 C 只看 C,V 看 C 和 V,A 看三者。输出分别是 token logits(再做 Top-k 揭开)和两个速度场(各走一步流)。下标 (t+1) 表示去噪迭代的下一步,不是机器人时间。右下(Code Diffusion Generation):(a) 训练时随机抽取掩码比例 r\sim U(0,1),只在被掩码的位置上计算损失;(b) 采样时从全掩码(t=1)开始迭代揭开,每步按置信度揭开 top-k 个位置,已揭开的 token 保持固定(锁的图标,“Revealed stay fixed”),直到 t=0 全部揭开。
原文
As shown in Figure 2, AW-0 adopts a Mixture-of-Transformers (MoT) (Liang et al., 2025) architecture with three experts for skill planning, future visual prediction, and continuous control. Each expert keeps its own attention projections (W_Q,W_K,W_V,W_O), layer normalizations, and FFNs, communicating through masked joint attention at every transformer layer. The attention mask is bidirectional within each expert and blockwise causal across experts, following the order of code, video and action. We provide additional model and training details in Appendix A.
译文
如图 2 所示,AW-0 采用混合 Transformer(Mixture-of-Transformers, MoT)架构(Liang et al., 2025),三个专家分别负责技能规划、未来视觉预测和连续控制。每个专家各自保留自己的注意力投影(W_Q,W_K,W_V,W_O)、层归一化和前馈网络(FFN),在每一个 Transformer 层上通过带掩码的联合注意力相互通信。注意力掩码在每个专家内部是双向的,在专家之间则按照“代码、视频、动作”的顺序呈分块因果(blockwise causal)结构。更多模型与训练细节见附录 A。
解释
MoT 与 MoE 的区别。混合专家(MoE)是每个 token 由路由器选择进入哪个 FFN;MoT 则按模态固定分工,代码 token 永远走代码专家的参数,视频 token 永远走视频专家的参数。三个专家的 Q、K、V 被投影到同一个 2,048 维注意力空间(附录 A),然后拼在一起做一次注意力,这就是“联合注意力”。分块因果掩码。按 C \to V \to A 的顺序:代码 token 只能看代码(以及条件前缀);视频 token 能看代码和视频;动作 token 能看全部三者。这样代码可以影响视频,视频可以影响动作,反向则不行。之所以不让代码看视频,是为了让代码成为“上游计划”,而不是对视频预测的事后解释。第 3.3 节 Q1 比较了 V\to C\to A 等其他顺序。
原文
Code Expert. The code expert augments a pretrained language backbone with a frozen Qwen3-VL (Bai et al., 2025) ViT and adopts LLaDA-style masked-token diffusion (Nie et al., 2025). Current multi-view observations are encoded into visual tokens and prepended to the instruction and program tokens to ground skill planning in the scene.
译文
代码专家。代码专家在一个预训练语言主干之上加入冻结的 Qwen3-VL(Bai et al., 2025)ViT,并采用 LLaDA 风格的掩码 token 扩散(Nie et al., 2025)。当前的多视角观测被编码成视觉 token,放在指令 token 和程序 token 之前,使技能规划以场景为依据。
解释
LLaDA 是一种“扩散式语言模型”:不像 GPT 那样从左到右逐词生成,而是从一整段 [MASK] 出发,每步并行预测所有被遮住的位置,再把最有把握的那些固定下来,迭代若干步写完整段文本。选择这种方式的直接原因是:它与视频、动作的扩散去噪天然同步,三者可以在同样的 T 步里一起完成(第 3.3 节 Q3 中联合去噪胜过自回归的依据也在这里)。附录 A 补充了细节:语言主干来自 SDAR-1.7B,其词嵌入、层归一化、FFN 和输出头都被冻结,只训练 MoT 注意力投影和调制参数;视觉 token 每个视角 70 个,三视角共 210 个,由一个可训练的 merger 映射到代码嵌入空间。
原文
Video and Action Experts. The video expert uses a video DiT initialized from Cosmos-Predict2.5 (NVIDIA, 2025b) to model VAE-encoded future frames conditioned on observed frames, while a separate action DiT generates continuous action chunks. Both experts receive language embeddings through cross-attention, with additional robot-state conditioning for the action expert.
译文
视频专家与动作专家。视频专家使用一个由 Cosmos-Predict2.5(NVIDIA, 2025b)初始化的视频 DiT,在已观测帧的条件下对 VAE 编码后的未来帧建模;另有一个独立的动作 DiT 生成连续的动作块。两个专家都通过交叉注意力接收语言嵌入,动作专家还额外以机器人状态为条件。
解释
DiT(Diffusion Transformer)是用 Transformer 作为去噪网络的扩散模型。视频专家继承了 Cosmos-Predict2.5-2B 这一大规模视频生成模型的物理先验,这是 WAM 一类方法的共同做法。动作 DiT 则从零训练(附录 A),宽度只有 1,024,比另两个专家的 2,048 窄。注意语言进入模型有两条路:代码专家把指令当作 token 直接拼进序列;视频和动作专家通过交叉注意力读取预计算的 Cosmos-Reason1 语言嵌入。因此,即便去掉代码专家(消融中的“w/o code”),视频和动作专家仍然能看到语言指令。

2.2联合去噪生成

原文
At each denoising step, the MoT jointly predicts code logits and continuous velocities as defined in Eq. 2. The code stream supplies planning context to the video and action experts, while the action expert also reads video representations. These connections operate throughout generation, allowing all three modalities to evolve within the same iterative process.
译文
在每一个去噪步中,MoT 按式 (2) 的定义联合预测代码 logits 和连续速度。代码流为视频专家和动作专家提供规划上下文,动作专家还读取视频表示。这些连接在整个生成过程中都起作用,使三种模态在同一个迭代过程中共同演化。
解释
“在整个生成过程中都起作用”是与“两阶段”方案对比而言的。两阶段方案先完整生成代码,再以它为条件生成视频和动作。联合去噪则是:第 1 步时代码还几乎全是掩码,视频和动作也几乎全是噪声,三者各自往前走一步;到第 2 步,代码已揭开一部分,视频和动作就能参考这些半成品。按附录 A,联合去噪默认只有 4 步。
原文
Modality-Specific Corruption. Video and action generation use continuous flow matching. For m\in\{v,a\}, with X_0^v=Z_0 and X_0^a=A_0, we construct noisy inputs as
X_{\sigma_m}^m=(1-\sigma_m)X_0^m+\sigma_m\epsilon_m, \qquad \epsilon_m\sim\mathcal{N}(0,I), \qquad \sigma_m=\phi_{\gamma_m}(u_m) =\frac{\gamma_m u_m}{1+(\gamma_m-1)u_m}.(3)
The original video sampling distribution p_{\mathrm{pre}} is induced by u_v=s b, where b\sim\mathrm{Beta}(7,1) and s=0.999; actions use u_a\sim U(0,1). Both shifts are \gamma_m=5. Code instead uses discrete absorbing-mask corruption. We sample a mask ratio r\sim U(0,1) and corrupt each token independently:
\widetilde c_i= \begin{cases} [\mathrm{MASK}], & b_i=1,\\ c_i, & b_i=0, \end{cases} \qquad b_i\sim\mathrm{Bernoulli}(r).(4)
Observed frames, visual prefixes, and language conditions remain uncorrupted. Training samples the modality-specific noise levels independently. The continuous experts regress the velocity target \epsilon_m-X_0^m, while the code expert minimizes cross-entropy over masked program positions.
译文
按模态区分的破坏方式。视频和动作的生成采用连续流匹配。对 m\in\{v,a\},令 X_0^v=Z_0、X_0^a=A_0,按下式构造带噪输入:
X_{\sigma_m}^m=(1-\sigma_m)X_0^m+\sigma_m\epsilon_m, \qquad \epsilon_m\sim\mathcal{N}(0,I), \qquad \sigma_m=\phi_{\gamma_m}(u_m) =\frac{\gamma_m u_m}{1+(\gamma_m-1)u_m}.(3)
视频原有的采样分布 p_{\mathrm{pre}} 由 u_v=s b 导出,其中 b\sim\mathrm{Beta}(7,1),s=0.999;动作使用 u_a\sim U(0,1)。两者的偏移量(shift)都是 \gamma_m=5。代码则采用离散的吸收态掩码(absorbing-mask)破坏:先采样掩码比例 r\sim U(0,1),再对每个 token 独立地进行破坏:
\widetilde c_i= \begin{cases} [\mathrm{MASK}], & b_i=1,\\ c_i, & b_i=0, \end{cases} \qquad b_i\sim\mathrm{Bernoulli}(r).(4)
已观测的帧、视觉前缀和语言条件都不被破坏。训练时,各模态的噪声水平独立采样。两个连续专家回归速度目标 \epsilon_m-X_0^m,代码专家则在被掩码的程序位置上最小化交叉熵。
解释
式 (3) 的线性插值。X_\sigma=(1-\sigma)X_0+\sigma\epsilon 是流匹配(rectified flow)的标准写法:\sigma=0 是干净数据,\sigma=1 是纯噪声,中间沿直线插值。对 \sigma 求导得 \mathrm dX_\sigma/\mathrm d\sigma=\epsilon-X_0,这正是网络要回归的“速度目标”。偏移函数 \phi_\gamma。\sigma=\gamma u/(1+(\gamma-1)u) 把均匀的 u 扭曲到偏向高噪声的一侧。以 \gamma=5 验算:u=0.5 时 \sigma=2.5/3=0.83;u=0.2 时 \sigma=1/1.8=0.56。也就是说,一半的样本落在 \sigma>0.83 的高噪声区。这是高分辨率视频扩散中常用的技巧:数据维度越高,越需要在高噪声区多训练。视频的 \mathrm{Beta}(7,1)。\mathrm{Beta}(7,1) 的密度为 7b^6,均值 7/8=0.875,质量高度集中在 1 附近;再经 \gamma=5 偏移,视频训练几乎都发生在很高的噪声水平上。这是 Cosmos-Predict2.5 预训练时的分布(下标 pre),作者沿用它来保护视频先验。下一段指出,这对“给动作提供有用的视频特征”并不理想。式 (4) 的代码掩码。每个 token 以概率 r 被换成 [MASK](“吸收态”指一旦被遮就不会变成别的 token)。r 从 U(0,1) 采样,所以训练覆盖了从“几乎不遮”到“几乎全遮”的各种情况。损失只在被遮住的位置上计算,与 BERT、LLaDA 一致。
原文
Noise Resampling for Predictive Guidance. To provide more informative video features for action prediction, we broaden the high-noise pretrained distribution with a uniform component:
u_v\sim q(u)=\alpha p_{\mathrm{pre}}(u)+(1-\alpha)p_{\mathrm{ref}}(u), \qquad p_{\mathrm{ref}}=U(0,1).(5)
Objective-specific importance weights balance video learning and predictive guidance:
w_v(u)=\frac{p_{\mathrm{pre}}(u)}{q(u)}, \qquad w_g(u)=\frac{p_{\mathrm{ref}}(u)}{q(u)}, \qquad \mathcal{L}=\mathbb{E}_{u_v\sim q}\!\left[ \lambda_v\bar w_v\ell_v+ \bar w_g(\lambda_a\ell_a+\lambda_c\ell_c) \right].(6)
Here, \ell_v,\ell_a are flow-matching losses, and \ell_c is masked-token cross-entropy; bars denote clipped weights normalized to unit batch mean. We use \alpha=0.5 and leave code-mask sampling unchanged.
译文
为预测性引导而做的噪声重采样。为了给动作预测提供信息量更大的视频特征,我们在预训练时那个偏向高噪声的分布中混入一个均匀分量,把它拓宽:
u_v\sim q(u)=\alpha p_{\mathrm{pre}}(u)+(1-\alpha)p_{\mathrm{ref}}(u), \qquad p_{\mathrm{ref}}=U(0,1).(5)
针对不同目标的重要性权重用来平衡视频学习与预测性引导:
w_v(u)=\frac{p_{\mathrm{pre}}(u)}{q(u)}, \qquad w_g(u)=\frac{p_{\mathrm{ref}}(u)}{q(u)}, \qquad \mathcal{L}=\mathbb{E}_{u_v\sim q}\!\left[ \lambda_v\bar w_v\ell_v+ \bar w_g(\lambda_a\ell_a+\lambda_c\ell_c) \right].(6)
其中 \ell_v、\ell_a 是流匹配损失,\ell_c 是掩码 token 交叉熵;带横线的权重表示经过截断(clip)并归一化到批内均值为 1 的权重。我们取 \alpha=0.5,代码掩码的采样方式保持不变。
解释
这一段解决一个具体矛盾。视频专家希望保持 Cosmos 预训练的噪声分布 p_{\text{pre}}(几乎全是高噪声),以免破坏视频先验。动作专家却要读取视频专家的中间特征来决定动作;如果视频永远处在高噪声状态,这些特征几乎不含未来画面的信息。推理只有 4 步去噪,中后期的视频特征处在中低噪声水平,训练时却几乎见不到这种情况。解决办法是两步。第一步,式 (5) 把视频噪声的采样分布换成混合分布 q:一半来自 p_{\text{pre}},一半来自均匀分布,这样中低噪声的样本也能出现。第二步,式 (6) 用重要性加权把两个目标“各还原到各自想要的分布”:视频损失乘 w_v=p_{\text{pre}}/q,期望就等于在 p_{\text{pre}} 下的期望,视频训练与原来等价;动作和代码损失乘 w_g=p_{\text{ref}}/q,期望就等于在均匀分布下的期望,相当于在各种视频噪声水平下都训练动作和代码。数字直觉。p_{\text{pre}} 是 u=0.999b、b\sim\mathrm{Beta}(7,1) 的密度,约为 7u^6。在 u=0.3 处,p_{\text{pre}}\approx 0.005,q\approx0.5\times0.005+0.5\approx0.50,于是 w_v\approx0.01、w_g\approx2.0:这类低噪声样本几乎只用于训练动作和代码。在 u=0.95 处,p_{\text{pre}}\approx7\times0.735\approx5.1,q\approx3.07,于是 w_v\approx1.67、w_g\approx0.33:这类样本主要用于训练视频。顺带一提,\alpha=0.5 时两种权重都不超过 1/\alpha=1/(1-\alpha)=2,所以附录 A 表 6 中的截断阈值 4.0 在归一化之前实际上不会生效。\lambda_v,\lambda_c,\lambda_a 是三项损失的权重,附录 A 表 6 给出 (1,0.5,1)。注意代码损失 \ell_c 也乘了 w_g:代码专家虽然不读视频(因果顺序 C 在 V 之前),但这样做使得三项损失在同一批样本上的加权方式一致。

2.3WAM 中的智能体式编程

code_label_pipeline_v3_1003.pdf
图 3:自动标注流水线。编码智能体使用预定义的原语 API 和已有技能编写子任务级程序,协调者则把反复出现的模式提炼成跨任务可复用的技能库。技能库冻结之后,我们对整个语料进行标注:当接触与运动证据相符时复用缓存的代码,否则生成新的标注。
原图注:Automatic Annotation Pipeline. Coding agents generate subtask-level programs using predefined primitive APIs and available skills, while a coordinator distills recurring patterns into a library of reusable skills across tasks. With the library frozen, we annotate the corpus by reusing cached code when contact and motion evidence match and generating new labels otherwise.
图 3 解读
图分三层,自上而下对应流水线的三个阶段。第一层(Skill Discovery,技能发现):左侧是编码智能体能用的“工具箱”。Primitive APIs(原语 API)列出了 pick、place、rotate、handover、move_arm、goto_relative 等函数签名;Skills 一栏是已经存在的技能,如 pick_and_bring()、tilt_pour_over_target()。“Subtask Subset”是抽样出的子任务及其关键帧,例子是“Turn over the bag of laundry powder.”(把洗衣粉袋翻过来)。编码智能体(Gemini 标志)为它写出一串调用:关左手、松右手、绕竖直轴把洗衣粉袋旋转 180°、右手抓住、松左手。右侧的协调者(Claude 标志)读这些程序,做“提炼与准入”(Distill + Admit),把反复出现的片段变成技能。第二层(Skill Library,技能库):最终得到“50 Reusable Skills across Tasks”(跨任务的 50 个可复用技能)。左侧拼图是各种任务的场景,中间是几个技能对应的画面(free_hand_and_pick、tilt_pour_over_target、move_item_two_handed、pick_and_bring),右侧是 tilt_pour_over_target 的完整定义:先 detect_objects_oneshot 检测目标,移动手臂到目标上方,然后 rotate 倾倒 tilt_deg,再反向转回。中间的虚线和锁标志“Library Frozen”表示此后技能库不再变化。第三层(Corpus Annotation,语料标注):对全部示范(All Demos),先查“子任务 \to 代码”缓存(由冻结后重新标注抽样子任务集得到);若接触与运动证据匹配就复用(Reuse),未命中(Miss)则调用智能体重新标注(Re-annotate),结果写回缓存(Write Back)。缓存机制的意义在于降低成本:语料有 200 多万个子任务切片(附录 B 表 7),如果每个都调用一次大模型,代价会非常高。
原文
Automatic Annotation Pipeline. We propose an automatic annotation pipeline (Figure 3) that annotates the training data with skill planning code in three stages. We first sample one episode per task and use Gemini 3.1 Pro (Google DeepMind, 2026) to write subtask-level skill programs against predefined declaration-only APIs, while Claude Code running Claude Opus 4.8 (Anthropic, 2026) acts as a coordinator that distills recurring, task-general skills. We then freeze the skill library and re-annotate the sampled episodes with the finalized vocabulary, forming a cache of reusable subtask-to-program mappings. To annotate the remaining corpus, we reuse a cached program when the subtask's contact and motion pattern matches an existing entry; otherwise, the coding agent generates a new annotation and adds it to the cache. See Appendix K for further pipeline details.
译文
自动标注流水线。我们提出一条自动标注流水线(图 3),分三个阶段为训练数据标注技能规划代码。第一阶段,我们从每个任务中抽取一个回合(episode),用 Gemini 3.1 Pro(Google DeepMind, 2026)基于预定义的“仅声明”(declaration-only)API 编写子任务级的技能程序,同时由运行 Claude Opus 4.8(Anthropic, 2026)的 Claude Code 充当协调者,提炼反复出现、与具体任务无关的技能。第二阶段,我们冻结技能库,用最终确定的词汇重新标注被抽样的回合,形成一个可复用的“子任务 \to 程序”映射缓存。第三阶段,在标注其余语料时,如果某个子任务的接触与运动模式与缓存中已有的条目匹配,就复用缓存的程序;否则由编码智能体生成新的标注并加入缓存。流水线的更多细节见附录 K。
解释
“仅声明”API 是理解这条流水线的关键:标注用的 API 只有函数签名和文档字符串(附录 K.1 图 38),没有实现,标注时也不执行代码。程序的作用是“描述”示范中发生了什么,而不是“复现”它。因此标注无法通过执行来验证,只能做静态检查(语法、函数是否存在、参数是否合法),再在 YAM 数据上核对程序隐含的夹爪开合事件是否与传感器记录一致(附录 K.2)。分工。Gemini 3.1 Pro 是“看帧写代码”的标注员;Claude Code 是“审稿人兼技能库管理员”,它从不写程序,只审核标注结果、决定哪些重复模式值得收入技能库。准入标准见附录 K.2:至少在两个任务中出现、参数化、粒度是一个“动作”而不是整套“任务配方”、不与已有技能重复。缓存复用的匹配条件因本体而异:YAM 上要求程序隐含的接触事件与观测到的夹爪事件一致;人类视频上要求手部运动轨迹的距离在阈值以内。这样,同一任务的数千个回合中,相同的子任务大多能直接套用已有的程序,只有少数需要重新调用大模型。
原文
Code Usage in Model. Annotated programs define the interface through which the code expert plans. During training, the code stream concatenates a conditioning prompt and the active slice, a short block of primitive or skill calls. Only the slice is corrupted by the absorbing-mask process of Eq. 4 and supervised by the masked-token loss. At each replanning point, the policy rebuilds the prompt and appends a canvas of G mask tokens. The canvas is decoded jointly with the video and action states over the T denoising steps, committing the G/T most confident masked positions per step. By default, the decoded slice is not executed. It serves as a subtask plan that conditions the action expert through joint denoising, while the predicted action chunk drives the robot.
译文
代码在模型中的用法。标注出的程序定义了代码专家进行规划的接口。训练时,代码流把一段条件提示(prompt)与当前激活的切片(slice,即一小段原语或技能调用)拼接起来;只有切片部分按式 (4) 的吸收态掩码过程被破坏,并由掩码 token 损失监督。在每个重规划点,策略重新构建提示,并在其后追加一块由 G 个掩码 token 组成的画布(canvas)。这块画布与视频和动作状态一起,在 T 个去噪步中被联合解码,每步确定置信度最高的 G/T 个被掩码位置。默认情况下,解码出的切片并不执行;它作为子任务计划,通过联合去噪为动作专家提供条件,而驱动机器人的是预测出的动作块。
解释
数字代入。附录 A 给出画布长度 G=128 个 token、联合去噪步数 T=4,因此每步揭开 128/4=32 个 token。这与扩散语言模型的常见做法一致:先填最有把握的位置(通常是函数名、括号等结构性 token),后填不确定的位置(例如具体参数)。“切片”的含义。一个回合被人工子任务标注切成若干段,平均每个 YAM 回合 13.5 段、每个人类回合 6.2 段(附录 B 表 7)。每段对应一小块程序,例如“approach_best_grasp(...); robot.close_gripper('right')”。模型每次只生成“当前这一段”,而不是整个任务的完整程序;此前各段由记忆缓存提供(见下一段)。默认不执行这一点很重要:在主实验表 1、表 2 的“AW-0 (ours)”一行中,代码只是“思考”,机器人动作全部来自动作专家。这与 Code-as-Policies 一类方法根本不同:后者的代码就是动作本身。
原文
Memory Cache. Since a single observation is often insufficient to reveal task progress, the code expert receives a compact cache of the slices generated so far. The history slices are compressed into K learnable memory slots and read back as prefix tokens before the prompt in the code stream. During training, the buffer holds the preceding annotated slices, replaced with probability p by the model's own predictions. At inference, it is reset per episode and grows with each decoded slice.
译文
记忆缓存。由于单次观测往往不足以揭示任务进度,代码专家会收到一份紧凑的缓存,记录到目前为止已生成的切片。这些历史切片被压缩到 K 个可学习的记忆槽中,并作为前缀 token 放在代码流中提示的前面。训练时,缓冲区存放此前的标注切片,并以概率 p 替换为模型自己的预测。推理时,缓冲区在每个回合开始时清空,并随每个新解码的切片增长。
解释
“以概率 p 替换为模型自己的预测”是对付暴露偏差(exposure bias)的常见手段,类似 scheduled sampling:如果训练时记忆里永远是正确的标注,推理时一旦模型自己写错一段,后续就会遇到训练中从未见过的输入。混入模型自己的输出,可以让它学会在“历史不完美”的情况下继续规划。需要说明的是,正文和附录都没有给出 K 和 p 的具体取值(附录 A 的表 5、表 6 中也没有),复现时需要自行设定。
原文
Hybrid Actions. We additionally explore an inference mode in which the decoded code slice is executed in the manner of Code-as-Policies (CaP) against a library of perception and control primitives, and the executed actions are integrated with the direct actions of the action expert. At deployment, the two channels are arbitrated at every replanning point: the decoded slice takes over the current stage only if it passes a set of validity and progress checks; otherwise the action chunk from the same forward pass drives the robot until the next replan. See Appendix I for the full algorithm.
译文
混合动作。我们还探索了另一种推理模式:把解码出的代码切片像 Code-as-Policies(CaP)那样,基于一个感知与控制原语库去执行,再把执行得到的动作与动作专家的直接动作整合起来。部署时,两条通道在每个重规划点进行仲裁:只有当解码出的切片通过一系列有效性与进度检查时,它才接管当前阶段;否则,由同一次前向计算得到的动作块驱动机器人,直到下一次重规划。完整算法见附录 I。
解释
这是代码的“第二重身份”:从“条件”变成“可执行程序”。执行需要真实的原语实现,与标注时“仅声明”的 API 不同。在仿真中,作者用 Molmo 做目标定位、SAM 3 做分割、Contact-GraspNet 生成抓取,再加上 RoboTwin 的运动规划器(附录 J.2);在真机上只在 YAM 平台上做了这种模式,因为灵巧手缺少现成的 CaP 系统(附录 L)。“仲裁”逻辑见附录 I 的算法 1、2:每次重规划时,同一次前向同时给出一个代码切片和一个动作块;若代码通过阶段、依赖、语法、白名单等检查,就执行代码并丢弃动作块,否则执行动作块。值得注意的是,仲裁只看“代码是否合法”,并不判断“代码是否比动作块更好”,作者在附录 J.2 中把它列为干净设置下性能下降的原因之一。

2.4训练方案

原文
We first pretrain AW-0 on approximately 2,000 hours of YAM robot data and approximately 1,000 hours of egocentric human manipulation data to learn a general unified generative prior. We apply the automatic annotation pipeline in Section 2.3 to extract two embodiment-specific skill libraries containing 50 skill entries in total (23 for YAM and 27 for egocentric human demonstrations) and annotate demonstrations with temporally aligned program slices. The annotated data support joint pretraining of code, video, and action generation, connecting structured skill plans with visual dynamics and continuous control across embodiments and scenarios. We further include the details of dataset statistics, preprocessing, and state-action representations in Appendix B. For each downstream task, we reuse the same annotation pipeline under the frozen skill library to label task-specific demonstrations and jointly fine-tune AW-0 on the resulting code, video, and action targets using the objective in Eq. 6.
译文
我们首先在约 2,000 小时的 YAM 机器人数据和约 1,000 小时的人类第一视角操作数据上预训练 AW-0,以学到一个通用的统一生成先验。我们用第 2.3 节的自动标注流水线提取出两个与本体相关的技能库,共 50 个技能条目(YAM 23 个,人类第一视角示范 27 个),并为示范标注时间上对齐的程序切片。这些标注数据支持代码、视频与动作生成的联合预训练,把结构化的技能计划与跨本体、跨场景的视觉动态和连续控制联系起来。数据集统计、预处理以及状态—动作表示的细节见附录 B。对每个下游任务,我们在冻结的技能库下复用同一条标注流水线来标注该任务的示范,并用式 (6) 的目标在得到的代码、视频和动作目标上对 AW-0 进行联合微调。
解释
两阶段训练。预训练覆盖约 2,913 小时、24.9 万个回合、606 个任务(附录 B 表 7),在 48 张 H100 上跑 1 个 epoch,有效批大小 2,592(附录 A 表 6)。下游微调时每个真机任务用 100 条示范、训练 20 个 epoch;RoboTwin 用 2,500 条示范、10 万步。冻结技能库的意义。下游任务(如 Deal Poker、Solve Rubik's Cube)不再扩充技能库,只用预训练时提炼出的 50 个技能加原语来描述。这样代码专家在预训练中学到的“技能名 \to 运动模式”的对应关系可以直接迁移。但这也意味着,下游任务中如果出现技能库没有覆盖的新动作,就只能用原语拼写出来。附录 F.2 中 Solve Rubik's Cube 生成的 hold(robot, 'rubiks cube', 'right') 调用的就是一个不在附录 B 表 8、表 9 中的名字,可见下游数据中仍出现了库外的辅助函数(附录 K.2 的提示允许“继承的技能”以普通函数调用)。跨本体的动作空间。YAM 数据和人类数据被映射到同一个 64 维空间(附录 A),后续的 Tianji–Sharpa 灵巧手平台也用这个空间,因此 22 维手指关节在预训练中能从人类手部数据学到先验。

3实验(Experiments)

原文
We evaluate AW-0 on RoboTwin 2.0 (Chen et al., 2025) and 8 real-world tasks spanning parallel-gripper and dexterous-hand embodiments, assessing language following, semantic reasoning, and skill execution, as well as the robustness benefits of hybrid execution in variant scenarios.
译文
我们在 RoboTwin 2.0(Chen et al., 2025)以及 8 个真实世界任务上评测 AW-0。真机任务涵盖平行夹爪和灵巧手两种本体,考察语言跟随、语义推理和技能执行,以及混合执行在变化场景中带来的鲁棒性收益。
解释
实验分三块:仿真(第 3.1 节,RoboTwin 2.0 的 50 个双臂任务)、真机(第 3.2 节,两个平台各 4 个任务)和消融(第 3.3 节,三个问题 Q1–Q3,全部在 8 个真机任务上做)。注意消融没有在仿真上做,因此仿真结果与架构设计之间的因果联系没有直接证据。
原文
Baselines. We compare four baselines: (1) \pi_{0.5} (Black et al., 2025), a state-of-the-art VLA with strong semantic reasoning; (2) EgoScale (Zheng et al., 2026), a VLA pretrained on large-scale egocentric human data; (3) DreamZero (Ye et al., 2026), a WAM jointly generating future video and actions; and (4) WLA (Yang et al., 2026), an autoregressive model jointly predicting textual subtasks, subgoal images, and actions. All baselines and the default AW-0 configuration use the same task-specific demonstrations for post-training and follow the same evaluation protocol. The simulation hybrid configuration uses separately collected CaP-generated demonstrations, as described below. Baseline implementation details are provided in Appendix C.
译文
基线。我们与四个基线比较:(1) \pi_{0.5}(Black et al., 2025),一个具有很强语义推理能力的先进 VLA;(2) EgoScale(Zheng et al., 2026),一个在大规模人类第一视角数据上预训练的 VLA;(3) DreamZero(Ye et al., 2026),一个联合生成未来视频与动作的 WAM;(4) WLA(Yang et al., 2026),一个联合预测文本子任务、子目标图像和动作的自回归模型。所有基线与 AW-0 的默认配置都使用相同的任务示范进行后训练,并遵循相同的评测协议。仿真中的混合配置使用另行收集的、由 CaP 生成的示范,详见下文。基线的实现细节见附录 C。
解释
四个基线各对应 AW-0 的一个“对照点”:\pi_{0.5} 代表纯 VLA(无视频预测、无代码);EgoScale 代表“用人类视频预训练”这一数据路线,与 AW-0 使用人类第一视角数据相呼应;DreamZero 代表纯 WAM(有视频预测、无代码);WLA 最接近 AW-0 的思路,也在 WAM 中加入了高层规划,只不过用的是文字子任务加子目标图像,并且是自回归生成。因此,AW-0 相对 WLA 的优势,可以部分看作“代码 + 联合去噪”相对“文字 + 自回归”的优势。需要注意的口径差异:仿真混合配置的训练数据与其他方法不同(CaP 程序执行采集的示范,而不是 RoboTwin 自带运动规划器采集的示范),这一点作者在附录 J.2 中再次强调。附录 C 还显示各基线的训练轮数、动作时域、GPU 数各不相同(例如 \pi_{0.5} 微调 50 个 epoch,DreamZero 10 个 epoch,AW-0 20 个 epoch),都按各自官方配方设置。

3.1仿真实验

原文
Benchmarks. We evaluate AW-0 on RoboTwin 2.0. Following the training-data requirements specified on the official RoboTwin 2.0 leaderboard (footnote: https://robotwin-platform.github.io/leaderboard), we train on 50 clean demonstrations per task (2,500 episodes in total) and evaluate under the benchmark's two settings: clean, with a clean tabletop, plain background, fixed lighting, and no distractors; and random, with domain randomization over background and tabletop textures, lighting, tabletop height, and distractor objects. We report the mean success rate over 50 rollouts per task.
译文
基准。我们在 RoboTwin 2.0 上评测 AW-0。按照 RoboTwin 2.0 官方排行榜(脚注:https://robotwin-platform.github.io/leaderboard)规定的训练数据要求,我们每个任务用 50 条干净示范训练(共 2,500 个回合),并在基准的两种设置下评测:干净(clean)设置,桌面整洁、背景单一、光照固定、没有干扰物;随机(random)设置,对背景和桌面纹理、光照、桌面高度以及干扰物做域随机化(domain randomization)。我们报告每个任务 50 次试验的平均成功率。
解释
RoboTwin 2.0 是一个双臂仿真操作基准,包含 50 个任务(附录 J 表 11 列出全部任务名)。这里的协议是“只在干净数据上训练,在干净和随机两种场景下测试”,所以随机设置考察的是视觉分布外泛化:模型从未见过随机纹理、干扰物和不同的桌面高度。所有方法训练一个覆盖 50 个任务的多任务策略(附录 C),每个任务、每种设置测 50 次,表 1 的每个数字就是 50\times50=2{,}500 次试验的平均。
原文
Hybrid Evaluation. We additionally evaluate AW-0 in the hybrid mode, in which the training demonstrations are collected by executing CaP programs written against a set of CaP-X-style (Fu et al., 2026) primitive APIs that we develop for RoboTwin 2.0. The programs are written automatically by Claude Opus 4.8, following the agentic framework of ASPIRE (Lu et al., 2026).
译文
混合评测。我们还在混合模式下评测 AW-0。在这一模式中,训练示范是通过执行 CaP 程序收集的;这些程序基于我们为 RoboTwin 2.0 开发的一套 CaP-X 风格(Fu et al., 2026)的原语 API 编写,由 Claude Opus 4.8 按照 ASPIRE(Lu et al., 2026)的智能体框架自动编写。
解释
为什么混合模式要换一套训练数据?因为混合模式要“执行”代码,模型生成的代码必须能在 RoboTwin 中跑起来。如果训练示范本身就是执行某段可运行程序得到的,那么每条示范天然配有一段“可执行的”程序标签,模型就能学会生成可执行代码。而 RoboTwin 自带的示范是由其内部运动规划器生成的,用标注流水线补标的程序只是“描述性”的(第 2.3 节的仅声明 API),不一定能在仿真里执行。附录 J.2 补充:采集示范时原语可以使用仿真器的特权信息(真实物体位姿、标注好的抓取点),评测时则只用视觉感知(Molmo、SAM 3、Contact-GraspNet),不访问特权信息。
表 1:RoboTwin 2.0 在干净与随机设置下的结果。成功率(%),在 50 个任务上平均,每个任务 50 次试验。逐任务数字见表 11。
方法干净随机平均
\pi_{0.5}54.927.741.3
DreamZero33.617.625.6
EgoScale26.22.914.5
WLA64.83.634.2
AW-0(本文)80.820.650.7
AW-0(混合)63.129.246.2
原表注:RoboTwin 2.0 Results under Clean and Random Settings. Success rate (%) averaged over 50 tasks with 50 rollouts each. Per-task numbers are reported in Table 11.
表 1 解读
三列分别是干净设置成功率、随机设置成功率,以及二者的算术平均。逐行验算平均值:\pi_{0.5} 为 (54.9+27.7)/2=41.3;DreamZero 为 (33.6+17.6)/2=25.6;EgoScale 为 (26.2+2.9)/2=14.55,四舍五入记为 14.5;WLA 为 (64.8+3.6)/2=34.2;AW-0 为 (80.8+20.6)/2=50.7;AW-0 混合为 (63.1+29.2)/2=46.15\approx46.2。表 11 的逐任务数据也能复现这些列平均(例如 AW-0 干净列 50 个任务的均值正好是 80.80)。三个现象值得注意。第一,WLA 和 EgoScale 在随机设置下几乎完全崩溃(3.6% 和 2.9%;表 11 中二者分别在 41 个和 40 个任务上随机成功率为 0),而 \pi_{0.5} 的随机成功率能保持干净成功率的一半。第二,AW-0 默认模式的干净成功率 80.8% 远超其他方法,但随机成功率只有 20.6%,保持率约 25%。第三,混合模式在干净设置下掉到 63.1%,在随机设置下升到 29.2%,成为随机列最高。表中“平均”一列把两种设置等权相加,AW-0 的 50.7% 主要由干净设置贡献。
robotwin_bars_2.pdf
图 4:表 1 中各平均分数的柱状图。
原图注:Average Scores from Table 1.
图 4 解读
这是把表 1 的前两列画成柱状图。横轴分“Clean”和“Random”两组,每组 6 根柱子,颜色依次对应 \pi_{0.5}(灰)、DreamZero(橙)、EgoScale(绿)、WLA(紫)、AW-0(蓝)和 AW-0 混合(蓝色斜纹);纵轴是成功率(%)。柱顶数字与表 1 完全一致。图中最直观的是两组之间的落差:Clean 组蓝柱最高(80.8),Random 组所有柱子都矮了一大截,最高的是斜纹蓝柱(29.2)和灰柱 \pi_{0.5}(27.7),WLA 和 EgoScale 几乎贴地。图中没有画表 1 的“平均”列。
原文
Main Results. Table 1 and Figure 4 report the results on RoboTwin 2.0. The two inference modes exhibit complementary strengths. Overall, AW-0 achieves the highest average success rate of 50.7% across both settings, outperforming all baselines including models designed for broad generalization. The advantage comes mostly from the clean setting, where AW-0 reaches 80.8%, exceeding the strongest baseline WLA (64.8%) by 16.0 points. Under visual randomization, performance drops to 20.6%, consistent with the challenges of pixel-level O.O.D prediction discussed in prior work (Yan et al., 2026). It falls below the VLA baseline \pi_{0.5} (27.7%) but still outperforms the strongest WAM baseline DreamZero (17.6%) and remains far ahead of EgoScale (2.9%) and WLA (3.6%).
译文
主要结果。表 1 和图 4 报告了 RoboTwin 2.0 上的结果。两种推理模式表现出互补的长处。总体而言,AW-0 在两种设置上取得最高的平均成功率 50.7%,超过所有基线,包括那些为广泛泛化而设计的模型。优势主要来自干净设置:AW-0 达到 80.8%,比最强基线 WLA(64.8%)高 16.0 个百分点。在视觉随机化下,性能降到 20.6%,这与先前工作(Yan et al., 2026)讨论过的像素级分布外(O.O.D)预测的困难相符。它低于 VLA 基线 \pi_{0.5}(27.7%),但仍超过最强的 WAM 基线 DreamZero(17.6%),并远远领先 EgoScale(2.9%)和 WLA(3.6%)。
解释
数字核对。80.8-64.8=16.0,正确。“像素级 O.O.D 预测”的含义。WAM 要在像素(或 VAE 潜空间)层面预测未来画面;遇到从没见过的背景纹理和干扰物时,视频预测本身就会出错,错误又通过注意力传给动作专家。VLA(\pi_{0.5})只需要从图像中提取与动作相关的语义特征,并不需要“画出”未来,因此对背景变化更不敏感。这解释了 WAM 类方法(AW-0 默认模式 20.6%、DreamZero 17.6%)在随机设置下都不如 \pi_{0.5}。“超过所有基线,包括那些为广泛泛化而设计的模型”这句话依赖于“平均”一列的口径;如果单看随机设置,默认模式 AW-0 并不是最好的。
原文
We further observe that hybrid execution improves robustness under distribution shift. In the random setting, it raises the success rate from 20.6% to 29.2%, outperforming all baselines including the strong VLA baseline \pi_{0.5} (27.7%). Relative to its clean-setting performance, the hybrid mode retains 46\% of its success rate under randomization, compared with 25% for the default mode. This robustness comes at a cost in the clean setting, where the hybrid mode reaches 63.1%, on par with the strongest baseline, but 17.7 points below the default mode. For further analysis, see Appendix J.
译文
我们还观察到,混合执行提高了在分布偏移下的鲁棒性。在随机设置中,它把成功率从 20.6% 提高到 29.2%,超过所有基线,包括强大的 VLA 基线 \pi_{0.5}(27.7%)。与各自在干净设置下的表现相比,混合模式在随机化下保留了 46\% 的成功率,而默认模式只保留了 25%。这种鲁棒性是以干净设置下的性能为代价的:混合模式在干净设置下为 63.1%,与最强基线相当,但比默认模式低 17.7 个百分点。进一步的分析见附录 J。
解释
数字核对。保持率:混合 29.2/63.1=46.3\%,默认 20.6/80.8=25.5\%,与文中的 46% 和 25% 一致。80.8-63.1=17.7,正确。“与最强基线相当”指 WLA 的干净成功率 64.8%。结论边界。这里“混合执行提高鲁棒性”的表述需要打折扣。混合配置与默认配置的训练示范来源不同(CaP 执行采集与 RoboTwin 运动规划器采集),附录 J.2 明确说这一比较“评估的是两种配置的整体,并不能分离混合执行本身的作用”。也就是说,29.2% 与 20.6% 的差距可能部分来自不同的训练数据(例如 CaP 采集的轨迹更规整、更容易学),而不完全来自“执行代码”。此外,附录 J.2 表 12 显示,在随机设置下全部回合中由代码驱动的仿真步只占 5.6%,在成功回合中占 35.0%。逐任务看(表 11),混合模式在随机设置下有 24 个任务超过默认模式、7 个持平;在干净设置下只有 14 个任务超过默认模式。两种模式确实“互补”,但没有哪一种全面占优。

3.2真实世界实验

原文
Robot Platforms and Action Space. We conduct real-world experiments on two platforms: the YAM station, a fixed-base bimanual setup with two 6-DoF arms and parallel grippers, and the Tianji–Sharpa platform, a bimanual robot with two 22-DoF Sharpa dexterous hands. Both platforms observe three RGB views and act in the unified 64-D state–action space defined in Appendix A. Further details on the robot setups are provided in Appendix D.
译文
机器人平台与动作空间。我们在两个平台上开展真实世界实验:YAM 工作站是一个固定底座的双臂系统,配有两条 6 自由度机械臂和平行夹爪;Tianji–Sharpa 平台是一个双臂机器人,配有两只 22 自由度的 Sharpa 灵巧手。两个平台都观测三路 RGB 画面,并在附录 A 定义的统一 64 维状态—动作空间中行动。机器人配置的更多细节见附录 D。
解释
64 维的来历。附录 A 规定:每一侧包含 9 维末端执行器位姿(3 维位置加 6D 旋转表示)、22 维灵巧手关节角和 1 维平行夹爪宽度,两侧合计 2\times(9+22+1)=64。YAM 用不到手指关节,这 22 维置零;灵巧手用不到夹爪宽度,这 1 维置零。两种本体(以及人类手部数据)因此共用一个动作头,预训练学到的知识可以直接迁移。YAM 平台与预训练数据中的 YAM 数据是同一种机器人;Tianji–Sharpa 平台在预训练中没有出现过,它的手指动作先验只能来自人类第一视角数据(人手被重定向到 22 自由度关节目标,见附录 B.1)。
原文
Evaluation Protocol and Metrics. We use 100 demonstrations per task for post-training and evaluate on the 8 real-world tasks in Table 2, 4 on each platform, with 3\times16 rollouts per task (3 training seeds, 16 evaluation rollouts per seed) under randomized initial object poses. Task definitions, evaluation settings, and per-task scoring rubrics are provided in Appendix E.
译文
评测协议与指标。每个任务使用 100 条示范进行后训练,并在表 2 的 8 个真实世界任务上评测,两个平台各 4 个。每个任务做 3\times16 次试验(3 个训练随机种子,每个种子 16 次评测试验),物体初始位姿随机化。任务定义、评测设置以及逐任务的评分细则(rubric)见附录 E。
解释
指标是 rubric 分数,不是成功率。附录 E 为每个任务定义了一套可累加的评分细则,把任务拆成若干子步骤,每完成一步得一部分分,满分为 1。以 Deal Poker 为例:抓牌堆 0.1、交接 0.2、拨出一张 0.3、抓住这张 0.3、插入卡槽 0.1。表 2 报告的是 48 次试验的平均得分(换算成百分数)。因此 58.3% 并不意味着 58.3% 的回合完全成功,也可能是大部分回合只完成了一半的步骤。3 个训练种子是值得肯定的做法:真机实验通常只训练一次,这里每种方法训练三次、每次各测 16 次,能部分反映训练的随机性。不过文中没有报告种子间的方差或置信区间。
表 2:2 种本体上 8 个任务的真实世界结果。每个任务 3\times16 次试验的平均 rubric 分数(%)(见附录 E)。
YAM(平行夹爪)Tianji–Sharpa(灵巧手)
方法Arrange
Fruits
Pack
Backpack
Replace
Lightbulb
Fold
Towels
Fruits
w/ Tong
Deal
Poker
Flip
Scoreboard
Solve
Cube
平均
\pi_{0.5}70.849.763.881.77.313.126.336.143.6
DreamZero53.336.767.479.822.637.128.442.546.0
EgoScale37.527.360.253.317.625.640.824.935.9
WLA39.629.656.074.614.222.929.752.339.9
AW-0(本文)91.764.675.084.454.258.368.872.171.1
原表注:Real-world Results on 8 Tasks across 2 Embodiments. Average rubric score (%) over 3\times16 rollouts/task (Appendix E).
表 2 解读
列分两组:左 4 列是 YAM 平行夹爪任务(摆水果、收拾背包、更换灯泡、叠毛巾),右 4 列是 Tianji–Sharpa 灵巧手任务(用夹子摆水果、发牌、翻记分牌、还原魔方),最后一列是 8 个任务的平均。各任务的完整名称和评分细则见附录 E(例如“Fold Towels”的全称是 Fold and Stack Towels,叠好并按颜色顺序摞起毛巾)。平均值验算。\pi_{0.5}:348.8/8=43.6;DreamZero:367.8/8=45.98\approx46.0;EgoScale:287.2/8=35.9;WLA:318.9/8=39.86\approx39.9;AW-0:569.1/8=71.14\approx71.1。全部与表中一致。最强基线是 DreamZero(46.0),AW-0 领先 71.1-46.0=25.1 个百分点,与正文一致。逐列看。AW-0 在全部 8 个任务上都是最高,但领先幅度差别很大:灵巧手任务上领先最多(Fruits w/ Tong 54.2 对最佳基线 22.6,Deal Poker 58.3 对 37.1,Flip Scoreboard 68.8 对 40.8),YAM 的 Fold Towels 上只领先 2.7 分(84.4 对 81.7)。基线在灵巧手任务上普遍很低,例如 \pi_{0.5} 在 Fruits w/ Tong 上只有 7.3。一个可能的原因是:Tianji–Sharpa 不在任何基线的预训练数据中,而 AW-0 预训练用的人类手部数据已被重定向到同样的 22 维手关节空间。基线中,\pi_{0.5} 在 YAM 任务上较强,WAM 类的 DreamZero 在需要预测接触的任务(Replace Lightbulb、Deal Poker)上较强,这与正文的分析一致。
原文
Quantitative and Qualitative Analysis. As shown in Table 2, AW-0 achieves the highest average rubric score across both embodiments, outperforming the strongest baseline by 25.1 points. Two observations emerge. Language following and semantic reasoning: AW-0 outperforms the baselines strongly on Arrange Fruits and Flip Scoreboard, which require instruction-specific object selection and counting, respectively. The VLA baselines, particularly \pi_{0.5}, also show relatively strong semantic understanding, while the WAM baselines are less reliable on these properties. These results suggest that code-based planning strengthens the language-following and semantic reasoning of world action models. Robust skill execution: On contact-rich and dexterous tasks, DreamZero outperforms \pi_{0.5} on Replace Lightbulb and Deal Poker, where predicting future states provides stable physical-dynamics features for action prediction. AW-0 further outperforms these baselines by combining guidance from generated skill programs with predictive representations of physical dynamics, aligning skill-level planning with continuous control. See Appendix G for further analysis.
译文
定量与定性分析。如表 2 所示,AW-0 在两种本体上都取得最高的平均 rubric 分数,比最强基线高 25.1 个百分点。由此可以得出两点观察。语言跟随与语义推理:AW-0 在 Arrange Fruits 和 Flip Scoreboard 上大幅领先基线,这两个任务分别要求按指令选择特定物体和计数。VLA 基线,尤其是 \pi_{0.5},也表现出相对较强的语义理解能力,而 WAM 基线在这些方面则不太可靠。这些结果表明,基于代码的规划增强了世界动作模型的语言跟随与语义推理能力。稳健的技能执行:在接触丰富和需要灵巧操作的任务上,DreamZero 在 Replace Lightbulb 和 Deal Poker 上超过 \pi_{0.5},因为预测未来状态能为动作预测提供稳定的物理动力学特征。AW-0 把生成的技能程序提供的引导与对物理动力学的预测性表示结合起来,使技能层面的规划与连续控制对齐,因而进一步超过了这些基线。更多分析见附录 G。
解释
两类任务的划分。Arrange Fruits 的指令形如“最后左碗里只留芒果”,模型必须根据指令决定把哪些水果搬走、把哪些搬进来;Flip Scoreboard 要求恰好翻 k 次,使记分牌显示初始分数加 k(附录 E)。这两个任务考的是“理解指令并据此决策”。Replace Lightbulb 和 Deal Poker 则考的是精细的接触操作:拧灯泡、捻出一张牌。对照数字。Arrange Fruits 上,\pi_{0.5} 70.8 明显高于两个 WAM 基线(DreamZero 53.3、WLA 39.6),支持“VLA 语义理解较强、WAM 较弱”的说法。但 Flip Scoreboard 上 \pi_{0.5} 只有 26.3,低于 EgoScale 的 40.8,与“\pi_{0.5} 语义理解较强”的概括并不完全吻合。DreamZero 对 \pi_{0.5}:Replace Lightbulb 67.4 对 63.8(差距不大),Deal Poker 37.1 对 13.1(差距明显)。因果归因要谨慎。“代码规划增强语言跟随”这一结论,单靠表 2 是不够的,因为 AW-0 与基线在预训练数据、模型规模、架构上都不同。更直接的证据来自第 3.3 节的消融:同一模型去掉代码流后(图 5 中的“V\to A”),Arrange Fruits 从 91.7 跌到 27.1,平均从 71.1 跌到约 32.9。
原文
Hybrid Execution in the Real World. We further evaluate hybrid execution on Fold and Stack Towels with the YAM platform based on Algorithm I, comparing it against action-chunk execution under the same post-trained model and evaluation conditions. Under the same task rubric, hybrid execution achieves 90.6%, compared with 84.4% for action-chunk execution, while the direct execution steps of code further enhance the model's reasoning capabilities in distinguishing stacking order and action stability. Further visualizations are provided in Appendix G.3.
译文
真实世界中的混合执行。我们还按照算法 I 在 YAM 平台的 Fold and Stack Towels 任务上评测混合执行,并在相同的后训练模型和评测条件下与动作块执行进行比较。在同一套评分细则下,混合执行得到 90.6%,动作块执行为 84.4%;代码直接执行的步骤还进一步增强了模型在区分摞放顺序和动作稳定性方面的推理能力。更多可视化见附录 G.3。
解释
与仿真混合评测的区别。这里是“同一个后训练模型、两种推理方式”的对比,没有更换训练数据,因此比仿真中的混合对比更干净。提升为 90.6-84.4=6.2 个百分点,按 48 次试验计约相当于每次平均多拿 0.06 分。由于只做了一个任务,而且没有报告方差,这个结果更适合看作可行性演示。“算法 I”是原文的交叉引用笔误:原文引用的标签是附录 I 的节标签(编号为字母 I),实际想指的是附录 I 中的算法 1 和算法 2。为什么叠毛巾适合混合执行?附录 G.3 的图 35 显示:叠的动作(柔性物体)主要靠动作专家,靠近和摞放这些结构化动作则由代码执行,代码中的顺序(先放哪个颜色)直接决定了摞放顺序,这正好对应评分细则中占 0.3 分的“颜色顺序正确”一项。
ablation_attention_bars.pdf
图 5:代码专家与注意力结构的影响。每个任务 3\times16 次试验的平均 rubric 分数(%)。C、V、A 分别表示代码流、视频流和动作流。
原图注:Impact of Code Expert and Attention Structure. Avg. rubric score (%) over 3\times16 rollouts/task. C, V, and A denote the code, video, and action streams.
图 5 解读
左右两个面板分别是 YAM 和 Tianji–Sharpa 的 4 个任务,每个任务三根柱子:蓝色 C\to V\to A(AW-0 采用的顺序)、绿色 V\to C\to A(代码放在视频之后)、紫色 V\to A(不使用代码)。箭头表示分块因果注意力中“谁能被谁看到”的先后顺序。读出的数字如下(按 Arrange Fruits、Pack Backpack、Replace Lightbulb、Fold Towels、Fruits w/ Tong、Deal Poker、Flip Scoreboard、Solve Cube 的顺序)。C\to V\to A:91.7、64.6、75.0、84.4、54.2、58.3、68.8、72.1(与表 2 相同)。V\to C\to A:31.3、29.1、77.1、60.8、25.0、52.1、45.8、65.3,平均约 48.3。V\to A:27.1、16.7、47.9、53.2、10.4、20.8、39.6、47.1,平均 32.85,与图 6 中“w/o Code”的 32.9 一致。要点。第一,去掉代码后平均分只剩约 32.9,比加入代码后低 38 个百分点以上,也明显低于基线 DreamZero(46.0)和 \pi_{0.5}(43.6)。也就是说,AW-0 在表 2 中的优势几乎全部来自代码流,它的“裸 WAM”部分本身并不比现有 WAM 强。第二,代码放在哪里很关键:V\to C\to A 在 Arrange Fruits 上只有 31.3,几乎与不用代码相同(27.1),说明代码如果不能影响视频预测,就无法纠正视频专家“伸向错误水果”的倾向(附录 G.1 图 33 给出了这种现象的可视化)。第三,V\to C\to A 在 Replace Lightbulb 上反而略高(77.1 对 75.0),这是唯一一个例外。

3.3消融研究

原文
We organize our ablation study mainly around three research questions: 1) how to integrate a visually grounded code expert into a WAM framework, 2) which components of the planning representation contribute to task performance, and 3) how joint denoising affects task performance and inference efficiency. All the variants are post-trained and evaluated under the protocol of Section 3.2.
译文
我们的消融研究主要围绕三个研究问题展开:1)如何把一个有视觉依据的代码专家整合进 WAM 框架;2)规划表示中的哪些成分对任务性能有贡献;3)联合去噪如何影响任务性能和推理效率。所有变体都按第 3.2 节的协议进行后训练和评测。
解释
三个问题分别对应图 5 与表 3(Q1:注意力顺序和代码专家的视觉输入)、图 7(Q2:代码标签的内容),以及表 4 与图 6(Q3:联合去噪对比自回归)。所有消融都在 8 个真机任务上做,每个变体同样是 3 个种子 \times 16 次试验,所以与表 2 中 AW-0 一行的数字可以直接比较。
原文
Q1: How should the code expert be integrated into a WAM? We first compare three blockwise causal attention orders during joint denoising: V\to A (w/o code), V\to C\to A, and C\to V\to A (Figure 5). The two variants use the same pretraining data, training budget, and optimization settings as AW-0. Adding code through V\to C\to A improves performance by grounding the predicted dynamics to action, but restricts its role to reasoning over video predictions without guiding or correcting them. With C\to V\to A, both video and action generation attend to code, allowing semantic task plans to shape future prediction throughout denoising. The performance gain of this ordering supports introducing semantic reasoning directly into video generation, which improves language following and provides more reliable guidance for stable action generation.
译文
Q1:代码专家应当如何整合进 WAM?我们首先比较联合去噪中三种分块因果注意力顺序:V\to A(不含代码)、V\to C\to A 和 C\to V\to A(图 5)。两个变体使用与 AW-0 相同的预训练数据、训练预算和优化设置。通过 V\to C\to A 加入代码能提升性能,因为它把预测出的动态落实到动作上;但这把代码的作用局限于对视频预测进行推理,而不能引导或纠正视频预测。在 C\to V\to A 中,视频生成和动作生成都关注代码,使语义任务计划能在整个去噪过程中塑造对未来的预测。这一顺序带来的性能提升支持把语义推理直接引入视频生成,这既改善了语言跟随,也为稳定的动作生成提供了更可靠的引导。
解释
三种顺序的含义。箭头表示“前者能被后者看到”。V\to C\to A 中,代码看得到视频,但视频看不到代码,所以代码更像是对视频预测的“解说”;C\to V\to A 中,视频看得到代码,代码就成了视频预测的“剧本”。数字。三者的 8 任务平均分别约为 32.9、48.3 和 71.1(由图 5 读数计算)。从 V\to A 到 V\to C\to A 提升约 15 分,再到 C\to V\to A 又提升约 23 分。“两个变体使用相同的预训练数据……”这句话需要说明:V\to A 变体没有代码流,因此预训练时不使用代码标签,但视频和动作数据相同;从文字看,两个消融变体也都重新做了预训练,而不只是在微调阶段改变注意力掩码。
表 3:代码专家的视觉条件。每个任务 3\times16 次试验的平均 rubric 分数(%)。
变体Arrange
Fruits
Pack
Backpack
Replace
Lightbulb
Fold
Towels
Fruits
w/ Tong
Deal
Poker
Flip
Scoreboard
Solve
Cube
平均
ViT(本文)91.764.675.084.454.258.368.872.171.1
VAE83.339.666.761.341.747.950.053.955.6
原表注:Visual Conditioning for Code Expert. Avg. rubric score (%) over 3\times16 rollouts/task.
表 3 解读
两行分别是代码专家的两种视觉输入:“ViT”是 AW-0 的默认做法,用冻结的 Qwen3-VL 视觉塔提取语义特征;“VAE”是复用视频专家已有的 Wan2.2 VAE 潜变量作为代码专家的视觉输入,可以省掉一个视觉编码器。VAE 行平均验算:(83.3+39.6+66.7+61.3+41.7+47.9+50.0+53.9)/8=444.4/8=55.55\approx55.6,与表中一致。差距最大的是 Pack Backpack(25.0 分)和 Fold Towels(23.1 分),其次是 Flip Scoreboard(18.8 分)和 Solve Cube(18.2 分);差距最小的是 Arrange Fruits(8.4 分)和 Replace Lightbulb(8.3 分)。即便用 VAE 特征,平均 55.6 仍高于所有基线(最高 46.0),说明代码流本身的作用比视觉编码器的选择更大。
原文
We then compare a dedicated ViT against reused Wan2.2 VAE features for conditioning the code expert (Table 3). ViT conditioning improves performance on all 8 tasks, with substantial gains on Pack Backpack (64.6% vs. 39.6%) and Solve Rubik's Cube (72.1% vs. 53.9%), which require fine-grained semantic reasoning about object attributes and task states. VAE features are optimized for pixel-level reconstruction (Yan et al., 2026) and thus poorly support the semantic distinctions needed to select and compose skills, whereas ViT features enable the code expert to translate visual observations into more accurate skill plans.
译文
接着,我们比较为代码专家提供条件的两种视觉特征:专用的 ViT,以及复用的 Wan2.2 VAE 特征(表 3)。ViT 条件在全部 8 个任务上都提升了性能,在 Pack Backpack(64.6% 对 39.6%)和 Solve Rubik's Cube(72.1% 对 53.9%)上提升尤为明显,这两个任务需要对物体属性和任务状态进行细粒度的语义推理。VAE 特征是为像素级重建而优化的(Yan et al., 2026),因此难以支持选择和组合技能所需的语义区分;而 ViT 特征使代码专家能把视觉观测转化为更准确的技能计划。
解释
这里的道理和第 3.1 节“像素级 O.O.D”的讨论一致:VAE 的潜变量要能重建每一个像素,大量容量花在纹理和颜色细节上;ViT(尤其是经过视觉—语言对齐训练的 Qwen3-VL)的特征则更接近“这是什么物体、处于什么状态”。代码专家要回答的正是后一类问题:拉链拉到哪了、魔方哪一层没转好。需要注意的是,正文挑出的两个例子并非差距最大的任务。按表 3,Fold Towels 的差距(23.1 分)与 Pack Backpack 相近,而叠毛巾更多涉及柔性物体操作和颜色顺序,未必是“细粒度属性推理”的典型。
表 4:代码生成范式的影响。每个任务 3\times16 次试验的平均 rubric 分数(%)。
任务联合去噪(本文)自回归(AR)
Arrange Fruits91.781.3
Pack Backpack64.662.5
Replace Lightbulb75.079.2
Fold Towels84.453.2
Fruits w/ Tong54.220.8
Deal Poker58.344.1
Flip Scoreboard68.839.3
Solve Cube72.155.8
平均71.154.5
原表注:Impact of Code Generation Paradigm. Avg. rubric score (%) over 3\times16 rollouts/task.
表 4 解读
两列对比代码的两种生成方式。“联合去噪”是 AW-0 的默认做法,代码与视频、动作在同样的 4 个去噪步中一起生成。“AR”(autoregressive,自回归)先逐 token 生成完整代码,再以它为条件生成视频和动作,代码专家用 teacher forcing(训练时总是以真实前缀为条件)训练。AR 列平均验算:(81.3+62.5+79.2+53.2+20.8+44.1+39.3+55.8)/8=436.2/8=54.5,正确。联合去噪在 7 个任务上更好,唯一的例外是 Replace Lightbulb(75.0 对 79.2)。差距最大的是 Fruits w/ Tong(33.4 分)、Fold Towels(31.2 分)和 Flip Scoreboard(29.5 分),三者都是多步骤、长时程的任务,与“AR 误差逐步累积”的解释相符。
joint_denoise_speed_bars.pdf
图 6:性能与推理延迟。8 个真实世界任务的平均 rubric 分数(柱状)以及在 NVIDIA RTX 5090 上的推理延迟(红线)。
原图注:Performance and Inference Latency. Average rubric score over the 8 real-world tasks (bars) and inference latency on an NVIDIA RTX 5090 (red line).
图 6 解读
图中有两条横轴:下方轴是平均 rubric 分数(%,对应横向柱子),上方轴是推理延迟(秒,对应红色折线上的点)。三行依次是:不用代码(w/o Code,紫色)平均 32.9、延迟 0.19 s;联合去噪(Joint Denoise,即 AW-0,蓝色)平均 71.1、延迟 0.23 s;自回归(AR,橙色)平均 54.5、延迟 0.55 s。这张图把“效果”和“代价”放在一起:联合去噪只比不用代码多 0.04 s,平均分却高出 38.2 分;AR 方式延迟是联合去噪的 2.39 倍,分数还更低。0.23 s 的延迟对应每次重规划约 4 Hz 的推理频率;由于每次输出 32 步的动作块,实际控制可以更高频地执行这些动作。
ablation_label_bars.pdf
图 7:代码标签内容的影响。每个任务 3\times16 次试验的平均 rubric 分数(%)。
原图注:Impact of Code Label Content. Average rubric score (%) over 3\times16 rollouts per task.
图 7 解读
每个任务四根柱子:蓝色“Code (Ours)”是完整的标注程序;绿色“Code w/o Comments”去掉程序中的注释;黄色“Code w/o Skills”不使用技能库,只用原语拼写;紫色“Subgoal”用自然语言子目标代替代码。注意纵轴从 40 开始(左下角有截断标记),柱高差异在视觉上被放大了。读数(任务顺序同图 5)。完整代码:91.7、64.6、75.0、84.4、54.2、58.3、68.8、72.1。去注释:80.4、52.1、68.6、80.1、45.8、47.5、62.5、65.7,平均约 62.8。去技能:90.2、55.9、65.5、76.9、48.9、42.0、63.7、63.2,平均约 63.3。子目标:88.3、56.3、72.9、78.2、58.3、43.8、52.1、59.2,平均约 63.6。一个正文没有强调的事实:三种“打了折扣”的规划表示,平均分非常接近(62.8 至 63.6),而且都远高于完全不用规划流的 32.9(图 6)。换句话说,从“无规划”到“有自然语言子目标”贡献了约 31 分,从“子目标”到“完整代码”只再贡献约 7.5 分。代码形式确有增益,但大部分收益来自“有一条与视频、动作联合去噪的规划流”本身。
原文
Q2: What makes code an effective planning representation? To assess the planning content produced by our annotation pipeline, we compare (1) full annotated programs, (2) code without comments, (3) code without skills, and (4) natural-language subgoals in Figure 7. Full programs outperform comment-free code on all 8 shared tasks, suggesting that explanatory language helps connect program structure with task intent. Removing skill calls also reduces performance on all 8 evaluated tasks, especially on skill-required tasks such as Deal Poker (58.3% vs. 42.0%). Since this variant still uses structured code, the drop supports the value of reusable skill abstractions beyond primitive-level API composition. Full programs also beat language-only subgoals on 7 of 8 shared tasks, showing that structured semantic guidance can provide more action-centric representation as condition. Together, these comparisons support combining explanatory language, reusable skills, and explicit program structure to provide effective planning guidance.
译文
Q2:是什么让代码成为有效的规划表示?为了评估标注流水线产生的规划内容,我们在图 7 中比较 (1) 完整的标注程序、(2) 去掉注释的代码、(3) 不含技能的代码和 (4) 自然语言子目标。完整程序在全部 8 个共同任务上都优于去掉注释的代码,说明解释性的语言有助于把程序结构与任务意图联系起来。去掉技能调用同样在全部 8 个被评测任务上降低了性能,在需要技能的任务上尤其明显,例如 Deal Poker(58.3% 对 42.0%)。由于这一变体仍然使用结构化代码,性能下降支持了可复用技能抽象相对于原语级 API 组合的价值。完整程序还在 8 个共同任务中的 7 个上胜过纯语言子目标,表明结构化的语义引导能作为条件提供更以动作为中心的表示。综合来看,这些比较支持把解释性语言、可复用技能和显式程序结构结合起来,以提供有效的规划引导。
解释
逐项核对。“完整程序在 8 个任务上都优于去注释代码”:对照图 7 读数,成立。“去掉技能在 8 个任务上都下降”:成立,其中 Arrange Fruits 只差 1.5 分(91.7 对 90.2)。“7/8 胜过子目标”:唯一的例外是 Fruits w/ Tong(子目标 58.3 对完整代码 54.2)。注释为什么有用。标注程序里的注释是自然语言(如“# Right holds; left repositions.”),去掉它们后,代码只剩函数名和参数。去注释变体的平均(约 62.8)略低于纯子目标(约 63.6),说明“语言”和“代码结构”各自都提供了信息,二者结合效果最好。结论边界。如图 7 解读所述,三种折扣版本彼此只差约 1 分,没有报告方差,难以据此区分“注释”“技能”“结构”各自的贡献大小,只能说三者合起来比任何单独的折扣版本好约 8 分。
原文
Q3: How does joint denoising affect performance and efficiency? As shown in Table 4, joint denoising outperforms AR on 7 of 8 tasks. For AR models trained with teacher forcing, the mismatch between ground-truth training prefixes and generated inference prefixes can cause errors to accumulate during inference and affect downstream video prediction. Joint denoising reduces token-by-token serial dependence by reconstructing code alongside video and actions, providing semantic guidance throughout generation. We measure end-to-end inference latency on an NVIDIA RTX 5090, with settings detailed in Appendix A. Joint denoising takes 0.23 s versus 0.55 s for AR, a 2.39\times speedup (Figure 6). Compared with the AW-0 w/o code (0.19 s), it adds 0.04 s (21.1%) while improving performance on all 8 shared tasks (Figure 5).
译文
Q3:联合去噪如何影响性能与效率?如表 4 所示,联合去噪在 8 个任务中的 7 个上优于自回归(AR)。对于用 teacher forcing 训练的 AR 模型,训练时的真实前缀与推理时生成的前缀之间存在不匹配,可能导致误差在推理中累积,并影响下游的视频预测。联合去噪把代码与视频、动作一起重建,减少了逐 token 的串行依赖,并在整个生成过程中提供语义引导。我们在 NVIDIA RTX 5090 上测量端到端推理延迟,设置详见附录 A。联合去噪耗时 0.23 s,AR 为 0.55 s,加速 2.39\times(图 6)。与不含代码的 AW-0(0.19 s)相比,联合去噪只增加 0.04 s(21.1%),同时在全部 8 个共同任务上提升了性能(图 5)。
解释
数字核对。0.55/0.23=2.39,正确;0.04/0.19=21.05\%,正确。“在全部 8 个任务上提升”:图 5 中 C\to V\to A 每个任务都高于 V\to A,成立。为什么 AR 慢。AR 要逐个生成最多 128 个代码 token,每个 token 一次前向;联合去噪只需 4 步,每步并行确定 32 个 token,而且这 4 步同时也在给视频和动作去噪。延迟主要由去噪步数决定,所以加入代码流几乎不增加步数,只增加每步的序列长度(210 个视觉 token 加 128 个代码 token 等)。teacher forcing 与暴露偏差。AR 训练时永远以正确的代码前缀为条件,推理时却要以自己生成的(可能出错的)前缀为条件,错误一旦出现就会被后续 token 放大。联合去噪中每个位置都是在“部分可见”的情况下被预测的,训练和推理的输入分布更接近。这是一个合理的解释,但正文没有给出直接证据(例如 AR 生成代码的错误率分析)。

4相关工作(Related Work)

原文
World Action Models (WAMs). World models predict future observations and have recently emerged as a powerful paradigm for robot manipulation, serving as learned simulators and data generators for policy learning (NVIDIA, 2025a; NVIDIA, 2025b; Gao et al., 2026; Yang et al., 2024; Jang et al., 2025). Building on this progress, World Action Models (WAMs) unify future prediction and action generation, through joint video-action diffusion (Ye et al., 2026; Zhu et al., 2025), expert-based architectures (Bi et al., 2025; Cai et al., 2026), or direct adaptation of pretrained video models into policies (Kim et al., 2026). Recent WAMs further couple autoregressive sub-task prediction with future-state modeling and action synthesis (Yang et al., 2026) or dynamically update subtask instructions to condition video and action generation (Tang et al., 2026). However, existing WAMs lack structured semantic guidance and explicit skill invocation, limiting their ability to perform complex semantic planning and structure predicted dynamics into actionable behavioral abstractions.
译文
世界动作模型(WAM)。世界模型预测未来的观测,近来已成为机器人操作的一种强有力范式,可以充当学到的仿真器和策略学习的数据生成器(NVIDIA, 2025a; NVIDIA, 2025b; Gao et al., 2026; Yang et al., 2024; Jang et al., 2025)。在此基础上,世界动作模型(WAM)把未来预测与动作生成统一起来,具体途径包括视频—动作联合扩散(Ye et al., 2026; Zhu et al., 2025)、基于专家的架构(Bi et al., 2025; Cai et al., 2026),以及把预训练视频模型直接改造为策略(Kim et al., 2026)。近期的 WAM 还进一步把自回归的子任务预测与未来状态建模和动作合成耦合起来(Yang et al., 2026),或者动态更新子任务指令,以此为视频和动作生成提供条件(Tang et al., 2026)。然而,现有 WAM 缺少结构化的语义引导和显式的技能调用,这限制了它们进行复杂语义规划、以及把预测出的动态组织成可执行行为抽象的能力。
解释
这一段把相关 WAM 分成三条技术路线,正好对应 AW-0 借鉴的三个要素。(1) 联合扩散:DreamZero(Ye et al., 2026)和 UWM 一类工作把视频与动作放在一个扩散模型里一起去噪,AW-0 的“联合去噪”沿用了这一思路,只是多加了一种离散模态。(2) 专家式架构:Motus(Bi et al., 2025)和 InternVLA-A1(Cai et al., 2026)用不同专家分别处理视频与动作,AW-0 的 MoT 三专家属于此类。(3) 预训练视频模型改造:Cosmos Policy(Kim et al., 2026)直接微调视频生成模型做策略,AW-0 的视频专家同样从 Cosmos-Predict2.5 初始化。最接近 AW-0 的是最后提到的两项:WLA(Yang et al., 2026)自回归地预测文字子任务,Tang et al.(2026)动态更新子任务指令,二者都在 WAM 中引入了“高层计划”,只是计划的形式是自然语言。AW-0 与它们的区别在于计划是代码,具有显式的技能名和参数。第 3.3 节图 7 的“Subgoal”变体可以看作这类方法在 AW-0 框架内的近似,它比完整代码低约 7.5 分。
原文
Agentic Robotics. Early work composed perception and control APIs into executable closed-loop behaviors without policy training (Ahn et al., 2022; Liang et al., 2023; Singh et al., 2023). Later systems generate full Python programs over perception APIs (Huang et al., 2023; Mu et al., 2024; Goldberg et al., 2025), and executable code has proven a stronger action space for LLM agents than text (Wang et al., 2024). With the rise of coding agents, program synthesis has become explicitly agentic, with recent systems iteratively writing, executing, and repairing control programs (Lu et al., 2026; Fu et al., 2026). Frontier models now also act as controllers themselves, reasoning over instructions and feedback and driving robots directly through native tool calls and learned primitives (Shi et al., 2025; Li et al., 2026; Gemini Robotics Team, 2025a; Gemini Robotics Team, 2025b). In all of these systems, the agent controls the robot from outside the policy and is bounded by the primitives it can call. We instead bring code inside an end-to-end model as a high-level planning interface and further explore how the generated code can be executed to complement the model's own actions at test time.
译文
智能体式机器人。早期工作把感知与控制 API 组合成可执行的闭环行为,无需训练策略(Ahn et al., 2022; Liang et al., 2023; Singh et al., 2023)。后来的系统基于感知 API 生成完整的 Python 程序(Huang et al., 2023; Mu et al., 2024; Goldberg et al., 2025),而且已有研究表明,可执行代码对 LLM 智能体而言是比文本更强的动作空间(Wang et al., 2024)。随着编码智能体的兴起,程序合成已明确地智能体化,近期系统会反复编写、执行并修复控制程序(Lu et al., 2026; Fu et al., 2026)。前沿模型如今也直接充当控制器,对指令和反馈进行推理,并通过原生工具调用和学到的原语直接驱动机器人(Shi et al., 2025; Li et al., 2026; Gemini Robotics Team, 2025a; Gemini Robotics Team, 2025b)。在所有这些系统中,智能体都是从策略外部控制机器人,并受限于它能调用的原语。我们则把代码放进端到端模型内部,作为高层规划接口,并进一步探索如何在测试时执行生成的代码,以补充模型自身的动作。
解释
这一段按时间线梳理“用代码控制机器人”。SayCan(Ahn et al., 2022)、Code-as-Policies(Liang et al., 2023)、ProgPrompt(Singh et al., 2023)是第一代,LLM 直接组合预定义技能或 API。Instruct2Act(Huang et al., 2023)、RoboCodeX(Mu et al., 2024)、Blox-Net(Goldberg et al., 2025)等让 LLM 写出调用感知模块的完整程序。CodeAct(Wang et al., 2024)在一般 LLM 智能体中论证了“代码比文本更适合当动作”。最新一代是 ASPIRE、CaP-X 这类会自己跑代码、看报错、再修改的编码智能体,以及 Hi Robot(Shi et al., 2025)、Gemini Robotics 系列这类直接用大模型调度机器人的系统。本文的定位在最后两句:上述系统都是“策略之外”的智能体,机器人能做什么取决于它们能调用哪些原语;AW-0 把代码放到“策略之内”,代码与视频、动作同时生成,即使代码不执行,也能通过注意力影响动作。混合模式则是把“策略之内”的代码重新拿到“策略之外”执行,两种用法兼顾。

5结论(Conclusion)

原文
We present AW-0, an agentic world action model that integrates code-based skill planning with predictive dynamics and continuous control. Through joint denoising, the code expert provides structured semantic guidance for video and action generation. An automated annotation pipeline enables learning this planning interface from large-scale robot and human demonstrations. Experiments on RoboTwin 2.0 and real-world manipulation with YAM and dexterous hands demonstrate improvements in language following, semantic reasoning, and skill execution, with hybrid execution further enhancing robustness. These results establish a unified foundation for future work on skill reuse and iterative interaction between programmatic planning, world prediction, and execution, providing a potential agentic system foundation that continually interacts with and learns from environments.
译文
我们提出了 AW-0,一个把基于代码的技能规划与预测性动力学和连续控制整合在一起的智能体式世界动作模型。通过联合去噪,代码专家为视频和动作生成提供结构化的语义引导。一条自动标注流水线使得这一规划接口可以从大规模机器人示范和人类示范中学习。在 RoboTwin 2.0 以及使用 YAM 和灵巧手的真实世界操作上的实验表明,该方法在语言跟随、语义推理和技能执行上都有提升,混合执行还进一步增强了鲁棒性。这些结果为未来关于技能复用、以及程序化规划、世界预测与执行之间迭代交互的研究奠定了统一的基础,也为一个能够持续与环境交互并从中学习的智能体系统提供了潜在的基础。
解释
结论复述了三项要点:联合去噪中的代码引导、自动标注流水线、实验收益。最后一句是展望,附录 L 有更具体的说明:目前系统还不能从自己的交互中在线学习,技能库也是冻结的。回顾全文证据,最扎实的结论是“在 WAM 中加入一条与视频、动作联合去噪的规划流,能大幅提升真机多步任务的表现”(图 5:32.9 \to 71.1)。“代码优于自然语言”有证据但幅度较小(图 7:约 7.5 分);“混合执行增强鲁棒性”在仿真中混杂了训练数据差异,在真机中只有一个任务。

致谢、AI 使用声明、伦理声明与可复现性声明

原文
Acknowledgments. Zhuoyang Liu thanks Prof. Shanghang Zhang at Peking University for her mentorship and support.AI use statement. We used Gemini 3.1 Pro and Claude Code with Claude Opus 4.8 in our automatic annotation pipeline to generate demonstration-aligned program labels and distill reusable skill libraries (Section 2.3). Claude Opus 4.8 was also used to generate executable programs for collecting simulation demonstrations (Section 3.1). Additionally, we used GPT-6 Astra for language polishing and stylistic refinement, as well as part of figure preparation.
译文
致谢。Zhuoyang Liu 感谢北京大学的 Shanghang Zhang(仉尚航)教授的指导与支持。AI 使用声明。我们在自动标注流水线中使用 Gemini 3.1 Pro 和运行 Claude Opus 4.8 的 Claude Code,生成与示范对齐的程序标签并提炼可复用技能库(第 2.3 节)。Claude Opus 4.8 还被用来生成可执行程序,以收集仿真示范(第 3.1 节)。此外,我们使用 GPT-6 Astra 进行语言润色和文风修改,并用于部分插图的制作。
解释
AI 使用声明列出了三处用途,其中前两处是方法本身的组成部分:标注流水线(Gemini 写程序,Claude Code 当协调者)和仿真混合模式的示范采集(Claude Opus 4.8 按 ASPIRE 框架写 RoboTwin 上的 CaP 程序)。这意味着方法的数据质量部分依赖于这些商用闭源模型,复现时如换用其他模型,标注质量可能不同。
原文
Ethics statement. This work studies code-guided world action models for robotic manipulation using robot and egocentric human demonstrations. All pretraining datasets are used in accordance with their respective licenses and data-use terms. All post-training demonstrations are collected by our team for the tasks evaluated in this work.Reproducibility statement. We provide detailed information in Appendix A regarding the model architecture design, parameter settings, and computational resources. Regarding training data, Appendix B details the composition of the pre-training dataset. Section 2.3 introduces the complete data annotation pipeline. While prompts for the agentic framework and performance analysis of the pre-trained model are provided in Appendix K.2 and Appendix F.1. For downstream tasks, we also present standardized data generation criteria and methods to facilitate extension to any further tasks.
译文
伦理声明。本工作利用机器人示范和人类第一视角示范,研究用于机器人操作的、由代码引导的世界动作模型。所有预训练数据集均按照各自的许可和数据使用条款使用。所有后训练示范均由我们团队为本文评测的任务采集。可复现性声明。附录 A 详细给出了模型架构设计、参数设置和计算资源。关于训练数据,附录 B 详细说明了预训练数据集的构成。第 2.3 节介绍了完整的数据标注流水线。智能体框架的提示词和预训练模型的性能分析分别见附录 K.2 和附录 F.1。对于下游任务,我们也给出了标准化的数据生成准则和方法,便于扩展到更多任务。
解释
可复现性声明列出的材料基本属实,但仍有几处缺口:记忆槽数 K、替换概率 p、混合模式的失败上限 R 等超参数没有给出;附录 K.2 的提示词是“要点式概述”,完整的 API 文档字符串和技能文档“附加在系统提示中,此处省略”;预训练数据集(YAM 279 个任务、人类 327 个任务)的来源和是否公开也没有说明。参考文献从略,见原文。原文共引用 56 篇文献,正文中的引用保留了原文的“作者,年份”格式。

A模型与训练细节(Model and Training Details)

原文
We implement the AW-0 architecture using three modality-specific experts coupled by masked joint attention. All experts have 28 transformer layers and project their queries, keys, and values into a common 2,048-dimensional attention space. The code expert receives current visual observations and language instructions, the video expert attends to the code stream, and the action expert attends to both. Tables 5 and 6 summarize the architecture and the pretraining configuration.
译文
我们用三个按模态区分、由带掩码的联合注意力耦合在一起的专家来实现 AW-0 架构。所有专家都有 28 个 Transformer 层,并把各自的查询、键和值投影到一个共同的 2,048 维注意力空间。代码专家接收当前视觉观测和语言指令,视频专家关注代码流,动作专家则同时关注二者。表 5 和表 6 汇总了架构与预训练配置。
解释
“共同的 2,048 维注意力空间”是 MoT 能工作的前提:三个专家的残差宽度不同(代码 2,048、视频 2,048、动作 1,024,见表 5),但它们的 Q、K、V 必须投影到同一维度才能拼在一起做注意力。层数都是 28,意味着每一层三个专家同步交换一次信息。
原文
State and Action Representation. Both YAM robot data and egocentric human data are mapped into a shared 64-dimensional state–action space. Each side contains a 9-dimensional end-effector pose (3D of x,y,z position and a 6D rotation representation), 22 dexterous-hand joint angles, and one parallel gripper width, giving 2\times(9+22+1)=64 dimensions. States are all absolute; while action chunks use end-effector pose deltas relative to the first frame of the chunk, with absolute gripper targets for YAM and absolute hand-joint targets for human demonstrations/dexterous hand. Dimensions unused by an embodiment—the hand-joint blocks for YAM and the gripper dimensions for human demonstrations—are set to zero and left unnormalized. All remaining dimensions are normalized using per-dimension 1st and 99th percentiles.
译文
状态与动作表示。YAM 机器人数据和人类第一视角数据都被映射到一个共享的 64 维状态—动作空间。每一侧包含 9 维末端执行器位姿(3 维的 x,y,z 位置和 6D 旋转表示)、22 个灵巧手关节角和 1 个平行夹爪宽度,合计 2\times(9+22+1)=64 维。状态全部是绝对量;动作块则使用相对于该块第一帧的末端执行器位姿增量,YAM 的夹爪目标是绝对量,人类示范 / 灵巧手的手部关节目标也是绝对量。某种本体用不到的维度(YAM 的手部关节块、人类示范的夹爪维度)被置零,且不做归一化。其余所有维度用逐维的第 1 和第 99 百分位数进行归一化。
解释
6D 旋转表示是用旋转矩阵的前两列(共 6 个数)表示姿态,相比欧拉角或四元数,它在神经网络回归中是连续的,没有万向锁或双重覆盖问题。相对与绝对的混用。手臂用“相对块首帧的增量”,夹爪和手指用“绝对目标”。前者让动作与机器人在工作空间中的绝对位置无关,便于泛化;后者则因为夹爪开合、手指弯曲本身就有明确的物理含义(全开、全闭)。百分位数归一化:把第 1 百分位映射到某个下界、第 99 百分位映射到上界,比用最大最小值更不受离群点影响。置零的维度“不做归一化”,是为了避免除以零或把常数维放大成噪声。
原文
Initialization and Trainable Components. We initialize the video DiT from Cosmos-Predict2.5-2B (NVIDIA, 2025b) and the action DiT from scratch before joint pretraining. The code expert initializes its token embeddings, layer normalizations, FFNs, and vocabulary head from SDAR-1.7B (Cheng et al., 2025) and freezes them, while training its MoT attention projections and modulation parameters. The Qwen3-VL (Bai et al., 2025) vision tower is frozen, with a trainable merger mapping visual features to code embeddings. We replace the original VAE with a frozen Wan2.2 (Wan et al., 2025) VAE with 48 latent channels and reinitialize the video DiT's input and output projections. The video DiT uses 1\times2\times2 latent patches and multi-view 3D RoPE. Video and action experts use precomputed Cosmos-Reason1 language embeddings. Downstream adaptation transfers shape-compatible parameters from joint pretraining and reinitializes action and state projections when embodiment dimensions change.
译文
初始化与可训练部分。在联合预训练之前,我们用 Cosmos-Predict2.5-2B(NVIDIA, 2025b)初始化视频 DiT,动作 DiT 则从零初始化。代码专家的 token 嵌入、层归一化、FFN 和词表输出头从 SDAR-1.7B(Cheng et al., 2025)初始化并冻结,只训练它的 MoT 注意力投影和调制参数。Qwen3-VL(Bai et al., 2025)视觉塔被冻结,另有一个可训练的合并器(merger)把视觉特征映射到代码嵌入空间。我们把原有的 VAE 换成冻结的 Wan2.2(Wan et al., 2025)VAE(48 个潜通道),并重新初始化视频 DiT 的输入和输出投影。视频 DiT 使用 1\times2\times2 的潜空间分块(patch)和多视角 3D RoPE。视频专家和动作专家使用预计算的 Cosmos-Reason1 语言嵌入。下游适配时,从联合预训练中迁移形状兼容的参数;当本体维度改变时,重新初始化动作和状态投影。
解释
代码专家大部分是冻结的。SDAR 的 FFN、嵌入和输出头都冻结,只训练注意力投影和调制参数。这是为了保住语言模型的“编程先验”:FFN 通常被认为存储了大部分知识,冻结它们能防止在机器人数据上训练时遗忘代码语法。代价是代码专家的可塑性有限,这可能是附录 F 中实体 F1、原语 F1 偏低的原因之一。换 VAE。Cosmos-Predict2.5 原本有自己的 VAE,这里换成通道更多(48)的 Wan2.2 VAE,所以视频 DiT 的输入输出投影形状不再匹配,需要重新初始化。1\times2\times2 分块指时间上不合并、空间上每 2\times2 个潜像素合成一个 token。下游重新初始化。RoboTwin 的动作只有 14 维(表 5),与 64 维不兼容,所以动作和状态投影要重新学;真机平台沿用 64 维,这些投影可以直接迁移。
表 5:各专家的架构与共享的视觉输入。
配置代码视频动作
主干(Backbone)SDAR-1.7BCosmos-Predict2.5-2BAction DiT
残差宽度2,0482,0481,024
FFN 宽度6,1448,1924,096
注意力双向双向双向
Transformer 层数28
Query / KV 头数16 / 16
单头宽度 / 注意力宽度128 / 2,048
ViT 编码器Qwen3-VL-2B 视觉塔
视觉塔深度 / 宽度24 / 1,024
空间分块 / 合并16\times16 / 2\times2
视觉 token 数 / 宽度210 / 2,048
视角数 / 分辨率3 / 224\times320
视频帧数 / 步长9 / 4
状态 / 动作宽度64 / 64(真机);14 / 14(RoboTwin)
动作时域32
原表注:Expert Architectures and Shared Visual Inputs.
表 5 解读
上半部分是三个专家各自的配置,下半部分是共享的设置。头数验算。16 个头 \times 每头 128 维 =2{,}048,即共同注意力空间的宽度。动作专家残差宽度只有 1,024,需要先投影到 2,048 维才能参与联合注意力。视觉 token 验算。224\times320 的图像按 16\times16 分块,得到 14\times20=280 个 patch;再按 2\times2 合并,得到 70 个 token;三个视角共 3\times70=210 个,与表中一致,也与下文“每个视角 70 个视觉 token”一致。视频时间跨度。9 帧、步长 4,覆盖时间偏移 0,4,\ldots,32,正好对应 32 步的动作时域。数据以 30 Hz 采集(附录 B.1),所以一次预测覆盖约 32/30\approx1.07 秒。“注意力:双向”指每个专家内部是双向注意力;专家之间的分块因果结构见第 2.1 节。RoboTwin 的 14 维通常对应双臂各 6 个关节加 1 个夹爪(附录 C 中 \pi_{0.5} 在 RoboTwin 上就使用 14 维关节动作),但 AW-0 在 RoboTwin 上用的是关节空间还是其他表示,原文没有明说。
原文
Observation and Program Representations. Images are sampled at timestep offsets 0,4,\ldots,32, giving nine frames per view; only the first frame is used as observation conditioning. The code expert's visual encoder also receives only this first frame from each view. At 224\times320 resolution, spatial merging produces 70 visual tokens per view. The code expert uses the Qwen3-family tokenizer of the SDAR checkpoint. Its 512-token training budget applies to the instruction and program together, with the 210-token visual prefix added separately. At inference, the default program canvas contains 128 tokens. Visual-prefix, instruction, and padding positions are excluded from the standard masked-program loss.
译文
观测与程序的表示。图像在时间偏移 0,4,\ldots,32 处采样,每个视角得到九帧;其中只有第一帧用作观测条件。代码专家的视觉编码器同样只接收每个视角的第一帧。在 224\times320 分辨率下,空间合并后每个视角得到 70 个视觉 token。代码专家使用 SDAR 检查点自带的 Qwen3 系列分词器。它 512 个 token 的训练预算由指令和程序共同占用,210 个 token 的视觉前缀另外计算。推理时,默认的程序画布包含 128 个 token。视觉前缀、指令和填充位置都不计入标准的掩码程序损失。
解释
九帧中只有第 1 帧是“已观测”的,后 8 帧是视频专家要预测的未来。代码专家也只看当前这一帧,它不需要看未来,未来由视频专家负责。代码序列的长度预算:训练时指令加程序最多 512 个 token,推理时画布固定为 128 个 token。一个程序切片通常只有几行调用(见附录 B.3 的例子),128 个 token 足够容纳;画布中多余的位置会被解码成填充符或结束符。
表 6:生成与预训练设置。下游任务的覆盖设置见正文。
生成优化
视频 / 动作损失流匹配优化器AdamW
代码损失掩码交叉熵Adam 系数(0.9,0.95)
视频混合比例 \alpha0.5峰值学习率10^{-4}
Sigma 偏移 (v,a)(5,5)学习率调度余弦
动作 u_a / 代码 rU(0,1)线性预热5%
损失权重 (v,c,a)(1,0.5,1)权重衰减0
重要性权重截断4.0梯度截断1.0
权重归一化批内均值为 1精度 / ZeRObf16 / Stage 1
混合采样分层(Stratified)激活检查点启用
代码 / 视频 dropout0.15 / 0随机种子42
视频 / 动作求解器UniPC / Euler节点 / GPU 数6 / 48
代码解码顺序按置信度每 GPU 批大小6
揭开比例 \rho / 预热1 / 0梯度累积9
时间步缩放1,000有效批大小2,592
代码画布128 token训练预算1 个 epoch
联合去噪步数4GPU 型号NVIDIA H100
原表注:Generation and Pretraining Settings. Downstream overrides are given in the text.
表 6 解读
左半是生成(扩散 / 去噪)相关的超参数,右半是优化器和算力配置。与正文对应的项。“视频混合比例 \alpha=0.5”对应式 (5);“Sigma 偏移 (5,5)”对应式 (3) 中的 \gamma_v=\gamma_a=5;“动作 u_a / 代码 r:U(0,1)”对应式 (3)、式 (4) 的采样;“损失权重 (1,0.5,1)”对应式 (6) 中的 (\lambda_v,\lambda_c,\lambda_a),代码损失权重减半;“重要性权重截断 4.0”和“批内均值为 1”对应式 (6) 中带横线的权重。“代码画布 128”和“联合去噪步数 4”给出了第 2.3 节中的 G=128、T=4。批大小验算。6 个节点共 48 张 GPU,每张 6 个样本,梯度累积 9 次:48\times6\times9=2{,}592,与表中一致。其他值得注意的项。视频用 UniPC 求解器(一种高阶 ODE 求解器,步数少时更准),动作用最简单的 Euler 法。“代码 dropout 0.15”对应下文所说的“15% 的批次把指令和程序输入换成掩码 token”,相当于无分类器引导(classifier-free guidance)训练中的条件丢弃。“揭开比例 \rho=1”表示默认在所有去噪步完成后才揭开全部代码;\rho<1 则允许代码提前完成(见下文)。预训练只跑 1 个 epoch,对约 2,900 小时的数据来说是常见做法。
原文
Joint Training and Decoding. Video noise resampling follows Section 2.2. The pretrained variable is u_{\mathrm{pre}}=0.999b, where b\sim\mathrm{Beta}(7,1); training samples are drawn from q=0.5p_{\mathrm{pre}}+0.5U(0,1). The video objective uses the pretrained-density weight, while action and code losses use the uniform-reference weight. Action noise levels and code-mask ratios are sampled independently of the video variable. At least one program token is masked in every nonempty training target. The pretraining recipe additionally replaces the instruction and program inputs with mask tokens for 15% of training batches, retaining the visual prefix. The default decoder progressively commits high-confidence code predictions across the full joint trajectory. Early completion is controlled by \rho<1, a separate decoding-time choice that does not change the training mask distribution. Latency is measured end to end on an NVIDIA RTX 5090, including visual encoding, joint denoising, video decoding, and action postprocessing.
译文
联合训练与解码。视频噪声的重采样按第 2.2 节进行。预训练时的变量为 u_{\mathrm{pre}}=0.999b,其中 b\sim\mathrm{Beta}(7,1);训练样本从 q=0.5p_{\mathrm{pre}}+0.5U(0,1) 中抽取。视频目标使用预训练密度对应的权重,动作和代码损失使用均匀参考分布对应的权重。动作噪声水平和代码掩码比例的采样与视频变量相互独立。每个非空的训练目标中至少有一个程序 token 被掩码。预训练方案还在 15% 的训练批次中把指令和程序输入替换为掩码 token,但保留视觉前缀。默认解码器在整条联合去噪轨迹上逐步确定高置信度的代码预测;提前完成由 \rho<1 控制,这是一个独立的解码时选项,不改变训练时的掩码分布。延迟是在 NVIDIA RTX 5090 上端到端测量的,包括视觉编码、联合去噪、视频解码和动作后处理。
解释
这一段是对第 2.2 节式 (5)、式 (6) 的具体化,数字与正文一致。“至少有一个程序 token 被掩码”是为了避免 r 很小时一个 token 都没被遮住、损失为零的退化情况。15% 的条件丢弃有两种可能的作用:一是让模型在没有语言和程序时也能从图像推断该做什么;二是为推理时的无分类器引导做准备。原文没有说推理时是否使用了引导。延迟的口径包括视频解码,也就是说 0.23 s 中包含了把预测的视频潜变量解码成像素的时间。这对部署来说偏保守:如果不需要可视化,理论上可以跳过视频解码。
原文
Downstream Optimization. Downstream runs use the same optimizer, warmup schedule, and mixed-precision settings as pretraining, with task-specific batch sizes and training budgets. For both YAM and Tianji–Sharpa, we fine-tune AW-0 for 20 epochs using 100 demonstrations per task. The YAM configurations use a per-GPU batch size of four, one gradient accumulation step, a learning rate of 10^{-4}, and weight decay of 10^{-2}. The RoboTwin configuration uses two 8-GPU nodes with a per-GPU batch size of 6 and one accumulation step, giving an effective batch size of 96, a learning rate of 2\times10^{-4}, weight decay of 10^{-2}, and a budget of 100,000 optimizer steps. These settings are distinct from the larger pretraining batch in Table 6.
译文
下游优化。下游训练使用与预训练相同的优化器、预热方案和混合精度设置,批大小和训练预算则按任务设定。对 YAM 和 Tianji–Sharpa,我们都用每个任务 100 条示范对 AW-0 微调 20 个 epoch。YAM 的配置为每 GPU 批大小 4、梯度累积 1 步、学习率 10^{-4}、权重衰减 10^{-2}。RoboTwin 的配置使用两个 8-GPU 节点,每 GPU 批大小 6、累积 1 步,有效批大小为 96,学习率 2\times10^{-4},权重衰减 10^{-2},训练预算为 100,000 个优化步。这些设置与表 6 中更大的预训练批大小不同。
解释
验算。RoboTwin:2\times8\times6\times1=96,正确。按 10 万步、批大小 96 计,共处理约 960 万个训练窗口;2,500 条示范平均每条要被采样数千次,说明 RoboTwin 上的微调相当充分。缺失的信息。YAM 微调没有给出 GPU 数,因此有效批大小未知;Tianji–Sharpa 只说了 20 个 epoch,没有单独给出批大小和学习率(原文“YAM configurations”是否也适用于 Tianji–Sharpa 不明确)。另外,各基线的微调轮数不同(附录 C:\pi_{0.5}、EgoScale、WLA 50 个 epoch,DreamZero 10 个 epoch),比较时应留意。

B预训练数据集分析(Analysis on Pretraining Dataset)

B.1预训练数据集统计

原文
We pretrain AW-0 on the union of two real-world manipulation datasets: YAM and Egocentric Human data. The YAM corpus contains 73,101 episodes across 279 tasks, totaling 1,919.3 hours of bimanual robot teleoperation. Demonstrations are recorded at 30 Hz with left-wrist, right-wrist, and top-view RGB cameras. The egocentric human corpus contains 175,541 episodes across 327 tasks, totaling 993.9 hours, with a single head-mounted RGB camera and tracked hand motion retargeted to 22-DoF dexterous-hand joint targets per hand. Together, the two sources comprise 248,642 episodes and 2,913.2 hours. The human camera view is replicated across the three input slots; each training window is paired with its episode-level instruction and aligned program slice. Table 7 reports detailed statistics.
译文
我们在两个真实世界操作数据集的并集上预训练 AW-0:YAM 数据和人类第一视角数据。YAM 语料包含 279 个任务的 73,101 个回合,共计 1,919.3 小时的双臂机器人遥操作数据。示范以 30 Hz 录制,配有左手腕、右手腕和俯视三路 RGB 相机。人类第一视角语料包含 327 个任务的 175,541 个回合,共计 993.9 小时,只有一个头戴式 RGB 相机,跟踪到的手部运动被重定向为每只手 22 自由度的灵巧手关节目标。两个来源合计 248,642 个回合、2,913.2 小时。人类数据的相机画面被复制到三个输入槽位中;每个训练窗口都与其回合级指令和对齐的程序切片配对。表 7 给出详细统计。
解释
回合时长。YAM 平均每回合 1{,}919.3\times3600/73{,}101\approx94.5 秒,人类数据平均每回合 993.9\times3600/175{,}541\approx20.4 秒。人类回合短得多,与下表“每回合子任务切片数”(13.5 对 6.2)一致:机器人遥操作数据多是完整的长任务,人类视频多是被切成较短片段的活动。单视角的处理。人类数据只有一个头戴相机,而模型的输入有三个视角槽位,作者直接把同一张图复制三份。这是一个简单的权宜做法,模型因此需要学会在“三个视角相同”时依然正确工作。文中没有说明这两个数据集的来源(自采还是公开数据集),伦理声明只说“按各自的许可和使用条款使用”。
表 7:预训练语料统计。
YAM人类第一视角合计
回合数73,101175,541248,642
时长(小时)1,919.30993.912,913.22
任务数279327606
子任务切片总数986,3141,089,0592,075,373
每回合平均子任务切片数13.56.28.3
原表注:Pretraining Corpus Statistics.
表 7 解读
三列分别是两个数据源和合计。逐项验算:回合数 73{,}101+175{,}541=248{,}642;时长 1{,}919.30+993.91=2{,}913.21,表中合计为 2,913.22,差 0.01 小时,应是各自四舍五入造成的;任务数 279+327=606;切片数 986{,}314+1{,}089{,}059=2{,}075{,}373。每回合平均切片数:986{,}314/73{,}101=13.49,1{,}089{,}059/175{,}541=6.20,2{,}075{,}373/248{,}642=8.35,与表中 13.5、6.2、8.3 一致。“子任务切片”就是一段带人工子任务标注、并被标注了一小段程序的时间区间。200 多万个切片意味着标注流水线如果每个切片都调用一次大模型,成本会非常高,这正是第 2.3 节引入缓存复用的原因。

B.2技能库定义

原文
A skill is a reusable motion that the model can invoke by name. Each skill is a Python function written over the primitive API described in Appendix K.1, taking the objects it acts on as arguments, so that a subtask recurring across the corpus becomes a single call rather than being spelled out primitive by primitive. Following the annotation pipeline of Section 2.3, we generate a skill library for each dataset: 23 skills for YAM and 27 skills for the egocentric human data. Tables 8 and 9 list them, each with a one-line description of the motion it implements.
译文
技能是模型可以按名字调用的一种可复用动作。每个技能都是基于附录 K.1 所述原语 API 编写的一个 Python 函数,以它所作用的物体为参数;这样,在语料中反复出现的子任务就变成一次函数调用,而不必逐个原语地写出来。按照第 2.3 节的标注流水线,我们为每个数据集生成一个技能库:YAM 有 23 个技能,人类第一视角数据有 27 个技能。表 8 和表 9 列出了这些技能,每个都附有一行说明它所实现的动作。
解释
技能与原语的关系类似于“函数”与“语句”:原语是 grasp、release、move_arm 这类单步操作,技能则把常见的几步组合打包成一个有名字的函数,例如 fold_edge_over = 双臂捏住布边、移过去、松开。用技能写出的程序更短,也更“语义化”,这对代码专家的学习有利(第 3.3 节 Q2 中去掉技能后性能下降)。两个技能库分开构建,因为两种本体的原语不同(附录 K.1:夹爪 API 用末端位姿,灵巧手 API 用语义方向的相对运动)。两库有重名技能,如 pull_part_free,但实现不同。
表 8:冻结后的 YAM 技能库(23 个技能)。
技能定义
adjust_in_place在物体原处夹住,不抬起地滑动几厘米,然后松开。
alternating_smoothing_pats一只臂把织物压平后离开,再换另一只臂,即“抚平”切片中交替的拍压。
approach_best_grasp在物体上采样抓取候选,选出这只臂能够到的最佳抓取,并把末端执行器开到该位姿。
brace_and_pull_open一只臂扶住主体,另一只臂抓住其盖子、翻盖或把手并拉开,然后松开扶持的臂。
brace_and_push_in对同一部件抓两次,低处抓以保持对齐,高处抓以施推,把它推入到位。
flip_object_over把夹着的扁平物体抬离桌面,手腕转半圈,倒置后松开,再抓住它把它压住。
fold_edge_over双臂捏住布边,把它带过物品上方再松开,完成一次折叠。
free_hand_and_pick先张开空闲的那只臂,再用工作臂拿起物体。
hand_over_hand_extract两次“夹—拉—松”的交替动作,把一个长物体从袋子、套子或槽中一点点抽出。
lower_onto_target以当前手腕朝向把所携物体悬停在检测到的目标上方,再放低进去;由调用者负责松开。
pull_part_free在部件原处夹住,沿一个有界的增量直接拖下来,然后松开。
push_closure_shut夹住抽屉、盖子、门或罩子,沿其行程推到关闭,然后放开。
ratchet_turn_fastener在螺纹紧固件上做两次棘轮式拧转;中间的松开是手腕回转,不是放下。
ratchet_twist_off在螺纹部件上做两次棘轮式拧转;角度的正负决定是拧紧还是拧松。
relocate_object在一个切片内完成单臂搬运:拿起物体并放到指定目标处。
roll_up_one_bite受臂展所限的一次卷动:捏住,把卷往前推,松开,再回到下一个捏点。
run_zipper_along_seam一只臂按住箱包,另一只臂捏住拉链头,沿缝线拉一程。
scrub_back_and_forth把已经拿在手中的布移到检测到的表面上,来回擦一次。
spread_taut_and_release双臂都已夹住时,向两侧拉开把物品绷紧,再同时松开。
stir_braced_vessel在被扶住的容器内搅拌,一旦工具尖端开始顶到器壁,就重新调整扶持。
tear_off_piece一只臂按住整张纸、整卷或整袋,另一只臂捏住一片,沿撕线拉开。
tilt_pour_over_target把手中的容器移到检测到的接收容器上方,越过边沿,倾倒一次,再回正。
wrap_tension_pull在缠绕中的绳带上做两次交替抓拉:往前换一个抓点,把松弛部分拉紧,重复两次。
原表注:The Frozen YAM Skill Library (23 skills).
表 8 解读
表中左列是技能函数名,右列是一句话的动作说明(原文为英文,此处译为中文)。按动作类型大致可分几组:抓取与搬运(approach_best_grasp、free_hand_and_pick、relocate_object、lower_onto_target);开合与插拔(brace_and_pull_open、push_closure_shut、brace_and_push_in、pull_part_free、hand_over_hand_extract);拧转(ratchet_turn_fastener、ratchet_twist_off);柔性物体(fold_edge_over、alternating_smoothing_pats、spread_taut_and_release、roll_up_one_bite、wrap_tension_pull、tear_off_piece、run_zipper_along_seam);工具与容器(scrub_back_and_forth、stir_braced_vessel、tilt_pour_over_target);以及原地微调(adjust_in_place)和翻面(flip_object_over)。不少技能的说明里都强调“几次”(两次棘轮、一次卷动),这与附录 K.2 提示词中“重复动作写成字面循环、次数从画面中读出”的规定相呼应:技能只描述一个基本单元,重复次数由外层循环表示。双臂协作类技能(一只臂扶、一只臂操作)在 YAM 库中占了很大比例,说明 YAM 数据以双臂任务为主。
表 9:冻结后的人类第一视角技能库(27 个技能)。
技能定义
align_and_seat_braced一只手按住目标使其不能移动,另一只手把部件推到位后松开。
brace_and_pick一只手稳住来源物,另一只手从它上面或里面取出物体。
brace_and_take_tool建立双手作业姿势:扶持的手握住工件,工作的手握住工具。
close_closure双手扶在一个可开合件上把它合上,然后离开;之后手中不持物。
flatten_by_pulling_taut一只手按住松弛的扁平物品,另一只手把它拉紧,往前换一个抓点,再拉一次。
flip_over_between_hands通过在两手之间传递并翻转半圈,把物体翻面。
fold_over_and_crease扶住扁平物品,把它的自由边分两步带过去,放下,再压出折痕,完成一次折叠。
hang_item_on_support把手中物品从上方移到挂钩、架子或枝条上,再放下挂上去。
insert_into_receptacle把手中物体放入容器,松手,再收回空手。
move_item_two_handed双手在原处拿起一件较大的物品,沿某个语义方向搬运,再双手松开。
open_closure一只手扶住容器主体,另一只手把铰接的盖子翻开,然后离开。
pick_and_bring拿起物体,把它带到相对下一个去处的某个语义位置;手仍握着它。
place_at_target用工作手把所携物体放到目标处,同时让第二只手也空出来。
pour_into_target把手中容器的开口移到目标上方,倾斜直到倒空,再回正;握法始终不变。
press_onto_target双手按压目标后离开,例如把盖子或外壳按到位,或者操作一个控件。
pull_open_and_hold沿某个语义方向把把手、页片或自由端拉开,并保持握住。
pull_part_free一只手扶住组件,另一只手把一个部件从中拔下或抽出。
rotate_grasped_object在原处拿住物体,绕某个语义轴转动它;手最后仍在物体上。
scoop_and_carry用手中的器具从来源容器中取出一份物料,带到目的地上方。
scrub_inside_vessel一只手稳住容器,另一只手把刷子伸进去,刷一来一回。
stir_contents把已在手中的工具放入容器内,绕圈搅动。
thread_through_and_pull_out一只手把鞋带、绳子或销子穿过孔,另一只手接住穿出的一端,把松弛部分拉过去。
tighten_with_ratchet_regrasps在已经旋上的盖子上拧完最后一段螺纹:拧一下,松开,重新握住,再拧。
turn_over_object把手中物体翻面,并把新的一面带到相对目的地的某个语义位置。
unscrew_cap拧转螺纹部件,让手腕回转并重新握紧,再拧,最后把松脱的部件提起移开。
wipe_surface_back_and_forth把已在一只手中的布或海绵放到一个开放表面上,来回擦两趟。
wrap_around_target把手中的包裹物(丝带、锡纸、薄膜、纱布)绕目标一整圈。
原表注:The Frozen Egocentric Human Skill Library (27 skills).
表 9 解读
人类技能库与 YAM 技能库的风格明显不同。第一,大量使用“语义方向”“语义位置”“语义轴”这类说法(pick_and_bring、move_item_two_handed、rotate_grasped_object),这是因为人类视频没有精确的末端位姿,灵巧手 API 的运动原语只接受“向上”“朝身体方向”“在某物上方”这类语义参数(附录 K.1)。第二,日常生活类动作更多,如倒、舀、搅、刷、挂、穿绳、缠绕,覆盖了人类第一视角视频中常见的厨房、清洁、手工活动。第三,很多说明特意交代动作结束时手的状态(“手仍握着它”“之后手中不持物”“握法始终不变”),因为程序是逐切片生成的,下一段程序需要知道上一段结束时哪只手握着什么。两张表对照还能看出,同一个语义动作在两种本体上有不同的分解粒度。例如“擦拭”在 YAM 中是 scrub_back_and_forth(擦一次),在人类库中是 wipe_surface_back_and_forth(擦两趟)。

B.3YAM 技能的可视化

原文
We visualize four of the 23 YAM skills. For each, we select one representative slice and show a strip of key frames, the corresponding task and subgoal annotations, the program slice, and the skill function. In the listings, calls in bold are library skills; all others are primitive calls.
译文
我们可视化 23 个 YAM 技能中的四个。对每个技能,我们选取一个有代表性的切片,展示一串关键帧、对应的任务与子目标标注、程序切片以及技能函数。在代码清单中,粗体的调用是技能库中的技能,其余都是原语调用。
解释
接下来的四组(图 8–11)结构相同:先给出该切片所属回合的任务(Task)和人工子目标标注(Sub-goal),再是 5 张关键帧(从左到右按时间排列,文件名中的数字是帧号),然后是技能函数的定义和这个回合中实际标注的程序切片。译文中把代码注释译成了中文,代码本身保持不变。原文用粗体标出技能调用,本译稿的等宽字体代码不再区分粗细,读者可以对照表 8 判断哪些是技能。
原文
Skill I: fold_edge_over
Task: “wrap blanket roll with ribbon”
Sub-goal: “Fold the blanket at the center of the board”Skill definition:def fold_edge_over(robot, item_name, left_delta, right_delta):
# pinch the edge with both arms
robot.grasp(item_name, 'left')
robot.grasp(item_name, 'right')
# carry the pinched edge across the item
robot.servo_ee_delta('left', left_delta)
robot.servo_ee_delta('right', right_delta)
# let the fold lie
robot.release('left')
robot.release('right')
Program slice for this episode:fold_edge_over(robot, 'blanket', [0.15, 0.0, 0.0], [0.15, 0.0, 0.0])
译文
技能 I:fold_edge_over
任务:“用丝带包扎毯子卷”
子目标:“在板的中央把毯子折起来”技能定义:def fold_edge_over(robot, item_name, left_delta, right_delta):
# 双臂捏住布边
robot.grasp(item_name, 'left')
robot.grasp(item_name, 'right')
# 把捏住的布边带过物品上方
robot.servo_ee_delta('left', left_delta)
robot.servo_ee_delta('right', right_delta)
# 让折好的部分放平
robot.release('left')
robot.release('right')
本回合的程序切片:fold_edge_over(robot, 'blanket', [0.15, 0.0, 0.0], [0.15, 0.0, 0.0])
f000354_start.jpgf000394_t.jpgf000414_t.jpgf000454_t.jpgf000494_end.jpg
图 8:技能 I fold_edge_over 的关键帧。
原图注:Key frames of Skill I, fold_edge_over.
图 8 解读
5 张俯视关键帧取自第 354 至 494 帧,按 30 Hz 计约 4.7 秒。画面中两条 YAM 机械臂一起捏住浅色毯子的一条边,把它向前带过毯子上方,松开后毯子被对折。代码解读。技能函数只用了三种原语:grasp(夹住)、servo_ee_delta(末端执行器按给定增量伺服移动)、release(松开)。程序切片把技能实例化为“物体是毯子,左右臂都沿 x 方向移动 0.15 米”。可见同一个技能通过参数适应不同场景:移动距离由标注员从画面估计并写成字面量。这也是附录 F 指出的风险所在:技能选对了,增量参数却可能写错。
原文
Skill II: alternating_smoothing_pats
Task: “roll towels”
Sub-goal: “Flatten the towel”Skill definition:def alternating_smoothing_pats(robot, fabric_name, first_side, second_side):
# pat 1 -- press the fabric flat, then come off
robot.grasp(fabric_name, first_side)
robot.release(first_side)
# pat 2 -- the other hand, on the other half of the sheet
robot.grasp(fabric_name, second_side)
robot.release(second_side)
Program slice for this episode:# Smooth out the towel with alternating pats
alternating_smoothing_pats(robot, 'towel', 'left', 'right')
译文
技能 II:alternating_smoothing_pats
任务:“卷毛巾”
子目标:“把毛巾抚平”技能定义:def alternating_smoothing_pats(robot, fabric_name, first_side, second_side):
# 第 1 下:把织物压平,然后离开
robot.grasp(fabric_name, first_side)
robot.release(first_side)
# 第 2 下:换另一只手,压在织物的另一半上
robot.grasp(fabric_name, second_side)
robot.release(second_side)
本回合的程序切片:# 用交替拍压把毛巾抚平
alternating_smoothing_pats(robot, 'towel', 'left', 'right')
f000130_start.jpgf000216_t.jpgf000302_t.jpgf000345_t.jpgf000435_end.jpg
图 9:技能 II alternating_smoothing_pats 的关键帧。
原图注:Key frames of Skill II, alternating_smoothing_pats.
图 9 解读
关键帧取自第 130 至 435 帧(约 10 秒)。开始时绿色毛巾皱成一团,两只夹爪先后下压、拉展,最后一帧毛巾已平铺在桌面中央。代码解读。这个技能很能说明“仅声明 API”的描述性质:它由“夹住—松开”两对原语组成,但实际动作是“压一下再抬起”,并没有真正夹住什么。grasp 在 YAM 上对应的是夹爪闭合事件,标注时要求程序中的开合事件与传感器记录的夹爪事件严格一致(附录 K.2),所以“拍压”只能被写成一次闭合加一次张开。换言之,程序忠实复现了接触事件序列,但函数名本身的语义(grasp 是“抓取”)与真实动作并不完全对应。
原文
Skill III: flip_object_over
Task: “fold napkin into a case and place utensils in it”
Sub-goal: “Turn over the spoon at the center of the board”Skill definition:def flip_object_over(robot, object_name, side, lift_delta, turn_deg=180.0):
# lift just clear so the object can swing
robot.servo_ee_delta(side, lift_delta)
# roll the wrist -- this is the flip
robot.rotate(object_name, turn_deg, side)
# let it fall the last centimetre, landing inverted
robot.release(side)
# pin the flipped object down again for the next slice
robot.grasp(object_name, side)
Program slice for this episode:# Lift, roll the wrist to flip the spoon, drop it, and pin it
flip_object_over(robot, 'spoon', 'left', [0.0, 0.0, 0.1])
译文
技能 III:flip_object_over
任务:“把餐巾叠成套子,再把餐具放进去”
子目标:“在板的中央把勺子翻过来”技能定义:def flip_object_over(robot, object_name, side, lift_delta, turn_deg=180.0):
# 稍稍抬起,让物体有空间转动
robot.servo_ee_delta(side, lift_delta)
# 转动手腕,这就是“翻面”
robot.rotate(object_name, turn_deg, side)
# 让它落下最后一厘米,倒置着地
robot.release(side)
# 再把翻过来的物体压住,供下一个切片使用
robot.grasp(object_name, side)
本回合的程序切片:# 抬起,转动手腕把勺子翻面,放下,再压住
flip_object_over(robot, 'spoon', 'left', [0.0, 0.0, 0.1])
f004748_start.jpgf004775_pin.jpgf004793_pin.jpgf004831_pin.jpgf004877_end.jpg
图 10:技能 III flip_object_over 的关键帧。
原图注:Key frames of Skill III, flip_object_over.
图 10 解读
关键帧取自第 4,748 至 4,877 帧(约 4.3 秒),说明这是一个很长回合(第 4,748 帧约在 158 秒处)中的一小段。画面中左臂夹着一把蓝色勺子,抬起、转腕、放下。关键帧文件名带有“start”“pin”“t”“end”等后缀,分别对应起始帧、被特别选取的帧、中间时刻和结束帧;原文没有说明“pin”的确切含义。代码解读。turn_deg 有默认值 180°,所以程序切片只需给出抬升增量 [0,0,0.1](竖直方向 10 厘米)。技能末尾的“再抓住压住”是为下一个切片做准备,体现了技能说明中反复强调的“结束时手的状态”。这里的 rotate 用的是平行夹爪 API 的签名 rotate(object_name, angle_deg, side),与灵巧手 API 多一个“轴”参数的版本不同(附录 K.1)。
原文
Skill IV: adjust_in_place
Task: “place bookmark into book”
Sub-goal: “Adjust the bookmark in the book”Skill definition:def adjust_in_place(robot, object_name, side, nudge_delta):
# take hold where it sits -- no lift
robot.grasp(object_name, side)
# slide it by a small bounded amount
robot.servo_ee_delta(side, nudge_delta)
# let it settle
robot.release(side)
Program slice for this episode:adjust_in_place(robot, 'bookmark', 'right', [0.05, 0.0, 0.0])
译文
技能 IV:adjust_in_place
任务:“把书签放进书里”
子目标:“调整书中的书签”技能定义:def adjust_in_place(robot, object_name, side, nudge_delta):
# 在原处握住,不抬起
robot.grasp(object_name, side)
# 把它滑动一小段有界的距离
robot.servo_ee_delta(side, nudge_delta)
# 让它放稳
robot.release(side)
本回合的程序切片:adjust_in_place(robot, 'bookmark', 'right', [0.05, 0.0, 0.0])
f000936_start.jpgf000973_pin.jpgf001010_pin.jpgf001033_pin.jpgf001161_end.jpg
图 11:技能 IV adjust_in_place 的关键帧。
原图注:Key frames of Skill IV, adjust_in_place.
图 11 解读
关键帧取自第 936 至 1,161 帧(约 7.5 秒)。书已经打开,右臂夹住书签,沿水平方向推动约 5 厘米,使其插得更深或位置更正。代码解读。这是最短的技能之一,只有“夹—移—松”三步,与表 8 中的说明“不抬起地滑动几厘米”一致。它存在的意义在于语义:同样三个原语也可以表示“搬运”,但命名为 adjust_in_place 后,代码专家就能区分“微调位置”和“搬到别处”,这对规划下一步很有用。

B.4人类第一视角技能的可视化

原文
We visualize six of the 27 egocentric human skills. For each, we select one representative slice and show a strip of key frames, the corresponding task and sub-goal annotations, the program slice, and the skill function. In the listings, calls in bold are library skills; all others are primitive calls.
译文
我们可视化 27 个人类第一视角技能中的六个。对每个技能,我们选取一个有代表性的切片,展示一串关键帧、对应的任务与子目标标注、程序切片以及技能函数。在代码清单中,粗体的调用是技能库中的技能,其余都是原语调用。
解释
与 YAM 技能相比,人类技能的代码有一个明显差异:几乎不出现数值坐标,运动原语的参数都是语义字符串,如 'above'、'inside'、'away_from_body'、'object_long'(沿物体长轴)。这是因为人类视频只有头戴相机画面和重定向后的手部关节,没有可靠的末端位姿,所以灵巧手 API 只提供语义级的运动原语(附录 K.1)。注释也写成完整的英文句子,风格与 YAM 技能略有不同,可能来自不同轮次的标注。
原文
Skill I: open_closure
Task: “assemble photo album”
Sub-goal: “Open the photo album”Skill definition:def open_closure(robot, container_name, closure_name, side, brace_side, axis, angle_deg):
# Hold the container body down so the closure, not the container, moves.
robot.grasp(container_name, brace_side)
# Take the closure where it sits.
robot.grasp(closure_name, side)
# Swing it open about its hinge.
robot.rotate(closure_name, axis, angle_deg, side)
# Come off the closure; it stays open.
robot.release(side)
Program slice for this episode:open_closure(robot, 'photo album', 'photo album cover', 'left', 'right', 'object_long', 180.0)
译文
技能 I:open_closure
任务:“装订相册”
子目标:“打开相册”技能定义:def open_closure(robot, container_name, closure_name, side, brace_side, axis, angle_deg):
# 按住容器主体,使动的是盖子而不是容器。
robot.grasp(container_name, brace_side)
# 在盖子原处握住它。
robot.grasp(closure_name, side)
# 绕铰链把它翻开。
robot.rotate(closure_name, axis, angle_deg, side)
# 从盖子上离开;盖子保持打开。
robot.release(side)
本回合的程序切片:open_closure(robot, 'photo album', 'photo album cover', 'left', 'right', 'object_long', 180.0)
f000000_start.jpgf000083_pin.jpgf000101_pin.jpgf000124_pin.jpgf000162_end.jpg
图 12:技能 I open_closure 的关键帧。
原图注:Key frames of Skill I, open_closure.
图 12 解读
关键帧取自第 0 至 162 帧(按 30 Hz 约 5.4 秒),是头戴相机视角:右手按住相册,左手捏住封面,绕长边翻开 180°。代码解读。注意参数名 side 与 brace_side 的分工:brace_side 是扶持的手(这里是右手),side 是操作的手(左手)。旋转轴 'object_long' 是语义常量,表示“绕物体长轴”,这正是附录 K.2 提示词所说的“角度用语义常量、不写坐标”。技能结束时只松开了操作手,扶持手仍按着相册,下一段程序需要据此继续。
原文
Skill II: pour_into_target
Task: “serve rice into a bowl”
Sub-goal: “Pour a spoonful of rice into the bowl”Skill definition:def pour_into_target(robot, vessel_name, target_name, side, axis, angle_deg):
# Bring the held vessel's mouth over the receiving target.
robot.goto_relative(side, target_name, 'above')
# Tip it until it pours.
robot.rotate(vessel_name, axis, angle_deg, side)
# Bring it back upright; the pour ends.
robot.rotate(vessel_name, axis, -angle_deg, side)
Program slice for this episode:pour_into_target(robot, 'spoon', 'bowl', 'right', 'object_long', 110.0)
译文
技能 II:pour_into_target
任务:“把米饭盛进碗里”
子目标:“把一勺米饭倒进碗里”技能定义:def pour_into_target(robot, vessel_name, target_name, side, axis, angle_deg):
# 把手中容器的开口移到接收目标的上方。
robot.goto_relative(side, target_name, 'above')
# 倾斜它,直到倒出来。
robot.rotate(vessel_name, axis, angle_deg, side)
# 把它转回直立,倾倒结束。
robot.rotate(vessel_name, axis, -angle_deg, side)
本回合的程序切片:pour_into_target(robot, 'spoon', 'bowl', 'right', 'object_long', 110.0)
f000645_start.jpgf000675_t.jpgf000683_pin.jpgf000690_pin.jpgf000720_end.jpg
图 13:技能 II pour_into_target 的关键帧。
原图注:Key frames of Skill II, pour_into_target.
图 13 解读
关键帧取自第 645 至 720 帧(约 2.5 秒),右手拿着盛了米饭的勺子移到碗上方,翻转勺子把米饭倒进碗里,再转回来。代码解读。这里“容器”(vessel)是一把勺子,说明技能的抽象层次足够高:“倒”这个动作与容器类型无关。程序中的倾斜角 110° 是标注员从画面估计的。技能定义里两次 rotate 的角度互为相反数,体现了表 9 中“握法始终不变”“回正”的约定。整个技能没有任何开合手的调用,与附录 K.2 中灵巧手“接触语义”的规定一致:只有 pick、grasp、place、release 等动词才改变手的开合状态。
原文
Skill III: stir_contents
Task: “mixing solutions with stirring rod”
Sub-goal: “Stir the solution in the beaker”Skill definition:def stir_contents(robot, tool_name, vessel_name, side):
# Bring the held tool down inside the vessel, among the contents.
robot.goto_relative(side, vessel_name, 'inside')
# Sweep it round the vessel; the grip never changes, nothing is let go.
robot.rotate(tool_name, 'vertical', 360.0, side)
robot.rotate(tool_name, 'vertical', 360.0, side)
Program slice for this episode:brace_and_take_tool(robot, 'beaker', 'left', 'stirring rod', 'right')
stir_contents(robot, 'stirring rod', 'beaker', 'right')
译文
技能 III:stir_contents
任务:“用玻璃棒搅拌溶液”
子目标:“搅拌烧杯中的溶液”技能定义:def stir_contents(robot, tool_name, vessel_name, side):
# 把手中的工具伸到容器里,进入内容物中。
robot.goto_relative(side, vessel_name, 'inside')
# 绕着容器扫动;握法不变,不松手。
robot.rotate(tool_name, 'vertical', 360.0, side)
robot.rotate(tool_name, 'vertical', 360.0, side)
本回合的程序切片:brace_and_take_tool(robot, 'beaker', 'left', 'stirring rod', 'right')
stir_contents(robot, 'stirring rod', 'beaker', 'right')
f000758_start.jpgf000824_t.jpgf000890_t.jpgf000956_t.jpgf000994_end.jpg
图 14:技能 III stir_contents 的关键帧。
原图注:Key frames of Skill III, stir_contents.
图 14 解读
关键帧取自第 758 至 994 帧(约 7.9 秒),左手扶住烧杯,右手拿玻璃棒在杯中搅动。代码解读。在本附录展示的十个例子中,这是唯一一个由两个技能组合而成的程序切片:先 brace_and_take_tool 建立“左手扶烧杯、右手拿玻璃棒”的双手作业姿势,再 stir_contents 搅两圈。它展示了第 1 节所说的“技能组合”:一个子任务由两个可复用单元拼成。技能定义中把“绕竖直轴转 360°”写了两遍,而不是用循环,这与提示词中“重复的原地拧转写成一个字面循环”的规定略有出入;不过“搅两圈”被视作技能本身的固定内容,循环规则针对的是程序切片中重复调用的次数。
原文
Skill IV: wipe_surface_back_and_forth
Task: “use lint roller on pants”
Sub-goal: “Remove the lint from the pair of pants”Skill definition:def wipe_surface_back_and_forth(robot, surface_name, relation, stroke_direction, return_direction, side):
# Park the cloth on the surface.
robot.goto_relative(side, surface_name, relation)
# Out and back.
robot.move_arm(side, stroke_direction)
robot.move_arm(side, return_direction)
# And again.
robot.move_arm(side, stroke_direction)
robot.move_arm(side, return_direction)
Program slice for this episode:# Roll the lint roller back and forth over the pants (4 pairs of strokes)
for _ in range(2):
wipe_surface_back_and_forth(robot, 'pants', 'against', 'right', 'left', 'left')
译文
技能 IV:wipe_surface_back_and_forth
任务:“用粘毛滚筒滚裤子”
子目标:“去掉裤子上的绒毛”技能定义:def wipe_surface_back_and_forth(robot, surface_name, relation, stroke_direction, return_direction, side):
# 把布放到表面上。
robot.goto_relative(side, surface_name, relation)
# 推出去,再拉回来。
robot.move_arm(side, stroke_direction)
robot.move_arm(side, return_direction)
# 再来一次。
robot.move_arm(side, stroke_direction)
robot.move_arm(side, return_direction)
本回合的程序切片:# 在裤子上来回滚动粘毛滚筒(4 对来回)
for _ in range(2):
wipe_surface_back_and_forth(robot, 'pants', 'against', 'right', 'left', 'left')
f001028_start.jpgf001048_t.jpgf001068_t.jpgf001088_t.jpgf001103_end.jpg
图 15:技能 IV wipe_surface_back_and_forth 的关键帧。
原图注:Key frames of Skill IV, wipe_surface_back_and_forth.
图 15 解读
关键帧取自第 1,028 至 1,103 帧(约 2.5 秒),左手握着粘毛滚筒在裤子上左右来回滚动。代码解读。“擦拭”技能被复用到了“滚粘毛滚筒”上,工具不同,但运动模式(贴着表面来回)相同,说明技能是按运动模式而不是按物体来划分的。技能内部已包含 2 次来回,外层 for 循环执行 2 次,合计 4 对来回,与注释“4 pairs of strokes”一致。循环次数写成字面量 2,符合提示词“循环次数必须是字面量、从画面中读出”的规定。这里的方向参数 'right'、'left' 是相对身体的语义方向,最后一个 'left' 才是执行的手。
原文
Skill V: fold_over_and_crease
Task: “fold long pants”
Sub-goal: “Fold a pair of pants”Skill definition:def fold_over_and_crease(robot, item_name, side, brace_side, direction, fold_direction):
# Hold the item down so the fold, not the whole item, travels.
robot.grasp(item_name, brace_side)
# Take the free edge with the working hand.
robot.grasp(item_name, side)
# Carry the edge across the item ...
robot.move_arm(side, direction)
# ... and land it on the far side.
robot.move_arm(side, fold_direction)
# Let the folded edge down.
robot.release(side)
# Press the crease flat.
robot.press(item_name, side)
Program slice for this episode:fold_over_and_crease(robot, 'pants', 'left', 'right', 'up', 'right')
译文
技能 V:fold_over_and_crease
任务:“叠长裤”
子目标:“把一条裤子叠起来”技能定义:def fold_over_and_crease(robot, item_name, side, brace_side, direction, fold_direction):
# 按住物品,使移动的是折边而不是整个物品。
robot.grasp(item_name, brace_side)
# 用工作的手拿起自由边。
robot.grasp(item_name, side)
# 把边带过物品上方……
robot.move_arm(side, direction)
# ……再落到另一侧。
robot.move_arm(side, fold_direction)
# 把折过去的边放下。
robot.release(side)
# 把折痕压平。
robot.press(item_name, side)
本回合的程序切片:fold_over_and_crease(robot, 'pants', 'left', 'right', 'up', 'right')
f000529_start.jpgf000551_t.jpgf000573_t.jpgf000595_t.jpgf000611_end.jpg
图 16:技能 V fold_over_and_crease 的关键帧。
原图注:Key frames of Skill V, fold_over_and_crease.
图 16 解读
关键帧取自第 529 至 611 帧(约 2.7 秒),右手按住裤子,左手抓住一边,先抬起再向右翻过去,放下后压平折痕。代码解读。运动被拆成“direction(先往上)”和“fold_direction(再往右)”两步,对应表 9 中“分两步带过去”的说明。与 YAM 的 fold_edge_over 相比,人类版本多了“一只手按住”和“压折痕”两步,而 YAM 版本是双臂同时捏边。这说明两个技能库各自反映了数据中人与机器人的实际操作习惯。
原文
Skill VI: wrap_around_target
Task: “use a curling iron to curl hair”
Sub-goal: “Wrap a section of hair around the curling iron”Skill definition:def wrap_around_target(robot, target_name, side):
# Start over the top of the target.
robot.goto_relative(side, target_name, 'above')
# Over the far side.
robot.move_arm(side, 'away_from_body')
# Down its far face.
robot.move_arm(side, 'down')
# Back underneath, toward the body.
robot.move_arm(side, 'toward_body')
# And up to close the circuit.
robot.move_arm(side, 'up')
Program slice for this episode:# Wrap the hair around the curling iron twice.
for _ in range(2):
wrap_around_target(robot, 'curling iron', 'left')
译文
技能 VI:wrap_around_target
任务:“用卷发棒卷头发”
子目标:“把一缕头发绕在卷发棒上”技能定义:def wrap_around_target(robot, target_name, side):
# 从目标的正上方开始。
robot.goto_relative(side, target_name, 'above')
# 越过远侧。
robot.move_arm(side, 'away_from_body')
# 沿远侧面向下。
robot.move_arm(side, 'down')
# 从下方绕回,朝向身体。
robot.move_arm(side, 'toward_body')
# 再向上,闭合一圈。
robot.move_arm(side, 'up')
本回合的程序切片:# 把头发绕卷发棒两圈。
for _ in range(2):
wrap_around_target(robot, 'curling iron', 'left')
f000412_start.jpgf000468_t.jpgf000524_t.jpgf000580_t.jpgf000607_end.jpg
图 17:技能 VI wrap_around_target 的关键帧。
原图注:Key frames of Skill VI, wrap_around_target.
图 17 解读
关键帧取自第 412 至 607 帧(约 6.5 秒),左手牵着一缕头发绕卷发棒转圈。代码解读。“绕一圈”被写成“上方 \to 远离身体 \to 向下 \to 朝向身体 \to 向上”四段语义方向的运动,近似一个矩形闭合回路。这是灵巧手 API 只接受语义方向的直接结果:没有坐标,只能用方向拼出一个圆周。外层循环 2 次表示绕两圈。整个技能里没有任何开合手的调用,表示头发全程握在手中。

B.5技能在嵌入空间中的分布

原文
In Figure 18 and 19, we visualize the skill distribution of variant skills in the pretrained code expert's embedding space. Each point represents one episode slice, placed by a two-dimensional t-SNE projection of its embedding and colored by the skill assigned to it. Dashed outlines mark the region covered by each skill, and the frames along the edges show a representative short span from an episode for selected skills. Figure 18 covers the 18 most common skills in the YAM library and Figure 19 the 16 most common skills in the egocentric human library. In both, slices assigned to different skills occupy largely separate regions, suggesting that the skill label is predictive of the motion in a slice and can serve as a conditioning signal for action generation.
译文
在图 18 和图 19 中,我们可视化各个技能在预训练代码专家的嵌入空间中的分布。每个点代表一个回合切片,其位置由该切片嵌入的二维 t-SNE 投影决定,颜色表示分配给它的技能。虚线轮廓标出每个技能覆盖的区域,四周的帧序列展示了部分技能在某个回合中的一小段代表性片段。图 18 涵盖 YAM 技能库中最常见的 18 个技能,图 19 涵盖人类第一视角技能库中最常见的 16 个技能。在两张图中,被分配给不同技能的切片大多占据彼此分开的区域,这说明技能标签能够预测切片中的运动,可以作为动作生成的条件信号。
解释
t-SNE 是把高维向量降到二维、尽量保持“近邻关系”的可视化方法:在原空间里相近的点,在图上也靠得近。它不保持全局距离,簇与簇之间的远近和簇的大小都不宜过度解读。这张图能说明什么、不能说明什么。“切片嵌入”是代码专家对该切片(图像加指令加程序)的内部表示。不同技能的切片聚成不同的簇,说明代码专家的表示能区分这些技能。但需要注意:嵌入中本身就包含了程序文本,而程序里写着技能名,所以“按技能名聚类”在一定程度上是意料之中的,并不能直接证明“技能标签能预测运动”。更有说服力的证据是第 3.3 节 Q2 中去掉技能后性能下降。原文也没有说明嵌入是如何从 token 表示中池化得到的。
skill-viz-yam.pdf
图 18:YAM 技能库中各技能在嵌入空间中的分布。
原图注:Skills of the YAM Skill Library in the Embedding Space.
图 18 解读
中央是 t-SNE 散点图,每种颜色是一个技能,图例列出 18 个技能:approach_best_grasp、relocate_object、adjust_in_place、lower_onto_target、free_hand_and_pick、spread_taut_and_release、scrub_back_and_forth、pull_part_free、push_closure_shut、roll_up_one_bite、tilt_pour_over_target、wrap_tension_pull、flip_object_over、fold_edge_over、hand_over_hand_extract、ratchet_twist_off、alternating_smoothing_pats、brace_and_push_in。四周用虚线箭头连到若干簇的代表片段,每个片段配有子任务标注,例如“Flatten out the T-shirt at the center of the board.”(在板中央把 T 恤铺平)、“Fold the blanket at the center of the board.”(在板中央折毯子)、“Roll the belt at the center of the board.”(在板中央卷皮带)、“Cross the shoelace on the shoe.”(在鞋上交叉鞋带)、“Adjust the pulley gear at the center of the board.”(调整滑轮齿轮)、“Move the pipeline to the center of the board.”(把管线移到板中央)、“Adjust the cable at the ferrite bead.”(在磁环处调整线缆)、“Scrub the lint to the clothes.”(刷掉衣服上的绒毛)。YAM 的 23 个技能中有 5 个没有出现在图中(如 ratchet_turn_fastener、run_zipper_along_seam),它们在语料中出现较少。从图中能看出,外围的若干技能(如左侧红色、紫色的簇)形成了紧凑且彼此分离的区域;中央区域则有多种颜色交错,其中蓝色的 approach_best_grasp 点分布最散。这符合直觉:抓取几乎在所有任务中都会出现,上下文差别很大,而某些专用动作只出现在少数任务中。
skill-viz-human.pdf
图 19:人类第一视角技能库中各技能在嵌入空间中的分布。
原图注:Skills of the Egocentric Human Skill Library in the Embedding Space.
图 19 解读
布局与图 18 相同,图例列出 16 个技能:pour_into_target、close_closure、brace_and_take_tool、wipe_surface_back_and_forth、open_closure、pull_part_free、place_at_target、insert_into_receptacle、align_and_seat_braced、pull_open_and_hold、pick_and_bring、brace_and_pick、move_item_two_handed、press_onto_target、scoop_and_carry、stir_contents。四周的代表片段来自人类第一视角视频,子任务标注依次为:“Close the lid of the portable gas stove.”(合上便携燃气炉的盖子)、“Open the photo album.”(打开相册)、“Remove the key from the mailbox.”(从信箱上拔下钥匙)、“Place a stack of documents secured with a binder clip.”(放下一叠用长尾夹夹住的文件)、“Press the decorative sticker on the paper-cut decoration.”(把装饰贴纸按在剪纸上)、“Pour the oil into the funnel.”(把油倒进漏斗)、“Pick up the hanger from a piece of clothing.”(从衣服上取下衣架)、“Secure the container with rice.”(扶稳装米的容器)、“Brush off the clump of debris from the keyboard.”(刷掉键盘上的碎屑)。与图 18 类似,多数技能占据各自的区域(虚线椭圆),中部有部分颜色交错的点。作者据此认为技能标签与切片中的运动高度相关;如上文所述,由于嵌入中包含了程序文本,这种聚类在一定程度上是意料之中的。

C基线实现细节(Baseline Implementation Details)

原文
In Sections 3.1 and 3.2, we compare AW-0 with four baselines: \pi_{0.5}, DreamZero, EgoScale, and WLA. Here, we describe how each is reproduced and adapted. On RoboTwin 2.0, we train a single multi-task policy per baseline on 2,500 demo_clean demonstrations (50 tasks \times 50 demonstrations). For each of the 8 real-world tasks, we train a separate policy per baseline using task-specific demonstrations sampled at 30 Hz. Every baseline receives a language instruction, the robot state, and three RGB views (one head and two wrist cameras). All baselines follow the same evaluation protocol as AW-0. All real-world rollouts are scored using the task-specific rubrics in Appendix E.
译文
在第 3.1 和 3.2 节中,我们把 AW-0 与四个基线比较:\pi_{0.5}、DreamZero、EgoScale 和 WLA。这里说明每个基线如何复现与适配。在 RoboTwin 2.0 上,我们为每个基线在 2,500 条 demo_clean 示范(50 个任务 \times 50 条示范)上训练一个多任务策略。对 8 个真实世界任务中的每一个,我们为每个基线用该任务的示范(以 30 Hz 采样)单独训练一个策略。每个基线都接收语言指令、机器人状态和三路 RGB 画面(一个头部相机和两个腕部相机)。所有基线都遵循与 AW-0 相同的评测协议。所有真实世界试验都用附录 E 中针对各任务的评分细则打分。
解释
这一段确立了“公平比较”的基本条件:相同的示范数据、相同的输入模态(语言、状态、三路图像)、相同的评测协议。仿真上是一个多任务策略,真机上是每任务一个策略,AW-0 也是如此。需要留意的是,“相同的示范”只保证了后训练数据相同;各方法的预训练数据差别很大:AW-0 用约 2,900 小时的 YAM 和人类数据,其中 YAM 与真机平台是同一种机器人;基线则用各自公开的预训练检查点。因此表 2 中 AW-0 在 YAM 任务上的优势,部分可能来自预训练数据与评测平台的匹配。
原文
\boldsymbol{\pi_{0.5}} (Black et al., 2025) is a vision-language-action model that combines a pretrained vision-language backbone with a flow-matching action expert. We follow the official OpenPI implementation (footnote: https://github.com/Physical-Intelligence/openpi) and initialize all policies from the released \pi_{0.5} pretrained checkpoint. For each real-world task, we fine-tune a separate policy for 50 epochs on the task-specific demonstrations. We use 14-dimensional joint-space actions on RoboTwin and YAM, and 62-dimensional actions on Tianji–Sharpa consisting of a 9-dimensional end-effector pose and 22 hand joints per side. Arm actions are relative to the current state, while gripper and hand actions are absolute targets. We reinitialize the action input and output projections to accommodate these dimensions and fine-tune all model parameters. Following the official implementation, we use an action horizon of 50 for RoboTwin and 32 for the real robots, together with quantile normalization and standard image augmentation. All models are trained with AdamW on eight H100 GPUs using FSDP and a global batch size of 256. We use a peak learning rate of 5\times10^{-5} with cosine decay to 5\times10^{-6} and 2,000 warmup steps.
译文
\boldsymbol{\pi_{0.5}}(Black et al., 2025)是一个视觉—语言—动作模型,它把预训练的视觉—语言主干与一个流匹配动作专家结合在一起。我们沿用官方的 OpenPI 实现(脚注:https://github.com/Physical-Intelligence/openpi),所有策略都从发布的 \pi_{0.5} 预训练检查点初始化。对每个真实世界任务,我们在该任务的示范上单独微调一个策略,训练 50 个 epoch。我们在 RoboTwin 和 YAM 上使用 14 维关节空间动作,在 Tianji–Sharpa 上使用 62 维动作,由每侧 9 维末端执行器位姿和 22 个手部关节组成。手臂动作相对于当前状态,夹爪和手部动作是绝对目标。我们重新初始化动作输入和输出投影以适应这些维度,并微调全部模型参数。按照官方实现,RoboTwin 上的动作时域为 50,真机上为 32,并使用分位数归一化和标准的图像增强。所有模型都用 AdamW 在八张 H100 上以 FSDP 训练,全局批大小 256。峰值学习率为 5\times10^{-5},余弦衰减到 5\times10^{-6},预热 2,000 步。
解释
维度验算。Tianji–Sharpa:每侧 9+22=31,两侧 62 维,比 AW-0 的 64 维少了两个夹爪维度。YAM:每侧 6 个关节加 1 个夹爪,两侧 14 维。与 AW-0 的差异。\pi_{0.5} 在 YAM 上用关节空间动作,AW-0 用末端位姿增量;\pi_{0.5} 的手臂动作“相对当前状态”,AW-0 是“相对块首帧”,二者在第一步上相同,但后续步的参考点不同。\pi_{0.5} 微调 50 个 epoch,AW-0 只有 20 个 epoch。
原文
DreamZero (Ye et al., 2026) is a world-action model that jointly generates future video and actions using a pretrained video diffusion backbone. We follow the official implementation (footnote: https://github.com/dreamzero0/dreamzero) and initialize from the DreamZero-AgiBot checkpoint. We reproduce DreamZero on RoboTwin and all 8 real-world tasks, training a separate policy for 10 epochs on each real-world task. We fully fine-tune the diffusion transformer and state/action modules, while keeping the text encoder, image encoder, and video VAE frozen. Following the original design, the three camera views are tiled into one frame, and each training sample contains up to four action chunks of 24 steps. Actions are predicted relative to the state at the beginning of each chunk, with absolute hand-joint targets on Tianji–Sharpa. The state and action projections are adapted to the target embodiment, and the video and action losses are weighted equally. All policies are trained with AdamW on 32 H100 GPUs using a global batch size of 32. We use the same training hyperparameters across all tasks, with a peak learning rate of 2\times10^{-5} and 5% linear warmup followed by cosine decay.
译文
DreamZero(Ye et al., 2026)是一个世界—动作模型,它用预训练的视频扩散主干联合生成未来视频和动作。我们沿用官方实现(脚注:https://github.com/dreamzero0/dreamzero),从 DreamZero-AgiBot 检查点初始化。我们在 RoboTwin 和全部 8 个真实世界任务上复现 DreamZero,每个真实世界任务单独训练一个策略,训练 10 个 epoch。我们完全微调扩散 Transformer 以及状态 / 动作模块,同时冻结文本编码器、图像编码器和视频 VAE。按照原始设计,三个相机视角被拼接(tile)成一帧,每个训练样本最多包含四个 24 步的动作块。动作相对于每个块开始时的状态进行预测,在 Tianji–Sharpa 上手部关节目标为绝对量。状态和动作投影针对目标本体进行适配,视频损失与动作损失等权。所有策略都用 AdamW 在 32 张 H100 上训练,全局批大小 32。所有任务使用相同的训练超参数,峰值学习率 2\times10^{-5},5% 线性预热后余弦衰减。
解释
DreamZero 是与 AW-0 最直接可比的 WAM 基线,因为 AW-0 去掉代码流后,结构上就接近一个 DreamZero 式的视频—动作联合扩散模型。值得注意的是,图 5 中 AW-0 的“V\to A(不含代码)”变体平均只有 32.9,而 DreamZero 是 46.0,说明 AW-0 自身的视频—动作部分并不比 DreamZero 强,它的优势来自代码流。DreamZero 的训练轮数(10 个 epoch)在所有方法中最少,全局批大小 32 也最小;与其他方法相比,它在真机上的训练可能不够充分,原文没有讨论这一点。
原文
EgoScale (using the GR00T N1.7-3B checkpoint) (Zheng et al., 2026) studies how pretraining on egocentric human demonstrations scales to dexterous robot manipulation. We reproduce this baseline using the GR00T N1.7 implementation (footnote: https://github.com/NVIDIA/Isaac-GR00T) and initialize from the pretrained nvidia/GR00T-N1.7-3B checkpoint. For each real-world task, we fine-tune a separate policy for 50 epochs while keeping the vision-language backbone frozen and training the projection layers and diffusion action head. We use relative joint actions for the arms on RoboTwin and YAM, relative end-effector actions on Tianji–Sharpa, and absolute targets for the grippers and 22-DoF dexterous hands. Following the official fine-tuning recipe, we apply state dropout with probability 0.2, random image cropping, and color jitter. We use an action horizon of 20 steps and train with AdamW on eight H100 GPUs with a global batch size of 640. The peak learning rate is 10^{-4}, with 5% linear warmup followed by cosine decay and a weight decay of 10^{-5}.
译文
EgoScale(使用 GR00T N1.7-3B 检查点)(Zheng et al., 2026)研究在人类第一视角示范上的预训练如何随规模扩展到灵巧机器人操作。我们用 GR00T N1.7 的实现(脚注:https://github.com/NVIDIA/Isaac-GR00T)复现这一基线,从预训练的 nvidia/GR00T-N1.7-3B 检查点初始化。对每个真实世界任务,我们单独微调一个策略,训练 50 个 epoch,冻结视觉—语言主干,只训练投影层和扩散动作头。我们在 RoboTwin 和 YAM 上对手臂使用相对关节动作,在 Tianji–Sharpa 上使用相对末端执行器动作,夹爪和 22 自由度灵巧手使用绝对目标。按照官方的微调方案,我们使用概率为 0.2 的状态 dropout、随机图像裁剪和颜色抖动。动作时域为 20 步,用 AdamW 在八张 H100 上训练,全局批大小 640。峰值学习率 10^{-4},5% 线性预热后余弦衰减,权重衰减 10^{-5}。
解释
EgoScale 在这里实际上是“GR00T N1.7-3B 检查点 + 官方微调方案”。与其他基线不同,它冻结了视觉—语言主干,只训练动作头和投影层,可调参数最少,这可能是它在 RoboTwin 随机设置下几乎完全失败(2.9%)的原因之一,原文没有讨论。它的动作时域 20 步,也是所有方法中最短的。
原文
WLA (Yang et al., 2026) combines a vision-language backbone, a world expert, and an action expert to jointly model visual observations, language, and robot actions. We follow the official implementation (footnote: https://github.com/SJTU-DENG-Lab/WLA) and initialize the backbone and world expert from pretrained RynnBrain-2B and Sana-600M weights, respectively. The connector and action expert are randomly initialized. We train a separate policy for 50 epochs on each real-world task, updating all modules except the image VAE. Following the original design, the policy observes the current head and wrist views together with the head view from 8 steps earlier. We use 64 meta-queries and a 32-step action chunk, with absolute action targets normalized to [-1,1]. The world expert predicts the head-camera image at the end of the chunk, and its flow-matching loss is weighted by 0.1 relative to the action loss. All models are trained with AdamW on eight H100 GPUs using a global batch size of 256. We use a peak learning rate of 5\times10^{-5} with cosine decay to 5\times10^{-6} and 1,000 warmup steps.
译文
WLA(Yang et al., 2026)把一个视觉—语言主干、一个世界专家和一个动作专家结合起来,对视觉观测、语言和机器人动作进行联合建模。我们沿用官方实现(脚注:https://github.com/SJTU-DENG-Lab/WLA),分别用预训练的 RynnBrain-2B 和 Sana-600M 权重初始化主干和世界专家。连接器和动作专家随机初始化。我们在每个真实世界任务上单独训练一个策略,训练 50 个 epoch,除图像 VAE 外更新所有模块。按照原始设计,策略观测当前的头部和腕部视角,以及 8 步之前的头部视角。我们使用 64 个元查询(meta-query)和 32 步的动作块,动作目标为绝对量并归一化到 [-1,1]。世界专家预测动作块结束时刻的头部相机图像,它的流匹配损失相对于动作损失的权重为 0.1。所有模型都用 AdamW 在八张 H100 上训练,全局批大小 256。峰值学习率 5\times10^{-5},余弦衰减到 5\times10^{-6},预热 1,000 步。
解释
WLA 的“世界专家”只预测动作块末尾的一帧头部图像(子目标图像),而不是像 AW-0、DreamZero 那样预测一段视频。它的动作专家和连接器是随机初始化的,也就是说 WLA 基线在机器人动作上没有任何预训练,只靠每个任务 100 条示范(RoboTwin 上 2,500 条)从零学动作。这可以解释它在 RoboTwin 干净设置下表现不错(64.8%,示范多、场景固定),在随机设置下几乎完全失败(3.6%),在真机灵巧手任务上也较弱。读者在比较 AW-0 与 WLA 时应考虑这一差异。

D真实世界实验设置(Real-world Experimental Setup)

原文
We conduct data collection and policy evaluation on two robot embodiments: the YAM station with parallel grippers and the Tianji–Sharpa station with dexterous hands. This section describes the robot hardware, visual observations, and teleoperation interfaces used in our experiments. Figure 20 gives an overview of the two stations.
译文
我们在两种机器人本体上进行数据采集和策略评测:配备平行夹爪的 YAM 工作站和配备灵巧手的 Tianji–Sharpa 工作站。本节介绍实验中使用的机器人硬件、视觉观测和遥操作接口。图 20 概览了这两个工作站。
解释
本附录说明真机数据从哪里来、模型看到什么。两个平台的共同点是“三路相机(一路全局加两路腕部)+ 双臂”,这样两种本体都能直接套用 AW-0 的三视角输入和 64 维动作空间。
hardware_setup_yam.pdf
(a) YAM 工作站
hardware_setup_tianji_sharpa.pdf
(b) Tianji–Sharpa 工作站
图 20:真实世界机器人配置。(a) YAM 工作站:两条配有直线夹爪的机械臂,上方一个 RealSense D405 相机,每个手腕上各一个。底部的相机未使用。(b) Tianji–Sharpa 工作站:一个 Tianji 躯干加两只 Sharpa Wave 灵巧手,由头部的一个 SHW5G 相机和每个手腕上各一个相机进行观测。
原图注:Real-world Robot Setups. (a) The YAM station: two arms with linear grippers, with a RealSense D405 camera overhead and one on each wrist. The bottom camera is not used. (b) The Tianji–Sharpa station: a Tianji torso with two Sharpa Wave dexterous hands, observed by an SHW5G camera on the head and one on each wrist. Subfigure captions: (a) YAM Station; (b) Tianji–Sharpa Station.
图 20 解读
(a) 是 YAM 工作站的照片:铝型材桌架上固定着两条白色机械臂(后方两条较小的臂应是遥操作用的主臂,见下文),顶部横梁上装有一个 RealSense D405 相机(橙色虚线圈),两只手腕上各有一个;绿色虚线框标出的是“Linear Gripper”(直线夹爪,即平行夹爪)。(b) 是 Tianji–Sharpa 工作站:一个人形躯干,两臂末端是 Sharpa Wave 灵巧手,头部有一个 SHW5G 相机。图注中“底部的相机未使用”指 YAM 工作站上还装有一个低位相机,但不作为模型输入。两个平台都是“1 个全局视角 + 2 个腕部视角”的配置,与 AW-0 的三视角输入一致。
原文
Robot Hardware and Control. The YAM station is a fixed-base bimanual system with two 6-DoF arms, each equipped with a parallel gripper. The Tianji–Sharpa station consists of a Tianji humanoid torso with two arms and two 22-DoF Sharpa dexterous hands. For AW-0, both embodiments use the 64-dimensional state–action representation described in Appendix A. The policy predicts relative end-effector poses together with absolute gripper targets on YAM or absolute finger-joint targets on Tianji–Sharpa.
译文
机器人硬件与控制。YAM 工作站是一个固定底座的双臂系统,两条 6 自由度机械臂各配一个平行夹爪。Tianji–Sharpa 工作站由一个 Tianji 人形躯干(含两条手臂)和两只 22 自由度的 Sharpa 灵巧手组成。对 AW-0 而言,两种本体都使用附录 A 所述的 64 维状态—动作表示。策略预测相对的末端执行器位姿,以及 YAM 上的绝对夹爪目标或 Tianji–Sharpa 上的绝对手指关节目标。
解释
这里重申了附录 A 的约定。一个细节是:YAM 上 AW-0 输出末端位姿,执行时需要通过逆运动学转换为 6 个关节角;而采集数据时,遥操作记录的是关节角(见下一段)。从关节记录到末端位姿标签的转换应由正运动学完成,原文没有交代。
原文
Perception System. Both stations provide three RGB views: a head or overhead camera observes the tabletop workspace, and a camera at each wrist provides a local view of the gripper or hand and the manipulated objects. Each policy receives these images together with the task instruction and robot state. For AW-0, images are resized to 224\times320 pixels, and the state contains the end-effector poses and the gripper positions or hand-joint angles. The same camera streams are provided to all baselines, with method-specific preprocessing described in Appendix C.
译文
感知系统。两个工作站都提供三路 RGB 画面:一个头部或顶部相机观测桌面工作区,每个手腕上的相机提供夹爪或手以及被操作物体的局部视角。每个策略都接收这些图像,以及任务指令和机器人状态。对 AW-0,图像被缩放到 224\times320 像素,状态包含末端执行器位姿以及夹爪位置或手部关节角。所有基线都获得相同的相机数据流,各方法特有的预处理见附录 C。
解释
224\times320 的分辨率较低,这是为了控制视频专家的计算量:三路画面、每路 9 帧都要经过 VAE 编码和 DiT 去噪。对需要看清细节的任务(如 Deal Poker 中捻出一张牌、Solve Rubik's Cube 中识别颜色),腕部相机的近距离视角起到了关键作用。
原文
Teleoperation and Data Collection. We collect YAM demonstrations using the standard YAM station configuration, with two master arms and two puppet arms. The operator moves the master arms, whose measured joint angles are sent as joint-position targets to the corresponding puppet arms. The triggers on the teaching handles control the parallel gripper openings, yielding six arm-joint targets and one gripper target per side. For Tianji–Sharpa, we use Manus gloves with PICO motion trackers attached to the gloves, together with an Apple Vision Pro worn around the operator's neck. The tracked wrist positions and orientations define poses in \mathrm{SE}(3), which are mapped to end-effector targets for the two Tianji arms. In parallel, finger-motion measurements from the Manus gloves are retargeted to 22-dimensional joint-position targets for each Sharpa hand. At each teleoperation step, the arm-pose and hand-joint targets are passed to the corresponding robot controllers to coordinate arm and finger motion. During collection, we record the three RGB camera streams, measured robot states, and commanded action targets. We use their timestamps to pair visual observations with robot states and action commands, and associate each demonstration with a task instruction for post-training.
译文
遥操作与数据采集。我们用标准的 YAM 工作站配置采集 YAM 示范,该配置包括两条主臂和两条从臂。操作员移动主臂,主臂测得的关节角作为关节位置目标发送给对应的从臂。示教手柄上的扳机控制平行夹爪的开合,因此每一侧得到六个手臂关节目标和一个夹爪目标。对 Tianji–Sharpa,我们使用 Manus 手套(手套上装有 PICO 运动追踪器),配合一台挂在操作员颈部的 Apple Vision Pro。追踪到的手腕位置和朝向定义了 \mathrm{SE}(3) 中的位姿,这些位姿被映射为两条 Tianji 手臂的末端执行器目标。同时,Manus 手套测得的手指运动被重定向为每只 Sharpa 手的 22 维关节位置目标。在每个遥操作步,手臂位姿目标和手部关节目标被传给相应的机器人控制器,以协调手臂和手指的运动。采集过程中,我们记录三路 RGB 相机数据流、测得的机器人状态以及下发的动作目标,并利用时间戳把视觉观测与机器人状态和动作指令配对,同时为每条示范关联一条任务指令,用于后训练。
解释
两种遥操作方式。YAM 用“主从臂”:人推动一对与机器人同构的主臂,机器人从臂跟随,这种方式直观、延迟低,适合平行夹爪。Tianji–Sharpa 用“手套 + 追踪器”:PICO 追踪器给出手腕 6 自由度位姿(\mathrm{SE}(3) 即三维刚体变换),Manus 手套给出手指弯曲,再重定向到 22 自由度灵巧手。Apple Vision Pro 挂在颈部,推测是作为追踪的参考坐标或提供第一人称视角,原文没有说明它的具体作用。时间戳配对是多传感器数据采集的常规步骤:相机、关节编码器、控制指令的频率和延迟各不相同,需要按时间对齐后才能组成“观测—动作”训练对。

E真实世界任务进度(Real-world Task Progress)

原文
We evaluate 8 real-world tasks that span two robot platforms. Arrange Fruits, Pack Backpack, Replace Lightbulb, and Fold and Stack Towels run on the YAM bimanual setup (two 6-DoF arms with parallel grippers); Arrange Fruits with Tongs, Deal Poker, Flip Scoreboard, and Solve Rubik's Cube run on the Tianji humanoid torso with two Sharpa dexterous hands. For each task we show the progress with the key frames of one training episode together with its code label; every color-coded block of the program is linked to the range of frames it explains. Each task is graded with an additive rubric that awards independent partial credit for each completed sub-step.
译文
我们评测横跨两个机器人平台的 8 个真实世界任务。Arrange Fruits(摆水果)、Pack Backpack(收拾背包)、Replace Lightbulb(更换灯泡)和 Fold and Stack Towels(叠毛巾并摞起)在 YAM 双臂平台(两条 6 自由度机械臂加平行夹爪)上运行;Arrange Fruits with Tongs(用夹子摆水果)、Deal Poker(发牌)、Flip Scoreboard(翻记分牌)和 Solve Rubik's Cube(还原魔方)在配有两只 Sharpa 灵巧手的 Tianji 人形躯干上运行。对每个任务,我们用一条训练回合的关键帧及其代码标签展示任务进度;程序中每个按颜色区分的代码块都连到它所解释的帧区间。每个任务都用一套可累加的评分细则打分,每完成一个子步骤就独立地获得部分分数。
解释
图 21–28 的版式相同:左侧一列是按时间从上到下排列的关键帧,每帧旁边有一个彩色标签,写着它代表的帧区间和时间区间(如“f 15–169,0.5–5.6 s”);右侧是该回合的完整代码标签,按同样的颜色分块,与左侧的帧区间一一对应。顶部是任务指令。这些代码就是第 2.4 节所说“在冻结技能库下用同一条流水线标注”的下游示范标签。评分细则的满分都是 1。逐项相加核对:Arrange Fruits 0.3+0.3+0.4;Pack Backpack 0.15+0.15+0.2+0.2+0.15+0.15;Replace Lightbulb 条件 A 0.1+0.1+0.2+0.1+0.1+0.3+0.1,条件 B 0.3+0.7;Fold and Stack Towels 0.2+0.2+0.1+0.2+0.3;Arrange Fruits with Tongs 0.2+0.25+0.25+0.2+0.1;Deal Poker 0.1+0.2+0.3+0.3+0.1;Flip Scoreboard 0.1+0.2+0.4+0.1+0.2;Solve Rubik's Cube 0.2+0.3+0.3+0.2。全部等于 1.0。一个值得注意的现象:这些下游代码标签使用了大量不在附录 K.1 声明 API 和表 8、表 9 技能库中的函数,例如 robot.scan、robot.observe、robot.is_free、robot.read_number、robot.grasp_tool、robot.squeeze_tongs、reach_toward、rotate_layer、hold。可见下游标注时 API 被按任务扩充过,原文没有说明这一点。

E.1YAM 任务

原文
Task I: Arrange Fruits. Grading rubric (additive):
  • +0.3: (a) Moves each fruit not named in the instruction from the left bowl into the right basket (or none to remove).
  • +0.3: (b) Moves each named fruit not yet in the left bowl from the right basket into the bowl (or none to fetch).
  • +0.4: (c) Final state matches the instruction and no fruit is dropped.
译文
任务 I:摆水果(Arrange Fruits)。评分细则(累加):
  • +0.3:(a) 把指令中没有提到的每个水果从左边的碗移到右边的篮子里(若没有需要移出的则直接得分)。
  • +0.3:(b) 把指令中提到、但还不在左碗里的每个水果从右边的篮子移进碗里(若没有需要取的则直接得分)。
  • +0.4:(c) 最终状态符合指令,且没有水果掉落。
arrange_fruits.pdf
图 21:Arrange Fruits 的关键帧与代码标签。
原图注:Key frames and code label of Arrange Fruits.
图 21 解读
任务指令是“摆放水果,使左碗里最后只有香蕉和黄瓜”。代码分三块:蓝色和绿色(第 1–7 行)用 robot.scan('left bowl') 扫描左碗,对每个不是香蕉或黄瓜的“入侵者”,先 approach_best_grasp 接近最佳抓取位姿,闭合夹爪,再 relocate_object 搬到右侧;橙色(第 8–13 行)若左碗里没有香蕉,就从右侧取来;紫色(第 14–19 行)对黄瓜做同样的处理。五张关键帧覆盖第 0 到 844 帧(约 28 秒)。这个任务体现了代码在“语言跟随”上的作用:指令中的目标水果(香蕉、黄瓜)直接作为字面量写进 if 条件,换一条指令(如“只留芒果”),代码就换成另一组字面量。评分细则的 (a)(b) 分别对应代码中“移出”和“移入”两个阶段,(c) 占 0.4,奖励最终状态完全正确。注意 'either' 和 'auto' 表示由程序自动选择用哪只手。
原文
Task II: Pack Backpack. Grading rubric (additive):
  • +0.15: (a) Left gripper grasps the zipper pull at the left end and slides it to the middle.
  • +0.15: (b) Right gripper re-grasps the pull at the middle and slides it to the right end.
  • +0.2: (c) Open the backpack with the left gripper.
  • +0.2: (d) Picks up the item from the table and places it inside the open backpack.
  • +0.15: (e) Right gripper grasps the pull at the right end and slides it back to the middle.
  • +0.15: (f) Left gripper slides the pull from the middle to the left end; the backpack is fully closed with the item inside.
译文
任务 II:收拾背包(Pack Backpack)。评分细则(累加):
  • +0.15:(a) 左夹爪抓住左端的拉链头,把它滑到中间。
  • +0.15:(b) 右夹爪在中间重新抓住拉链头,把它滑到右端。
  • +0.2:(c) 用左夹爪把背包撑开。
  • +0.2:(d) 从桌上拿起物品,放进打开的背包。
  • +0.15:(e) 右夹爪抓住右端的拉链头,把它滑回中间。
  • +0.15:(f) 左夹爪把拉链头从中间滑到左端;背包完全拉上,物品在里面。
pack_backpack.pdf
图 22:Pack Backpack 的关键帧与代码标签。
原图注:Key frames and code label of Pack Backpack.
图 22 解读
任务指令只有一句“Pack the backpack.”(收拾背包)。代码标签分 5 个阶段(STAGE 1/5 至 5/5):左臂把拉链从左端拉到中间,右臂从中间拉到右端(背包完全打开),把物品放进去,右臂从右端拉回中间,左臂从中间拉到左端(背包完全关上)。拉链操作都用技能 run_zipper_along_seam,抓取用 approach_best_grasp,放物品用 lower_onto_target。关键帧覆盖约 36 秒。代码与评分细则的对应。5 个代码阶段与 6 项评分基本一一对应,只有评分项 (c)“用左夹爪把背包撑开”在代码里没有单独的阶段,可能被并入了放物品的过程。代码中注释特别强调“先把拉链头往上提,避免卡住”,这类知识以注释形式进入代码流,正是第 3.3 节 Q2 中“去掉注释会降低性能”的一个具体例子。第 3 阶段中的 item 变量没有在此前定义,这段标签无法直接执行,再次说明这些代码是描述性的。
原文
Task III: Replace Lightbulb. Condition A – dead bulb, replacement required. Grading rubric (additive):
  • +0.1: (a) Left gripper presses the inline switch and the bulb stays dark.
  • +0.1: (b) Left gripper braces the lamp base.
  • +0.2: (c) Right gripper unscrews the dead bulb and lifts it out of the socket.
  • +0.1: (d) Dead bulb is set down in the bulb tray.
  • +0.1: (e) Right gripper picks up the spare bulb.
  • +0.3: (f) Spare bulb is seated in the socket and screwed in clockwise until lit.
  • +0.1: (g) When the bulb is lit, release both arms to their home positions.
Condition B – working bulb, no replacement needed. Grading rubric (additive):
  • +0.3: Left gripper presses the inline switch and the bulb lights up.
  • +0.7: The lit bulb shows the lamp still works, so both arms move back to their initial pose and stay still until the episode ends.
译文
任务 III:更换灯泡(Replace Lightbulb)。条件 A:灯泡坏了,需要更换。评分细则(累加):
  • +0.1:(a) 左夹爪按下线上开关,灯泡不亮。
  • +0.1:(b) 左夹爪扶住灯座。
  • +0.2:(c) 右夹爪拧下坏灯泡,并把它从灯口中取出。
  • +0.1:(d) 把坏灯泡放到灯泡托盘里。
  • +0.1:(e) 右夹爪拿起备用灯泡。
  • +0.3:(f) 备用灯泡装入灯口,并顺时针拧紧直到点亮。
  • +0.1:(g) 灯泡点亮后,两臂松开并回到初始位置。
条件 B:灯泡完好,不需要更换。评分细则(累加):
  • +0.3:左夹爪按下线上开关,灯泡亮起。
  • +0.7:亮起的灯泡说明台灯仍能工作,于是两臂回到初始姿态,并保持静止直到回合结束。
replace_lightbulb.pdf
图 23:Replace Lightbulb 的关键帧与代码标签。
原图注:Key frames and code label of Replace Lightbulb.
图 23 解读
任务指令是“如果灯泡不亮就换掉它”。代码是一个条件分支:第 1 阶段左臂按下开关并观察灯泡;如果亮了(robot.observe('bulb') == 'lit')就回到初始位置,任务结束;否则左臂扶住灯座,右臂用 while 循环反复调用 ratchet_twist_off(每次逆时针 -60^\circ)直到灯泡松脱,再 pull_part_free 取出、relocate_object 放进托盘,然后 free_hand_and_pick 拿新灯泡、lower_onto_target 对准灯口,再循环 ratchet_turn_fastener(每次顺时针 +60^\circ)直到装好。图中这条示范属于条件 A,七张关键帧覆盖第 0 到 2,850 帧(约 95 秒),是 8 个任务中较长的一个。两种条件的设计意图。条件 B 中灯泡是好的,正确做法是“什么也不做”。这考查模型能否根据观察(灯亮不亮)做出不同决策,而不是机械地重复示范中最常见的动作。条件 B 中“回到初始姿态并保持静止”占 0.7 分,惩罚的正是“不该换却去换”的行为。原文没有说明评测时两种条件各占多少比例。拧灯泡的循环次数取决于实际状态,所以这里用 while 而不是字面次数的 for。
原文
Task IV: Fold and Stack Towels. Grading rubric (additive):
  • +0.2: (a) Grasps a towel edge and completes one fold.
  • +0.2: (b) Each of the three towels is folded flat.
  • +0.1: (c) Picks a folded towel up and lays it on the pile.
  • +0.2: (d) All three folded towels end up in a single pile, none dropped or left behind.
  • +0.3: (e) The pile reads, bottom to top, in the colour order the instruction names.
译文
任务 IV:叠毛巾并摞起(Fold and Stack Towels)。评分细则(累加):
  • +0.2:(a) 抓住毛巾的一条边,完成一次折叠。
  • +0.2:(b) 三条毛巾都被叠平。
  • +0.1:(c) 拿起一条叠好的毛巾,放到摞上。
  • +0.2:(d) 三条叠好的毛巾最终摞成一摞,没有掉落或遗漏。
  • +0.3:(e) 从下到上的颜色顺序与指令所说的一致。
fold_and_stack_towels.pdf
图 24:Fold and Stack Towels 的关键帧与代码标签。
原图注:Key frames and code label of Fold and Stack Towels.
图 24 解读
任务指令是“把毛巾叠好,并按粉、棕、绿的顺序摞起来”。这是 8 个任务中最长的一个:14 张关键帧覆盖第 0 到 6,775 帧(约 226 秒)。代码分 6 个阶段:第 1–3 阶段依次叠粉色、绿色、棕色毛巾(按桌面上的位置顺序:中、右、左),每条毛巾用一个 for 循环遍历 4–5 个“扫过 / 推到远侧 / 压平”的子动作,每个子动作给出用哪只臂和实测的末端位移增量;第 4–6 阶段按指令顺序(粉、棕、绿)把它们摞起来。代码中的注释头(如“STAGE 2/6 FOLD GREEN | folded: pink | stack: empty | next: fold the brown towel”)记录了“已完成什么、下一步做什么”,相当于把任务进度显式写进程序,这与第 2.3 节记忆缓存要解决的问题一致。一处标签与技能库不一致。代码第 14、26、38 行调用 fold_over_and_crease(robot, 'pink towel'),只传了 2 个参数;但 fold_over_and_crease 是人类技能库(表 9)中的技能,定义需要 6 个参数(附录 B.4 技能 V),YAM 技能库(表 8)中并没有它。这说明下游标注没有严格遵守“冻结的 YAM 技能库”和签名检查。第 3.2 节真机混合执行的实验正是在这个任务上做的(84.4% \to 90.6%),评分细则中占 0.3 分的颜色顺序 (e) 是代码执行最能帮上忙的一项。

E.2Tianji–Sharpa 任务

原文
Task I: Arrange Fruits with Tongs. Grading rubric (additive):
  • +0.2: (a) Right hand takes the tongs off their stand and keeps hold of them.
  • +0.25: (b) Moves each fruit not named in the instruction from the left bowl into the tray (or none to remove).
  • +0.25: (c) Moves each named fruit not yet in the left bowl from the tray into the bowl (or none to fetch).
  • +0.2: (d) Final state matches the instruction and no fruit is dropped.
  • +0.1: (e) Tongs are put back on their stand.
译文
任务 I:用夹子摆水果(Arrange Fruits with Tongs)。评分细则(累加):
  • +0.2:(a) 右手从支架上取下夹子,并一直握着。
  • +0.25:(b) 把指令中没有提到的每个水果从左碗移到托盘里(若没有需要移出的则直接得分)。
  • +0.25:(c) 把指令中提到、但还不在左碗里的每个水果从托盘移进碗里(若没有需要取的则直接得分)。
  • +0.2:(d) 最终状态符合指令,且没有水果掉落。
  • +0.1:(e) 把夹子放回支架。
arrange_fruits_sharpa.pdf
图 25:Arrange Fruits with Tongs 的关键帧与代码标签。
原图注:Key frames and code label of Arrange Fruits with Tongs.
图 25 解读
任务指令是“摆放水果,使左碗里只剩梨”。这是摆水果任务的灵巧手加工具版本:灵巧手不直接抓水果,而是先握住夹子,再用夹子夹水果。代码先设定目标集合 targets = {'pear'},检测夹子、移到支架处、grasp_tool 握住夹子;扫描左碗发现苹果,就把夹子移到苹果上方、squeeze_tongs 夹住、移到托盘、release_tongs 松开;再把托盘里的梨夹进左碗;最后 assert bowl == targets 检查结果,把夹子放回支架。十张关键帧覆盖约 28 秒。与正文描述不一致之处。附录 K.1 说灵巧手 API 只有语义级的相对运动(move_arm 带方向、goto_relative),不用坐标;但这条代码标签大量使用带坐标的 freespace_move 和 servo_ee_delta,二者属于平行夹爪 API,另外还有 grasp_tool、squeeze_tongs 等两套 API 中都没有的函数。此外,第 13、21 行注释写着“把它再降低最后几厘米”,参数却是零位移 [+0.00, +0.00, +0.00],注释与参数自相矛盾。附录 H 的失败案例 4(夹子尖端闭着去戳梨)正发生在这个任务上。
原文
Task II: Deal Poker. Grading rubric (additive):
  • +0.1: (a) Right hand grasps the card stack from above.
  • +0.2: (b) Right hand transfers the stack to the left hand (handover).
  • +0.3: (c) Right thumb flicks and adjusts until exactly one card protrudes from the top.
  • +0.3: (d) Right hand grasps the single protruding card.
  • +0.1: (e) Right hand inserts the card vertically into the card slot.
译文
任务 II:发牌(Deal Poker)。评分细则(累加):
  • +0.1:(a) 右手从上方抓住牌堆。
  • +0.2:(b) 右手把牌堆交给左手(交接)。
  • +0.3:(c) 右手拇指拨动并调整,直到恰好有一张牌从顶部伸出。
  • +0.3:(d) 右手抓住这张伸出的牌。
  • +0.1:(e) 右手把这张牌竖直插入卡槽。
deal_poker.pdf
图 26:Deal Poker 的关键帧与代码标签。
原图注:Key frames and code label of Deal Poker.
图 26 解读
任务指令是“用右手拿起扑克牌,交给左手,然后用右手抽出第一张牌并插入卡槽”。代码中的 'poker' 指整叠牌:右手 grasp 牌堆、向上抬起、handover 交给左手,再抓住一张牌、抽出、插入。六张关键帧覆盖约 23 秒。评分细则中分值最高的是 (c)“拇指拨出恰好一张牌”和 (d)“抓住这张牌”,各 0.3 分,这是最考验灵巧手指操作的部分。AW-0 在该任务上得 58.3,基线最高 37.1(DreamZero),说明多数基线在“拨牌”这一步就失败了。标签中暴露的流水线细节。代码第 13、21 行有注释“[auto-repair] gripper events under-emitted by the coder; inserted from the sensor (grounded)”,意为“编码器(标注智能体)漏写了开合手事件,已根据传感器数据自动补上”。这说明标注流水线中还有一个依据传感器自动修补程序的步骤,正文和附录 K.2 都没有描述(K.2 只说静态检查失败后由标注员重写)。补上的 open_hand/close_hand 与前后语义调用的关系也不太连贯(例如第 22–24 行先开手、再合手、再调用 insert_into_receptacle),可见自动标注的代码质量参差不齐。
原文
Task III: Flip Scoreboard. Grading rubric (additive):
  • +0.1: (a) Left hand holds the scoreboard steady.
  • +0.2: (b) Right hand flips a digit card over (at least one complete flip).
  • +0.4: (c) Flips exactly k times, so the board shows the initial score plus k.
  • +0.1: (d) Left hand releases the board.
  • +0.2: (e) Right hand presses the red button while the target score is showing.
译文
任务 III:翻记分牌(Flip Scoreboard)。评分细则(累加):
  • +0.1:(a) 左手扶稳记分牌。
  • +0.2:(b) 右手把一张数字卡翻过去(至少完整翻一次)。
  • +0.4:(c) 恰好翻 k 次,使记分牌显示初始分数加 k。
  • +0.1:(d) 左手松开记分牌。
  • +0.2:(e) 在显示目标分数时,右手按下红色按钮。
flip_scoreboard.pdf
图 27:Flip Scoreboard 的关键帧与代码标签。
原图注:Key frames and code label of Flip Scoreboard.
图 27 解读
任务指令是“给记分牌加 2,然后按下按钮”。代码先 robot.read_number('scoreboard') 读出当前分数(注释写明“显示 3”),计算目标 target = current + 2(即 5),左手扶住记分牌,右手调用两次 turn_over_object 翻个位数卡(注释“3 \to 4”“4 \to 5”),左手松开,最后 press_onto_target 按下红色按钮。五张关键帧覆盖约 38 秒。这个任务是正文所说“计数”能力的例子:程序把“加 2”显式写成两次调用,并在注释中记录每次翻牌后的读数,使计数过程变得可追踪。评分细则 (c) 占 0.4 分,正是要求“恰好翻 k 次”,翻多或翻少都不得分。AW-0 在此任务上得 68.8,基线最高 40.8(EgoScale)。值得一提的是,“加 2”在代码中被展开成了两次独立的调用,而不是 for _ in range(2) 循环;这与附录 K.2 提示词“重复的原地拧转写成字面循环”的规定并不矛盾,因为后者针对的是拧转动作。
原文
Task IV: Solve Rubik's Cube. For each rollout, one randomly selected face is scrambled clockwise or counterclockwise; the visible face colors and placement angle are fully randomized, with no fixed layer or turn sequence.Grading rubric (additive):
  • +0.2: (a) Right hand grasps the cube and lifts it off the table.
  • +0.3: (b) Fingers turn the scrambled layer a full quarter turn, leaving no layer half-turned.
  • +0.3: (c) The cube is solved: every face shows a single colour.
  • +0.2: (d) The cube is put back on the table and both hands let go.
译文
任务 IV:还原魔方(Solve Rubik's Cube)。每次试验前,随机选一个面,顺时针或逆时针打乱一次;可见面的颜色和摆放角度完全随机,没有固定的层或转动顺序。评分细则(累加):
  • +0.2:(a) 右手抓住魔方并把它从桌上拿起。
  • +0.3:(b) 手指把被打乱的那一层完整转动四分之一圈,不留下转了一半的层。
  • +0.3:(c) 魔方被还原:每个面都是单一颜色。
  • +0.2:(d) 把魔方放回桌上,双手松开。
solve_rubiks_cube.pdf
图 28:Solve Rubik's Cube 的关键帧与代码标签。
原图注:Key frames and code label of Solve Rubik's Cube.
图 28 解读
任务指令是“还原魔方”。代码:检测魔方,双手接近(reach_toward),右手合拢,右手握稳(hold),手指转动右层(rotate_layer(..., 'right', 'right')),再转动顶层,双手交接,右手握稳,放回桌上,张开手。八张关键帧覆盖约 15.6 秒。需要说明的几点。第一,“还原魔方”在这里只是“把被打乱一步的魔方转回来”,难点在于看出哪一层被转过、往哪个方向转回,以及用灵巧手指完成一次完整的四分之一转动。第二,这条示范的代码里有两次 rotate_layer(右层和顶层),与“只打乱一个面”的设置不完全一致;可能是示范者先转错再纠正,原文没有解释。第三,这里的调用风格(close_hand(robot, 'right')、hold(robot, ...)、place(robot, ...))把原语也写成了以 robot 为首参数的函数,而 hold、reach_toward、rotate_layer 都不在附录 K.1 的灵巧手 API 和表 9 技能库中。附录 F.2 图 32 中模型生成的正是 hold(robot, 'rubiks cube', 'right')。

F代码生成质量分析(Analysis on Code Generation Quality)

F.1预训练模型的代码生成质量

原文
We evaluate the pretrained code expert on the validation split of the pretraining dataset, before downstream task-specific fine-tuning. Table 10 reports quantitative metrics on this split, while Figures 29 and 30 present generated programs for YAM and egocentric human validation examples. We examine visual grounding, program structure, and semantic agreement with the reference annotations.
译文
我们在预训练数据集的验证集上评测预训练后的代码专家,此时还没有进行针对下游任务的微调。表 10 报告这一验证集上的定量指标,图 29 和图 30 分别展示在 YAM 和人类第一视角验证样例上生成的程序。我们考察视觉依据、程序结构以及与参考标注的语义一致性。
解释
这一节回答“代码专家写出的代码到底质量如何”。需要记住:在默认模式下代码并不执行,所以代码“能不能跑”并不直接决定任务成败;但在混合模式下代码要真正执行,这时语法正确率和参数准确度就至关重要。
表 10:预训练代码专家的验证指标。TF 表示 teacher forcing 评估。“视觉依据差距”指在验证样本之间打乱视觉观测后,代码损失的绝对增量。
TF
损失
TF
准确率
视觉依据
差距
可解析率实体
F1
原语
F1
技能调用
比例
0.5350.8971.7740.8750.5340.3650.292
原表注:Validation Metrics for the Pretrained Code Expert. TF denotes teacher-forced evaluation. The grounding gap is the absolute increase in code loss when visual observations are shuffled across validation samples.
表 10 解读
七列指标可以分三组理解。(1) teacher forcing 指标:TF 损失 0.535、TF 准确率 0.897。teacher forcing 评估是指给模型看正确的上下文,只让它预测被遮住的 token。89.7% 的 token 级准确率看起来很高,但代码中大量 token 是结构性的(括号、robot.、引号),容易预测。(2) 视觉依据差距 1.774:把验证集中各样本的图像互相打乱后(即给模型看“别的场景”的图),代码损失从 0.535 升到约 0.535+1.774=2.31。损失大幅上升,说明代码预测确实依赖于看到的画面,而不是只靠指令文本。按交叉熵换算,平均每个 token 的困惑度从 e^{0.535}\approx1.7 升到 e^{2.31}\approx10。(3) 自由生成指标:在不给参考答案的情况下让模型自己写,87.5% 的输出能被 Python 解析;但语义一致性不高,实体 F1 只有 0.534(引号中的物体名等字符串与参考程序的重合度),原语 F1 只有 0.365(调用的 robot API 名与参考程序的重合度);29.2% 的生成程序包含技能式调用。综合来看,模型“会写像样的代码”(语法、结构),但“写得对”的程度有限(调用哪些原语、操作哪些物体)。这与第 3.3 节 Q2 的发现可以互相印证:代码作为条件信号有用,但它的价值更多在于提供结构化的语义线索,而不是精确的可执行指令。
原文
Quantitative Assessment. The model achieves 89.7% teacher-forced token accuracy and an 87.5% parse rate under free generation. Shuffling visual observations increases the code loss by 1.774, indicating that code prediction depends on the visual context. Entity and primitive F1 are 0.534 and 0.365, respectively, measuring overlap of quoted strings and robot API names with the reference programs. These scores indicate partial semantic agreement despite the higher syntactic validity. In addition, 29.2% of generated programs contain skill-style helper calls, identified by calls that take robot as their first argument. Together, these results show that pretraining learns visually conditioned program generation and skill invocation, while precise semantic and argument prediction remain areas for improvement.
译文
定量评估。模型在 teacher forcing 下达到 89.7% 的 token 准确率,在自由生成下的可解析率为 87.5%。打乱视觉观测会使代码损失增加 1.774,说明代码预测依赖于视觉上下文。实体 F1 和原语 F1 分别为 0.534 和 0.365,它们度量的是生成程序中带引号的字符串和机器人 API 名称与参考程序的重合程度。这些分数表明,尽管语法有效性较高,语义上只是部分一致。此外,29.2% 的生成程序包含技能式的辅助函数调用,判定标准是以 robot 作为第一个参数的调用。综合来看,这些结果表明预训练学会了以视觉为条件的程序生成和技能调用,而精确的语义和参数预测仍有改进空间。
解释
“技能调用比例”的判定方式值得推敲。这里把“任何以 robot 为第一个参数的调用”都算作技能调用,这比“调用了技能库中的技能”宽松得多。附录 E 的下游标签中就有 hold(robot, ...)、close_hand(robot, ...) 这类不在技能库中、却以 robot 为首参数的调用,它们也会被计入。因此 29.2% 应理解为“技能式调用的比例”,不等于“正确使用技能库的比例”。F1 的口径。实体 F1 只比较字符串集合的重合,例如参考程序提到 'cloth'、'keyboard',生成程序也提到它们,即为命中;它不检查这些字符串是否出现在正确的位置。由于验证用的参考程序可能来自“同一任务的另一个回合”(见图 29),两者本来就未必完全一致,所以 F1 偏低也部分反映了参考标注本身的多样性。
原文
YAM Robot Demonstrations. Figure 29 shows a held-out YAM demonstration of “Clean keyboard with a cloth". The generated program expresses a cloth handover followed by repeated scrubbing through scrub_back_and_forth, preserving the object arguments, arm assignment, and loop structure of the reference subtask. This illustrates how a reusable skill can encode a repeated motion compactly. The generated displacement argument nevertheless contains two extra entries, illustrating that an appropriate skill-level plan can still contain parameter errors that prevent reliable direct execution.
译文
YAM 机器人示范。图 29 展示了一条留出的 YAM 示范“用布清洁键盘”。生成的程序先表达布的交接,再通过 scrub_back_and_forth 反复擦拭,保留了参考子任务中的物体参数、手臂分配和循环结构。这说明可复用技能能紧凑地编码重复动作。不过,生成的位移参数多了两个元素,这说明一个恰当的技能级计划仍可能包含参数错误,从而无法可靠地直接执行。
解释
具体来说,参考程序中第二个位移是 [0.2, 0.0, 0.0](三维),生成程序写成了 [0.2, 0.0, 0.0, 0.0, 0.0](五维)。在默认模式下,这只是一个条件信号中的小噪声,影响有限;在混合模式下,这行代码要么在执行时报错,要么被附录 I 的检查拦下,回退到动作块。这正是附录 L 所说“语法有效不保证执行正确”的实例。
pretrained_code_generation_yam.pdf
图 29:预训练模型在一个 YAM 验证样例上的代码生成。生成的程序与来自同一任务另一条已标注回合的参考程序进行比较。
原图注:Pretrained Code Generation on a YAM Validation Example. The generated program is compared with a reference program from another labeled episode of the same task.
图 29 解读
图的标题栏是“(a) YAM robot demonstrations”,副标题“Skill structure preserved; parameter mismatch”(技能结构保留,参数不匹配)。左侧是四帧画面:第 1 帧是模型输入,第 3、5、8 帧是参考视频(即示范中后续发生的事,模型看不到)。右侧上方是参考程序(来自同一任务另一条已标注回合的对应子任务),下方是生成程序(原始检查点输出,只做了排版)。两段程序逐行几乎相同:左臂从右臂接过布(grasp 加 release),然后 8 次 scrub_back_and_forth,物体、手臂、位移参数都一致,唯一的差异是最后一个位移列表多了两个 0.0(图中高亮)。循环次数 8 与参考一致,说明模型能从画面推断重复次数(或者记住了该任务的常见次数)。
原文
Egocentric Human Demonstrations. Figure 30 illustrates subtask-level planning under the instruction “Squeeze toothpaste.” The generated program describes the preparatory subtask of removing the cap: stabilizing the tube, repeatedly twisting the cap, and lifting it away. It matches the annotated calls, arguments, and loop structure for this validation window. The two examples illustrate how the pretrained model represents manipulation through explicit object references, ordered calls, and repetition across robot and human observations, while the aggregate metrics distinguish this representational capability from uniformly correct or executable code.
译文
人类第一视角示范。图 30 展示了在指令“挤牙膏”下的子任务级规划。生成的程序描述的是拧下盖子这一准备性子任务:稳住牙膏管,反复拧盖子,再把盖子拿开。它与这一验证窗口标注的调用、参数和循环结构都一致。这两个例子说明,预训练模型能在机器人和人类观测上,通过显式的物体引用、有序的调用和重复结构来表示操作;而汇总指标则把这种表示能力与“代码普遍正确、可执行”区分开来。
解释
最后一句是在为表 10 的偏低分数做解释:单个例子可以完全正确,但从整体指标看,模型并不总能写出正确的代码。两张图选的都是效果较好的例子(一个完全正确,一个只有一处参数错),读者不应把它们当作典型水平,典型水平以表 10 为准。
pretrained_code_generation_human.pdf
图 30:预训练模型在一个人类第一视角验证样例上的代码生成。在指令“Squeeze toothpaste”(挤牙膏)下,模型生成了拧下盖子的子任务,与这一留出窗口的标注程序一致。
原图注:Pretrained Code Generation on an Egocentric Human Validation Example. Under the instruction “Squeeze toothpaste,” the model generates the cap-removal subtask, matching the annotated program for the held-out window.
图 30 解读
版式与图 29 相同,标题栏为“(b) Egocentric human demonstrations”,副标题“Generated program matches the annotation”(生成程序与标注一致),当前子任务是“unscrew the cap”(拧下盖子)。这里与图 29 不同,参考程序是同一验证窗口的真实标注(Ground-Truth Program)。程序内容:右手 grasp 牙膏管扶稳;循环 6 次:左手合拢、绕对称轴('object_symmetry')把盖子旋转 90°、左手张开;最后左手 pick 拿起松开的盖子。生成程序与标注逐字相同。6\times90^\circ=540^\circ,即一圈半,这是拧开牙膏盖的典型圈数。这段程序完全用原语写成,没有使用表 9 中的 unscrew_cap 技能,尽管二者描述的动作几乎相同,这也说明“技能调用比例”只有 29.2% 的一种原因:标注本身就未必使用技能。

F.2后训练模型的代码生成质量

原文
We examine code generated online by the post-trained model during real-world deployment on the YAM and Tianji–Sharpa platforms. Figures 31 and 32 show examples from Pack Backpack and Solve Rubik's Cube, respectively. Each example pairs the observation at a replanning point with the generated program and subsequent recorded frames from the same deployment rollout. Reference programs are drawn from separate annotated demonstrations of the same task and subtask, providing qualitative comparisons of skill selection, object arguments, and call structure.
译文
我们考察后训练模型在 YAM 和 Tianji–Sharpa 平台的真实世界部署中在线生成的代码。图 31 和图 32 分别展示 Pack Backpack 和 Solve Rubik's Cube 的例子。每个例子都把某个重规划点的观测、生成的程序,以及同一次部署试验中随后记录的帧配在一起。参考程序取自同一任务、同一子任务的其他标注示范,用来定性比较技能选择、物体参数和调用结构。
解释
与 F.1 不同,这里是“下游微调后、真机部署时”的代码,更能反映默认模式下代码流实际提供了什么样的条件。注意这里没有给出任何定量指标(例如部署时的可解析率),只有两个定性例子。
原文
YAM Deployment Rollout. Figure 31 shows Pack Backpack at the stage where the right arm grasps the zipper pull at the middle of the seam. The generated program invokes approach_best_grasp for the zipper pull, followed by robot.close_gripper('right'). The generated program uses the same grasping skill, target object, arm assignment, and numerical arguments as the reference program. This example illustrates how the post-trained model expresses a task-specific manipulation step through a reusable grasping skill and an explicit gripper command.
译文
YAM 部署试验。图 31 展示 Pack Backpack 中右臂在缝线中间抓住拉链头的阶段。生成的程序对拉链头调用 approach_best_grasp,随后调用 robot.close_gripper('right')。生成程序使用的抓取技能、目标物体、手臂分配和数值参数都与参考程序相同。这个例子说明,后训练模型能通过一个可复用的抓取技能加一条显式的夹爪指令,表达一个与任务相关的操作步骤。
解释
生成程序与附录 E 图 22 中代码标签的 STAGE 2/5 完全相同,包括两行注释。考虑到每个任务的 100 条示范在冻结技能库下被标注,同一子任务在不同示范中的标签很可能高度一致,所以“与参考程序完全相同”在某种程度上反映的是模型记住了该任务的标准标签。这并不减损它作为条件信号的价值,但不宜将其解读为泛化能力。
posttrained_code_generation_yam.pdf
图 31:Pack Backpack 真实世界部署中的在线代码生成。标有“Annotated Program”的面板是同一任务、同一子任务的另一条示范的参考程序,“Generated Program”是部署时在线记录的模型输出。这一比较展示了技能选择和参数上的语义对应。
原图注:Online Code Generation during Real-world Deployment on Pack Backpack. The panel labeled “Annotated Program” shows a reference program from a separate demonstration of the same task and subtask. “Generated Program” is the model output recorded online during deployment. The comparison illustrates semantic correspondence in skill selection and arguments.
图 31 解读
标题栏“(a) YAM — Pack Backpack”,副标题“Generated program matches the annotation”。指令是“Pack the backpack.”,当前子任务是“用右臂在中间抓住拉链头”。左侧四帧:第 1 帧是重规划点的模型输入,第 3、5、8 帧是同一次部署试验中随后录下的画面。右侧上下两个代码框分别是参考程序和生成程序,二者都是“# STAGE 2/5 -- OPENING ...”两行注释加 approach_best_grasp(robot, 'zipper pull', 'right', [0.0, 0.0, 0.05]) 和 robot.close_gripper('right'),副标题注明“完全一致”(Matches the annotated program exactly)。
原文
Tianji–Sharpa Deployment Rollout. Figure 32 illustrates subtask-level planning for Solve Rubik's Cube while the right hand holds the cube steady. The generated program reproduces hold(robot, 'rubiks cube', 'right'), matching the annotated skill, object, and hand assignment. The generated skill call agrees with the reference program in skill choice, object, and hand assignment. The output nevertheless contains a malformed comment: the word cube is omitted, and the comment continues on a new line without a comment marker. This formatting error prevents direct execution of the raw output despite the correct skill call. Together, the two examples illustrate task-specific semantic agreement across parallel grippers and dexterous hands, while distinguishing appropriate skill selection from uniformly valid executable code.
译文
Tianji–Sharpa 部署试验。图 32 展示 Solve Rubik's Cube 中右手握稳魔方时的子任务级规划。生成的程序复现了 hold(robot, 'rubiks cube', 'right'),与标注的技能、物体和手的分配一致。生成的技能调用在技能选择、物体和手的分配上都与参考程序一致。不过,输出中有一条格式错误的注释:漏掉了单词 cube,并且注释在换行后继续,却没有注释符号。尽管技能调用是正确的,这一格式错误使原始输出无法直接执行。这两个例子共同说明,在平行夹爪和灵巧手上,模型生成的代码在任务层面与参考程序语义一致;同时也表明,选对技能与代码普遍可执行是两回事。
解释
这里的错误很有代表性:掩码扩散一次并行确定多个 token,比自回归更容易出现“漏一个词、换行位置不对”这类局部不连贯,因为相邻 token 是在同一步中独立预测的。一处注释错误就让整段代码无法通过 Python 解析,在混合模式下会被语法检查拦下。另外,正文把 hold 称为“技能”(annotated skill),但它并不在表 9 的人类技能库中,也不在附录 K.1 的灵巧手 API 中(见附录 E 图 28 的说明)。“同一句话说了两遍”(“matching the annotated skill, object, and hand assignment”与下一句几乎重复)也是原文的一处冗余。
posttrained_code_generation_sharpa.pdf
图 32:Solve Rubik's Cube 真实世界部署中的在线代码生成。标有“Annotated Program”的面板是同一任务、同一子任务的另一条示范的参考程序,“Generated Program”是部署时在线记录的模型输出。这一比较展示了技能选择和参数上的语义对应。
原图注:Online Code Generation during Real-world Deployment on Solve Rubik's Cube. The panel labeled “Annotated Program” shows a reference program from a separate demonstration of the same task and subtask. “Generated Program” is the model output recorded online during deployment. The comparison illustrates semantic correspondence in skill selection and arguments.
图 32 解读
标题栏“(b) Tianji–Sharpa — Solve Rubik's Cube”,副标题“Generated program nearly matches the annotation”(生成程序与标注几乎一致)。当前子任务是“用右手握稳魔方”。参考程序有一行阶段注释“# STAGE 3/6 HOLD CUBE | cube: in the right hand, up-face green | next: line up the next layer to turn”(第 3/6 阶段,握住魔方;魔方在右手,上面是绿色;下一步:对准要转的下一层),一行动作注释和一行 hold(...)。生成程序的阶段注释和调用都相同,但第二行注释变成“# the right hand holds the”后换行,接着是没有 # 的“steady, the other stays clear”,图中把差异高亮了。一个细节:附录 E 图 28 中该任务的代码标签没有“STAGE 3/6”这样的阶段注释,而这里的参考程序有,说明同一任务不同示范的标签格式并不统一。

G真实世界结果的补充分析(Additional Analysis on Real-world Results)

G.1代码专家对语言跟随能力的影响

原文
We further examine whether code-based planning improves the alignment of predicted visual dynamics with task semantics. As shown in Figure 33, we compare the video generation quality of the right wrist camera of AW-0 with a natural-language subgoal variant (Subgoal) and a model without a planning stream (AW-0 w/o code), under the instruction “Arrange the fruits so that finally there is only mango in the left bowl.” This task requires identifying the intended object and grounding the desired outcome in an appropriate interaction. The three variants are evaluated under the same task and scene configuration, with similar but non-identical initial observations from separate rollouts.
译文
我们进一步考察基于代码的规划能否改善预测的视觉动态与任务语义之间的对齐。如图 33 所示,在指令“摆放水果,使左碗里最后只有芒果”下,我们比较 AW-0、自然语言子目标变体(Subgoal)和不含规划流的模型(AW-0 w/o code)在右腕相机上的视频生成质量。这个任务要求识别出目标物体,并把期望的结果落实到恰当的交互上。三个变体在相同的任务和场景配置下评测,初始观测相似但不完全相同,来自不同的试验。
解释
这里比较的三个变体与第 3.3 节图 7、图 5 中的变体相同:“Subgoal”是用自然语言子目标代替代码(图 7 紫色),“w/o code”是 V\to A(图 5 紫色)。考察对象不是动作,而是视频专家预测出的未来帧,目的是说明“代码先影响视频、视频再影响动作”这条通路确实存在。需要注意的限定:三者的初始观测“相似但不完全相同”,因为它们来自不同的试验。图 33 中“w/o Code”一行的观测画面明显更亮、视角也略有不同,这会削弱比较的说服力。
原文
The predicted futures reveal distinct differences in task understanding: AW-0 directs the interaction toward the mango, whereas Subgoal exhibits ambiguous targeting between the apple and mango, and AW-0 w/o code targets the apple. These observations suggest that structured skill calls and explicit object arguments provide a more specific planning condition for video prediction than a natural-language subgoal alone. By connecting instruction semantics to concrete interactions, the code stream helps align predicted dynamics with the intended task. Since the action expert also conditions on predictive video representations, this alignment provides a pathway for improving language following, complementing the execution results in our main experiments.
译文
预测出的未来画面揭示了三者在任务理解上的明显差异:AW-0 让交互指向芒果,Subgoal 在苹果和芒果之间指向不明,AW-0 w/o code 则指向苹果。这些观察表明,结构化的技能调用和显式的物体参数为视频预测提供了比单纯自然语言子目标更具体的规划条件。通过把指令语义与具体交互联系起来,代码流有助于使预测的动态与预期任务对齐。由于动作专家也以预测性的视频表示为条件,这种对齐为改善语言跟随提供了一条途径,与主实验中的执行结果相互补充。
解释
机制上的解释:在 C\to V\to A 的注意力顺序下,代码中的物体参数(如 'mango')是一个明确的字符串,视频专家可以直接“读到”它;自然语言子目标也包含物体名,但混在句子里,指向性弱一些;没有规划流时,视频专家只能从交叉注意力中的语言嵌入获取指令信息,而训练数据中“伸向某个水果”的模式未必与指令绑定。证据强度:这是单个例子的定性观察,作者没有统计多次试验中“指向正确物体”的比例。它能说明“代码可能这样起作用”,但不能证明普遍如此。
video_quality_comparison.pdf
图 33:三个模型在 Arrange Fruits 上的未来帧预测。
原图注:Future-frame Prediction on Arrange Fruits for Three Models.
图 33 解读
三行分别是 Code(AW-0)、Subgoal 和 w/o Code。每行最左边一张(虚线左侧,标“Observation”)是当前的右腕相机观测,右侧五张(标“Predicted Future Frames”)是模型预测的未来帧,从左到右时间递增。画面是从右腕向下看的近景:黄色碗里有红色的苹果、深色的芒果(或类似水果)、黄瓜、西瓜片等。按正文描述,Code 一行的预测中夹爪逐渐靠近目标芒果;Subgoal 一行的预测在苹果和芒果之间摇摆;w/o Code 一行的预测则伸向苹果。由于画面分辨率低(224\times320)、预测帧有模糊,单凭肉眼很难确认每帧的目标,读者主要应依据正文的描述理解这张图。

G.2代码专家对技能鲁棒性的影响

原文
We further examine whether code-based planning improves the prediction of physical dynamics and skill robustness during precise manipulation. As shown in Figure 34, we compare the future frames predicted by AW-0, Subgoal, and AW-0 w/o code for the right wrist camera on Deal Poker, focusing on the final stage in which the right hand inserts a card into a slot. This interaction requires aligning the held card with the narrow opening and guiding it into the slot, making the relative motion of the hand, card, and receptacle critical to an accurate prediction. The three variants receive similar but non-identical initial observations sampled at nearby time steps from the same episode.
译文
我们还考察基于代码的规划能否在精细操作中改善对物理动力学的预测和技能的鲁棒性。如图 34 所示,我们比较 AW-0、Subgoal 和 AW-0 w/o code 在 Deal Poker 上为右腕相机预测的未来帧,重点关注右手把一张牌插入卡槽的最后阶段。这一交互需要把手中的牌与狭窄的开口对齐并引导它插入,因此手、牌和容器之间的相对运动对准确预测至关重要。三个变体接收的初始观测相似但不完全相同,取自同一回合中相邻的时间步。
解释
与 G.1 不同,这里的三个初始观测来自同一回合的相邻时间步,可比性更好。所考察的“插入卡槽”在评分细则中只占 0.1 分(附录 E),所以这里展示的更多是“视频预测质量”的差别,而不是对任务得分影响最大的环节。
原文
The predicted futures reveal distinct differences in the insertion motion: AW-0 depicts the card aligning with and entering the slot more accurately, whereas Subgoal and AW-0 w/o code produce less coherent insertion sequences, with blur and distortions around the hand and manipulated objects. These observations suggest that explicit skill calls and object arguments help the video expert better predict how the hand and card should move relative to the receptacle. The implementation of the code expert supports more accurate video generation, and therefore provides the action expert with more reliable predictive guidance for precise manipulation.
译文
预测出的未来画面揭示了插入动作上的明显差异:AW-0 更准确地描绘了牌与卡槽对齐并插入的过程,而 Subgoal 和 AW-0 w/o code 生成的插入序列连贯性较差,手和被操作物体周围出现模糊和变形。这些观察表明,显式的技能调用和物体参数有助于视频专家更好地预测手和牌相对于容器应当如何运动。代码专家的引入使视频生成更准确,从而为动作专家在精细操作中提供更可靠的预测性引导。
解释
这一段的推理链是“代码 \to 更好的视频 \to 更好的动作”。前一环有图 34 的定性支持,后一环则是由架构推出的(动作专家读取视频表示),没有单独的实验验证。另外,Deal Poker 上 Subgoal 变体的得分(43.8)比 w/o Skills(42.0)还略高,二者都远高于 w/o code(20.8),与这里“Subgoal 与 w/o code 一样模糊”的定性印象并不完全一致。
video_quality_comparison_deal_poker.pdf
图 34:三个模型在 Deal Poker 上的未来帧预测。
原图注:Future-frame Prediction on Deal Poker for Three Models.
图 34 解读
版式与图 33 相同。画面是右腕相机的近景:灵巧手手指、一张牌和木质卡槽。Code 一行的预测帧中,牌的边缘和卡槽的相对位置变化较连贯;Subgoal 和 w/o Code 两行有更明显的运动模糊,手指和牌的形状有变形。由于是腕部相机,手的运动会导致整个画面大幅平移,模糊在一定程度上是不可避免的。

G.3混合动作的评测细节

real_hybrid_progress.pdf
图 35:“Fold and Stack Towels”任务中混合动作的定性示例。同一个回合从上一行延续到下一行,绿色和紫色分别表示代码执行和直接动作。
原图注:Qualitative Example of Hybrid Actions for the “Fold and Stack Towels" Task. A single episode continues from the upper to the lower row, with green and purple indicating code execution and direct actions, respectively.
图 35 解读
两行共 10 张俯视画面,属于同一个回合,按时间从上一行左端到下一行右端排列。每行下方的色条表示这段时间由哪个通道控制:上一行开头一小段是绿色的“Code exec”(代码执行),其余是紫色的“Direct actions”(直接动作);下一行依次是代码执行、直接动作、代码执行、直接动作。画面中桌上有三条颜色不同的毛巾(黄绿、橙棕、粉红)。从色条可以看出,直接动作占了大部分时间,它负责叠毛巾这类柔性物体操作;代码执行穿插其间,负责移动和摞放。
原文
Figure 35 is a qualitative example of hybrid evaluation on the “Fold and Stack Towels" task, showing a single episode that continues from the upper to the lower row. We observe that dexterous folding motions rely primarily on direct actions from the action expert of AW-0, while code execution handles more structured motions, such as approaching and stacking the towels, which provide direct guidance on the stacking order and motion direction, improving the semantic reasoning capability for the whole system.
译文
图 35 是 “Fold and Stack Towels”任务上混合评测的一个定性示例,展示同一个回合从上一行延续到下一行。我们观察到,灵巧的折叠动作主要依赖 AW-0 动作专家给出的直接动作,而代码执行负责更结构化的动作,例如靠近和摞放毛巾;这些代码为摞放顺序和运动方向提供了直接引导,提升了整个系统的语义推理能力。
解释
这与仿真中的观察一致(附录 J.2):代码擅长“结构化、刚性、可用感知原语定位”的动作,学习得到的动作擅长“接触丰富、形状不规则”的动作。混合模式在真机上把 Fold and Stack Towels 从 84.4% 提升到 90.6%(第 3.2 节),提升主要应来自评分细则 (e)“颜色顺序正确”(0.3 分),因为代码中的摞放顺序是直接按指令写定的。不过,原文没有说明真机混合执行所用的感知与控制原语是如何实现的(仿真中用的是 Molmo、SAM 3、Contact-GraspNet,见附录 J.2),也没有给出真机上两个通道各占多少时间。

H失败案例分析(Failure Case Analysis)

failure_analysis.pdf
图 36:失败案例分析。每一行展示一个有代表性的失败案例。各帧按执行进度从左到右排列。最后一帧上的红框标出了最右侧面板中放大的区域,即发生失败的位置。
原图注:Failure Case Analysis. Each row shows one representative failure case. Frames are ordered from left to right by execution progress. The red box on the last frame marks the region enlarged in the rightmost panel, where the failure occurs.
图 36 解读
六行对应六类失败,左侧标注类别,每行下方一句英文说明:Container Grasp(容器抓取,Arrange Fruits:水果靠近篮子边沿,左夹爪落在篮外,抓住了篮壁);Object Dragging(物体拖动,Pack Backpack:拉拉链时把整个背包拖倒);Imprecise Alignment(对准不精确,Replace Lightbulb:灯泡底座偏离轴线,悬在灯口上方,始终没有拧进去);Tool Collision(工具碰撞,Arrange Fruits with Tongs:夹子闭着去戳梨,而不是张开夹住);Slipping Off(滑落,Deal Poker:抽牌时牌堆从手中滑出);Contact Loss(接触丢失,Flip Scoreboard:指尖从卡片边缘滑开,没有翻过去)。前三行是 YAM 任务,后三行是 Tianji–Sharpa 任务,每个任务各一个例子(Fold and Stack Towels 和 Solve Rubik's Cube 没有列出)。注意第五行图中的说明是“抽牌时牌堆滑出”(while a card is pulled),而正文的文字描述是“交接时左手没有接稳”(during handover),二者描述的阶段不同。
原文
Figure 36 shows representative failure cases across various scenarios. The red boxes highlight the local interactions where execution fails. These examples illustrate some remaining challenges despite the overall performance gains of AW-0.
译文
图 36 展示了各种场景中有代表性的失败案例。红框标出执行失败的局部交互。这些例子说明,尽管 AW-0 整体性能有所提升,仍有一些挑战有待解决。
解释
六类失败有一个共同点:都发生在“最后几厘米”的接触阶段,即需要精确的相对位姿、持续的接触或双手协调的时刻。代码规划在这些环节帮不上忙,因为代码只描述“抓哪个物体”,不描述“在哪里、以什么角度接触”。这与附录 J.2 中“代码执行在不规则形状上抓取失败、由直接动作接管”的观察互为印证。
原文
1) Container Grasp. In Arrange Fruits in the first row, the target fruit lies close to the basket rim. As the gripper approaches, its left jaw moves outside the basket, causing the closing motion to grasp the basket wall rather than only the fruit. This case highlights the need to account for surrounding geometry when selecting a grasp. Explicitly estimating the rim geometry and checking clearance along both the approach and closing paths could help reject obstructed grasps and select a more accurate approach direction.2) Object Dragging. In Pack Backpack in the second row, when the robot pulls the zipper, the backpack moves and tips over rather than remaining stable. The visible failure suggests insufficient stabilization of the deformable object during manipulation. A potential improvement is to coordinate the supporting and pulling motions through more frequent visual feedback: the supporting hand could adjust its grasp as the bag deforms, while the pulling hand could slow down or pause when the bag starts to shift or tip.
译文
1)容器抓取。在第一行的 Arrange Fruits 中,目标水果紧挨着篮子边沿。夹爪接近时,左夹指落到了篮子外面,导致闭合时夹住的是篮壁而不只是水果。这个案例说明,选择抓取时需要考虑周围的几何结构。显式估计边沿的几何形状,并沿接近路径和闭合路径检查间隙,可以帮助排除受阻的抓取,选出更准确的接近方向。2)物体拖动。在第二行的 Pack Backpack 中,机器人拉拉链时,背包被带动并翻倒,而没有保持稳定。这一可见的失败表明,操作过程中对柔性物体的稳定不够。一个可能的改进是通过更频繁的视觉反馈来协调扶持和拉动:扶持的手可以随着包的变形调整抓握,拉动的手可以在包开始移动或倾倒时放慢或暂停。
解释
这两类失败都与“周围环境的几何或力学约束”有关。第 1 类是抓取规划问题:夹爪只“看到”目标水果,没有考虑篮壁的碰撞。第 2 类是力的协调问题:拉拉链时需要另一只臂提供反作用力,而附录 E 中 Pack Backpack 的代码标签并没有“一只臂按住背包”的步骤,扶持动作在规划层面就缺失了。作者给出的改进建议(估计边沿几何、更频繁的视觉反馈)都偏向传统的感知—规划手段,可以与代码执行的“混合模式”结合。
原文
3) Imprecise Alignment. In Replace Lightbulb in the third row, the robot grasps the bulb and brings it above the socket, but the bulb base remains misaligned with the socket opening and is not screwed in. Completing this step requires both positional and angular alignment before the threads can engage. The case illustrates a gap between moving an object to the correct region and achieving the precise relative pose required for insertion and rotation.4) Tool Collision. In Arrange Fruits with Tongs in the fourth row, the tongs approach the pear with their tips closed and poke it rather than opening around it to establish a grasp. Successful tool use requires coordinating the tool's opening with its approach trajectory, in addition to holding and positioning the tool itself. Explicitly tracking the tong tips and opening width could help condition actions on the tool's state. A feedback check that the tips are open and positioned on opposite sides of the fruit before closing could further reduce unsuccessful contact.
译文
3)对准不精确。在第三行的 Replace Lightbulb 中,机器人抓起灯泡并把它移到灯口上方,但灯泡底座与灯口开口没有对准,始终没有拧进去。完成这一步需要在螺纹咬合之前同时对准位置和角度。这个案例说明,“把物体移到正确的区域”与“达到插入和旋转所需的精确相对位姿”之间仍有差距。4)工具碰撞。在第四行的 Arrange Fruits with Tongs 中,夹子以闭合的尖端接近梨,戳到了它,而没有张开夹住它。成功使用工具除了要握住并定位工具本身,还需要让工具的张开与接近轨迹相协调。显式跟踪夹子尖端和张开宽度,有助于让动作以工具的状态为条件。在闭合之前反馈检查尖端是否已张开、是否位于水果两侧,可以进一步减少失败的接触。
解释
第 3 类失败对应评分细则中分值最高的一项(Replace Lightbulb 的 (f) 占 0.3 分)。224\times320 的图像分辨率和 1 秒左右的动作块时域,可能都不足以支撑毫米级的对准。第 4 类失败中,“夹子的张开状态”是一个工具自身的隐变量:灵巧手握着夹子,手指的关节角决定了夹子张开多少,但模型并没有显式表示这一点。附录 E 图 25 的代码标签用 squeeze_tongs、release_tongs 表示夹子的开合,可见在代码层面这个状态是有表示的,但在执行时没有被可靠地转化为手指动作。
原文
5) Slipping Off. In Deal Poker in the fifth row, the left hand fails to secure the card stack during handover from the right hand, causing the cards to slip. A successful handover requires the receiving hand to establish a stable grasp before the giving hand releases the stack. This failure illustrates the difficulty of coordinating grasping and release across the two hands while maintaining support for the cards throughout the transfer.6) Contact Loss. In Flip Scoreboard in the sixth row, the fingertip reaches the edge of a score card but slides off before turning it over, leaving the displayed score unchanged. Unlike a brief touch, a successful flip requires sustained contact along the card's rotation about the binding. This case illustrates the difficulty of sliding the fingertip along the first card to lift its edge while maintaining continuous contact.
译文
5)滑落。在第五行的 Deal Poker 中,右手把牌堆交给左手时,左手没有接稳,导致牌滑落。成功的交接要求接收的手在给出的手松开之前先建立稳定的抓握。这个失败说明,在整个传递过程中既要保持对牌的支撑、又要协调双手的抓与放,是很困难的。6)接触丢失。在第六行的 Flip Scoreboard 中,指尖碰到了一张记分卡的边缘,但在把它翻过去之前滑开了,显示的分数没有变化。与短暂的触碰不同,成功的翻卡需要在卡片绕装订轴转动的整个过程中保持接触。这个案例说明,让指尖沿第一张卡滑动以掀起它的边缘、同时保持连续接触,是很困难的。
解释
第 5 类失败对应附录 K.2 中“交接”的接触语义:灵巧手 API 规定 handover“先合上接收的手,再张开给出的手”。这条规则在代码中写得很清楚,但执行时两只手的时序配合仍然可能出错,说明代码中的语义约束不能自动转化为动作的精确时序。如图 36 的解读所述,图中第五行的说明写的是“抽牌时牌堆滑出”,与此处“交接时滑落”的文字描述不一致。第 6 类失败与第 4 类相似,都是“持续接触”的问题:翻卡、夹取都需要在一段时间内保持某种接触状态,而 32 步的动作块是开环执行的,执行过程中不会根据触觉或视觉反馈调整。作者在第 2 类中提出的“更频繁的视觉反馈”同样适用于这里。

I混合动作算法(Hybrid Actions Algorithm)

原文
Algorithms 1 and 2 outline the workflow of the hybrid mode. From an observation o and instruction \ell, one forward pass of the policy \pi returns a direct action chunk a_{1:H} over the replan horizon H and a code slice c. Every slice executes in a shared namespace \mathcal{G} containing the environment's skill API, reusable helper definitions, and its setup block (episode-start perception), which persists throughout the episode. At each replanning point, Arbitrate decides which of the two channels drives the robot. The returned flag indicates whether code execution was attempted, not whether it succeeded. If execution is attempted, the action chunk from the same policy invocation is discarded, even if an exception occurs; the next iteration observes the current state and replans. Otherwise, the chunk is played for H steps as in the default mode.
译文
算法 1 和算法 2 概述了混合模式的工作流程。给定观测 o 和指令 \ell,策略 \pi 的一次前向计算返回一个跨越重规划时域 H 的直接动作块 a_{1:H},以及一个代码切片 c。每个切片都在一个共享命名空间 \mathcal{G} 中执行,\mathcal{G} 包含环境的技能 API、可复用的辅助函数定义,以及环境的初始化代码块(回合开始时的感知),并在整个回合中持续存在。在每个重规划点,Arbitrate(仲裁)决定由两条通道中的哪一条驱动机器人。它返回的标志表示是否尝试了代码执行,而不是执行是否成功。如果尝试了执行,同一次策略调用得到的动作块就被丢弃,即使执行中出现了异常也是如此;下一轮迭代会观测当前状态并重新规划。否则,就像默认模式那样把动作块执行 H 步。
解释
共享命名空间 \mathcal G 相当于一个贯穿整个回合的 Python 解释器会话:回合开始时运行一次初始化代码(例如检测场景中的物体,把结果存成变量),之后每个代码切片都能读写这些变量。这就是下面“依赖检查”要检查的东西:切片中用到的变量必须已在 \mathcal G 中定义。“尝试即丢弃”的设计。一旦决定执行代码,就不再使用同一次前向得到的动作块,哪怕代码执行失败。理由是:代码执行会改变机器人和环境的状态,原来的动作块是基于执行前的观测生成的,已经过时;与其执行一个过时的动作块,不如重新观测、重新规划。
原文
The original generated slice c is checked without repair. It is executed only if it passes the following gates in order:
  1. Stage Gate: its stage is not complete, is not below a stage already attempted, and has fewer than R failed execution attempts;
  2. Dependency Gate: every variable it reads is defined in \mathcal{G}; and
  3. Syntax, Whitelist, and Vacuity Gates: it compiles as generated, calls only whitelisted functions, and contains an executable statement.
译文
原始生成的切片 c 不经修复就接受检查。只有当它依次通过以下各道关卡时才会被执行:
  1. 阶段关卡:它所属的阶段尚未完成,不低于已经尝试过的阶段,并且该阶段的执行失败次数少于 R 次;
  2. 依赖关卡:它读取的每个变量都已在 \mathcal{G} 中定义;
  3. 语法、白名单与空操作关卡:它按生成的原样能够编译,只调用白名单中的函数,并且至少包含一条可执行语句。
解释
三道关卡分别防止三类问题。阶段关卡防止重复或倒退:代码切片的头部声明了它属于第几阶段(如附录 E 中的“STAGE 2/5”),已经完成的阶段不再执行,比已尝试阶段更早的阶段也不执行(避免“回头重做”),同一阶段失败太多次就放弃代码、改用动作。依赖关卡防止引用未定义变量导致的运行时错误(附录 E 图 22 中第 3 阶段的 item 就是这种情况)。语法、白名单、空操作关卡分别防止解析错误(如附录 F.2 图 32 中断行的注释)、调用危险或不存在的函数、以及只有注释没有动作的切片。“不经修复”意味着哪怕只是一个小的格式错误也会导致整个切片被拒绝。这是一个保守的选择:简单,但会浪费一些本可用的代码。附录 J.2 表 12 显示,在 RoboTwin 上代码实际驱动的仿真步只占全部的 5.6%–8.5%,部分原因可能就在于此。阶段数和失败上限 R 的具体取值原文没有给出。
算法 1:混合控制:优先执行生成的代码,否则执行直接动作
Require: 策略 \pi,环境 E,执行命名空间 \mathcal{G},指令 \ell,重规划时域 H,每阶段失败上限 R
1: \mathcal{D} \gets \emptyset,n_k \gets 0\ \forall k ▷ 已由代码完成的阶段;每阶段的失败次数
2:while 回合未结束 do
3: o \gets E.\mathrm{observe}()
4: a_{1:H},\, c \gets \pi(o, \ell) ▷ 直接动作块 a_{1:H} 与下一阶段的代码切片 c
5: \mathit{code\_attempted} \gets \text{Arbitrate}(c,\, \mathcal{G},\, \mathcal{D},\, n,\, R) ▷ 是否尝试了代码执行
6:if not \mathit{code\_attempted} then
7:for t = 1 to H do
8: E.\mathrm{step}(a_t) ▷ 回退到直接动作
9:end for
10:end if
11:end while
算法 1 解读
原文标题为“Hybrid control: generated code first, direct actions otherwise”,伪代码中的英文注释均已译出。主循环每次:观测,调用策略得到动作块和代码切片,交给 Arbitrate 决定是否执行代码;如果没有尝试代码,就把动作块的 H 步依次执行。尝试了代码时,执行已经在 Arbitrate 内部完成,主循环直接进入下一轮。\mathcal D 记录已由代码成功完成的阶段,n_k 记录第 k 阶段代码执行失败的次数,二者都在回合内持续累积。
算法 2:Arbitrate(c, \mathcal{G}, \mathcal{D}, n, R):只有通过全部关卡时才执行切片
1: k \gets c 头部声明的阶段编号
2:if k \in \mathcal{D} or k 低于已尝试过的阶段 or n_k \ge R then
3:
4:return false ▷ 阶段关卡
5:end if
6:if c 使用了 \mathcal{G} 中未定义的变量 then
7:
8:return false ▷ 依赖关卡
9:end if
10:if c 无法编译 or c 调用了不在 \mathcal{G} 中的函数 or c 没有可执行内容 then
11:
12:return false ▷ 语法、白名单与空操作关卡
13:end if
14:if c 已在阶段 k 上失败过,且此后没有任何变化 then
15:
16:return false ▷ 跳过无望的重试
17:end if
18: 在 \mathcal{G} 中执行 c,驱动机器人
19:if 没有抛出异常 then
20: \mathcal{D} \gets \mathcal{D} \cup \{k\} ▷ 阶段 k 完成
21:else
22: n_k \gets n_k + 1
23:end if
24:
25:return true ▷ 尝试了代码执行,即使出现了异常
算法 2 解读
原文标题为“Arbitrate: execute the slice only if it passes every gate”。第 2–10 行依次是正文列出的三道关卡,另外多了一道正文没有列出的检查(第 11–13 行):如果同一段代码已经在这个阶段失败过、并且此后“没有任何变化”,就不再重试。“没有变化”具体如何判定(例如代码文本相同、观测相同),原文没有说明。第 15–19 行的逻辑值得注意:只要没有抛出 Python 异常,就认为阶段 k 已完成。但代码执行没有报错,并不代表物理上成功了,例如抓取原语执行完毕但实际上没抓住(附录 J.2 中 pick_dual_bottles 的例子)。这时阶段 k 被记为已完成,后续不会再用代码重做,只能靠直接动作补救。这也是附录 L 所说“仲裁只看有效性、不估计优劣”的一个具体体现。

J仿真实验的补充细节(Additional Simulation Experiment Details)

J.1RoboTwin 逐任务结果

原文
Table 11 reports the per-task breakdown of the aggregate results in Table 1.
译文
表 11 报告表 1 汇总结果的逐任务明细。
解释
表 11 是表 1 的展开:50 个任务、6 种方法、干净与随机两种设置,每格是 50 次试验的成功率(%),所以每格的数值都是 2 的整数倍。
表 11:RoboTwin 2.0 在干净与随机评测设置下的逐任务结果(50 个任务)。每个任务、每种设置 50 次试验的成功率(%)。每个任务、每种设置的最好结果用粗体标出。
任务\pi_{0.5}EgoScaleDreamZeroWLAAW-0(本文)AW-0(混合)
干净随机干净随机干净随机干净随机干净随机干净随机
Adjust Bottle6218260061000100509048
Beat Block Hammer4816220261282094284624
Blocks Ranking RGB7416000054096329482
Blocks Ranking Size320001603205606450
Click Alarmclock445688161002410042965610062
Click Bell324092361006610048961810072
Dump Bin Bigbin72703218001001298207814
Grab Roller944696664221000100329250
Handover Block16040008082040
Handover Mic264001606809812342
Hanging Mug10400008030020
Lift Pot820080880904660
Move Can Pot280240446407668252
Move Pillbottle Pad60443603416720926966
Move Playingcard Away905246004940100468630
Move Stapler Pad226000020380262
Open Laptop6820200662290084387248
Open Microwave26882128002044624
Pick Diverse Bottles56184404016761276367432
Pick Dual Bottles8214384544280080289628
Place A2B Left601000221448084309858
Place A2B Right58144024854080269680
Place Bread Basket684444062128409220806
Place Bread Skillet864632036346409014242
Place Burger Fries90787807062100094206622
Place Can Basket400602612426708268
Place Cans Plasticbox9474400012100098128034
Place Container Plate96584609644100094268622
Place Dual Shoes541280200320641222
Place Empty Cup7456720765094098169614
Place Fan363012000807041610
Place Mouse Pad18020100260640184
Place Object Basket244001004228414504
Place Object Scale58448036836070188850
Place Object Stand9440260502692692266256
Place Phone Stand4048022086090228254
Place Shoe642422618672078226030
Press Stapler423210020884482086810068
Put Bottles Dustbin14200461608612140
Put Object Cabinet22012040680566660
Rotate QRcode502320002207044028
Scan Object623840402080068101610
Shake Bottle Horizontally9874723010086100261006210026
Shake Bottle96728061007610024100589430
Stack Blocks Three68160010012092186256
Stack Blocks Two805660584690070188082
Stack Bowls Three38360014148807840444
Stack Bowls Two8244008824100098565244
Stamp Seal322604016400782584
Turn Switch5640120141842044285228
平均54.927.726.22.933.617.664.83.680.820.663.129.2
原表注:Per-task RoboTwin 2.0 Results under the Clean and Random Evaluation Settings (50 Tasks). Success rate (%) over 50 rollouts per task per setting. Best result per task and setting is shown in bold.
表 11 解读
每行是一个 RoboTwin 2.0 任务,每种方法占两列(干净、随机)。最后一行“平均”与表 1 一致;用 50 行数据逐列重算,得到 \pi_{0.5} 54.88/27.72、EgoScale 26.16/2.88、DreamZero 33.56/17.60、WLA 64.76/3.56、AW-0 80.80/20.56、AW-0 混合 63.12/29.24,四舍五入后全部吻合。粗体标记也逐行核对过,均为该任务、该设置下的最大值(并列时同时加粗)。几个规律。(1) AW-0 默认模式在干净设置下全面领先,在需要双臂协作或精细放置的任务上优势最大,例如 Handover Block(82 对基线最高 16)、Put Bottles Dustbin(86 对 16)、Place Object Basket(84 对 42)。(2) 随机设置下的崩溃很不均匀:WLA 和 EgoScale 分别在 41 个和 40 个任务上随机成功率为 0;\pi_{0.5} 在随机设置下的粗体最多,集中在放置类任务(Place Bread Basket、Place Burger Fries、Place Cans Plasticbox 等)。(3) 混合模式的收益集中在结构化任务:随机设置下,Blocks Ranking RGB 从 32 升到 82,Place A2B Right 从 26 升到 80,Stack Blocks Two 从 18 升到 82,Move Can Pot 从 6 升到 52,都是“识别并搬运规则物体”的任务;而 Place Bread Skillet(干净 90 \to 24)、Place Dual Shoes(64 \to 2)、Place Fan(70 \to 16)等任务在混合模式下大幅下降。逐任务统计,混合模式在随机设置下有 24 个任务超过默认模式、7 个持平,在干净设置下只有 14 个任务超过默认模式。

J.2混合动作的评测细节

原文
Perception and Control Primitives. During hybrid evaluation, generated code executes through perception and control primitives implemented using Molmo for visual grounding (Deitke et al., 2024), SAM 3 for segmentation (Carion et al., 2025), Contact-GraspNet for grasp generation (Sundermeyer et al., 2021), and RoboTwin's native motion-planning and gripper-control interfaces (Chen et al., 2025). Neither the generated programs nor the underlying primitives access privileged simulator information during evaluation. For demonstration collection, we preserve the same API interface but use privileged object states and annotated grasps to improve collection efficiency.
译文
感知与控制原语。在混合评测中,生成的代码通过一组感知与控制原语执行,这些原语的实现分别是:用 Molmo 做视觉定位(Deitke et al., 2024),用 SAM 3 做分割(Carion et al., 2025),用 Contact-GraspNet 生成抓取(Sundermeyer et al., 2021),以及 RoboTwin 自带的运动规划和夹爪控制接口(Chen et al., 2025)。评测时,生成的程序和底层原语都不访问仿真器的特权信息。在收集示范时,我们保持同样的 API 接口,但使用特权的物体状态和标注好的抓取,以提高收集效率。
解释
这条感知—控制链路是典型的模块化机器人系统:Molmo 根据文字(如“红色方块”)在图像中指出位置,SAM 3 把该物体分割出来,Contact-GraspNet 从点云生成可行的抓取位姿,最后由运动规划器生成无碰撞轨迹。这条链路的优点是对背景纹理、光照等视觉变化比较鲁棒(这些模型都在大规模真实图像上训练过),这可能正是混合模式在随机设置下表现更好的原因。采集与评测的差异:采集示范时用特权信息(真实位姿、标注抓取),所以示范的成功率高、轨迹干净;评测时只用视觉感知,原语本身就可能出错。这意味着混合模式在训练中见到的“代码执行结果”比评测时更理想。
原文
Scope of Comparison. The default and hybrid configurations differ in both their training demonstration collection pipelines and execution modes to support their training requirements. Unlike the default configuration, which uses demonstrations collected with RoboTwin's native motion planner, the hybrid configuration uses CaP-based data collection because it naturally pairs each demonstration with an aligned program executable in the RoboTwin simulator, supporting the code execution component of hybrid actions. Therefore, our resulting comparison evaluates the two configuration as a whole and does not isolate the effect of hybrid execution alone.
译文
比较的范围。为了满足各自的训练需求,默认配置与混合配置在训练示范的收集流程和执行模式上都不同。默认配置使用 RoboTwin 自带运动规划器收集的示范;混合配置则使用基于 CaP 的数据收集,因为这种方式天然地为每条示范配上一段在 RoboTwin 仿真器中可执行的、与之对齐的程序,从而支持混合动作中的代码执行部分。因此,我们的比较评估的是两种配置的整体,并不能单独分离出混合执行的效果。
解释
这是对第 3.1 节结论的重要限定,作者在这里明确承认了。一个能分离两种因素的实验设计是:用 CaP 采集的示范训练模型,然后分别用默认模式(只执行动作块)和混合模式评测;或者用同一模型、同一数据,只切换推理方式(真机 Fold and Stack Towels 实验正是这样做的)。原文没有在仿真中做这样的对照,因此“混合执行提升了随机设置下的鲁棒性”这一结论在仿真上并不严格成立。
原文
Code and Action Usage. Table 12 reports the fraction of simulation steps driven by each of the two control channels during the hybrid evaluation in Table 1: execution of code produced by the code expert and direct action chunks generated by the action expert. On successful episodes, code drives 14.5% of steps in the clean setting and 35.0% in the random setting. The gap follows from Table 1. In the clean setting, the action expert alone is already strong (80.8%), so there is little for code to add. Admitting code in fact lowers success to 63.1%, which we attribute to the code channel inheriting the failure modes of the low-level perception and control primitives it calls, and the arbiter admits a code slice on validity alone, without predicting whether it will outperform the action chunk it displaces. In the random setting, where direct action degrades to 20.6%, the code channel carries a third of the physical time on the episodes that succeed and lifts success to 29.2%. Executing the code expert's generation thus complements the action expert especially where learned actions are less reliable, here under visually out-of-distribution scenes. Pooled over all episodes, code execution accounts for only 8.5% of steps in the clean setting and 5.6% in the random setting. The pooled share is dominated by failed episodes, which run to the step cap and accumulate roughly five times as many steps as successful ones (52.7k vs. 11.5k in clean, 55.5k vs. 8.4k in random), almost all under direct action.
译文
代码与动作的使用比例。表 12 报告表 1 的混合评测中,两条控制通道各自驱动的仿真步所占的比例:一条是执行代码专家生成的代码,另一条是动作专家生成的直接动作块。在成功的回合中,代码在干净设置下驱动 14.5% 的步,在随机设置下驱动 35.0% 的步。这一差距可以从表 1 得到解释。在干净设置下,单靠动作专家就已经很强(80.8%),代码能补充的空间很小。引入代码实际上把成功率降到了 63.1%,我们把原因归结为:代码通道继承了它所调用的底层感知与控制原语的失败模式,而且仲裁器只根据有效性接纳代码切片,并不预测它能否比被替换的动作块做得更好。在随机设置下,直接动作的成功率降到 20.6%,代码通道在成功回合中承担了三分之一的物理时间,并把成功率提高到 29.2%。因此,执行代码专家的生成结果能补充动作专家,尤其是在学到的动作不太可靠的地方,这里就是视觉上分布外的场景。若把所有回合合并统计,代码执行在干净设置下只占 8.5% 的步,在随机设置下只占 5.6%。合并后的比例被失败回合主导:失败回合会一直运行到步数上限,累积的步数约为成功回合的五倍(干净设置下 52.7k 对 11.5k,随机设置下 55.5k 对 8.4k),而且几乎全部由直接动作驱动。
解释
数字核对。按表 1 的成功率加权验算表 12 的“全部”行:干净设置 0.631\times11{,}549+0.369\times52{,}687\approx26{,}729,与表中 26,720 吻合;代码占比 (0.631\times11{,}549\times14.5\%+0.369\times52{,}687\times6.3\%)/26{,}720\approx8.5\%,吻合。随机设置 0.292\times8{,}400+0.708\times55{,}483\approx41{,}735,与 41,716 吻合;代码占比 (0.292\times8{,}400\times35.0\%+0.708\times55{,}483\times3.7\%)/41{,}716\approx5.5\%,与 5.6% 基本吻合。“约五倍”:52.7/11.5=4.6,55.5/8.4=6.6,平均约 5.5 倍。解读要点。成功回合中代码占比高(随机设置 35%)、失败回合中代码占比低(3.7%),二者之间是相关关系,不一定是因果关系:可能是“代码执行导致成功”,也可能是“容易成功的回合里代码更容易通过检查”。口径疑问。表 12 的“每回合步数”在数万量级(成功回合平均 11,549 步),而图 37 中两个成功回合的帧编号分别只到 2,224 和 1,457。两者的“步”显然不是同一个单位(可能一个是物理仿真子步,一个是控制步或渲染帧),原文没有说明。
原文
Qualitative Examples of Code–Action Interleaving. Figure 37 shows two qualitative examples of how code execution and direct action generation interleave within an episode. The top progress bar shows an episode of blocks_ranking_rgb, where the three blocks must be arranged in a row in red, green, blue order. We observe that the three pick-and-place cycles are almost entirely carried out by code execution, with direct action generation taking over around a stage transition. For tasks of this kind that involve regularly shaped objects and well-structured motions, the integration is able to utilize the stable and smooth behavior yields by the CaP actions. The bottom progress bar shows an episode of pick_dual_bottles, where the two bottles must be picked up and held together. Here, code execution correctly localized the bottle and moves the gripper to it but fails to secure the grasp due to its less regular shape. Direct action generated from the model then takes over and completes the grasp, after which code execution resumes to finish the episode.
译文
代码与动作交替的定性示例。图 37 展示了两个定性示例,说明在一个回合内代码执行与直接动作生成如何交替。上方的进度条是 blocks_ranking_rgb 的一个回合,任务要求把三个方块按红、绿、蓝的顺序排成一排。我们观察到,三次“抓取—放置”循环几乎完全由代码执行完成,直接动作生成只在一次阶段切换附近接管。对这类涉及形状规则的物体、动作结构清晰的任务,这种整合能够利用 CaP 动作带来的稳定、平滑的行为。下方的进度条是 pick_dual_bottles 的一个回合,任务要求把两个瓶子拿起并握在一起。这里,代码执行正确地定位了瓶子并把夹爪移过去,但由于瓶子形状不够规则,没能抓牢。随后模型生成的直接动作接管并完成了抓取,此后代码执行恢复,完成了这个回合。
解释
这两个例子分别对应表 11 中混合模式收益最大和收益一般的两类任务。Blocks Ranking RGB 在随机设置下从默认模式的 32 升到混合模式的 82,正是因为方块形状规则、颜色明确,Molmo 加 Contact-GraspNet 的感知—抓取链路非常可靠,而且“按颜色排序”这类语义要求在代码中写得一清二楚。Pick Dual Bottles 在随机设置下两种模式都是 28,混合没有带来提升,这与“代码抓不牢、要靠动作补救”的观察一致。注意算法 2 的逻辑:代码执行“没有抛出异常”就会把阶段记为完成。在 pick_dual_bottles 的例子中,代码执行后并没有抓住瓶子,如果此时没有异常,该阶段会被标记为完成,之后能接管的只有直接动作。这正是这里观察到的“动作接管完成抓取”。
表 12:表 1 中 RoboTwin 任务的混合评测里,各控制通道驱动的仿真步所占比例。“代码执行”表示由执行代码专家生成的代码所驱动的步;“直接动作”表示由动作专家直接生成的步。
仿真步占比
设置回合集合代码执行直接动作每回合步数
干净全部8.5%91.5%26,720
成功14.5%85.5%11,549
失败6.3%93.7%52,687
随机全部5.6%94.4%41,716
成功35.0%65.0%8,400
失败3.7%96.3%55,483
原表注:Share of simulation steps driven by each control channel in the hybrid evaluation of RoboTwin tasks in Table 1. Code exec denotes steps driven by executing the generated code from the code expert; Direct action denotes steps directly generated by the action expert.
表 12 解读
表按“设置 \times 回合集合”分六行,前两列数字是代码执行与直接动作所占步数的比例(每行相加为 100%),最后一列是该集合中每个回合的平均步数。验算和口径问题见上文 J.2 的解释框。最醒目的对比是随机设置下“成功”行与“失败”行:成功回合中代码占 35%,失败回合中只占 3.7%。失败回合平均 55,483 步,是成功回合(8,400 步)的 6.6 倍,说明失败回合基本都跑满了步数上限。随机设置下成功回合比干净设置下更短(8,400 对 11,549),可能是因为代码执行的轨迹更直接、更快。
blocks_ranking_rgb_progress.pdf
pick_dual_bottles_progress.pdf
图 37:RoboTwin 2.0 任务上混合动作的定性示例。每一行展示表 1 混合评测中的一个成功回合。上:blocks_ranking_rgb。下:pick_dual_bottles。
原图注:Qualitative examples of hybrid actions for RoboTwin 2.0 tasks. Each row shows one successful episode from the hybrid evaluation in Table 1. Top: blocks_ranking_rgb. Bottom: pick_dual_bottles.
图 37 解读
每行是一个回合的若干帧仿真画面,下方的数字是帧编号,再下方的色条标出各时段由哪个通道控制:绿色“Code exec”是代码执行,紫色“Direct actions”是直接动作。上行 blocks_ranking_rgb(帧 0 至 2,224):从开始到第 1,050 帧之后不久由代码执行,中间大约第 1,378 至 2,070 帧之间由直接动作接管,最后一段又回到代码执行。画面中机械臂依次把红、绿、蓝方块放到一排。下行 pick_dual_bottles(帧 0 至 1,457):同样是“代码—动作—代码”三段,中间的直接动作段对应代码抓瓶子失败后由动作专家补救的过程。

K智能体标注的细节(Agentic Annotation Details)

K.1底层原语

原文
Figure 38 shows the two API surfaces for the parallel-gripper (left) and the dexterous-hand (right) embodiments. They share ten semantic contact verbs but differ in their low-level primitives: end-effector poses for the gripper and relative motion for the dexterous hand. Each API call declares the contact events it produces, which is what allows a program to be grounded against a demonstration.
译文
图 38 展示了平行夹爪本体(左)和灵巧手本体(右)的两套 API。二者共享十个语义接触动词,但底层原语不同:夹爪使用末端执行器位姿,灵巧手使用相对运动。每个 API 调用都声明了它会产生哪些接触事件,正是这一点使程序能够与示范相对应。
解释
“接触事件”是连接程序与示范的桥梁。例如 grasp 声明“闭合一次”,release 声明“张开一次”,regrasp 声明“先张开再闭合”。在 YAM 数据上,夹爪的开合有传感器记录,所以一段程序隐含的开合事件序列可以与传感器记录逐一比对(附录 K.2)。这是标注流水线中唯一一种“客观”的校验手段。人类数据没有这样的传感器,只能让标注员从画面推断接触。
low_level_primitives.pdf
图 38:面向平行夹爪和灵巧手的“仅声明”API。
原图注:Declaration-only APIs for parallel grippers and dexterous hands.
图 38 解读
左栏是 ParallelGripperApi,右栏是 DexterousHandApi,都标注了“Declaration only; types omitted”(只有声明,省略类型),函数体都是 ...。共享的十个语义动词(Semantic APIs):pick、grasp、place、release、regrasp、insert、attach、handover、rotate、press。唯一的签名差别在 rotate:夹爪版是 rotate(object_name, angle_deg, side),灵巧手版多一个 axis 参数,因为灵巧手可以绕不同的语义轴转动物体。夹爪的底层原语:move_arm(side, target_pos, target_rpy)(移到绝对位姿)、freespace_move(双臂同时移动)、servo_ee_delta(side, delta_pos, duration_s)(相对位移)、go_home、close_gripper、open_gripper;另有感知与状态接口 get_robot_state、sample_grasp_pose、select_best_grasp、detect_objects_oneshot。灵巧手的底层原语:move_arm(side, direction, distance=None)(沿语义方向移动)、goto_relative(side, object_name, relation, clearance=None)(移到相对某物体的语义位置)、close_hand、open_hand;没有感知接口,也没有坐标。两套 API 的根本差异来自数据:YAM 数据有精确的关节和末端位姿,可以写出坐标;人类视频只有单目画面和重定向后的手部关节,位姿不可靠,只能写语义方向。不过,附录 E 中 Tianji–Sharpa 下游任务的代码标签(如图 25)又用到了带坐标的 freespace_move 和 servo_ee_delta,说明下游灵巧手标注并没有严格限于右栏这套 API。

K.2标注智能体的提示词与协调者协议

原文
The framework has two agents: a VLM annotator that writes program lines for one subtask slice per call, and an agentic coordinator that audits annotator output between rounds and grows the skill library (Stage 1). After the library is frozen, the same annotator runs over the remaining corpus and over downstream demonstrations, reusing cached subtask code where the embodiment's evidence verifies it. The full API docstrings and skill documentation are appended to the system prompt and omitted here.
译文
这个框架有两个智能体:一个 VLM 标注员(annotator),每次调用为一个子任务切片编写程序行;一个智能体式的协调者(coordinator),在各轮之间审核标注员的输出,并扩充技能库(第 1 阶段)。技能库冻结之后,同一个标注员在其余语料以及下游示范上运行,并在本体证据能够验证时复用缓存的子任务代码。完整的 API 文档字符串和技能文档附在系统提示之后,这里从略。
解释
下面六个灰色框是原文中的提示词要点(原文以带标题的框给出,每条是“标题 + 说明”的形式)。它们是对提示词的概括,并非逐字的完整提示。按第 2.3 节,标注员是 Gemini 3.1 Pro,协调者是运行 Claude Opus 4.8 的 Claude Code。
原文
Shared annotator system instructions
  • Role and output Read the frames of one subtask and express the observed actions in Python using only the robot API and documented skills. Output only new code for this subtask, continuing the preceding program.
  • Grounding and coverage The subtask annotation states what happens; the frames ground which objects and how they move. Cover the whole frame span and invent nothing that neither source supports.
  • Abstraction level Prefer the single highest-level call whose contact effects match; never wrap a semantic verb in the primitives it already contains. Use bare open/close primitives only when no verb fits.
  • Repetition and literals Write repeated in-place twisting as one literal loop with the count read from the frames. Hand sides and loop counts must be literals. End on a complete statement.
  • Static validation Code is checked without execution: syntax in program context, existence of called functions, argument binding, and vocabulary membership of literals. On failure, the annotator sees its output along with the identified problems and rewrites the slice.
译文
标注员的共享系统指令
  • 角色与输出 阅读一个子任务的帧,只用 robot API 和有文档的技能,把观察到的动作用 Python 表达出来。只输出这个子任务的新代码,接续前面的程序。
  • 依据与覆盖 子任务标注说明发生了什么;帧则确定是哪些物体、如何移动。要覆盖整个帧区间,不要编造两个来源都不支持的内容。
  • 抽象层次 优先使用接触效果相符的、层次最高的单个调用;绝不要把一个语义动词拆写成它本身已经包含的原语。只有当没有合适的动词时,才使用裸的开 / 合原语。
  • 重复与字面量 把重复的原地拧转写成一个字面循环,次数从帧中读出。手的左右和循环次数必须是字面量。以一条完整的语句结束。
  • 静态校验 代码不经执行就接受检查:在程序上下文中的语法、所调用函数是否存在、参数绑定是否正确、字面量是否属于词表。检查失败时,标注员会看到自己的输出和发现的问题,并重写这个切片。
解释
这几条规则塑造了全文所见代码的风格。“优先最高层调用”解释了为什么代码中大量使用技能和语义动词而不是一串底层原语;“循环次数必须是字面量、从帧中读出”解释了 for _ in range(8)、range(6) 这样的写法;“以完整语句结束”是为了切片之间能顺利拼接。“静态校验—重写”是一个自我修复回路。但附录 E 图 26 中出现的“[auto-repair] … inserted from the sensor”说明还存在另一种依据传感器自动补写的修复,这里没有提到。
原文
System prompt for egocentric human demonstrations
  • Setting Two hands, ‘left' and ‘right', seen from a head-mounted camera. No contact-event list is given; infer every contact from the frames and the annotation, judging object motion relative to the scene.
  • Contact semantics pick/grasp close a hand (pick lifts, grasp holds in place); place/release/insert/attach open it; regrasp opens then closes; press closes then opens; handover closes the receiver before opening the giver.
  • Motion and naming Motion is purely semantic: move_arm along a documented direction, goto_relative at a documented relation to a named object, rotate about a documented axis. No coordinates; objects are named in plain language.
  • Conventions Calls return None. Distances only when visibly measurable; angles as semantic constants.
译文
针对人类第一视角示范的系统提示
  • 设定 两只手,‘left' 和 ‘right',从头戴相机看过去。不提供接触事件列表;要根据帧和标注推断每一次接触,并以物体相对于场景的运动来判断。
  • 接触语义 pick/grasp 使手闭合(pick 会提起,grasp 原地握住);place/release/insert/attach 使手张开;regrasp 先张开再闭合;press 先闭合再张开;handover 先闭合接收的手,再张开给出的手。
  • 运动与命名 运动是纯语义的:move_arm 沿文档中规定的方向移动,goto_relative 移到相对某个具名物体的、文档中规定的关系位置,rotate 绕文档中规定的轴转动。不用坐标;物体用自然语言命名。
  • 约定 调用返回 None。只有当距离在画面中可以明显测量时才写距离;角度用语义常量。
原文
System prompt for YAM robot demonstrations
  • Setting Two arms seen from a top-down camera. The sensor-derived gripper-event list is authoritative: emitted code must reproduce every open/close transition on the named arm, in order, with nothing added, dropped, or reordered.
  • Event gaps If the annotation implies a contact the event list lacks, write the approach and transport in full but do not emit the missing open/close call.
  • Contact semantics grasp/pick close; place/release open; regrasp opens then closes; insert closes then opens; handover closes, closes, then opens. A repeated same-arm cycle in the list is one literal loop.
  • Perception and motion Every pose used by a motion call comes from a perception result earlier in the program; nothing is hard-coded. Absolute single-arm, synchronized two-arm, and small relative motion each have their own primitive.
译文
针对 YAM 机器人示范的系统提示
  • 设定 两条手臂,从俯视相机看过去。由传感器得到的夹爪事件列表具有权威性:生成的代码必须按顺序复现指定手臂上的每一次开 / 合切换,不得增加、遗漏或调换顺序。
  • 事件缺口 如果标注暗示了一次事件列表中没有的接触,就完整写出接近和搬运过程,但不要输出缺失的开 / 合调用。
  • 接触语义 grasp/pick 闭合;place/release 张开;regrasp 先张开再闭合;insert 先闭合再张开;handover 闭合、闭合、再张开。列表中同一手臂重复出现的循环写成一个字面循环。
  • 感知与运动 运动调用所用的每个位姿都必须来自程序中更早的感知结果,不允许硬编码。绝对的单臂运动、同步的双臂运动和小幅相对运动各有自己的原语。
解释
两套系统提示的对比揭示了标注质量的不对称。YAM 有传感器记录的夹爪事件作为“标准答案”,代码的开合必须与之严格一致,因此 YAM 标注在接触层面是可验证的。人类数据没有这种依据,接触全靠标注员从画面推断,标注误差可能更大。两处语义不一致。第一,insert 在人类提示中只“张开”,在 YAM 提示中却是“先闭合再张开”;handover 在人类提示中是“先闭合接收手再张开给出手”(一次闭合加一次张开),在 YAM 提示中是“闭合、闭合、再张开”(多出的一次闭合大概是给出手在交接前先抓住)。同名动词在两种本体上的接触语义不同,这可能是有意为之(与各自数据的事件记录方式匹配),但原文没有解释,读者在对照两种本体的代码时需要留意。第二,YAM 提示要求“每个位姿都来自感知结果、不允许硬编码”,但附录 B.3 的程序切片(如 fold_edge_over 中的 [0.15, 0.0, 0.0])和附录 E 的代码标签(如图 24 中的 target_pos)都直接写了数值。合理的理解是:这条规则只约束“绝对位姿”,而相对位移可以写成实测的字面量(图 24 的注释写的就是“measured travel”)。
原文
Per-slice user message
  • Overall task [task instruction]
  • Current subtask [human subtask annotation]
  • Frames [ordered frames with timestamps]. On YAM, the frame before each gripper event is captioned with the event index, kind, arm, and time.
  • Program so far [code written for the preceding subtasks]
  • Egocentric directive Decide from the frames and annotation where each hand closes on and opens off an object, and produce exactly those contacts with the visible motion around them. A comment-only slice is correct only when the hands neither move nor touch anything.
  • YAM directive Observed gripper events: [ordered list, repeated cycles collapsed to a count]. Reproduce this sequence exactly, with the visible motion around it; a brief blip with nothing in hand gets the minimal call.
  • Output Continue the program with this subtask's code only.
Only the directive for the current dataset is included.
译文
每个切片的用户消息
  • 总任务 [任务指令]
  • 当前子任务 [人工子任务标注]
  • 帧 [带时间戳的有序帧]。在 YAM 上,每个夹爪事件之前的那一帧都配有说明:事件序号、类型、手臂和时间。
  • 已有程序 [为此前子任务编写的代码]
  • 第一视角指令 根据帧和标注,判断每只手在何处握住、在何处离开某个物体,并恰好生成这些接触以及它们前后可见的运动。只有当双手既不移动也不接触任何东西时,只含注释的切片才是正确的。
  • YAM 指令 观测到的夹爪事件:[有序列表,重复的循环折叠为计数]。精确复现这个序列以及它前后可见的运动;手中无物时的短暂开合只需最简调用。
  • 输出 只用这个子任务的代码接续程序。
每次只包含当前数据集对应的那条指令。
解释
用户消息的结构说明了标注员每次看到什么:任务指令、子任务描述、该切片的关键帧、已有的程序(保证连贯),以及针对本体的指令。“重复循环折叠为计数”是为了配合“重复写成字面循环”的规则:例如事件列表中“闭合—张开”重复 8 次,就直接告诉标注员“\times 8”。YAM 上“在每个夹爪事件之前的帧配上说明”,相当于把传感器信息直接嵌进图像序列,帮助标注员把画面中的动作与开合事件对齐。
原文
Annotation under the frozen library
  • Same prompt, frozen vocabulary The system prompt above is used unchanged, with the skill block fixed to the frozen library. Inherited skills are called as plain functions with robot as the first argument.
  • No new vocabulary The annotator may not invent helper names; a maneuver no verb or skill expresses is written from primitives. Extending the library is the coordinator's decision.
  • Verified reuse A per-task cache of subtask code is consulted before each call. A variant is reused only when the embodiment's evidence verifies it: on YAM, the contact events its code implies match the observed events (mirrored forms accepted, motion arguments re-derived); on egocentric data, its hand-motion profile is within a fixed distance of the new slice, and loop templates are never reused. A miss triggers the ordinary call, whose output is written back.
译文
在冻结技能库下的标注
  • 相同提示,冻结词表 上面的系统提示原样使用,只是技能部分固定为冻结后的技能库。继承下来的技能以 robot 为第一个参数、作为普通函数调用。
  • 不得新增词汇 标注员不得自创辅助函数名;如果某个动作没有现成的动词或技能能表达,就用原语写出来。扩充技能库由协调者决定。
  • 经验证的复用 每次调用前先查阅一个按任务划分的子任务代码缓存。只有当本体的证据能够验证时,才复用某个已有版本:在 YAM 上,要求其代码隐含的接触事件与观测到的事件一致(允许左右镜像,运动参数重新推导);在第一视角数据上,要求其手部运动轮廓与新切片的距离在一个固定阈值以内,并且循环模板永不复用。未命中时就进行正常的调用,并把输出写回缓存。
解释
“不得新增词汇”这条规则与附录 E 的下游代码标签存在明显张力:那些标签中出现了 hold、reach_toward、rotate_layer、squeeze_tongs、read_number 等既不在技能库、也不在附录 K.1 API 中的名字。要么下游标注使用了按任务扩充的 API(原文未说明),要么这条规则在下游没有被严格执行。“循环模板永不复用”是因为循环次数是从画面读出的字面量,不同回合的重复次数可能不同(例如拧盖子拧 5 圈还是 6 圈),复用会带来错误的计数。“允许镜像”指左右手对调的同一动作也算匹配。
原文
Coordinator protocol (Stage 1, skill discovery)
  • Role A coding agent under a fixed written protocol that dispatches rounds, audits their output, and owns the skill library. It never writes program code and never edits the annotator, prompts, API, or verification code.
  • Round lifecycle Dispatched, gated (all episodes annotated and scored), audited, done (admissions applied and logged). The library is frozen from dispatch to done, and the next round starts only then.
  • Audit Read the round summary, then per-task results, then the stored trace of each questionable slice (frames seen, code written, verification outcome). Classify each as detector limit, annotator misread, abstraction-level break, vocabulary gap, or segmentation artifact. Only vocabulary gaps feed skill proposals.
  • Skill admission A candidate is a straight-line composed function over the API, distilled from observed call sequences. It is admitted if generic (episode-specific values lifted to parameters), recurrent across at least two tasks, at the right level (a maneuver, not a task recipe), and not a duplicate. Its contact contract is derived by expansion; on YAM the evidence slices must also reconcile against observed events. Admitted skills enter the annotator prompt from the next round.
译文
协调者协议(第 1 阶段,技能发现)
  • 角色 一个在固定书面协议下工作的编码智能体,负责分派各轮任务、审核其输出,并管理技能库。它从不编写程序代码,也从不修改标注员、提示词、API 或校验代码。
  • 每轮的生命周期 已分派 \to 关卡(所有回合都已标注并打分)\to 已审核 \to 完成(准入的技能已应用并记录)。从分派到完成期间技能库保持冻结,下一轮只有在此之后才开始。
  • 审核 先读本轮汇总,再读逐任务结果,再读每个可疑切片的存档轨迹(看到的帧、写出的代码、校验结果)。把每个问题归入以下类别之一:检测器局限、标注员误读、抽象层次错误、词汇缺口、切分伪影。只有“词汇缺口”会转化为技能提案。
  • 技能准入 候选技能是从观察到的调用序列中提炼出的、基于 API 的直线式组合函数。只有满足以下条件才被准入:通用(与具体回合相关的值被提升为参数)、至少在两个任务中反复出现、层次恰当(是一个动作,而不是一套任务配方)、且不与已有技能重复。它的接触契约通过展开推导得出;在 YAM 上,作为证据的切片还必须与观测到的事件相符。被准入的技能从下一轮起进入标注员的提示。
解释
协调者的设计体现了“职责分离”:它只能决定“技能库里有什么”,不能直接改代码或改规则,避免一个智能体既当运动员又当裁判。五类问题的归类中,只有“词汇缺口”(现有动词和技能都表达不了某个反复出现的动作)才会催生新技能;其他问题(检测器漏检、标注员看错、抽象层次不当、子任务切分不当)都不靠新增技能解决。“直线式组合函数”指技能内部没有条件分支和循环,只是若干 API 调用的顺序组合,这与附录 B.3、B.4 中展示的技能定义一致。“接触契约通过展开推导”指把技能展开成原语后,自动算出它会产生哪些开合事件,用于后续的缓存匹配和 YAM 事件比对。“至少两个任务”这一门槛保证了技能的通用性,这也是最终两个库加起来只有 50 个技能的原因。

L局限性与未来工作(Limitations and Future Work)

原文
Program Grounding and Skill Coverage. The code stream learns from automatically annotated demonstrations and a curated skill library, making its planning quality dependent on annotation accuracy and skill coverage. Generated programs can select an appropriate skill yet contain incorrect arguments, as illustrated in Appendix F.1; syntactic validity therefore does not ensure correct execution. Future work could use execution feedback to improve program grounding and discover or refine reusable skills beyond the initial library.Predictive Robustness and Hybrid Execution. Structured planning improves WAM performance but does not eliminate sensitivity to visual distribution shifts. Hybrid execution improves robustness under RoboTwin randomization, yet reduces clean-setting performance (Appendix J.2). This trade-off reflects both the reliability of the underlying primitives and the limitation of selecting code based on validity without estimating its advantage over the action chunk. Learning to arbitrate using execution reliability and expected task progress could better exploit the complementary strengths of the two modes.
译文
程序依据与技能覆盖。代码流从自动标注的示范和人工整理的技能库中学习,因此其规划质量取决于标注的准确性和技能的覆盖面。生成的程序可能选对了技能,参数却是错的,如附录 F.1 所示;因此语法上有效并不保证执行正确。未来的工作可以利用执行反馈来改善程序的依据,并在初始技能库之外发现或改进可复用技能。预测的鲁棒性与混合执行。结构化规划提升了 WAM 的性能,但并没有消除它对视觉分布偏移的敏感性。混合执行提高了在 RoboTwin 随机化下的鲁棒性,却降低了在干净设置下的性能(附录 J.2)。这种权衡既反映了底层原语的可靠性,也反映了只根据有效性选择代码、而不估计它相对于动作块的优势这一局限。学习一个利用执行可靠性和预期任务进度进行仲裁的机制,可以更好地发挥两种模式的互补长处。
解释
作者坦承了两类主要局限,都与前文的分析一致。第一类关于代码本身的质量:附录 F 的指标(实体 F1 0.534、原语 F1 0.365)表明代码“像样但不精确”。第二类关于混合执行:随机设置上升、干净设置下降,仲裁器不评估“代码是否更好”。文中称技能库是“人工整理的”(curated),而第 2.3 节和附录 K 描述的是由协调者智能体自动提炼的过程;这里的“curated”应理解为“经过筛选的”,而不是人工编写的。
原文
Toward Continual Agentic Learning. Our real-world hybrid evaluation is limited to YAM platform due to the lack of code-as-policy systems for dexterous hand, and the current system does not learn online from its own interactions. The unified design nevertheless offers a basis for coupling program generation and world prediction with execution feedback and model updates. Future work could explore iterative plan revision, skill-library expansion, and autonomous learning through sustained environmental interaction, with broader evaluation across tasks and embodiments.
译文
走向持续的智能体式学习。由于缺少面向灵巧手的 code-as-policy 系统,我们的真实世界混合评测只在 YAM 平台上进行;当前系统也不能从自身的交互中在线学习。尽管如此,这一统一的设计为把程序生成和世界预测与执行反馈、模型更新结合起来提供了基础。未来的工作可以探索迭代式的计划修订、技能库扩充,以及通过与环境的持续交互实现自主学习,并在更多任务和本体上进行更广泛的评测。
解释
这一段解释了为什么真机混合评测只有一个任务:灵巧手的 API 只有语义级运动(附录 K.1),没有可执行的实现。展望部分描绘的是一个闭环:模型生成代码并执行,根据执行结果更新技能库和模型。这正是标题中“agentic”(智能体式)的更完整含义,而本文目前只实现了其中“生成代码”和“有条件地执行代码”两步。

译者附注:原文数字核对与阅读提示汇总

本附注汇总译稿各解释框中分散提到的数字核对结果、对比口径问题,以及原文自身的错误或前后不一致之处,供快速查阅。所有判断都基于 arXiv v1 的源码与 PDF。一、已核对且无误的数字。以下数字都用原文给出的数据重新计算过,与原文一致:表 1 的六行“平均”列,以及表 11 逐任务数据重算得到的 12 个列平均(如 AW-0 干净 80.80、混合随机 29.24),表 11 的全部粗体标记;正文中的 16.0、17.7 个百分点差距,46% 与 25% 的保持率;表 2 的五行平均与 25.1 个百分点的领先;表 3、表 4 的平均(55.6、54.5);图 5、图 6 中 w/o code 的平均 32.9;延迟比 0.55/0.23=2.39 与增量 0.04/0.19=21.1\%;表 5 的 210 个视觉 token(3\times70)与 16\times128=2{,}048 的注意力宽度;表 6 的有效批大小 48\times6\times9=2{,}592 与 RoboTwin 的 16\times6=96;表 7 的各项合计与每回合切片数;表 12 按成功率加权后的“全部”行;附录 E 八个任务的评分细则满分均为 1.0。表 7 的合计时长 2,913.22 与两项之和 2,913.21 相差 0.01,属四舍五入。二、原文的错误与前后不一致。
位置问题与说明
第 3.2 节“based on Algorithm I”是交叉引用笔误:引用的是附录 I 的节标签(字母 I),本意应是附录 I 中的算法 1、2。
附录 E 图 24YAM 任务 Fold and Stack Towels 的代码标签调用 fold_over_and_crease(robot, 'pink towel')(2 个参数),但该技能属于人类技能库(表 9),定义需要 6 个参数,YAM 技能库(表 8)中并没有它。与“在冻结的 YAM 技能库下标注”和静态签名检查的描述不符。
附录 E 图 25灵巧手任务的代码标签使用带坐标的 freespace_move、servo_ee_delta(属于平行夹爪 API),与附录 K.1“灵巧手只有语义级相对运动、不用坐标”的描述不符;第 13、21 行注释说“再降低最后几厘米”,参数却是零位移。
附录 E、F.2、K.2下游代码标签大量使用既不在附录 K.1 API、也不在表 8、表 9 技能库中的函数(hold、reach_toward、rotate_layer、scan、read_number、observe、is_free、grasp_tool、squeeze_tongs 等),而 K.2 规定“标注员不得自创辅助函数名”。附录 F.2 把 hold 称为“标注的技能”,它并不在技能库中。
附录 E 图 26Deal Poker 的代码标签含“[auto-repair] gripper events under-emitted by the coder; inserted from the sensor”注释,表明流水线中存在依据传感器自动补写开合调用的步骤,正文和附录 K.2 都没有描述。
附录 E 图 28Solve Rubik's Cube 设定为“只打乱一个面一次”,示范代码却包含两次 rotate_layer(右层和顶层),原文未解释。
附录 H 图 36第五行(Deal Poker)图中说明为“抽牌时牌堆滑出”,正文文字为“交接时左手没接稳”,所述阶段不同。
附录 K.2同名接触动词在两种本体上的语义不同:insert 在人类提示中为“张开”,在 YAM 提示中为“先闭合再张开”;handover 分别为“闭合接收手再张开给出手”和“闭合、闭合、再张开”。原文未解释。YAM 提示要求“位姿不得硬编码”,而示范程序中普遍写有数值位移(应理解为只约束绝对位姿)。
附录 J.2 表 12“每回合步数”在万级(成功回合平均 11,549 步),而图 37 中两个成功回合的帧编号只到 2,224 和 1,457,两处的“步”显然不是同一单位,原文未说明。
附录 L称技能库为“curated”(人工整理),与第 2.3 节、附录 K 所述由协调者智能体自动提炼的过程不完全吻合。
附录 F.2“matching the annotated skill, object, and hand assignment”与下一句几乎逐字重复,属行文冗余。
三、对比口径与结论边界。第一,仿真中的“混合执行提升鲁棒性”混杂了训练数据差异。混合配置使用 CaP 程序执行采集的示范,默认配置使用 RoboTwin 运动规划器采集的示范。附录 J.2 明确承认这一比较“不能分离混合执行本身的效果”,但摘要、第 3.1 节和结论都以“混合执行增强鲁棒性”表述。真机上的混合对比(同一模型、只换推理方式)更干净,但只有 Fold and Stack Towels 一个任务(84.4% \to 90.6%),且没有方差。第二,AW-0 的优势几乎全部来自代码流。图 5 中去掉代码的 V\to A 变体平均只有 32.9,低于 DreamZero(46.0)和 \pi_{0.5}(43.6)。也就是说,AW-0 自身的视频—动作部分并不比现有方法强,正文没有讨论这一点。第三,“代码优于自然语言”的幅度有限。图 7 中去注释、去技能、自然语言子目标三种变体的平均分别约为 62.8、63.3、63.6,彼此只差约 1 分,都远高于不用规划流的 32.9;从“子目标”到“完整代码”只再提高约 7.5 分。大部分收益来自“有一条联合去噪的规划流”本身。图 7 的纵轴从 40 开始,柱高差异在视觉上被放大。第四,基线的训练配置差异较大。各方法按各自官方配方微调:\pi_{0.5}、EgoScale、WLA 50 个 epoch,DreamZero 10 个 epoch,AW-0 20 个 epoch;EgoScale 冻结视觉—语言主干;WLA 的动作专家随机初始化,没有任何动作预训练。AW-0 的预训练数据中有约 1,900 小时与 YAM 平台同型号的机器人数据,而基线的预训练检查点没有。这些因素都可能影响表 2 的差距,原文没有逐一讨论。第五,正文对结果的概括有时与数字不完全吻合。第 3.2 节说 VLA 基线“尤其 \pi_{0.5}”语义理解较强,但在计数任务 Flip Scoreboard 上 \pi_{0.5}(26.3)低于 EgoScale(40.8)。第 3.3 节在视觉条件消融中挑出 Pack Backpack 和 Solve Cube 作为差距最大的例子,而 Fold Towels 的差距(23.1)与 Pack Backpack(25.0)相近。第六,定性证据的局限。附录 G.1 的三个变体初始观测“相似但不相同”,来自不同试验,图 33 中 w/o Code 一行的画面亮度和视角明显不同;附录 G 的视频比较都只有单个例子,没有统计。附录 B.5 的 t-SNE 中,切片嵌入本身包含程序文本,按技能名聚类在一定程度上是意料之中的。附录 F.1 的“技能调用比例”29.2% 把所有以 robot 为首参数的调用都算作技能调用,口径偏宽。第七,缺失的复现信息。记忆槽数 K、记忆替换概率 p、混合模式的每阶段失败上限 R 均未给出;YAM 微调的 GPU 数(因而有效批大小)、Tianji–Sharpa 的批大小与学习率未单独给出;真机混合执行所用的感知与控制原语如何实现未说明;预训练数据的来源与是否公开未说明;评测 Replace Lightbulb 时两种条件(灯泡坏 / 好)各占多少比例未说明。另外,按 \alpha=0.5 的混合分布,式 (6) 中两种重要性权重都不超过 2,表 6 的截断阈值 4.0 在归一化前实际上不会生效。