AW-0:代码、未来视频与动作一起生成,代码究竟执行了吗?
把可组合技能写成代码,与未来视频和动作块联合去噪,让动作拥有结构化的子任务条件。默认模式不执行代码;hybrid 才尝试调用技能,且有效代码不等于有效物理执行。
1 · 它要填补的是技能组织,不是又加一个聊天机器人
普通 WAM 可生成视觉未来与动作,却缺少“先固定包、再拉拉链”的显式组合结构;Code-as-Policy 有组合技能,但其手写感知/控制 API 的物理能力有限。AW-0 把两者接在同一个模型里,让代码成为可学习的中间条件,而不是把所有控制委托给脚本。
Figure 1 · 三路生成与两种执行模式

- 左边约 3K 小时人机数据先被标成子任务代码;下方标注系统产生 50 个可复用技能。不是测试时由编码 Agent 重新训练机器人。
- 中间 Code / Video / Action 三专家联合生成;右上 pure 直接执行动作块,hybrid 才会在代码与动作之间切换。
- 右边八任务包含夹爪与灵巧手,但论文为每个目标任务做后训练,不是一个未经适配的通用权重完成全部任务。
| 背景 | 视频先验与技能复用缺少联合接口。 |
|---|---|
| 卡点 | 仅预测像素不能明确表达任务阶段;代码可组合却可能无法处理复杂接触。 |
| 关键改动 | 离散代码、连续视频、连续动作共同去噪;模态有向 attention;自动技能标注。 |
| 依赖 | SDAR-1.7B、Qwen3-VL-2B ViT、Cosmos-Predict2.5-2B、Wan2.2 VAE、CaP 与机器人数据。 |
| 最强证据 / 代价 | 代码表示与 mask 的内控消融有收益;需要约 3K 小时数据、额外代码标注与专家计算,仍容易受视觉分布变化影响。 |
2 · 主干:谁能看见谁,什么时候动作真的执行?
Figure 2 · 最重要的主干图:联合迭代而非先写完代码

