同一个任务,要求 Agent 搜索某个 API 的最新用法并写成摘要,可能跑出三条轨迹:

search -> summarize
search -> read -> summarize
webfetch -> summarize

哪一条才算对?

答案可能是,三条都对。只要 Agent 读取了权威来源,先拿到证据再写摘要,最终引用了官方文档,就没有必要规定它必须调用同一个工具、走同一条路径。

如果评测只认一条预先写死的 golden path,两次本来合理的执行会被误判失败。可如果完全不看过程,只验收摘要,又可能放过没有读取来源、直接凭记忆生成的答案。

这个小例子把 Agent 评测里最关键的对象暴露了出来。

评测的最小单元不是 prompt,而是一次完整的 task run

从 prompt 到 task run,评测对象变大了

一次 prompt 只描述模型收到的一段输入。一次 task run 则要装下用户目标、输入、成功标准、运行环境、可用工具与权限、执行 trace、最终结果和评分。后面讨论 Context、Plan、Tool、State、Memory、安全和回归时,都要回到这个完整单元,看模块怎样影响任务成功,以及证据能不能证明它没有破坏任务。

可以把 task run 想成一个证据盒。盒子里不是只有答案,而是一组彼此有关联的对象:

这些对象的边界很重要。Context 是这一步能看到什么,State 是这次任务进行到哪里,Memory 是哪些信息会跨任务留下来。混在一起记录,问题出现时就很难判断是信息选错、进度丢失,还是旧记忆污染。

同一次运行,要从八个层级看

证据盒装的是对象,指标回答的是怎样评价这些对象。一个总分很容易掩盖问题,所以总指标模型可以拆成八层:

同一条运行完全可能出现「任务级通过,安全级失败」。也可能结果正确、工具调用略多,因此只扣成本分而不判任务失败。分层的价值正在这里,团队看到的不是一个模糊的高低分,而是问题落在哪个对象、哪个层级。

反过来看,很多所谓 Agent 失败,其实是评测定义先出了问题。Task 没写清什么算成功,case 和 rubric 就无从判断;最终答案看着正确却没有引用工具结果或业务状态,这是 grounding 证据缺失;只统计工具调用数量,会把必要探索误判成低效;人工判断没有 rubric,评分也无法复现。

最常见的两个极端,一个是只看最终答案,危险调用和越权读取全部隐身;另一个是把黄金路径写得过死,多条合理轨迹反而被判错。

Agent 评测要约束关键节点,不要规定每一步脚印。

Trace 不是录像,而是可查询的事件模型

为了让不同模块的证据能对齐,可以先约定一个简单的统一模型:

trace = one task run
span = one meaningful operation

一次完整任务对应一个 trace,一次有意义的操作对应一个 span。常用 span 类型包括:

每个 span 至少记录 span_idparent_span_idtypestart_timeend_timestatusinput_refoutput_referrorcostevidence_ref

有了父子关系和证据引用,测试人员才能回答一组真正有用的问题。摘要之前读了什么?工具报错后是谁触发了重试?某次 state update 依据哪条 observation?最终结论又引用了哪份 artifact?

Trace 的作用不是逼所有 Agent 走同一条路,而是让每一条被接受的路都能说清依据。

评分规则,要适配开放轨迹

一套实用的评分通常由三部分组成:

  1. 规则评分,检查格式、字段、工具参数、权限和测试是否通过。
  2. Rubric 评分,判断开放结果、计划质量、解释质量与轨迹合理性。
  3. 人工复核,处理高风险样本、争议样本和裁判低置信度样本。

对 Agent 任务,不建议把「最终答案相似度」当作主指标。更稳的方式,是把任务拆成关键检查点:

检查点可以约束先后关系,也可以设置必须出现和禁止出现的证据,却不用指定唯一序列。这样既容纳 Agent 的路径多样性,也没有放弃可验证性。

样本集要让每个对象都有机会出错

只有正常成功样本,很难验证这套指标能不能归因。第一批数据可以按风险铺开:

这些样本跑完后,失败应当能归因到模型、工具、数据、权限、状态或流程,而不是只留下一句「Agent 没做好」。

再看那三条 API 搜索轨迹

回到开头。这里不该固定唯一 golden path,更合理的是定义四类约束:

这样评测的就不再是 Agent 有没有模仿某条标准动作,而是它有没有在明确约束下完成任务,并留下足以证明结果的证据。

落地前再核对一次,task run 是否真的是评测单元,成功标准是否写进 rubric,八层指标是否分开,tool call 与 observation 是否都保留,多条合理轨迹是否被允许,人工复核与裁判校准是否有入口。

这些定义站稳以后,后面的上下文、规划、工具、状态、记忆、安全和回归,才不会停留在概念解释,而能继续落到样本、span 字段、评分规则和发布准出。


↙↙↙阅读原文可查看相关链接,并与作者交流