把 Codex、CC 搬进机器人训练? 朱玉可、Jim Fan 最新力作谈具身持续学习系统

让机器人去拿一罐可乐,听起来像一件很小的事。

但行动的每一步都可能翻车:没看清可乐罐,抓取姿态歪了,路径规划撞到了桌角,手指夹住了空气,或者好不容易拿起来,下一秒又把它放错了地方。最后给你一句很没用的反馈:任务失败

这就像程序崩了,但日志里只有一行简单的 error。你知道它坏了,却不知道它为什么坏;你想修它,却不知道该如何下手。

7月2日,由朱玉可、Jim Fan 坐镇,英伟达领衔UMich、UIUC、UC Berkeley、CMU 等机构参与的最新论文《ASPIRE: Agentic Skills Discovery for Robotics》,正是在解决类似问题。

ASPIRE 的全称是「通过机器人迭代探索实现智能体技能编程」(Agentic Skill Programming through Iterative Robot Exploration)。论文把它定义为一个机器人持续学习系统:它让具身 Agent 在「代码即策略」(code-as-policy)的范式下,自动编写和修改机器人控制程序,并把一次次调试中得到的经验,沉淀为可复用的技能库(Skill Library)。

如果说 Codex 式编程 Agent 已经能看日志、改代码、跑测试、修 Bug,那么 ASPIRE 做的,就是把这套工作流搬进机器人训练场。

它不要求机器人永不失败,而是让失败变得有价值:失败之后,Agent 能看执行轨迹、定位原因、写修复代码、重新执行验证,再把成功修复写进经验库。机器人不只是执行策略,而开始像一个会复盘的工程师。

从失败中学习:机器人终于有了「可调试日志」

ASPIRE 的第一个模块,叫机器人执行引擎(Robot Execution Engine)。

过去的机器人编程 Agent 往往只能拿到很粗的任务级反馈。系统知道这次任务失败了,却不知道失败发生在哪个基础动作上。但机器人失败很少是单点问题。它可能来自多模态感知,可能来自运动规划,可能来自抓取生成,也可能来自接触动力学。最后呈现出来都是任务失败,但修正方法完全不同。

所以 ASPIRE 把机器人执行过程拆开记录。对于每一次感知、规划、抓取和控制调用,机器人执行引擎都会保存对应的接口、输入、输出、返回状态,以及尽可能多的多模态证据,包括 RGB 关键帧、图像叠加标注、抓取候选、物体位姿和运动规划结果。

这里有一个关键设计:Agent 不会收到完整视频,而是收到每个基础动作调用前后的关键帧、标注和返回值。这样做的好处是,系统既不让 Agent 在海量视觉信息里迷路,又保留了足够定位故障的证据。

论文里举了一个很形象的例子:BEHAVIOR-1K 中的「导航并拿起收音机」任务。

机器人一开始能找到红色收音机,说明感知没问题;但它反复无法接近目标,任务卡住了。执行轨迹显示,问题不是识别失败,也不是抓取失败,而是导航接口多次返回 PLANNING_ERROR。进一步检查日志后,Agent 发现导航目标点太靠近桌子边界,大约落在桌子边缘 20 cm 内,触发了 cuRobo 的避障缓冲区,导致规划器拒绝这条路径。

这就是执行轨迹的价值。

如果只看最后结果,Agent 可能会误以为应该换感知提示词,或者换抓取动作。但 ASPIRE 看到的是:目标已经找到了,真正的问题是接近姿态不可达。

于是 Agent 写了一个「多角度接近」(Multi-Angle Approach)的修复逻辑:围绕物体采样多个接近方向,比如旋转 45°、90° 或 180°,找到一个不落入碰撞缓冲区的可达位置,再重新感知和抓取。重新执行后,机器人成功靠近收音机并完成抓取。

这不是盲目多试几次,而是基于失败证据的定向修复。

更像软件工程里的调试:不是看到报错就乱改,而是先定位调用栈,再改真正出问题的函数。

在学习中积累:属于机器人的技能库

如果 ASPIRE 只是能修好当前任务,它还只是一个机器人版编程 Agent。

更重要的是第二个模块:技能库(Skill Library)。

论文里有一句话很关键:机器人程序的失败会跨任务反复出现,但真正可复用的知识,很少是一整段任务程序。也就是说,系统不应该保存「完整拿起收音机程序」,而应该保存更抽象的修复知识。

