论文精读 · Harness for Robotics · 结构化执行

MotorMind

Scaffolding General Vision Language Models for Zero-Shot Robot Manipulation

不训练策略,不用代码智能体,也不接 SAM3 之类的定位工具。一个冻结的通用 VLM 同时扮演规划、执行、监控、验证、记忆五个角色,直接输出带数值的中层动作(「向左 152 mm」「关夹爪」),交给确定性控制器执行。监控在后台并行运行,发现执行方向不对就在下一个动作边界取消排队的命令;记忆也在后台写,不阻塞执行。

  • UIUC(Tong Zhang、Huan Zhang 组)
  • arXiv 2609.38078v1
  • v1 2026-09-29
  • arXiv · 项目页
执行 监控 记忆 后台写结果笔记 读最近一份已完成的笔记 STOP 只在下一个动作边界生效,取消排队的动作,不替换动作
按原文 Figure 1 上半部分重画的示意,不是实验时间线。

做了什么

先做了一个 240 题的诊断,发现通用 VLM「选下一个动作」最弱(Qwen3.8-Flash-Next 36.25%),「判断进度」「判断完成」稍好但也不可靠。据此设计 harness:动作只提短批次、可随时修正;结果由 Verifier 结合实测机器人状态判定;Monitor 并行看着,能叫停。

放在 Harness 里看

典型的「结构化执行」:指令 → 带成功判据的子目标 → 参数化动作批次 → 确定性控制器,每层之间都是 JSON 接口。它也有很重的「评估与反馈」成分:Monitor 打断、Verifier 判定、重试或重规划。

结果

LIBERO-PRO 三个套件,基础设定 66.7%、扰动设定 53.8%,评测的零样本方法最高 13.3% / 19.2%。xArm6 真机放置任务平均 95%。换 GPT-6 Sol 作骨干到 83.3%。

最该留意的

每回合平均 223 秒,微调 VLA 约 6 秒。「与微调策略相当」只对 OpenVLA-OFT 的扰动分(51.2)成立,微调 π0.5、MolmoAct2 都在 63 左右。异步调度本身没有消融。正文图和主表里同一套 Qwen 结果的数字对不上。这两点 tex 源码里留着的作者批注自己也指出了。

问题 · 诊断 VLM 的三种局部决策 · §3 · 附录 A

通用 VLM 最不擅长的,恰好是「下一步怎么动」

VLA 在训练分布内表现很好,换物体、换布局、换任务就要再收数据微调,也没法直接吃到通用 VLM 的进步。另一条路是「智能体式」机器人:VLM 做规划,感知、定位、动作生成交给外部模型(学到的动作专家、SAM3、技能库、运动规划器、代码智能体)。论文问的是:能不能让通用 VLM 自己像遥操作员那样,看着画面直接下指令、根据反馈修正,而不靠这些外部模型?

作者先拆出 VLM 当策略时要反复回答的三个问题:下一步该做什么(动作选择),刚才那一步有没有推进子目标(进度判断),子目标完成了没有(完成判断)。他们从 LIBERO 专家示范里构造了 240 道题,每类 80 道。

原文 Figure 2三类题各一个例子。动作选择:给当前场景图和腕部图,子目标「把手里的碗放到盘子上并松开」,答案是一个原语(这里是 open gripper)。进度判断:给前后两张场景图,问是否推进了「把盘子推到炉子正前方」,二分类。完成判断:给当前两视角,问「拉开中间抽屉」是否完成,二分类。

六个 VLM 的诊断结果(表 1)

准确率 %。悬停看单次查询延迟。虚线是随机猜的水平:进度和完成是二分类(50%),动作是 14 选 1(约 7%)。

动作选择进度判断完成判断
原表数字(表 1 与附录表 A2 动作类型拆分)

解读和随机猜比,结论会不太一样

