基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
  • 知识卡片碎片时间过考点
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
    • AI 热点每日 AI 资讯与动向
AI 工作台
简历
旧版
AIHT
内容
精选全部 AI 动态热点榜AI 日报收藏
分类
模型行业编程产品技术观点开源
更多
Agent 接入
返回首页开发者导航
AIHT
精选 / 资讯详情
8.0
热点
AI SCORE
技术实践2026-11-10 21:36

让 Agent 每次运行都接受评测与故障检验

dev.to · AI#Agent#评测#持续集成
Editor brief · 编辑速览

该方案对 Agent 完整执行轨迹评估工具正确性、循环效率、回答依据和预算遵守情况,并形成通过或失败的门禁。演示将工具故障与样本不足纳入 CI,验证门禁能因正确原因拒绝通过。

文章思维导图
Knowledge map
拖拽缩放
AI deep read

AI 深度解读

Agent 能回答问题,不代表它的运行过程可靠:工具读不到内容时,它可能照样给出答案;预算检查顺序错了,已经付费的调用可能没有记录;评测样本太少,CI 仍可能亮绿灯。grounded-harness 想解决的,就是这些藏在结果背后的问题。

作者把运行循环、轨迹记录和评测门禁接在一起,让每次运行都有可检查的结果。它最值得借鉴的不是功能数量,而是三个约束:未知不能当作零,证据必须达到门槛,门禁必须证明自己能拦住错误。

绿灯可信之前,先让它正确地变红

grounded-harness 是一个 Python 工具调用循环。演示中的 Agent 从知识库回答问题,运行结束时检查四项指标:工具调用是否正确、循环是否高效、回答是否有依据,以及是否遵守预算和结束条件。

正常演示展示了三条轨迹怎样共同通过门禁:

$ grounded-harness demo
  gadget-colours   tool_correctness=ok  loop_efficiency=ok  groundedness=ok  budget_adherence=ok
  rollback-time    tool_correctness=ok  loop_efficiency=ok  groundedness=ok  budget_adherence=ok
  widget-price     tool_correctness=ok  loop_efficiency=ok  groundedness=ok  budget_adherence=ok

  GATE: PASS

要看的是最后一行:单条轨迹通过检查后,还要汇总判断,才能得到整体的 GATE: PASS。

接下来,作者故意破坏读取工具,让它获取的笔记全部为空。这段演示验证门禁能否识别失去证据的回答:

$ grounded-harness demo --sabotage broken-tool
  ! [How long does a rollback take?] claim not grounded: '90 seconds' missing from any tool result
  ! groundedness regressed: 1.0 -> 0.3333
  GATE: FAIL

这里要看 '90 seconds':答案仍然声称回滚需要这么久,工具结果却不再包含依据,因此 groundedness 从 1.0 降到 0.3333,命令以退出码 1 结束。

另一项破坏测试是 grounded-harness demo --sabotage thin-evidence。它只留下 n=1 条 golden,而门禁要求 >=3,所以拒绝放行。这里失败的原因是证据不足,不能据此判断系统表现良好。

两项破坏测试都进入 CI。如果被故意破坏的演示反而通过,构建就失败。门禁的可信度,需要由它拦住错误的能力来证明。

预算检查放错位置,就会出现付费却没记录的调用

作者早期实现里出现过一个顺序错误:模型调用已经付费,步数检查随后触发,轨迹却还没写入。运行停了,那次调用也从记录里消失了。

修复后的规则分成两部分:步数上限在花钱前检查;费用上限在已付费步骤记录完成后结算。预算耗尽是一个合法的运行结果,应该保留已经执行的步骤,并给出如实的部分摘要。

这两个上限不能共用一个检查时机。下一步是否超过步数,调用前就知道;这一步花了多少,通常要等响应回来才能结算。原文引用 Anthropic 的 Claude Agent SDK 作为参照:它也在模型响应到达后比较费用,触及上限的响应仍会完成并计入记录。因此,这种费用上限不保证每次都能在支出发生前精确截停。