ASPIRE 的技能库存的就是这些经过验证的修复知识。它可以是定位经验,可以是感知提示词,可以是抓取约束,可以是导航恢复策略,也可以是运动原语、场景理解流程或调试工作流。

这些类别不是人类预先写死的。论文强调,技能来自经过验证的修复:Agent 先从执行轨迹中诊断失败,再修改程序,然后在调试环境中验证修复。如果修复不仅对当前案例有效,而且具有复用价值,协调器才会把它放进共享技能库。

每个技能通常包含几类信息:失败特征是什么,什么时候该用,修复策略是什么,如果有必要,还会附上一段代表性的代码草图。

比如前面的收音机任务,ASPIRE 最后保存的不是「拿起红色收音机」这个任务程序,而是一个导航恢复模式:

当规划器在障碍物边界附近反复报错,且候选目标点可能落入碰撞缓冲区时,不要继续死磕原方向,而是围绕物体采样替代接近方向,再重新尝试感知和抓取。

这就有了迁移价值。

未来不管目标是收音机、杯子还是别的物体,只要失败模式类似,这个技能都可能派上用场。

论文中的技能库覆盖了很多类型:定位、运动原语、导航、物体级抓取、场景理解和调试。图中展示的示例包括「多物体消歧」「线性推动」「多角度接近」「交接推动」「航点跳转」「桌面感知工作流」等。

这其实是 ASPIRE 最接近人类工程经验的地方。

人类工程师不会把每次修 Bug 的完整上下文都塞进脑子里,而是记住某种模式:看到这种执行轨迹,大概率是这种原因;遇到这种场景,可以先试这个修法。

ASPIRE 让机器人也开始拥有这种「经验压缩」能力。

论文还提到一个协调器-执行者架构。协调器管理共享技能库,并把任务分发给多个执行者 Agent。每个执行者负责写程序、执行、诊断和修复。但执行者之间并不交换完整聊天记录或原始任务轨迹,它们只通过技能库共享可迁移经验。

这也很重要。因为如果每个 Agent 都共享全部历史,上下文窗口很快会爆掉;但如果只共享被压缩过、验证过的技能,后续任务就能在有限上下文里继承之前的经验。

也就是说,ASPIRE 不是让机器人记住所有失败,而是让它学会把失败整理成可复用的知识。

积累而后进化:举一反三的进化式搜索

第三个模块是进化式搜索(Evolutionary Search)。

论文为什么需要它?因为基于执行轨迹的调试虽然比盲修强很多,但也容易陷入局部循环。Agent 可能不断修补同一种失败策略,而不是跳出来尝试完全不同的解法。

ASPIRE 的做法是,把调试变成一个小规模的程序进化过程。

在每一轮中,编程 Agent 会基于当前任务、已有技能库、历史上表现最好的程序,以及之前执行留下的失败轨迹,提出一组候选程序。论文里把这个候选集合称为种群,大小是 K。

每个候选程序都会被送进机器人执行引擎执行。执行后,系统会得到两个东西:一个任务分数,以及一个新的执行轨迹包。然后下一轮搜索会基于表现最好的程序和剩余失败模式继续生成新候选。

这和普通的「多试几次」不一样。

普通重试可能只是重复生成程序,赌下一次模型采样更好;ASPIRE 的进化式搜索是有记忆、有证据、有选择压力的。它会保留更好的候选,利用失败轨迹指导下一轮,并在最后把通过验证的修复模式抽取进技能库。

论文中的算法流程可以翻译成更直白的话:

先执行初始程序,拿到当前最好分数和执行轨迹;把这个程序放入历史集合;然后进行多轮搜索,每轮让 Agent 基于表现最好的程序和失败记录提出 K 个修复候选;逐个执行这些候选,更新历史集合;如果某个程序达到成功阈值,就停止搜索;最后在验证集上重新验证,并从整个搜索过程里提取经过验证的修复模式。

这里还有一个细节:ASPIRE 区分调试集和验证集。

这类似软件工程中的开发集和测试集。Agent 可以在调试环境上修改程序,但最终需要在验证环境上重新检验。只有通过验证的修复,才有资格成为技能。

所以 ASPIRE 并不是把一次偶然成功写进技能库,而是试图保证这个修复真的能跨环境变化工作。

论文的消融实验也说明了这两个模块的作用。没有机器人执行引擎和进化式搜索时,系统的平均成功率只有 14%;加入机器人执行引擎后提升到 62%;再加入进化式搜索后进一步达到 72%。