论文的结论是「动作选择最弱」。但三类题的答案空间差别很大:动作题是 6 个平移 + 6 个旋转 + 2 个夹爪状态共 14 选 1,进度和完成都是是/否。按随机水平校正后,Qwen3.8-Flash-Next 的动作选择(36.25%,随机约 7%)反而是三项里离随机最远的;进度判断 55.0% 只比 50% 高 5 个点,Hy-Embodied-VLM-1.0 的 43.75% 低于随机。论文自己也提醒「答案空间不同,这些百分比不代表内在难度」。附录的拆分更说明问题:Qwen 在 19 道旋转题上 0 / 19,平移题 23 / 48。

由此得到三条设计原则:

  1. 动作选择不可靠 → 只提短批次的动作,执行后看结果再修正;
  2. 进度和完成判断也不可靠 → 把模型判断和实测的机器人反馈结合,反复检查;
  3. GPT-6 Astra 三项都最好,但每次查询 8.7 秒,Qwen3.8-Flash-Next 0.28 秒 → 默认用快的模型,反馈频率也是决策质量的一部分。

疑点诊断题由 Codex 生成,人类只做审核

附录写明:Codex 读取专家轨迹和仿真器的私有状态,挑选时间窗口、把任务拆成局部子目标、生成题目和参考答案,再由一位人类专家审核修正。去重后有 138 个不同的子目标文本。这能保证规模,但题目的分布和难度由一个模型决定,被测的 GPT-6 Astra 与出题的 Codex 是否同源也没有讨论。

方法 · 架构 · §4.3 · 附录 B.1

同一个 VLM,按上下文和输出权限分成几个角色

原文 Figure 3任务指令先交给 Planner 拆成「子目标 + 成功判据」。Executor 针对当前子目标提出一个动作批次,Controller 把它变成机器人运动。执行中 Monitor 看新的观测,必要时发出 Alert,取消尚未执行的命令(图中 Action3 ×)。执行结束后 Verifier 评估子目标结果,决定重试(回 Executor)、成功推进,或重规划(回 Planner)。Memory 汇总执行证据与验证结果。
Planner / Replanner

拆子目标,写成功判据

把一句话任务拆成有序子目标,每个子目标包含意图的状态变化、目标描述和成功判据(比如「拿起」需要证据表明物体被夹住)。执行证据要求时,只重写还没完成的部分。

Executor

只管当前这一个子目标

读当前图像、实测机器人状态和最近几轮历史,输出一个结构化提议:对子目标的评估、是否完成、一个可选的动作批次、预期结果、置信度。它看不到整个规划问题。

Controller(不是 VLM)

确定性执行,并记录实际发生了什么

校验每条命令,把参数解析成笛卡尔运动,回报实测位移和夹爪结果。案例图里叫 Gate 的检查也属于这一层:比如离箱沿 68 mm 时拒绝继续下降。

Monitor(Motion Supervisor + Scene Monitor)

只能喊停,不能出动作

后台线程周期性地、以及每个运动步之后检查新观测。输出没有动作字段,只能发信息性告警或 STOP。附录的提示词把它拆成两个:一个只管当前这段运动要不要停,一个只管整体任务有没有偏。

Verifier

不必同意执行者的说法

看执行前后的画面和机器人自报的状态,判断这一步是否真的发生。能直接测量的结果(夹爪丢失、确认释放)可以先于模型判断定案。提示词里写着:「你不是那个机器人,没有义务同意它。」

Memory Manager

把日志压成一张便条

输入是任务、当前计划、上一版便条、此后每个动作一行的日志(含实测数值),输出新的便条给规划和验证用,永远不写动作。另有一个 Target Locator 角色只负责报告桌上有什么、在哪里。

解读「五个角色」其实是八份提示词

正文说五个角色(Planner、Executor、Monitor、Verifier、Memory),附录列出的提示词有八份:Planner、Replanner、Executor、Motion Supervisor、Scene Monitor、Verifier、Memory Manager、Target Locator。角色之间的边界靠两样东西维持:给每次调用的上下文不同,输出的 JSON 字段不同。这是 MotorMind 和「一个大提示词让 VLM 自己全包」的主要区别。完整提示词论文说放在补充材料,arXiv 版只有摘录。

