Act-Observe-Rewrite: Multimodal Coding Agents as In-Context Policy Learners for Robot Manipulation

本文提出了“行动 - 观察 - 重写”(AOR)框架,使多模态大语言模型能够在无需梯度更新、演示或奖励工程的情况下,通过视觉观察和结构化结果诊断失败原因并直接重写底层 Python 控制代码,从而在机器人操作任务中实现高效的上下文策略学习。

Vaishak Kumar

发布于 2026-03-06
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇文章介绍了一种名为 Act–Observe–Rewrite (AOR) 的新方法,它让机器人学会“自我反省”和“自我修改代码”,从而学会如何抓取和移动物体。

为了让你更容易理解,我们可以把这项技术想象成一个正在学习做菜的“天才厨师学徒”

1. 核心概念:不是“死记硬背”,而是“边做边改菜谱”

传统的机器人学习(比如现在的很多 AI 机器人)通常是这样工作的:

  • 传统方法:就像让厨师背一本厚厚的“菜谱书”。如果书里没写“怎么切红色的西红柿”,厨师就完全不会。或者,如果厨师切坏了,他需要人类教练(奖励机制)告诉他“不对,重来”,然后他通过成千上万次的试错,慢慢调整肌肉记忆(梯度更新)。这需要大量的数据和算力。

  • AOR 方法(本文的创新)
    想象一下,这位厨师学徒手里拿的不是死板的菜谱,而是一张可以随意涂改的“手写代码清单”

    1. Act (行动):他试着做一道菜(比如把红方块从桌上拿起来)。
    2. Observe (观察):菜做失败了(比如手滑了,或者抓偏了)。他不仅看到结果,还拿起“监控录像”(关键帧图片)和“操作日志”仔细查看。
    3. Rewrite (重写):这是最神奇的一步。他不像以前那样只是“下次小心点”,而是直接拿出笔,把那张“手写代码清单”上出错的那一行字划掉,重写了一行新的逻辑
      • 比如,他发现:“哦,原来是因为我把‘向下’的方向搞反了,代码里写的是‘向上’,所以我永远抓不到。” -> 他立刻修改代码。
      • 或者:“原来是因为我把红色的易拉罐看成了银色,因为光线问题。” -> 他修改颜色识别的逻辑。

简单说:AOR 不是让机器人“练肌肉”,而是让机器人“改大脑里的说明书”。

2. 为什么这很厉害?(三个比喻)

比喻一:修车 vs. 换零件

  • 以前的方法:机器人抓不住东西,就像车抛锚了。以前的方法可能是给引擎加更多的油(调整参数),或者换个轮胎(选择技能),但不知道引擎哪里坏了。
  • AOR 的方法:机器人自己拿着扳手,看着引擎盖下的图纸(代码)。它发现:“啊!这根线接反了(坐标轴搞错了)!”然后它直接重新接线
    • 结果:它不仅能修好,还能解释为什么坏了(“因为 OpenGL 的坐标系和 OpenCV 不一样”),这是以前那些只会“猜参数”的 AI 做不到的。

比喻二:学骑自行车

  • 传统 AI:像是一个蒙着眼睛的人,摔倒了,教练喊“向左一点”,他再试,再摔,再喊。需要摔几千次才能学会平衡。
  • AOR 机器人:像是一个聪明的孩子。摔了一跤,他站起来看地面,发现:“哦,刚才我转弯太急了,而且我看路的时候眼睛没盯着前方。”于是他在脑子里重写了“转弯规则”和“视线规则”,下次直接按新规则骑,可能一次就学会了。

比喻三:侦探破案

  • 当机器人失败时,它不像个只会抱怨的傻瓜,而像个侦探
    • 它看着失败的录像(图片),对比自己的操作代码。
    • 它说:“看,这里有个红点(目标),但我抓到了旁边。为什么?因为我的代码里把‘下’当成了‘上’。这就是系统性错误。”
    • 它不需要人类告诉它“你抓错了”,它能自己通过逻辑推理找到代码里的 Bug

3. 实验结果:它真的学会了吗?

研究人员在电脑模拟的实验室里测试了三个任务,结果非常惊人:

  1. 任务一:拿起红方块 (Lift)

    • 第一次尝试:完全失败,手悬在半空够不着。
    • AI 的反应:看了图片,发现是“深度传感器”算错了距离,以为物体很远。
    • 修改:在代码里加了一个“距离修正值”。
    • 结果:第二次尝试就成功了,之后100% 成功
  2. 任务二:把可乐罐放进箱子 (PickPlaceCan)

    • 问题:机器人把红色的易拉罐看成了银色,或者把箱子里的红色标记当成了目标。
    • AI 的反应:发现颜色识别逻辑错了,把“找银色”改成了“找红色”,并且学会了忽略箱子里的干扰标记。
    • 结果:修改后100% 成功
  3. 任务三:叠方块 (Stack)

    • 难度:要把红方块稳稳地叠在绿方块上,误差不能超过 2 厘米。
    • 过程:机器人试了 20 次,每次失败都修改代码。它修好了视觉偏差,修好了抓取逻辑。
    • 最终成绩91% 成功
    • 剩下的 9% 为什么没成功? 机器人发现:“哎呀,我放下去的时候,手指碰到了下面的绿方块,把它推歪了。”它知道问题在哪,但还没找到完美的“不碰触”的放置策略。这就像厨师知道“火候大了会焦”,但还没找到完美的“关火时机”。

4. 总结:这意味着什么?

这篇文章告诉我们,未来的机器人可能不需要人类教它做每一件事,也不需要给它看成千上万次成功的视频。

只要给它一个能写代码的“大脑”(大语言模型),让它:

  1. 动手做
  2. 看录像找茬
  3. 自己改代码

它就能像人类工程师一样,通过逻辑推理来解决物理世界的问题。这种方法不需要昂贵的训练数据不需要人类设计复杂的奖励规则,而且因为它是改代码,人类工程师可以完全看懂它为什么这么做(可解释性)。

一句话总结
这就好比给机器人装了一个“自我纠错的程序员”大脑,它不再是通过死记硬背来学习,而是通过阅读自己的错误日志,然后重写自己的操作手册,从而在物理世界中变得越来越聪明。