首页
看点啥
插画图片
首页 看点啥 AIClaw 的 Harness Runtime:Agent 不拿到证据不结束

AIClaw 的 Harness Runtime:Agent 不拿到证据不结束

2026-07-12 0

这几天 AIClaw 在 origin/master 上连续落了三组相关提交:

AIClaw 的 Harness Runtime:让 Agent 只有拿到证据才能结束

这组改动集中在一个新执行层上:Harness Runtime。

它解决的问题很直接:很多 Agent 系统会把“模型说自己做完了”当成完成信号,但真实执行里,工具证据、文件产物、计划终态、阻塞原因,往往都还没闭环。

AIClaw 这次把“模型提议完成”和“执行层放行完成”明确拆开了。

先说问题

常见的 Agent 失败模式其实很像:

  1. 模型先给出计划。
  2. 调了几个工具。
  3. 输出一段看起来很像总结的话。
  4. 但实际没有足够证据,或者承诺的文件没交付,甚至只是在汇报“我接下来继续做”。

如果运行时直接接受这类答复,执行记录表面上成功,实际却把未完成任务包装成了完成。

AIClaw 的 Harness Runtime,就是为了解决这个问题。

README 里现在把它描述成一个独立运行层:先根据任务构造 Contract,再记录 Evidence,在工具前后和最终答复前后做 Validate,必要时再用 Correct 机制要求模型纠偏。

核心设计:Contract -> Evidence -> Validate -> Correct

设计文档里把整体模型抽象成四段:

Contract -> Evidence -> Validate -> Correct

对应到代码里,大致是这样:

这里最关键的一点是,AIClaw 不再只看最终输出文本,而是看“这条回答背后有没有足够执行证据”。

Contract 到底约束什么

pkg/harness/contract.go 里现在会推导多个关键约束:

比如一个“修改代码并生成文件”的任务,Contract 会自然倾向于要求:

这让执行层有了明确的放行标准。

Evidence 记录的不只是工具成功

EvidenceLedger 现在采集的信息很完整,不只是“调用过哪个工具”。

它会记录:

这点很重要,因为很多真实失败并不是“工具报错”这么简单,而是不同类型的 blocker 需要不同的最终答复策略。

例如:

四个校验关口

AIClaw 现在把校验拆成四个阶段:

Stage作用
pre_tool工具调用前先检查策略是否允许
post_tool工具轮结束后检查当前证据是否足够
pre_final模型准备结束时检查最终答复是否真的可交付
pre_save渲染完附件链接后,保存前再次确认交付内容没丢

这种拆分比“最后统一判断一次”更实用。

因为不同问题出现的位置不同:

Harness Runtime 正是在这些位置上逐层收口。

它怎么识别“假完成”

这次实现里我觉得特别实用的一点,是 pkg/harness/outcome.go 对最终结果做了更细的分类:

这意味着 AIClaw 不会再把“非空文本”直接当成完成。

如果模型输出的是:

这类内容会更容易被视为 progress_only,在 pre_final 阶段被拦下来。

反过来,如果工具失败是因为权限或认证问题,Harness 也能要求最终答复显式解释阻塞原因,而不是给出一段模糊总结。

纠偏不是无限重试

校验失败后,AIClaw 不会立刻结束,也不会无上限地让模型重试。

internal/agent/harness_verifier.go 里把纠偏统一成了一个有预算的 nudge 机制。像这些情况都会消耗同一套纠偏预算:

如果还有剩余次数,就追加 correction prompt,让模型补证据、补结果、补阻塞说明。

如果次数耗尽,系统就会明确失败收口,而不是把未完成结果包装成完成。

和 Runtime Plan State 的配合更完整了

这组改动不是孤立功能,它和 AIClaw 现有的 Runtime Plan State 是联动的。

当 Contract 推导出这次任务需要 Plan,而当前会话又没有 active plan 时,Harness 可以直接 bootstrap 一个初始计划模板,大致包括:

  1. 理解目标和依赖信息
  2. 执行必要工具并收集证据
  3. 校验证据和输出要求
  4. 汇总结果并交付最终答复

这样做的好处是,Plan 仍然是运行时状态的一部分,不会退回到聊天正文里的 TODO 文本;而 verifier 又能确保 plan 到达终态后,最终答复才允许结束。

新增的 finish 工具也很关键

2026-07-09 的对齐工作里,还新增了一个内置 finish 工具。

它的意义不是“让模型更容易结束”,而是让模型可以用结构化方式提交“这是最终答复”,然后再由 Harness 做一次 explicit final gate 校验。

也就是说:

这个边界很清晰,也更方便在执行日志里排查问题。

对使用者有什么实际价值

这不是一个“让回答更像 AI” 的功能,恰恰相反,它是在压缩 Agent 幻觉式完成的空间。

对于真正做生产任务的系统,这类能力会直接影响可操作性:

README 里现在把 AIClaw 定位成一个强调显式执行轨迹、可观察运行状态、少一点“隐形魔法”的自托管 Agent 平台。Harness Runtime 正是这个方向里非常核心的一步。

想继续看代码,可以从这些文件开始

如果你也在做 Agent 执行层,这部分很值得细看。它讨论的不是“提示词怎么写更聪明”,而是“模型给出完成信号之后,系统凭什么相信它真的完成了”。

喜欢(0)

上一篇

王兴兴抢跑 具身智能 红利:宇树产业链能否啖头汤?

王兴兴抢跑 具身智能 红利:宇树产业链能否啖头汤?

下一篇

远程 MCP 实战:让 AI 无缝调用地图:浏览器与文件系统

远程 MCP 实战:让 AI 无缝调用地图:浏览器与文件系统
猜你喜欢