方法 · 中层动作表示 · §4.2 · 附录 B.2–B.3

让 VLM 说「向哪个方向、走多远」

MotorMind 不让 VLM 输出关节角,而是在机器人基座坐标系里暴露三种参数化原语:move(一个方向词或基座轴 + 正的毫米距离)、rotate(方向或轴 + 角度)、gripper(开/关,可选宽度),另有 wait 和 home。一个批次是 𝒜t = (at,1, …, at,Kt),at,k = (τt,k, ηt,k),τ 是类型,η 是参数。下面这个提议按附录 B.3 的字段拼成,动作数值取自原文图 6 案例里 Executor 的第一批动作:

// Executor 提议的结构(字段名见附录 B.3;数值取自案例图 A06)
{
  "assessment": "...当前子目标 over_blue_cube 的进展判断...",
  "done": false,
  "command": {
    "actions": [
      { "type": "move", "direction": "forward", "distance_mm": 19 },
      { "type": "move", "direction": "left",    "distance_mm": 152 },
      { "type": "move", "direction": "down",    "distance_mm": 122 }
    ],
    // 可选默认项:平移/旋转速度、接触行为、备注
  },
  "expect": "...预期执行后看到什么...",
  "confidence": ...
}

具体的键名(如 distance_mm)是我们为了可读写的,附录只说明「一个方向词或基座轴、一个正的毫米距离」。

定位:VLM 自己画框,几何来算

需要定位时,VLM 在图像上给目标画带标签的边框;多个兼容的固定相机视角做三角化,近距离时用腕部相机细化。得到的目标偏移、不确定度和视角间分歧,用和动作同一套基座方向词交给 Executor。所以「不用 SAM3」的意思是不用外部分割模型,但仍依赖标定好的多相机和几何计算。

「意图的运动」不等于「达成的运动」

每次新提议都会拿到新观测、实测反馈和最近执行历史。完成信号只是请求评估,不等于成功。模式错误或转换错误会先退回给提议者改正,再执行。

解读中层动作把哪些事交还给了 VLM

VLA 学的是从像素到关节的连续映射;MotorMind 让 VLM 决定动作的类型和幅度,把逆运动学、轨迹插值、安全检查留给控制器。好处是可解释、可校验、可换本体(论文在 LIBERO 的 Franka 和真机 xArm6 上用同一套接口)。代价是 VLM 必须自己估距离:诊断里 Qwen 旋转题全错,失败分析里「定位」错误占比最大,案例里 Executor 把定位工具说的「向右 152 mm」写成了「向左」。

方法 · 异步调度 · §4.4 · 原文图 6

主线是串行的,监控和记忆并行

  • 串行主干。每个子目标内:观测 → 必要时定位 → 构造 Executor 上下文 → 请求提议 → 执行批次。下一个提议依赖上一个批次的实测结果,验证和重规划也跟在证据之后。
  • 并发监控与打断。Monitor 在子目标的整个尝试过程中运行在后台线程。STOP 告警要求取消正在运行的批次:控制器走到下一个动作边界停下,丢弃排队的命令。打断只是「需要重新评估」的理由,不是失败的判决。尝试结束后不等待在途的 Monitor 调用,迟到的回复直接丢弃;下一次尝试用新的监控上下文。
  • 不阻塞的记忆。每次结果评估后向后台写入者请求一份记忆摘要,下一个子目标可以先开始。规划和验证读最近一份已完成的便条,待处理的请求会合并。

回放一次真机执行:「把蓝色方块放进盒子」

事件与时刻读自原文图 6;拖动时间轴或点击事件

原文 Figure 6上面的回放就是按这张图做的。红框阶段:Executor 第一批动作走到了白碗上方,定位工具的腕部近景其实说方块在右边 152 mm;Monitor 在 31.5 s 和 45.4 s 两次报告「夹爪正对着白碗,不是蓝色方块」。恢复阶段 Executor 向右 304 mm 改正,Verifier 第二次检查才判定完成。