- 当前图像同时进入 ViT 与 VAE;语言和历史代码提供语义/进度,机器人 state 提供本体状态。代码画布初始全 mask,未来 latent 和动作初始为噪声。
- 下左的 C→V→A 是模态块因果 mask:代码不读视频/动作流,视频可读代码,动作可读两者;每个专家内部允许双向。不要与 OneWM 的时间块因果混淆。
- 下右每轮固定最高置信度的一批代码 token,同时更新连续视频和动作。4 轮后再决定 pure 或 hybrid,不是按文字 token 自回归 128 次。
- 取当前三路图像、语言、本体 state,以及压缩的历史代码记忆。图像分别由 ViT/VAE 编码。
- 初始化 128 个 mask 代码 token、未来视频噪声、32 步动作噪声;真实观察保持干净。
- 4 轮联合生成:代码每轮固定 32 个最高置信 token,视频用 UniPC,动作用 Euler 更新。已固定代码不再改。
- 默认执行动作块;生成代码不作为 Python 运行,而是在迭代中条件化视频/动作表示。
- 拿新观察重规划。历史代码缓存压缩成 K 个可学习槽位;每个 episode 重置。文中没有完整给出 K 和训练历史替换概率 p 的数值。
28 层 MoT 的共同 attention 为 2048D、16 heads×128;代码/视频专家 hidden 2048,动作 1024。代码预训练 embedding、norm、FFN、词表头冻结,训练 attention 投影/调制;ViT 冻结、merger 可训。视频路径把原VAE换成冻结的 Wan2.2 VAE(48 channels),视频专家的输入输出投影重新初始化;动作专家从零开始。不要把“使用预训练专家”理解成所有主干参数都冻结。
3 · 六个公式与具体算例
统一记号:C 是代码,Z 是未来视频 latent,A 是动作;下标 0 表示干净目标,不是机器人第 0 帧。𝒞ₜ={Oₜ,L,Sₜ,Mₜ} 是当前图像、指令、状态和历史记忆。r 为代码 mask 比例;σ 是连续变量噪声水平,和环境时间 t 不同。以下数字为教学示例。
Eq.1–2 · 同一个条件下的三路目标
(代码 logits, v̂ᶻ, v̂ᵃ)=Fθ(C̃ᵣ,Zσᵥ,Aσₐ,σᵥ,σₐ;𝒞ₜ)
logits 是各词的未归一化分数;v̂ 是连续 flow 速度。代码选择离散词,视频/动作更新实数,因此“joint”不是把三者都量化成语言 token。例:同一观察下输出“固定左侧再拉右侧拉链”的程序、拉链变化的图像 latent 和双臂位移序列。
Eq.3 · 连续流匹配
X 表示视频或动作;ε 为同形状高斯噪声。视频原始 u 来自缩放 Beta(7,1),动作来自均匀分布。u=.5 时 σ=2.5/3≈.833,更多训练点在高噪区。若 X₀=2、ε=0,输入为 .334,目标速度 ε−X₀=−2;生成沿 σ 从 1 到 0 积分。
Eq.4 · 离散 mask 语言学习
只对被 mask 的位置计算交叉熵,并确保至少一个位置被 mask。例:pick(apple,right) 遮掉 apple/right 后,由图像、指令和其他可见代码补全;不是模仿任意不可见未来事件。15% batch 另有指令/程序条件 dropout,区别于目标位置随机 mask。
Eq.5 · 为什么视频噪声采样要混合?
视频预训练偏高噪;动作与代码学习可能需要更清晰的未来特征。混入均匀采样增加中低噪声覆盖,但直接改变采样会改变目标,所以还有下一式的权重。
Eq.6 · 每种模态保持自己的目标分布
wᵥ=ppre/q;w𝓰=U/q
实际权重截断到 4 并按 batch 均值归一化。例:某噪声区 ppre=1.6、U=1,q=1.3,则视频权重≈1.23,代码/动作≈.77;不是让所有模态同样偏好高噪。截断/有限 batch 使其成为稳定化的重要性加权,不应声称严格无偏。
检查:C→V→A 是否意味着部署必定先写完代码、再生成视频、最后生成动作?
不是。它约束每层 attention 的可见性;三路在同一组去噪迭代中逐渐更新。AR 是另一个独立对照,不能从箭头读出串行调用次数。
4 · 代码从哪里来?人机数据到底怎么用?
Figure 3 · Agentic annotation 是数据标注流水线

- 种子示范→编码 Agent 生成程序→协调者审计重复结构并接纳技能。技能必须跨至少两个任务出现,不能把一整个任务答案包装成技能。
- 技能库冻结后重标种子,建立 subtask→code 缓存;新片段只有接触事件或手运动证据匹配才复用。否则重新生成。
- YAM 用传感器的夹爪开闭事件作约束;人类视频没有同等传感器事件,依赖可视手运动。两类标签的可靠性不是天然相同。
| 来源 | episodes | 小时 | 任务 / 切片 | 监督 |
|---|---|---|---|---|
| YAM 机器人 | 73,101 | 1,919.30 | 279 / 986,314 | 代码、未来视频、动作 |
| 人类第一人称 | 175,541 | 993.91 | 327 / 1,089,059 | 追踪/重定向后的手动作及代码、视频;不是仅有 RGB |
| 合计 | 248,642 | 2,913.22 | 606 / 2,075,373 | 23 个 YAM+27 个人类技能;总 50 |
统一 state/action 为 64D:左右各 9D EEF pose(3 位置+6 旋转表示)、22D 手关节、1D 夹爪,共 2×32。机器人实际自由度并非 64。状态为绝对值;EEF 动作为相对 chunk 起点,手指/夹爪为绝对目标。不存在的维度置零且不参与归一化,有效维度按 1%/99% 分位缩放。人类单相机复制到三视图槽位,不能把它算成三路独立观测。
预训练 48×H100,1 epoch,effective batch 2592(每卡 6×累积 9),AdamW 1e−4;图像 224×320,9 帧(0,4,…32),只第 0 帧观测。RoboTwin 后训练 16 GPU、batch 96、100K steps;真机每任务 100 demonstrations、20 epochs。各 baseline 使用各自公开预训练与训练配方;同目标任务示范量不等于总预训练量、训练算力都严格相等。
5 · hybrid 的两个算法:有效程序也可能让表现变差
模型同时给出代码与动作;仲裁器检查代码能否接管。这里的 valid 是语法、依赖和阶段检查,不是世界模型已证明它一定能成功。
- 阶段门:已完成阶段不重跑;不能回到更早已尝试阶段;失败次数受限。
- 依赖门:引用变量在 episode 的持久命名空间已定义;感知 API 结果可跨片段保存。
- 语法门:允许的语句、非空、有变化;失败的原样片段跳过。
- 若尝试执行:丢弃本轮直接动作块,即使代码抛异常也不再执行这块旧动作;重新观察再规划。否则执行动作块。
- 状态记账:算法以无异常返回标记阶段完成,但无异常不等于物体真的到位。需要物理结果监测的改进属于未来工作。
Figure 35 · hybrid:按阶段切换,而非同时执行两种命令