这说明最核心的提升来自细粒度执行轨迹,因为它让 Agent 知道该修哪里;而进化式搜索则帮助系统在困难任务中跳出单一路径,探索更多可能的程序策略。

离机器人持续学习系统还有多远

ASPIRE 的技术路线,不能简单理解成让机器人训练用大模型写代码。

它更像是在搭一个机器人持续学习系统。

这个系统里有执行环境,有多模态执行轨迹,有编程 Agent,有调试-验证闭环,有可增长的技能库,还有面向程序空间的进化式搜索。机器人能力不再只来自一次性训练,而来自执行、失败、修复、验证和积累的循环。

论文实验也沿着这个逻辑展开。

在仿真实验中,ASPIRE 使用 Claude Code 和 Claude Opus 4.6,配合 1,000,000 token 上下文窗口,在 CaP-X 框架中编写可执行 Python 机器人程序。评测覆盖三类基准:LIBERO-Pro 用于测试短程操作在物体、目标和空间扰动下的鲁棒性;Robosuite 用于测试接触丰富的单臂和双臂操作;BEHAVIOR-1K 用于测试长程家庭移动操作。

结果上,ASPIRE 在 LIBERO-Pro 扰动任务中最高提升 77 个百分点;在 Robosuite 的双臂交接任务中,从 20% 提升到 92%;在 BEHAVIOR-1K 长程家庭任务中,最高提升 32 个百分点。

更值得注意的是零样本迁移。

ASPIRE 使用 LIBERO-90 上积累的技能库,迁移到未见过的 LIBERO-Pro Long 长程任务。在不进行额外调试、重试或任务专属技能库更新的情况下,完整技能库带来了 31% 的成功率,而此前方法约为 4%。

这说明技能库不是摆设。它确实让短程任务中学到的修复经验,迁移到了更长程的组合任务里。

论文还做了仿真到真实迁移。研究者选了 3 个在 Franka 仿真中发现的技能:易拉罐抓取、碗放到盘子上、抽屉推拉,把它们作为上下文指导提供给真实双臂 YAM 机器人上的 OpenAI Codex GPT-5.5 Agent。

结果显示,技能迁移不仅提升了成功率,也显著降低了真实机器人调试成本。例如,易拉罐抓取从 13/20 提升到 19/20,总 token 从 61.94M 降到 6.58M;抽屉推拉在无技能时 0/20,加入技能后达到 11/20,并把总 token 从 334.917M 降到 81.67M。

当然,论文也很清楚地写了局限。

ASPIRE 还不是一个完全自主的真实世界终身学习机器人。真实机器人不像仿真那样容易自动重置,也很难便宜地做大规模成功检测。系统还依赖前沿大模型,对较小模型是否有效并未验证。它也依赖预定义的感知、规划和控制接口,如果任务需要接口之外的能力,Agent 仍然受限。技能库变大后,还会出现技能过时、重复、过度具体或误导新任务的问题,需要更强的检索、剪枝、排序和重新验证机制。

但这些局限恰恰说明,ASPIRE 指向的不只是一个模型,而是一套基础设施。

这也和光轮智能创始人兼 CEO 谢晨关于具身智能的判断形成呼应。谢晨在多个公开场合中提到,具身智能的瓶颈不只是模型本身,而是数据。自动驾驶行业有大量车辆持续采集真实场景,但机器人世界还没有数百万台机器人在家庭、工厂和开放环境中不断试错。

数据不是燃料,而是教育系统;机器人训练需要一套持续学习的教育系统。

ASPIRE 的价值,正好与这个判断遥相呼应。

它不是单纯问「数据从哪里来」,而是进一步问:失败数据如何被解释?执行过程如何被结构化记录?修复经验如何被验证?验证后的经验如何沉淀成技能,并在未来任务中复用?

这才是把 Agent 工具搬进机器人训练场真正有意思的地方。

Codex 式 Agent 改变软件工程,不只是因为它会写代码,而是因为它进入了一个可运行、可测试、可反馈的工程闭环。ASPIRE 则试图把类似闭环迁移到物理世界:让机器人任务也变成可以执行、可以观察、可以调试、可以积累的系统。

未来具身智能的竞争,可能是谁能搭出更好的学习闭环:能生成足够复杂的任务,能暴露足够真实的失败,能看懂失败,能修复失败,还能把失败变成下一次成功的资产。

总而言之,ASPIRE 最值得关注的,也不是它让机器人多完成了几个基准测试,而是它展示了一种机器人能力增长新范式

——打造机器人持续学习系统。