解读这个案例里,监控发现了错误,但没有省下时间

Monitor 在 31.5 s 就报了错,到 45.4 s 又报一次,这个子目标到 48 s 才结束,恢复阶段又用了 89 秒(49–138 s)。按论文设计,STOP 只在下一个动作边界生效,而一个 move 可以有 100 多毫米、持续好几秒。整段 266 秒里,真正搬运方块(take → put)大约 127 秒。论文没有报告 Monitor 的告警数、误报率,也没有比较「有/无 Monitor」或「同步/异步」。

实验设置 · §5.1 · 附录 C

LIBERO-PRO 三个套件,和两类基线

  • 基准:LIBERO-PRO 的 Goal、Spatial、Object 三个套件,各 10 个任务。基础设定是原始未扰动回合;扰动设定有 Semantic(语言措辞)、Object(物体)、Position(位置交换)、Task(目标改变)四种。按失败分析图,基础设定共 60 个回合,扰动设定共 240 个回合,即每个套件每个条件 20 个回合。成功由环境的谓词判定。
  • MotorMind:骨干 Qwen3.8-Flash-Next(FP8),不用 LIBERO 示范,不做任何策略微调,默认执行预算 450 秒。
  • 直接 VLA 基线:π0.5(OpenPI libero_base)、MolmoAct2、OpenVLA / OpenVLA-OFT、GR00T N1.5,分「微调」(LIBERO 适配权重)和「零样本」(基础权重 + 接口适配)两种配置,权重都不再更新。
  • 智能体基线:CaP-X(GPT-5.6-terra 与 Claude Opus 5 各生成 4 份候选程序,调用机器人工具,零样本 / 5 轮 / 10 轮);Harness VLA(Qwen 规划器 + SAM3 + 冻结 π0.5 工具,另有 5 / 10 次探索后冻结的任务记忆);VoLoAgent(Qwen 规划器 + SAM3/Molmo 感知 + π0.5)。用了 LIBERO 微调 VLA 当工具的智能体被归在「微调」组。
  • 指标:成功率 SR、平均每回合墙钟时间 T̄,以及 TimeScore = 60·s / T̄(单位:百分点/分钟)。例如 66.7% 用时 223.4 s,得 17.91。
原文 Figure 1上:把电池放进盒子的六个阶段,标出每一步由哪个角色负责(第 3 步 Monitor 异步检查抓取稳定性)。中:执行、监控、记忆三条泳道,Monitor 的 STOP 让排队的动作作废,转入 Verify 和 Retry。下:论文挑出的四个柱子,零样本的 CaP-X 与 MotorMind,微调的 OpenVLA-OFT 与 π0.5。

结果 · §5 · 表 2–5

零样本里遥遥领先,和微调策略比还差一截,而且慢几十倍

主结果:成功率 vs 每回合时间(表 2)

每个点是一种方法配置

横轴是对数刻度的平均墙钟时间。虚线是与 MotorMind 相同 TimeScore 的等值线(原文 Figure 4 的画法)。Harness VLA 的 S2 配置只有扰动结果。

MotorMind直接 VLA · 微调直接 VLA · 零样本智能体 · 用微调 VLA 当工具智能体 · 零样本
原表数字(表 2,逐套件与逐扰动)

MotorMind 基础 66.7%(Goal 45 / Spatial 75 / Object 80),扰动 53.8%(Semantic 58.3 / Object 46.7 / Position 51.7 / Task 58.3)。零样本 VLA 全部接近 0,零样本智能体里最强的 CaP-X 10 轮是 13.3% / 19.2%。在 Position 和 Task 两种扰动下,MotorMind(51.7、58.3)明显高于微调 VLA(π0.5 36.7、23.3),因为后者记住了训练布局和训练目标。

疑点「与微调策略相当」挑了一个最弱的对手