- 绿色段执行代码技能,紫色段执行动作专家。例子中接近/码放较结构化,折叠主要由连续动作完成。
- 一条成功展示不能证明门控最优;真实比较只在 YAM 折毛巾给出 84.4→90.6,灵巧手缺乏对应 CaP 系统。
| 集合 | Clean 代码占比 | Random 代码占比 | 解释 |
|---|---|---|---|
| 仅成功 episodes | 14.5% | 35.0% | 成功样本更常利用代码;不能推广到所有尝试。 |
| 全部 episodes | 8.5% | 5.6% | 失败运行更长、常卡在直接动作,因此按时间汇总分母完全不同。 |
6 · 实验:三个表分开看
Figure 4 · Clean 与 Random 的方向相反

- 蓝柱是默认 AW-0,斜线柱是 hybrid。Clean 从 80.8 降到 63.1;Random 从 20.6 升到 29.2。不能只截取提升的一半。
- hybrid 训练示范收集也改成 CaP 流程,因此这不是仅改推理开关的严格单变量消融。
| 方法 | Clean SR | Random SR | 平均 |
|---|---|---|---|
| π₀.₅ | 54.9 | 27.7 | 41.3 |
| DreamZero | 33.6 | 17.6 | 25.6 |
| EgoScale | 26.2 | 2.9 | 14.5 |
| WLA | 64.8 | 3.6 | 34.2 |
| AW-0 | 80.8 | 20.6 | 50.7 |
| AW-0 hybrid | 63.1 | 29.2 | 46.2 |
50 任务,每任务 50 条 clean 示范;每设置每任务 50 rollouts,共 2,500。仿真 action 为 14D。hybrid 使用 CaP 收集示范,默认使用 RoboTwin 原规划器,所以表比较的是两套配置整体,不是纯执行模式开关。感知用 Molmo、SAM3、Contact-GraspNet 和原生控制接口;评价不读特权状态,数据收集可以使用。
| 维度 | 测试情况 | 可得结论 |
|---|---|---|
| 背景 / 桌纹 / 光照 / 高度 / 干扰物 | Random 同时变化;没有各维度独立表 | 默认下降 60.2 pp、保留率 25.5%;hybrid 下降 33.9 pp、保留率 46.3%。不可归因某一个因素。 |
| 语言跟随 / 语义推理 | 真机任务规则、颜色、顺序变化 | 有实例与任务评分,未报告独立语言 OOD 配对 SR。 |
| 载荷 / 摩擦 / 动力学 / 新本体零样本 | 未单独报告 | 不能由视觉 Random 自动推出物理鲁棒性。 |
Figure 20 · 两种真机本体与三路相机

