具身图灵机:用有状态代码实现机器人递归自我改进的 Code-Only-as-Policy
Embodied Turing Machines: Stateful Code for Robot Recursive Self-Improvement
编码智能体离线写成的COAP,在RoboDojo 42个任务上成功率70.24%,测试时无模型。
- 多数策略把VLA或VLM留在控制回路,状态不能直接检查,也不能把同一套显式规则用到不同回合。作者要问:状态若能从图像和本体感觉测准,决策能否全部写成代码。
- COAP用代码测量并保存机器人、环境和任务状态,再由冻结的共享库算出动作;测试时不调用模型。Claude Opus 5.5离线改代码,只合并验证集上达到余量的改动,且不用测试集。
- 在RoboDojo 42个双手任务上,COAP总成功率70.24%、progress score 75.45,五维均高于Table 2该列最高基线。记忆与精度的差距较大,长时程较小;随机布局低于标准布局。
- 作者指出结果都在仿真中,真机需重测几何与接触参数;每个新任务有离线开发成本;上界取决于状态表示和代码是否重试。评测用RoboDojo与官方榜,未报告评审模型与ε_q。
- 基准
- RoboDojo
- 指标
- SRProgress Score
论文提出 Code-Only-as-Policy(COAP),把具身世界视为图灵机,用代码从相机图像和本体感知中测量并跟踪机器人、环境与任务状态,全部决策由代码完成,测试时无需 VLM 或 VLA 参与。作者称其具备显式状态、可控执行与可扩展三项优势,适合作为递归自我改进(RSI)的载体。在 RoboDojo 的 42 项双臂任务上,所得代码库成功率达 70.24%。
深度解读
这篇论文试图解决什么问题?
核心问题是状态可测时,决策能否写成跨回合复用、测试时无模型的代码。
若机器人与环境状态能被准确表示,决策能否全部写成代码,并在测试时不调用模型的情况下跨回合复用。
- 场景:作者把机器人与环境看成 Embodied Turing Machine:纸带是环境状态与机器人状态,策略是读写该纸带的规则。现有策略多把模型留在控制回路,VLA 把观测映射到动作,Agent Harness(Agent-as-Policy 或 Harness VLA)在运行时查询 VLM。
- 现有不足:作者称 VLA 的映射留在权重里,不能直接检查或编辑;Agent Harness 虽有文本记忆,VLM 与 VLA 仍是黑盒。既有代码策略或在每个回合在线写新代码,或从感知模型、仿真器 oracle 取状态(Figure 2)。
- 观察:作者称两类状态都可观测:机器人状态来自本体感觉,物体位姿可由 RGB 与测得几何恢复。物体重排只改变纸带,同一套规则仍适用。
- 提出:Code-Only-as-Policy(COAP)。代码从相机图像与本体感觉测量并跟踪状态,每一步决策都由代码作出;不同任务共享一个库,同一程序跑一个任务的各回合,测试时无 VLM 或 VLA。作者称这适合作为递归自我改进(RSI)的介质,也可为 VLA 与 Agent Harness 产生成功轨迹。
有哪些相关研究?
相关工作分VLA、VLM控制、代码策略,以及代码智能体与机器人基准。
视觉-语言-动作模型
- 端到端策略:RT-2、OpenVLA、π0、π0.5 学习语言条件的 visuomotor 策略;作者还提到后续基础模型继续扩大数据与训练。
- 作者的对比:作者称 VLA 不能直接检查或编辑,每次改进都要新数据和新训练。LIBERO-PRO 被引来说明基准成功可能反映记住的训练配置。作者还引在新任务上训练可能降低旧任务表现的结果,并称 COAP 可把失败回溯到变量、把接受的修改合并进代码。
用 VLM 做机器人控制
- 规划与工具:ReAct 把推理与动作交错;Toolformer 让模型调用工具;SayCan 用可学习 affordance 落地语言规划;Inner Monologue 把环境反馈送回规划器。
- 近期 harness:作者提到让 VLM 调用解析或学习到的原语,以及把 GPT-6 Astra 直接当作具身策略评测。作者的批评是:执行中反复查询模型,同一提示也有随机性,且回合成本高。本文只在离线用模型写代码。
代码策略
- 运行时写代码:Code as Policies、ProgPrompt 提示语言模型写调用感知与控制 API 的代码;VoxPoser 写组合空间价值图的代码。后续工作加入执行反馈、重复生成和技能发现。PyRUA-Lean 按回合逐格写代码,Skill2Real 在每个决策阶段用冻结技能记忆组新程序。作者称这些系统在运行时由模型写程序,状态来自检测器或 SAM。
- 离线一个程序、状态在代码外:RHO 与 EmbodiedSWE 由 coding agent 离线写一个程序。作者称 RHO 的状态来自 SAM 与 Molmo,EmbodiedSWE 的求解器读仿真器 oracle;这些感知模型是黑盒,不确定性不由代码控制。COAP 改为自己测量状态,测错就改测量代码。
代码智能体与基准
- 代码作为接口:CodeAct 把可执行代码当作动作空间;另有工作把工具暴露为代码 API。Voyager 通过交互增长代码技能库;软件智能体靠测试与 diff 做长程仓库任务。作者称这些环境以文件、测试结果或游戏 API 显式提供状态,机器人则必须从传感器测量。
- 机器人 RSI:RoboRSI 用 manager、planner、engineer、reviewer 和 no-regression gate 做回路。作者称其执行时仍由 VLM 决策,通过门的改动只是引导黑盒,测到的行为不一定是运行时行为。
- 基准:LIBERO 测终身学习中的知识迁移;RoboTwin 2.0 生成域随机化的双手任务;RoboCasa365 扩展家庭仿真。RoboDojo 在同一协议中覆盖记忆、精度、开放指令、泛化与长时程操作。
基线与基准:实验对照官方 RoboDojo leaderboard 上不低于 π0.5 的 23 个条目,分成 Agent Harness、World Action Model 与 VLA(Table 2)。评测基准是 RoboDojo 的 42 个双手任务。
作者把 COAP 放在 Figure 2 的第三格:一个程序、状态由代码测量、跨回合复用。作者称代码足够稳健且跨回合适用时,运行时不需要 VLM 或 VLA。
论文如何解决这个问题?
COAP把状态放进代码变量,用共享库作规则,并由编码智能体离线改代码。
把机器人与环境实现为 Embodied Turing Machine:代码变量保存状态,源代码充当规则。共享库 Code-Only-as-Policy(COAP) 在运行时冻结,由 coding agent 离线改进(Figure 3)。开发不使用基准测试集。
观测、状态与转移
- 观测:每步 o_t 含指令、三路 RGB(头部与两腕)、关节角、末端位姿和夹爪指令回声。
- 三类状态:环境状态记物体位姿、尺寸、类别及空间关系,并记测量的误差、来源与时间;机器人状态记各臂关节角、末端位姿、夹爪开度及可达位姿。二者构成纸带。任务状态记当前阶段、物体所分配的手臂、重试次数,以及任务必须记住的信息(如每个杯子下的颜色);它对应图灵机内部状态,不属于纸带。各任务中三部分形式相同。
- 更新:机器人状态每步来自本体感觉;环境状态由感知层库测量;任务代码在执行中更新任务状态。
- 转移:θ 定义 (xt+1, at) = Fθ(xt, ot),a_t 是下一段轨迹。运行时 θ 冻结,只有 x_t 变化,所以一个程序跑该任务的每个布局,包括留出的测试布局。
用代码测量环境
- 候选物体:感知是基于 NumPy 与 OpenCV 的普通代码。每帧用测得关节角把机器人网格投影进图像并遮住其像素;与当前桌面颜色不同的像素形成候选区域,下沿落在桌面上的连通域成为物体候选。
- 位姿拟合:边界像素的射线与桌面平面相交,得到桌面上的位置(式 2)。再把该类物体的已知三维形状放到该位置附近,搜索位置与偏航,保留与观测区域重叠最大的拟合。
- 常数与状态:相机模型、机器人网格、物体形状和桌高随基准发布,回合间不变,是规则中的常数。哪些物体在、在何处,则每回合从图像测量。
- 保持与重测:测量得到类别、位置、偏航、尺寸和置信度,写入回合级 WorldState。被手臂遮挡的物体保留上次位姿。需要毫米级精度的任务在最终接近前用腕部相机重测。
跨任务共享一个库
- 分层:任务都操作同一形式的状态,依赖向下。任务程序规定子目标顺序、任务特有决策和恢复条件;下层完成抓取、搬运、放置、推动、倾倒,以及感知与运动。一次 transfer 会展开为候选生成、逆运动学与碰撞过滤、抓前重测、接近、闭合、短抬与保持检查、搬运、放置、释放和最终核验。
- 三种扩展:组合已有模块;继承已有任务并只覆盖一条决策;给共享函数加默认关闭的参数。例如 lift_dir 允许斜向抬起,默认仍是垂直上抬(Code Example 2)。
- 兼容:对不传入新参数的任务,扩展前后在单元测试夹具上的执行轨迹必须相同(式 3)。作者称旧任务因此按构造保持原行为。§3.3 把跨任务共享写成 83% 的行,并指向 §4.3.3。
离线回溯与验收
- 谁写代码:Claude Opus 5.5 coding agent 编写库和每个任务的全部代码,自己跑测试、评估并调试,回路中无人工。引言称该编码智能体为 Opus 5.5 Max,并规定不得为单个回合写 hack、测试时不得使用 oracle 状态。
- 分支:第 k 轮已接受代码为 θ_k。每个 agent 在自己的 git worktree 中查看失败开发运行的记录状态,定位有问题的变量或规则,提出 diff。各分支是完整可运行代码,可在相同条件下并行评估。
- 仿真前检查:任务代码对数值场景执行,确认每阶段到达目标状态;每个路点检查逆运动学解与碰撞。通过后再在验证回合上并行评估。
- 验收:调试与选择分开。agent 在自定开发集上看视频,并把测量状态与仿真器真值比较;选择比较验证划分上的成功次数。接受条件为 Jq(θk+Δ; Vq) ≥ Jq(θk; Vq) + εq,J_q 是任务 q 的成功次数,ε_q 是高于重跑噪声的余量。论文未给出 ε_q 的数值。达到则成为下一轮基线,否则不合并。作者称式 3 保护未被针对的任务,该规则保证被针对任务改进,因此接受的步骤不降。
论文做了哪些实验?
RoboDojo上COAP总成功率为70.24%,五维均高于Table 2该列最高基线。
实验设置
- 基准:RoboDojo 的 42 个双手任务,分 Memory(6)、Precision(8)、Open instruction following(8)、Generalization(12)、Long-Horizon(8)。每任务三个 seed,每个 seed 50 个布局。Generalization 中一半布局随机化:新物体实例、新房间与桌面外观、最多 20 个干扰物。
- 输入:仅三路 RGB、本体感觉(关节角、末端位姿、夹爪指令回声)和语言指令。测试时无深度、无分割、无模型服务。开发阶段可用仿真器真值改进感知,测试时不用 oracle 状态。
- 代码来源:引言中的 Opus 5.5 Max、§3.4 中的 Claude Opus 5.5 coding agent 离线写代码;开发不使用测试集。调试在 agent 自定的开发集上进行。
- 基线:官方 leaderboard 上不低于 π0.5 的 23 个条目(Table 2),分 Agent Harness、World Action Model(WAM)和 VLA。§4.3 称各类别对比使用该类别总成绩最高的条目。基准没有的测量,作者改引先前工作的数字。
- 指标与评审:SR 是整项任务成功的回合占比(%);Score 是基准的 progress score。数字由官方 evaluation client、judges 和 summary script 产生。论文未说明 judges 是哪个模型或是否人工,也未报告与人工的一致性。
- 未写明的量:论文未报告 RSI 轮数、ε_q 的取值,以及编码智能体的调用次数。
主结果
据 Table 2。下表只列 COAP、两个 Agent Harness、各类总成绩最高的 WAM 与 VLA、一个较低的 WAM,以及总 SR 最低的 π0.5。Long-Horizon 与 Score 放在表后。
表格较宽,可左右滑动
方法 Memory Precision Open Generalization 总SR COAP 89.9 75.1 64.1 65.7 70.24 PhysicalRSI 46.6 32.5 24.9 15.6 31.38 GPT-6 Astra 38.7 4.0 31.0 30.5 22.48 Awomo-0.5 41.2 33.5 22.9 23.8 29.64 Simate-beta 33.0 26.9 8.5 27.9 27.96 OpenWAM-α 9.1 9.2 1.1 14.8 11.92 π0.5 4.7 5.5 1.7 8.2 6.93 - 作者的总括:作者称 COAP 总成功率为 70.24%,比当时 SOTA(31.38%)高 38.9 个百分点;摘要与结论写作 38.9% above。Table 2 的 vs. best 行是总 SR +38.86、Score +39.18;COAP 的 Score 为 75.45。作者还称比最强 WAM(29.64%)和最强 VLA(27.96%)高出 40 个百分点以上。
- 分维:作者称五维成功率都最高。vs. best 为 Memory +39.6、Precision +41.6、Open +33.1、Generalization +35.2、Long-Horizon +13.0。Long-Horizon 上 COAP 为 56.4。Generalization 为 65.7%,其中标准布局 77.3%、随机布局 54.1%;Open 为 64.1%。作者称边际最小的是 Long-Horizon。
- 表的范围:省略 VPP2-Preview、Liber-0 Preview、Liber-0 Lite、InternW0-Δ、ME-Brain-1.0、Rex-M1 Preview、DM0.5、GalaxeaVLA (G0.5)、Xiaomi-Robotics-1、Meituan-Robotics-0、SimpleMemVLA、Hy-Embodied-0.5-VLA、KinRT、Spatial Forcing、VLAct、StarVLA-PI_v3、InternVLA-A1.5。Figure 5 的 90%、47%、33% 与 75%、33%、27% 是对类别总成绩最高条目的取整,不是该列最高基线;Table 2 中 Memory 列有 50.3(VPP2-Preview)。
显式状态与在线执行
- 测了什么:相对 §4.3 所说的类别总成绩最高条目,比较状态是否写成变量、失败能否回溯,以及在线计算(Figure 5、Figure 6、附录 Table 3)。
- 结果:作者称 Memory 上 COAP 为 90%、Agent Harness 为 47%、VLA 为 33%;Precision 上为 75%、33%、27%。同一程序在测量状态上成功 63%、在 oracle 状态上成功 83%,作者称每修好一项测量就缩小这一差距。出错回合中,程序自己发现问题的占 76%,用新方法重试的占 34%。控制步中位时间 0.3 ms;一回合计算量为 VLA 的 0.8–2.4%、Agent Harness 的不到 0.1%。附录称模型侧是按已报告规模的估计,不是实测;Figure 6 的 FLOP 刻度在文本转换中上标丢失,这里不引用。
- 作者解读:作者认为显式变量使依赖记忆或精确测量的任务更容易处理;状态被跟踪后,失败可以回到上次检查点并用另一种抓取重试。附录 Table 3 把出错回合分成:重试后成功 12%、重试后失败 22%、发现并报告 42%、触及步数上限 1%、未报告 22%。
失败类型
- 分类:把 Table 2 运行中的失败回合归到能避免该失败的最小改动(Figure 11、§5.2)。感知错误 35%,接触错误 27%,逻辑不完整 29%,代码设计差 8%。作者称状态测量的限度占 62%,代码逻辑的限度占 37%。
- 例子:随机场景中飞镖盘被认成耳机;夹爪夹住衣摆后软布滑出;推一次即停,尽管检查发现方块仍偏转;固定尺寸阈值滤掉小手表。
- 作者解读:作者称上界由状态表示是否准确、全面,以及代码是否察觉失败并改用另一种方法决定。感知误差与只有 RGB 输入有关;可变形物体的接触表示粗。
库扩展与并行分支
- 复用:作者称新任务所运行代码的 83% 来自库、17% 是任务代码(Figure 7)。抓取按方式而不是按物体来写(Figure 8)。附录 Table 7:任务程序 23.5k 行、物体族 28.5k、操作 5.4k、感知 5.3k、运动 3.3k;感知与运动被 40 个任务程序全部使用。
- 从零加任务:库冻结后,无程序的新任务在 15 小时内平均成功 47%,无演示、无训练;Figure 7 的基线线作者标为 schematic。同批任务上,最强 VLA 在演示上训练后为 4.7%。作者引 OpenVLA:每任务在 8 张 A100 上微调 5–15 小时。store_tools_in_toolbox 从未得到成功程序。
- 分支搜索:作者称单次改动很少有帮助;分支越多,可接受改动更常出现、增益更大、墙钟更早,GPU 时间更多(Figure 10)。两个及以上变体的决策,五例中有四例找到可接受改动。接受线是相对父程序在 30 个回合中至少多成功 4 个。图中标注 8 个分支同时跑、round 1 约 1.7 h,并行三轮约 5 h,顺序 15 次评估约 26 h。百分比与分支数 k 的列对应在文本转换后对不齐,不逐格引用。
其他消融与分析
- 按步数上限(附录 Table 4,表内未点名 Agent Harness 与 VLA):200–500 步(12 任务)COAP 78.1%、Agent Harness 47.3%、VLA 21.9%、GPT-as-policy 26.5%;550–800(15)为 78.4%、30.6%、38.0%、26.9%;900–1900(15)为 52.0%、13.2%、22.1%、14.8%。
- 自身代码未改的旧任务,同一布局上从 78.4% 到 79.9%(Cochran–Mantel–Haenszel 检验 p=0.16;作者称没有任务显著变化)。含后来清理的任务则从 80.0% 到 81.4%。
- 有程序的 40 个任务:标准布局验证 76.7%、测试 74.9%;随机布局验证 55.2%、测试 52.8%。库冻结后逐次合并,总成功率从 66.5% 到 70.24%。最忙时 12 个任务并行,用时为顺序的 17%。
- 附录 Table 6 的验证成功率:make_toast 在合并时为 50 再到 77;hang_mugs 为 7、50、57;sweep_blocks 为 0、60、50;fill_pen_holder 为 0、20、27。
- Table 9:plug_in_charger 与 store_tools_in_toolbox 无程序,SR 为 0.0,Score 栏为“–”。organize_table 的 SR 为 0.0、Score 为 51.5;pack_objects_into_box 的 SR 为 0.7。cover_blocks、press_by_number、swap_T、swap_blocks、pour_by_language 的 SR 为 100.0。
- 作者引用先前工作,不是本文实验:π0.5 在五个真实任务上顺序微调后,平均分从 86.9 降到 31.4。
有什么可以进一步探索的点?
作者指出仅仿真、每任务有开发成本,上界受状态表示与代码逻辑限制。
作者指出的局限与后续方向
- 仅仿真(§5.4):全部结果在仿真中。感知依赖基准公开的相机参数、机器人网格和物体尺寸;作者称这是主要限制。真机上这些量要重测,夹持宽度、搬运速度等接触参数要再调。
- 离线开发成本(§5.4):在线执行快,但每次迭代都要评估和修改。作者对比可直接当策略使用的 GPT,称 COAP 对每个新任务都有开发成本。
- 泛化(§5.4):作者称代码的泛化能力可能有限,目前只在 70.24% 的回合成功。部分差距来自不完整逻辑和差的代码设计,例如只在编写情形下成立的硬编码值。程序在验证布局上开发,从未在测试布局上开发,因此未见过的布局成功率更低是预期之内,尤其是带新物体、新房间和干扰物的随机布局(54.1%,其标准布局为 77.3%)。标准布局上,测试 74.9% 接近验证 76.7%。
- 编码能力与回路(§5.2):作者称当前编码能力有限,离线 RSI 回路需要进一步优化,以便写出更好的代码。
- 上界的两个因素(§5.3):状态表示得是否准确、全面,以及代码逻辑是否稳健,例如是否察觉失败并重试。感知误差与只有 RGB 有关;可变形或复杂物体的接触难以表示。
- 结论中的判断(§6):作者称随着编码智能体变强,这一上界会上升;并认为 COAP 可以成为 VLA、Agent-as-Policy 和 Harness VLA 的数据引擎。
实验覆盖范围
- 成功率来自 RoboDojo 的 42 个双手仿真任务,五个维度,每任务三个 seed、每个 seed 50 个布局;Generalization 的一半布局做了随机化(§4.1)。
- 对照是官方 leaderboard 中不低于 π0.5 的 23 个条目,分成 Agent Harness、WAM 和 VLA(Table 2)。测试输入是三路 RGB、本体感觉和指令,无深度、分割或在线模型。
- 代码由 Claude Opus 5.5 coding agent 离线编写;开发集由 agent 自定,选择用验证划分,开发不使用测试集(§3.4、§4.1)。42 个任务中 40 个有程序(附录)。
- 失败分析覆盖 Table 2 运行中的失败回合,按最小改动分成四类,并给出官方视频中的例子(Figure 11)。附录还按步数上限、恢复结果、新任务时间线和逐次合并报告了数字。
- 论文写明数字来自官方 evaluation client、judges 和 summary script;未报告 judges 是哪个模型、ε_q 的取值、RSI 轮数、编码智能体调用次数,以及评审与人工的一致性。§5.5 讨论用 COAP 轨迹训练其他策略,未报告训练后的成功率。Figure 7 的基线线和右侧能力增长标为 schematic;Figure 6 的模型计算量是按已报告规模的估计,不是实测。
总结一下论文的主要内容
COAP用显式状态上的共享代码作策略,RoboDojo总成功率70.24%,测试时无模型。
作者把机器人连同环境看成 Embodied Turing Machine,并用 Code-Only-as-Policy(COAP) 把策略写成冻结代码:状态由代码测量,动作由代码计算,测试时不调用 VLM 或 VLA。
- 问题:VLA 把状态留在权重里,Agent Harness 在运行时查询模型。作者认为,若环境位姿和机器人本体感觉能写进变量,决策就可以是可检查的规则,并且同一程序能跑一个任务的不同布局。
- 做法:共享库分层承担感知、运动和抓放;任务程序只写顺序、特有决策和恢复条件。新任务可以组合、继承或加默认关闭的参数。Claude Opus 5.5 在离线回路中根据失败记录改代码,只合并验证集上超过重跑噪声余量的 diff,且不看测试集、测试时不用 oracle。
- 主结果:RoboDojo 42 个双手任务上,总成功率 70.24%,progress score 75.45(Table 2)。作者称这比当时 SOTA 的 31.38% 高 38.9 个百分点;表中 vs. best 为 +38.86。五维都高于该列最高基线,Memory 为 89.9%,Precision 为 75.1%,Long-Horizon 的差距最小(56.4%,vs. best +13.0)。随机布局为 54.1%,低于 Generalization 标准布局的 77.3%。
- 其余观察:新任务所运行代码的 83% 来自库。出错回合中程序自己发现的占 76%。失败里,作者把 62% 归到状态测量、37% 归到代码逻辑。两个任务没有程序,SR 为 0.0。
- 作者的结论:作者把 COAP 视为不同于 VLA、世界动作模型和 Agent Harness 的方向,并称显式状态、执行可控和库可扩展使它适合 RSI。上界仍由状态表示和代码稳健程度决定;作者认为编码智能体变强后上界会上升,轨迹也可供给其他策略做训练数据。