正文写「240 个扰动回合上 MotorMind 53.8%,OpenVLA-OFT 51.2%,差距仅 2.6 个点,表明可以不经任务特定训练匹敌微调策略」。同一张表里,微调 π0.5 扰动 63.3%、MolmoAct2 62.9%、Harness VLA(S1 10 轮)65.4%,都高出约 10 个点。基础设定上 MotorMind 66.7%,三个微调 VLA 在 98.3–100%。另外,零样本 VLA 在 LIBERO 上是 0% 几乎是必然的(没见过这个本体和动作空间),这组基线不构成有意义的比较。

解读时间成本是真实的部署问题

MotorMind 平均每回合 223 秒,微调 π0.5 约 6 秒,相差约 38 倍。TimeScore 只在零样本组内为它加分(17.91 vs CaP-X 2.3–2.9),放到全表它远低于任何直接 VLA(460–1030)。论文写明 TimeScore 不计算力和费用。作为对照,用同一个 Qwen 规划器加冻结 π0.5 工具的 Harness VLA,10 轮探索后扰动 65.4%,但每回合 2,184 秒。

动态与在线改变(表 3)

原文 Table 3 右图左:传送带把物体从左往右送,指令要求按描述挑出目标(例如「不是碗的那个喝水容器」,白框处)。右:场景演化的两帧,黄色线是「过线后再抓」一类时间条件任务的标记。

四组在线任务的成功率

括号内为任务数。论文没给每个任务的试验次数。

MotorMindπ0.5GR00T N1.5MolmoAct2CaP-X
  • Dynamic Reasoning(10):传送带上的目标靠语义、排除、空间关系或观测历史指定,如「装液体的包装品」「不是红色的杯子」「整个回合里出现的第二个不同食物」。
  • Scene Shift(10):指令不变,在接近物体或运送途中把物体或容器挪走 1–3 次。
  • Dynamic Manipulation(5):传送带以 1.5 mm/s 单程移动,按名字抓取。
  • Prompt Shift(5):到达物理触发点后替换指令,例如「改为放到盘子上」「先放下、打开炉子再继续」。

协议上,规划和等待推理的墙钟时间会推进仿真(每 0.05 秒非动作时间走一步,机器人接收零运动指令),所以 VLM 的延迟会真实地让传送带走远。每回合预算 600 秒。

疑点样本很小,命名前后不一,评判有漏洞

5 个任务的两组,所有方法的分数都是 20% 的整数倍,10 个任务的组都是 10% 的倍数,很可能每个任务只跑了一次。附录也写「应视为压力测试,而不是精确的定量证据」。附录里四组叫 Interactive、Pure Dynamic、Dynamic Reasoning、Prompt Change,正文改叫 Scene Shift、Dynamic Manipulation、Dynamic Reasoning、Prompt Shift。Prompt Shift 第 3 题「先放到桌上、打开炉子并保持开着、再放到盘子上」的判定只检查最终放置前炉子是否开过,不检查中间那次放到桌上,也不检查结束时炉子是否还开着(附录自述)。这组里 CaP-X 与 MotorMind 同为 60%。

真机 xArm6(表 4)

直接放置与人为干扰

3 种物体 × 2 种容器 × 2 种设定,每格 10 次;另有 4 个语义理解任务各 5 次。RealSense D455 相机,xArm6 官方 SDK,不做任何示范或微调。

直接放置人为干扰(执行中有人挪动或替换物体)

直接放置平均 98%(碗 97 / 盒 100),人为干扰 92%(碗 93 / 盒 90),合计 95%。语义理解四个任务(指令用类别、颜色或空间关系指代目标,例如「食物」「同样颜色的」「中间那个」)为 80%、100%、100%、60%,论文没有给出每个任务的具体指令。真机任务都是单物体拾放,比 LIBERO 的任务简单得多。

骨干与消融 · §6 · 附录 D

换更强的 VLM 能涨分;拿掉规划器直接归零

骨干对比(原文 Figure 5 左)

LIBERO-PRO 三个基础套件,单种子。左:成功率;右:每回合墙钟时间。

Qwen3.8-Flash-NextGPT-6 Sol(中等推理强度)