- YAM 为双 6-DoF 臂+平行夹爪,输入头顶和左右腕部 D405;图中底部相机不使用。
- Tianji-Sharpa 使用双 22-DoF 手,头部与腕部 SHW5G。没有把机械臂和手统一成 64 个独立自由度;64D 是统一表示槽位。
| 任务 | AW-0 | π₀.₅ | DreamZero | 目标 |
|---|---|---|---|---|
| 整理水果 | 91.7 | 70.8 | 53.3 | 类别、坏果与目标 |
| 收背包 | 64.6 | 49.7 | 36.7 | 双臂固定 / 拉链 |
| 换灯泡 | 75.0 | 63.8 | 67.4 | 先判断是否损坏 |
| 折叠堆毛巾 | 84.4 | 81.7 | 79.8 | 三条折叠与颜色顺序 |
| 夹子整理水果 | 54.2 | 7.3 | 22.6 | 工具接触 |
| 发牌 | 58.3 | 13.1 | 37.1 | 双手交接与抽单张 |
| 翻记分牌 | 68.8 | 26.3 | 28.4 | 精确翻 k 次并按按钮 |
| 转回魔方一面 | 72.1 | 36.1 | 42.5 | 随机一面四分之一圈复原 |
| 平均 | 71.1 | 43.6 | 46.0 | 不是完整成功率 |
共 384 条试验/方法,但分步得分不是 Bernoulli 成败,不能用 71.1%×384 反推成功数或 Wilson 区间。任务权重、时限、人工干预与训练种子不确定性须按原协议理解;这里没有闭环在线自我学习或 ICL 单独实验证明。
7 · 附录 E:八套 rubric 到底奖励什么
Figure 24 · 长程任务的代码标注和评分不是同一件事

- 颜色连接时间段与代码阶段:分三次折叠、铺平,再按粉/棕/绿顺序堆叠。
- 评分会给一次折叠、折平三条、放一条、堆完、颜色顺序分别部分分。因此 84.4 分不能读成 84.4% 完整折叠堆叠成功。
Figure 28 · “解魔方”实验的实际难度

- 评价初始化是随机选一个面旋转四分之一圈;不是任意打乱魔方。可见颜色、放置角随机,需识别并转回。
- 评分分别奖励拿起、完整转一面、复原和放回。72.1 是平均分步分,不是任意魔方通解率。
展开逐任务权重(每任务最高 1;pp.30–36)
- 水果:移除坏果 .3+取指定果 .3+最终正确且不掉 .4。
- 背包:左右开拉链各 .15+打开 .2+装入 .2+左右关各 .15。
- 坏灯泡:测试 .1、固定 .1、旋出 .2、丢弃 .1、拿新 .1、旋入点亮 .3、松开 .1;好灯泡分支:测试点亮 .3、返回并保持 .7。
- 毛巾:折一条 .2、三条折平 .2、放一条 .1、三条成堆 .2、颜色顺序 .3。
- 夹子水果:取工具 .2、移除 .25、取目标 .25、最终正确 .2、归还工具 .1。
- 发牌:拿起 .1、交接 .2、推出单张 .3、抓住单张 .3、插入 .1。
- 记分牌:固定 .1、翻至少一张 .2、精确 k 次 .4、放开 .1、按正确按钮 .2。
- 魔方:拿起 .2、转完整四分之一圈 .3、复原 .3、放回 .2。
8 · 核心 insight 的证据与反例
Figure 5 · 代码应放在 attention 的哪一侧?

- C→V→A 使视频在代码计划条件下演化,再给动作提供特征。V→C→A 则让代码只能在世界预测之后介入。
- 总体 full 为 71.1,无代码为 32.9;并非每一任务都由 C→V→A 获胜,换灯泡 V→C→A 为 77.1,高于 75.0。
Figure 6 · 0.23 秒到底包含什么