还有一种更容易被忽略的情况:配置了费用上限,供应商却停止返回 token 数。此时框架会以「预算不可验证」为由停止继续执行,而不是把未知费用记成免费。

恢复运行也遵循类似原则。已完成步骤从原子检查点重放,不再重复计费;如果输入发生变化,恢复会被直接拒绝。作者认为,重新跑一次的成本,比错误复用旧状态更可接受。

轨迹重放能防回归,但测不到新的模型表现

这里的 golden,是一份录制下来的运行记录,加上一组预期。重放时,模型轮次从记录中恢复,其余部分真实执行,包括运行循环、工具和工具背后的数据。

四类检查分别关注:工具调用序列是否匹配且全部成功,步数是否在允许范围内,声明的事实是否同时出现在最终答案和某次工具结果中,以及结束状态是否符合预期。门禁再把多条 golden 的结果与已提交的基线比较。

这个边界必须讲清:模型输出已经固定,所以重放主要检查框架、工具和工具数据的回归。要判断模型升级后的回答质量,仍然需要实时运行和评审。原文也没有证明「事实出现在工具结果里」就能保证语义推导正确。

真正有说服力的发现,来自一次跨组件集成测试。演示工具通过 stdio 连接真实的 grounded-mcp server,使用随仓库附带的演示知识库,并非工具桩。

grounded-mcp 原有评测全部在进程内、单线程执行,没有经过传输层。MCP Python SDK Version 2 会把同步工具函数放到工作线程运行,结果主线程创建的 SQLite 索引无法跨线程使用,所有访问数据库的工具调用都失败了,原有门禁却仍然是绿色。

作者称修复当天就提交到了上游,并补上跨线程回归测试。它说明了一件具体的事:断言再多,也覆盖不到测试从未走过的执行路径。

我的判断

我认同把轨迹、预算和门禁放进运行时约束。尤其是费用未知时停止,以及用破坏测试验证门禁,这些做法能直接减少「看起来正常」的假象。

但 >=3 是工程门槛,原文没有给出它具备统计代表性的依据。三个样本足以挡住单样本放行,未必覆盖真实任务的复杂度。作者也没有提供与其他框架的对照数据;截至 2026 年 11 月没找到同类方案,是作者的检索结论,不能据此认定业内没有类似实现。

相比只测试最终答案,这套方案更容易定位工具和运行过程中的退化;相比实时模型评测,它结果更稳定,却无法回答模型是否变聪明、是否更容易胡编。两种测试需要配合使用。

能拿来做什么

  • 给现有 AI 编程 Agent 录制一条典型工具调用轨迹,保存调用参数、工具结果和结束状态,在 CI 中重放;按原文这套门禁,积累到至少三条 golden 才能放行。
  • 故意让文件读取或知识检索返回空结果,检查 Agent 是否仍给出无依据的具体结论,并确认门禁会失败。
  • 检查自己的调用循环,把步数判断放在请求之前,把费用结算放在响应记录之后;供应商缺少用量信息时,明确返回预算不可验证。
  • 如果 Node 服务通过 MCP 调用外部工具,补一条经过真实传输层的集成测试,验证工具、存储和运行环境组合起来是否正常。
Original source

本文由 AI 通读原文后重新编写,观点部分为站内判断,细节以原文为准,来源 dev.to · AI,原文版权归原作者所有。

阅读原文
上一篇
用技能与插件复用 Claude Code 项目规范
下一篇
DeepMind 用 AI 验证 Signal 协议安全属性

资讯速览

dev.to · AI · 2026-11-10 21:36

AI 评分 8.0 / 10

相关标签

#Agent#评测#持续集成

继续阅读

  • 用 PostgreSQL 构建分层语义检索
  • 用技能与插件复用 Claude Code 项目规范
  • DeepMind 用 AI 验证 Signal 协议安全属性
  • Node.js 用语义缓存减少大模型重复调用
  • Agent 权限校验应设在工具调用必经处