接口阶梯
agent 与 configs/ablations/ 中的消融构成一个阶梯(表 3):相同的模型、运行时、安全层(shield)和调用预算,每一级开放更多的接口。每个消融都包含 configs/default.toml 并关闭其中一部分;用 --agent configs/ablations/<name>.toml 运行其中一个。
| 配置 | 模式 | 接口 | 服务 |
|---|---|---|---|
r0 |
direct | 每次模型调用一个动作:移动指尖、设置夹爪、观察、等待 | 无 |
r1 |
direct | R0 加上固定 skill(locate、pick、place)和学习型策略 | sam3, simate |
r2 |
program | 基于解析 skill 的程序;handler | sam3(+ 模型的 vlm) |
r3 |
program | R2 加上学习型 skill(run_policy 和 strategy 步骤) |
+ simate |
default(R4) |
program | R3 加上反应层(guard、控制器) | 同 R3 |
agent 的消融(表 5):no-handlers(没有 on())、no-verifier(没有成功验证器)。with-task-description 加入 Zhang et al. (2026b) 的任务描述(表 4 第二行)。analytic-manipulation 用 manipulation skill 按名称的 pick 和 place 及其直线 push,替换默认的按物体 id 操作的工具(skills/eef:用 SAM 3 给出物体 id 的 locate、pick、release、transfer、push);R1 的固定 skill 也是这些。在 RoboTwin 2.0 上,agent 不带学习型 skill、带 manipulation skill 运行(configs/experiments/robotwin-dev.toml)。
每一级都继承 agent 的模型、prompt pack(R0 和 R1 有各自的动作提示词)、由 VLM 完成的指点、SAM 3 分割器、观测契约(XPolicyLab 的:RoboDojo 官方客户端交给策略的内容)、20 ms 的反应预算和 30 次模型调用。带学习型 skill 的程序级(R3 和 agent)以 strategy 步骤(start)开始;R1 则从其动作词表中把子任务交给策略,无论手臂处在何处。
直接控制(R0、R1)
Section titled “直接控制(R0、R1)”在 direct 模式下,模型被有意地在每一步都调用:这几级正是程序设计的比较对象。每次回复是一个 <action>{JSON}</action> 或 <finish>:
| 动作 | 参数 | 级 |
|---|---|---|
move |
arm、指尖 position(x, y, z)、可选的 orientation(link6 四元数)、可选的 gripper |
R0, R1 |
gripper |
arm、value(0 闭合 .. 1 张开) |
R0, R1 |
observe |
R0, R1 | |
wait |
seconds(0-10) |
R0, R1 |
policy |
name、可选的 instruction、arms、seconds(0-30) |
R1 |
locate |
object |
R1 |
pick |
object、可选的 arm |
R1 |
place |
arm、target 或 position、clearance |
R1 |
每个动作作为一个短的固定程序运行,使用与 R2-R4 相同的 skill(src/harness_policy/runtime/direct.py),因此各级的差别在接口,而不在运动代码。