疑点同一个 Qwen 配置,图和表给了两套数字

Figure 5 里 Qwen 的三套件是 Spatial 70 / Object 80 / Goal 50,平均 66.7%,时间约 210 秒;主表是 Goal 45 / Spatial 75 / Object 80,平均也是 66.7%,时间 223.4 秒。按百分比看,图是每套件 10 个回合,表是 20 个。附录的执行预算表里 450 秒那一行(50 / 70 / 80,210.0 秒)和图一致。所以骨干对比、组件消融、预算消融用的是另一次 30 回合的运行。tex 源码里有一段编译时隐藏的作者批注,原话要求「让数字与表 2 一致……说明两个骨干是否在同样的回合上运行」,并提醒 GPT-6 Sol 和诊断里的 GPT-6 Astra 是不同模型、不要说成 scaling law。正式版没有处理。

组件消融(原文 Figure 5 右)

相对完整系统 66.7% 的变化。悬停看时间和 TimeScore。

去掉重规划掉到 36.7%(−30.0),去掉 Verifier 60.0%(−6.7),去掉 Planner 0.0%。按 30 个回合算,−6.7 是 2 个回合,−30.0 是 9 个回合。

疑点消融测的是「角色」,不是「调度」

论文的卖点之一是异步调度,但没有跑同步版本。附录把 VoLoAgent 称为「异步 harness 的消融」,可它是另一个系统(用 π0.5 当执行器、带 SAM3),差别远不止调度方式。tex 里隐藏的作者批注同样要求「既然没跑同步版本,就明说消融测试的是角色而不是调度」,并指出「无 Planner 得 0%」需要说明 Executor 此时拿到的是什么输入、有没有产生有效动作,否则只能说明这个设置坏了,不能说明规划必不可少。

执行预算(附录表 D1)

每回合最长允许的墙钟时间。默认 450 秒。

原表数字(附录表 D1)

放宽到 900 秒成功率反而降到 50%,3,600 秒是 60%。作者的解读是:额外时间本身不会带来成功,harness 必须用新观测判断何时该继续、何时该停。每个套件只有 10 个回合,这些波动(±1–3 个回合)也可能只是噪声。另一个细节:3,600 秒设定的平均时间(296.4 s)比 900 秒设定(320.0 s)还短。

失败分析 · §6 · 附录 E

错得最多的是「看错东西」,其次是「过早宣布完成」

VLM 决策错误的计数(原文 Figure 7)

每种设定 60 个回合的原始计数(一个回合可以有多个错误)。图中只给出了定位和完成两类的数字,其余三类合并为「其余」,由总数减出。

定位 Grounding完成判断 Completion其余(规划 / 进度检查 / 失败监控)
原文附录 Figure(物理失败分析)左为基础 60 回合,右为扰动 240 回合。基础:57% 无失败,10% 失败后全部恢复,最终成功 67%;最终失败里「卡住」(Stuck)17%、掉落 7%、空抓 5%、放错 3%、拿错 2%,结局全是超出预算。扰动:44% 无失败,10% 恢复,成功 54%;卡住 18%、空抓 12%、放错 8%、拿错 6%、掉落 2%;结局是超出预算 38% 和「错误地宣布完成」(False done)9%。

解读恢复机制贡献了约 10 个点,最大的失败是「卡住」

两种设定里都是 10% 的回合「出过错又恢复了」,这大致就是 Monitor + Verifier + 重试这套机制带来的增益上限(没有它们,这些回合不一定都失败)。最终失败里占比最大的是卡住(17–18%),即反复提出无效动作直到预算耗尽,对应论文说的「动作知识不足」。扰动设定下另有 9% 的回合是 VLM 宣布完成而谓词为假,说明 Verifier 仍会被骗。论文的结论是这些错误会随 VLM 变强而减少,目前的证据只有骨干对比那一组。

读懂它

这篇真正说明了什么

关键 insight

1. 接口的粒度决定了 VLM 能不能直接上手

