EmbodiedSkills 的核心是一个受守卫的有限阶段控制器(guarded finite-stage controller),分四层:状态与上下文、技能契约、阶段空间与守卫转移、有界动作执行与验证恢复。
【状态与决策】第 t 步的方法级状态为 s_t=(z_t, M_t, H_t)(式1)。z_t 是当前阶段;M_t 是可用任务 artifact 集合,包括当前观察、感知/接地结果、世界状态、完整任务计划、活动子目标、preflight 证据、动作 chunk、执行报告、验证报告与恢复上下文;H_t 是有序 loop trace。artifact 携带 provenance(来源)与 freshness(新鲜度),防止观察、计划、动作在依赖变化后被静默复用。策略看到的不是原始 simulator 状态,而是部署一致的紧凑上下文 C_t=Ψ(x,z_t,M_t,H_t)(式2):保留完整计划、活动子目标、当前 artifact 摘要、近期错误,以及有序且有界的近期决策/结果;旧条目在固定 history budget 下压缩或丢弃,原始 simulator 内部与无界日志不进入上下文。策略从状态依赖动作集采样 d_t~πθ(·|C_t,z_t,A_t)(式3),其中 A_t=G_state(K_z_t,s_t) 只暴露与当前 artifact 兼容的技能。决策只有三种控制类型(式4):RunSkill(k,q)(执行技能 k 及 payload q)、AdvanceStage(前向推进)、FinishRun(终止)。技能执行、阶段推进与终止共享同一结构化决策接口,而证据依赖的重路由由 runtime 决定。
【可执行技能契约】每个技能表示为 k=(X_k,Y_k,pre_k,exec_k,post_k,fail_k)(式5):类型化输入/输出 schema、前置条件、可执行操作、状态更新规则、失败到显式状态与证据的映射。契约同时适用于模型支持的技能与确定性操作。关键点是:模型生成的结果只是 proposal,直到 schema 与前置条件被验证;成功输出成为 typed artifact 供后续技能使用,失败则成为可供下一次策略决策使用的显式证据。这样感知、规划、验证与动作生成可在内部表示不同的情况下被组合。契约还定义失效边界:当观察、活动子目标或执行结果改变时,只刷新依赖该证据的 artifact,从而在复用仍有效上下文的同时阻止 stale 预测授权新的物理动作。技能契约因此同时是组合接口、运行时有效性边界和训练轨迹来源。
【阶段空间】Z=(Observe,Plan,Preflight,Execute,Verify,Recover)(式6)。六个阶段描述 loop 的语义结构而非固定一次性管线:当新观察、执行结果或验证证据使当前计划失效时,策略可回到更早阶段。各阶段角色与退出证据:Observe 获取当前视觉与任务相关证据;Plan 把任务与证据转化为可验证子目标、选择活动子目标并分配执行预算;Preflight 检查任务上下文、观察、机器人状态、环境与 VLA 可用性,必要时刷新证据;Execute 构造 VLA 请求、生成并验证 chunk、在环境中执行;Verify 用新鲜的后执行证据判断是否达成活动子目标并选择下一语义路线;Recover 解释失败证据、修订子目标或计划并选择安全重入阶段。接地(grounding)是任务与策略条件的,而非全局固定的 source–target 对。
【守卫转移】策略只提提案,runtime 定义执行语义。三类控制有不同的不变量,因此用三个独立守卫。技能守卫(式7):G_skill=1[d_t=RunSkill(k,q)]·1[stage(d_t)=z_t]·1[k∈K_z_t]·∏_{r∈R(k,q)}1[r(s_t)=1],即必须是指定阶段、可允许技能,并且 payload 相关全部前置条件都满足。前向守卫(式8)要求当前阶段已产生后继所需证据 R_z_t(s_t)=1。终止守卫(式9)只要求 FinishRun。守卫更新(式10)分四种情况:技能通过则 U(s_t,k(q)) 记录操作结果并使 stale dependents 失效;推进则 N(s_t);终止则 F(s_t);否则 B(s_t,d_t) 记录被阻止决策及其证据。该分离意味着提示词本身不负责执行安全或状态一致性。
【有界动作执行】Execute 阶段中低层 VLA 将 (g_t,O_t,F_t)(活动子目标、当前观察、preflight 证据)映射为动作 chunk 与执行报告 e_t(式11)。chunk 定义为 a_t=(τ_t,U_t,H_t,η_t),U_t=[u_t^1,...,u_t^H_t](式12),包含动作类型、horizon,以及把 chunk 绑定到子目标与观察上下文的元数据。runtime 仅在 R_act(式13)成立时接受 chunk:horizon 有界且为正、符合策略模块 p 的动作 schema Σ_p、对当前子目标与观察是 fresh 的、命令数值有效。执行后 loop 先获取新鲜证据再决定下一步,因此一个语义子目标可由多个有界 chunk 完成,而不是被迫压进单个动作 horizon。
【验证与恢复】Verify 只评估活动子目标,使用最新动作 chunk 之后采集的证据,从 V={Advance,Continue,Reobserve,Replan,Recover,Finish}(式14)中预测语义路线:推进计划、保留子目标再尝试、刷新场景证据、修订计划或进入恢复。Recover 使用同一显式任务状态与失败证据生成修订执行上下文,并在另一次物理动作前再次检查。整体任务成功仍由环境评估协议定义,而不是局部子目标判断。Algorithm 1 汇总 AgentLoop:每步策略收到紧凑状态与可允许技能;runtime 守卫阻止缺乏有效证据的决策;每个操作结果追加到有序轨迹供后续决策使用。
【模块化接口】类型化任务状态、阶段化技能接口、运行时验证、轨迹日志、环境适配器与动作策略模块组合在一起;感知、规划、动作生成、验证、恢复可共享一个基座模型加阶段适配器,也可用独立模型,只要满足同一技能与状态契约。
【训练机制】本文以组件级监督为主要训练范式。(1) planner 学习把任务指令与视觉上下文映射为有序可执行语义子目标,子目标只规定要到达的物理状态,不嵌入 simulator 控制细节。(2) 低层 VLA 用子任务级演示单独适配:每条样例把观察与机器人状态配对到活动子目标及对应动作序列;部署时通过 Execute 接口收到相同类型的子目标条件上下文并输出有界 chunk。(3) 高层控制:在冻结低层 VLA 的条件下,用部署一致决策轨迹对 Qwen3-VL scheduler 做 SFT,目标为阶段合适的技能决策及结构化参数(继续当前子目标、推进计划或请求修订上下文),从而把该 SFT 与连续控制学习隔离。(4) verifier 可从后执行观察与子目标完成标签适配;组件可共享基座 VLM 加阶段适配器,确定性或外部组件也可替换。
部署一致训练样本定义为 x_t=(g,z_t,I_t,s̃_t,K_t,h_t),y_t 为该组件决策(式15);组件只收到其接口相关字段(planner 收规划上下文、verifier 收活动子目标与新鲜后执行证据、scheduler 收可允许技能与最新 artifact/错误)。技能输出、环境反馈、先前决策与运行时错误按原始时序保留为条件上下文;数据构建与部署用同一 history-compaction 规则,避免用测试时缺失的证据训练。视觉-语言监督只在学习组件生成的 token 上计算 loss,prompt、图像、工具结果、环境消息都是 context 而非预测目标,从而保持策略提案与运行时证据的区分。
可选闭环适应:完整 AgentLoop 可采集交互轨迹 τ=((x1,y1),...,(xT,yT),e_{1:T},R)(式16),其中 e_{1:T} 是类型化 runtime trace,R 由环境适配器提供,并对无效 agent 决策施加显式惩罚;基础设施失败与 agent 策略失败分开记录。优化时低层 VLA 可固定,只改高层决策。论文给出 group-relative 优势 A_i=(R_i−μ_G)/(σ_G+ε_norm)(式17)与 masked clipped 目标(式18),mask m_{i,t,j} 只选生成的策略 token,N_gen 为被选 token 总数。由于同一 episode 回报被分配给多个因果贡献不同的决策,episode 级归因粗粒度,因此在线优化只是可选 refinement,不作为 headline 结果来源。