为什么PhyAgentOS坚持"先证据,后结论":执行、证据、判定三事实分离架构深度剖析
【免费下载链接】PhyAgentOS-corePhyAgentOS is a Recursive Self-Improving (RSI) physical agent operating system that enables agents to recursively self-improve through agentic workflows.项目地址: https://gitcode.com/gh_mirrors/ph/PhyAgentOS-core
PhyAgentOS 是一个递归自改进(RSI)的物理智能体操作系统,它让 Agent 通过 Agentic Workflow 自主执行任务、自我验证并持续进化。它的核心设计哲学只有一句话:先证据,后结论——执行、证据、判定是三类互不越权的事实,任何一层都不允许替另外两层"脑补"。
为什么物理 Agent 不能"自说自话"?
给机器人或具身智能体下达指令时,最危险的场景不是"没做成",而是"以为做成了"。比如让机械臂把杯子放到桌上,工具接口返回succeeded,但杯子其实还在半空——如果系统直接相信这个返回值,错误就会被当作成功沉淀进记忆,后续的"自我改进"只会越改越歪。
PhyAgentOS 的做法是:执行成功 ≠ 任务成功。它把一次任务拆解为三种彼此隔离的事实:
| 事实类型 | 谁产生 | 回答的问题 | 是否可修改 |
|---|---|---|---|
| 执行事实(Execution Record) | Forge Gateway | 命令跑到哪一步了? | 不可变 |
| 证据事实(Evidence Bundle) | PAOS 采集器 | 执行前后世界长什么样? | 不可变 |
| 判定事实(Verification Verdict) | 独立验证服务 | 用户目标真的达成了吗? | 独立得出 |
执行事实:只记账,不表态
执行记录由网关侧上报,契约定义在 PhyAgentOS/verification/contracts.py 中的ExecutionRecord,源码注释写得很直白:"Immutable facts reported by Forge Gateway, never a task verdict"(网关上报的不可变事实,从来不是任务结论)。
它只记录:命令状态(running、succeeded、timed_out、unknown…)、时间线、输出与错误。而且 PhyAgentOS/forge/evidence.py 中的write_execution是"一次写入、终身不改"——重放时发现内容不一致会直接报错,防止事后"美化"执行历史。
证据事实:拍照、哈希、封箱
证据采集发生在**动作执行前(before)和执行终态后(after)**两个时刻,逻辑位于 PhyAgentOS/forge/observation.py:
- 通过 WebSocket 持续订阅网关的图像流(
/ws/images)与机器人状态流(/ws/state); - 只保留每个图像源最新且经过校验的帧(校验媒体类型魔数、大小上限);
- 严格保证 after 快照的帧序号晚于 before、且接收时间晚于命令终态时刻——防止拿旧照片充数。
随后 PhyAgentOS/forge/evidence.py 的ForgeEvidenceWriter把快照写成不可篡改的证据包:每个文件计算 SHA-256 摘要、记录字节数与采集/接收双时间戳,打包成evidence_bundle.json。缺什么就如实写进missing_requirements,采集失败不会被悄悄吞掉。所有文件均使用原子写入,且路径被严格限制在工作区内。
判定事实:模型只能"对着证据说话"
验证环节由独立的 Verification Service 执行(PhyAgentOS/verification/service.py),它运行在独立子进程里,和干活的 Agent 完全隔开。其系统提示词(FORGE_TASK_PROMPT)明确规定:
- 网关命令成功只是执行证据,不是目标达成的证明;
- 每条成功准则必须逐条判定
satisfied / unsatisfied / unknown,并附evidence_refs; - 经验教训(Lesson)只是非权威建议,严禁当作证据引用;
- 证据不足以支撑可靠判断时,必须输出
inconclusive而不是硬猜。
请求组装在 PhyAgentOS/verification/request_builder.py:模型收到的上下文只包含任务契约、执行记录、经验证通过/标记缺失的证据包和合法引用白名单,valid_evidence_refs之外的引用一律无效。也就是说,模型想下结论,先要有编号的实物证据可引。
四种验证模式:从"关"到"自愈"渐进开启
契约TaskVerificationContract提供四种模式,行为矩阵详见 docs/zh/04-forge-configuration-reference.md:
| 模式 | 语义 | 适合谁 |
|---|---|---|
off | 只按执行结果派生成败 | 调试阶段 |
audit | 记录语义判定,但不覆盖执行结果 | 观察验证器表现 |
enforce | 语义判定决定成败,证据不足即失败(fail closed) | 生产环境 |
recovery | enforce + 有预算的重规划(默认最多 2 次) | 需要自愈的任务 |
recovery模式下,验证器可输出replan_required并附带recovery_context(未达成准则、需保留的约束、行动无关的指导),任务随后追加新的 PlanRevision 继续尝试——但重规划次数与截止时间都有硬性预算,且不能改写已固化的执行事实与证据。
这套判定结果还会喂给经验与进化系统(agents.evolution):只有带语义判定的任务才会被沉淀为可复用经验,晋升新能力还需要多个独立成功任务背书(默认 3 个)。换句话说,自我改进的燃料本身是被验证过的。
快速上手:在哪里配置这些行为?
- 证据采集参数(超时、必需图像源、单文件大小上限):
forge.evidence,见 docs/zh/04-forge-configuration-reference.md 第 3 节; - 验证服务开关、模型、证据保留策略(
all / failed / none)、重规划预算:agents.verification; - 任务侧验证契约(goal、success_criteria、evidence_policy):docs/forge/README_zh.md 第 9 节有完整接入契约;
- 框架整体概念:docs/zh/01-framework-introduction.md。
总结:为什么这个架构值得借鉴
- 职责分离:执行层管"发生了什么",证据层管"世界变成了什么样",判定层管"目标达成没有",谁都不越权;
- 全程不可变:执行记录一次写死、证据带哈希封箱,事后无法篡改,审计有底气;
- Fail closed 文化:证据缺失就
inconclusive、验证器出错就判失败,宁可保守也不误报成功; - 改进有门槛:只有被证据支撑的成败经验才能进入自改进闭环,让"递归自我改进"建立在可信地基上。
对于任何要在物理世界执行动作的 Agent 系统,"先证据,后结论"都不只是一条工程规范,而是一条安全底线。
【免费下载链接】PhyAgentOS-corePhyAgentOS is a Recursive Self-Improving (RSI) physical agent operating system that enables agents to recursively self-improve through agentic workflows.项目地址: https://gitcode.com/gh_mirrors/ph/PhyAgentOS-core
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考