VLM 输出不了可用的关节角,但能说「往左 15 厘米」。把动作空间换成 VLM 能表达的粒度,加一个确定性控制器,零样本 LIBERO-PRO 就从接近 0 到了 66.7%。这是论文最核心、证据也最充分的一点。

2. 角色拆分靠「权限」而不是「能力」

所有角色都是同一个模型,区别在于看到什么、能输出什么。Monitor 没有动作字段,所以不会悄悄替换动作;Verifier 被告知「不必同意执行者」。这种用输出模式约束行为的做法,在通用智能体 harness 里也常见。

3. 闭环修正有效,但代价是时间

10% 的回合靠恢复救回来,去掉重规划掉 30 个点。代价是每回合 200 多秒,传送带任务里 VLM 推理的每一秒都会让目标走远。

4. 更强的 VLM 直接换上就能用

换 GPT-6 Sol 从 66.7% 到 83.3%,harness 不用改。这对「VLM 进步能否直接转化成机器人能力」是一个正面信号,但只有一次单种子、30 回合的对比。

容易误解的地方

  • 「零样本」不等于「无工程」。没有任务数据和策略训练,但有八份精心写的角色提示词、标定的多相机三角化、控制器的安全闸(比如离箱沿 68 mm 时拒绝下降)。
  • 「与微调策略相当」只对一个基线、一种设定成立。见结果部分的疑点。
  • 真机 95% 是简单任务上的数字。单个物体放进碗或盒子,物体是方块、玉米、电池;没有在 LIBERO 那种多步任务上做真机。
  • 异步的价值没有被单独测量。所有结果都是「完整系统」或「去掉某个角色」,没有同步对照。

FAQ

为什么默认选 Qwen3.8-Flash-Next,而不是诊断最好的 GPT-6 Astra?

延迟。诊断里 Qwen 每次 0.28 秒,GPT-6 Astra 8.7 秒。一个回合要调用几十上百次 VLM(每个提议、每次监控、每次验证),慢模型会让回合时间和动态任务里的目标漂移都失控。论文后来换的强骨干是 GPT-6 Sol(中等推理强度),Spatial 套件每回合 370 秒,比 Qwen 的 199 秒长不少。

Harness VLA 和 MotorMind 的根本区别是什么?

Harness VLA 也用 Qwen 规划,但真正执行动作的是在 LIBERO 上微调过的 π0.5,加 SAM3 做感知,还在每个任务上探索 5 或 10 次来积累记忆。它的扰动分(最高 65.4%)比 MotorMind 高,但依赖目标域的策略训练和探索。MotorMind 的动作完全来自 VLM 的中层指令。

Monitor 打断以后谁来决定下一步?

Monitor 只发告警。不管尝试是正常结束还是被打断,都进入结果评估:Verifier 结合新观测、实测状态和告警判断子目标是否满足。满足就推进,不满足就重试当前子目标,或把未完成的需求交还 Planner 重规划。

为什么执行预算越长成功率不一定越高?

论文的解释是:多给时间只会让系统在没有进展的情况下继续尝试,有效的 harness 必须自己判断何时停止。数据上 300 秒和 450 秒都是 66.7%,900 秒 50%,3,600 秒 60%,每套件只有 10 个回合,这个趋势本身不够稳定。

局限与疑点

作者承认的,和我们读出来的

论文自己提到的

  • 剩下的失败主要来自三处:视觉定位不准(选错物体或位置)、具身推理错误(误判任务已完成)、动作知识不足(在某些情境下反复提出无效动作)。
  • 诊断题测的是局部视觉决策,不是完整任务的闭环控制,也不能证明某种控制抽象是错误的原因。
  • 动态任务应视为压力测试,不是精确的定量证据。
  • Prompt Shift 中开炉子那题的判定不完整。
  • 同期工作 Show-Harness 思路相近,只做了方法上的区分,没有实验比较。

