Harness 核心机制¶
Harness 是模型和当前 embodiment 之间的运行时层,不绑定某个模型供应商或机器人 平台。它负责调度和上下文组织;部署方负责机器人或仿真器连接、感知后端、策略和 硬件安全。
主要组件¶
组件 |
责任 |
|---|---|
Agentic Loop |
刷新证据,请求一次模型决策,最多执行一个被选中的 Tool,并从结果继续。 |
Context |
把 Resident、Refreshed 和 Accumulated 信息放在不同生命周期中维护。 |
Tool Protocol |
发布 Tool Definitions、校验参数、统一 Tool Results 格式,并执行 hooks。 |
Memory |
维护 Task Notes、durable Memory 和 Tool Experience。 |
Skills |
让 Skill 的名称和描述常驻,只在需要时加载完整任务指令。 |
Observation |
为当前决策提供视觉证据;配置 base motion 时提供四方向 clearance。 |
Safety |
在模型之下执行确定性的执行前检查。 |
User Interaction |
通过终端或飞书/Lark 提供 |
Embodiment Profile |
呈现稳定能力、感知配置和 base-relative positions。 |
Scene Graph 和 Evaluation 是两个一等物理世界组件:
Scene Graph 让世界状态可读、可引用。
Evaluation as Exit Codes 在 Tool 执行后判断物理结果。
一轮决策边界¶
Harness 每轮只把当前需要的内容放进模型上下文:
Resident context:长期稳定内容,如系统边界、Skill 目录、Embodiment Profile 和 durable Memory。
Refreshed context:每轮刷新内容,如当前 Observation、clearance、Scene Graph Brief。
Accumulated context:当前 Task 的消息、Tool Calls、Tool Results 和压缩 后的历史。
每个 Turn 最多执行一个被模型选中的 Tool Call。Tool Result 回到 Harness 后, 下一轮会重新刷新证据,而不是让模型继续依赖过期观察。
Tool 与执行边界¶
Tool 是模型可以选择的动作或查询接口。Harness 负责:
将 Python 可调用对象、
BuiltinTool或 MCP 能力暴露成 Tool Definition。校验模型传入的参数。
标准化 Tool Result。
在物理 Tool 后触发 hooks,例如 Evaluation。
将 Tool Result 记录进 Task context。
物理策略、机器人 SDK、MCP 服务和授权逻辑仍属于部署侧。Harness 不应该绕过 这些边界直接操作硬件。
Skill、Memory 与 Embodiment¶
Skill 用于存放任务流程,不是执行权限边界。默认只有 name 和
description 进入 Resident context;模型需要时通过 load_skill 加载完整
SKILL.md。
Memory 分为三类:
TASK_NOTES.md:当前 Task 中的短期笔记,Task 结束后过期。MEMORY.md:跨 Task 保留的 preferences、conventions 和 lessons。tool_experience/:按 Tool 组织的成功/失败经验。
Embodiment Profile 是部署侧提供的 Markdown 文档,描述 base footprint、 mobility、reachable workspace、sensor modalities、模型可见视角、camera positions 和 initial gripper positions。Harness 在启动时验证结构。
组合边界¶
主要组合入口是 Harness。部署侧通过公开 protocols 注入能力,而不是让
Harness 导入机器人专用运行时:
from harness import Harness
harness = Harness(
config,
model=model,
registry=registry,
observation_provider=observation_provider,
base_clearance_provider=base_clearance_provider,
scene_graph=scene_graph,
evaluator=evaluator,
post_execution_observation_provider=post_execution_observer,
owned_resources=(robot,),
)
新的机器人或仿真环境应优先从 接入真实机器人 中可直接 复用的集成路径开始。