- 同一 RTX 5090 上,joint 0.23 s、AR 0.55 s、无 code 0.19 s;包括视觉编码、联合去噪、视频解码、动作后处理。
- 联合去噪相对 AR 约 2.39× 加速,但比无 code 增加约 40 ms。该延迟不等于底层伺服频率,也不保证连续物理执行不卡顿。
Figure 7 · 注释、技能调用和普通子目标各提供什么

- 完整代码与去注释、去技能、自然语言子目标比较。完整代码在八任务均优于去注释;七任务优于文字子目标。
- Deal Poker 去技能下降到 42.0,对照完整 58.3。结构化可复用调用可能比一句子目标提供更具体的操作组织,但消融没有证明代码是唯一有效表示。
代码流用 ViT 条件比用 VAE 条件平均 71.1 vs 55.6(Table 3),支持语义视觉特征有益;joint 比 AR 为 71.1 vs 54.5(Table 4),但灯泡 AR 79.2 高于 joint 75.0。不能把平均改进说成所有任务都改进。
Figure 29 · 选对技能仍可能传错参数

- 生成代码学到了擦拭循环和技能名,但 displacement 列表多了两个元素。
- 语法可解析不代表参数维度正确;这解释了为什么 code grounding 不能只看 token accuracy 或 parse rate。
Figure 32 · 在线代码也可能语义对、语法错

- 生成段表达了左手固定魔方,但注释漏写词、又续到没有注释符的下一行。原始输出无法直接执行。
- 默认模式仍可利用代码表示生成动作;hybrid 必须经过门控。页面所展示不是作者修好后的可运行脚本。
预训练代码验证:teacher-forced token accuracy .897、自由生成 parse rate .875、Entity F1 .534、Primitive F1 .365、skill-call rate .292。打乱视觉使代码 loss 增加 1.774,说明依赖视觉,但不证明每个参数都被准确落到场景。代码语法与执行成功之间还隔着变量、单位、接触、控制器等多层条件。
Figure 36 · 六类失败:语言计划没解决接触物理

- 由上至下:抓到篮沿、拉拉链时拖走整个包、灯泡轴线不对、夹子闭合着戳水果、交接卡牌滑落、翻记分牌时失去接触。
- 这些失败涉及几何、力学与反馈,不是仅靠生成更长代码就能消除。附录建议的自适应修复不是已经实现的算法。
9 · 全文 / 附录导读与最后判断
| 范围 | 细读内容 | 本文落点 |
|---|---|---|
| A pp.17–18 | 层数、冻结策略、时间步、4 次去噪 | §2–3、延迟解释 |
| B pp.18–27 | 统一表示、50 技能;Figures 8–19 技能例与 t-SNE | §4;t-SNE 邻近不是技能因果有效性证明 |
| C–E pp.27–36 | baseline 配方、硬件、全部评分 | §6–7;Figures 21–28 同类逐任务展示 |
| F–H pp.36–43 | 代码质量、未来帧对比、失败 | §8;Figures 33/34 不是严格同初始状态配对视频 |
| I–J pp.43–47 | 仲裁算法、仿真 task-level 表、代码时间占比 | §5–6;Fig 37 两例不能替代成功率 |
| K–L pp.46–50 | 两类 API、标注提示词、协调者协议、局限 | §4;提示词是数据方法,不是读者应该执行的指令 |
最值得借鉴:用可验证接触事件约束代码标注,把任务组织与连续控制连接起来;同时用明确 mask 设计信息流。尚未做到:在线从失败学习、自动扩充技能库、任意灵巧手执行代码、鲁棒的收益预测仲裁。当前 hybrid 的“能执行就尝试”是启发式,不是规划最优性保证。
一句话自测:AW-0 与普通 Agent 调 VLA API 的区别?
代码在 WAM 内部和视频/动作共同训练、共同迭代,能够影响连续控制表示;并非仅一个外部 LLM 把字符串送给现成 VLA。hybrid 又额外接上真实 API 执行,但这个分支必须单独评估。