我们读出来的

  • 疑点主表与 Figure 5 / 附录 D 是两次不同的运行(每套件 20 vs 10 回合),同为 66.7% 掩盖了逐套件的差异;tex 中作者批注已指出。
  • 疑点「匹敌微调策略」只对 OpenVLA-OFT 的扰动分成立。
  • 疑点没有同步版本,异步调度的贡献未测;VoLoAgent 不是合格的消融。
  • 疑点「无 Planner 0%」没有说明 Executor 收到了什么,可能只是设置失效。
  • 诊断题由 Codex 生成;随机水平校正后「动作最弱」的结论不成立。
  • 每回合约 223 秒,是微调 VLA 的约 38 倍;没有报告 VLM 调用次数和费用。
  • 动态任务很可能每任务只有 1 次试验;正文与附录的组名不一致。
  • 真机只有单物体拾放;语义理解四个任务的指令未公开。
  • 骨干对比只有 1 个种子、30 个回合。

放到专题里看

把「推理 → 子目标 → 动作」全部放在模型外面

在 Harness for Robotics 专题里,MotorMind 是「结构化执行」最彻底的一例:每一层都是显式的、可读的 JSON,模型本身完全不训练。它同时带有「评估与反馈」的成分(Monitor、Verifier、重试、重规划),但评价信号是 VLM 自己给的,不更新任何参数。

MotorMindACoT-VLAτ₀-VLATT-VLA
专题分类结构化执行结构化执行评估与反馈评估与反馈
高层冻结通用 VLM 的 Planner无独立高层Qwen3.5-9B 微调的提议/价值/反思模型无
中间接口子目标 + 成功判据;参数化动作批次动作空间粗轨迹语言子任务 + 执行记忆—
低层确定性控制器(无学习)flow matching 动作头40 维统一动作空间的 VLA(4 万小时数据)被适配的 VLA(OpenVLA 等)
评价信号VLM 自评 + 实测机器人状态无世界模型想象终态 + 价值模型打分VLAC 进度估计的差分
评价用来做什么打断、重试、重规划—执行前在候选子任务中搜索执行中更新策略参数
速度每回合约 223 s每次推理 112 ms高层约每 1 s 刷新,低层约 30 Hz未报告
  • 和 τ₀-VLA:两者都维护执行记忆,都把子任务的完成情况显式记下来。区别在于 τ₀ 的记忆和子任务生成是训练出来的,执行前还会用世界模型想象后果再决定;MotorMind 不训练,靠执行后的 Verifier 和重试。τ₀ 用「执行前评估」避免错误的承诺,MotorMind 用「执行后检查 + 中途打断」修正。
  • 和 ACoT-VLA:两者都认为语言子任务离电机指令太远。ACoT 在模型内部多生成一段动作草稿;MotorMind 让 VLM 在外部直接说出动作幅度。见 ACoT 页的对照。
  • 和 TT-VLA:都用「进度」作反馈,但 TT-VLA 把进度变成梯度,在回合内更新策略的 LoRA;MotorMind 把进度判断变成离散决策(继续、停、重试)。

术语表

读这篇会遇到的词

展开术语表
harness
围绕模型的执行框架:提示、工具、调度、检查和重试逻辑的总和。
mid-level action
中层动作,本文指基座坐标系下带参数的 move / rotate / gripper,以及 wait、home。
action batch
Executor 一次提出的有序动作列表,由控制器依次执行。
action boundary
两个动作之间的时刻。STOP 告警只在这里生效。
Gate
案例图中控制器的安全检查,例如拒绝过低的下降或无效的闭合。
LIBERO-PRO
在 LIBERO 上加入语言、物体、位置、任务扰动的评测基准。
TimeScore
60 × 成功率 / 平均每回合秒数,单位百分点每分钟。
False done
模型宣布任务完成,但环境谓词判定未完成。
Stuck
卡住:反复提出无效动作,直到用完执行预算。
CaP-X / Harness VLA / VoLoAgent
三种智能体基线:生成机器人代码;VLM 规划 + 冻结 VLA 工具 + 探索记忆;VLM 规划 + 感知工具 + VLA 执行。