ai / 20260727
15. 怎样评测一个 Agent,而不是评价最终回答
回答看起来正确,不能证明文件真实、过程合规,也不能证明中断后能够继续
本次任务要求读取真实目录、最多列出五项、不修改文件、不访问网络。一个最终回答可能列出五个合理的文件名,却没有真正读取目录;也可能得到正确结果,同时发生了未授权网络请求。
只评价文字,会漏掉 Agent 最重要的运行时行为。
四层指标
| 层级 | 指标 | 本次任务的判定 |
|---|---|---|
| 结果正确性 | 路径和条目是否真实 | 与目录快照比较 |
| 约束遵守 | 是否写入、联网、超过五项 | 检查沙箱和工具事件 |
| 过程效率 | 模型轮次、工具次数、Token、延迟 | 从轨迹统计 |
| 可恢复性 | 中断后是否重复或丢失动作 | 故障注入 |
这四层不能简单合成一个总分。安全约束失败时,即使最终结果正确,也应单独判为失败;否则高文字相似度可能掩盖越权行为。
评测输入需要固定
比较两个 Agent前,至少固定:
- 任务文本。
- 测试目录快照。
- 模型和版本。
- 工具集合与 Schema。
- 权限策略。
- 网络条件。
- 最大轮次与预算。
本次四个 CLI 使用的模型、协议和工具并不相同,Claude Code 与 Grok 也没有完成主请求。因此这组数据适合比较请求结构和已经观察到的轨迹,不适合生成总体能力排名。
结果要由可执行判定器检查
文件名是否存在、JSON 是否符合格式、写入次数是否为零,都可以由确定性程序检查。只有表达质量、解释完整度等难以结构化的部分,才需要人工或模型评分。
模型评分器也需要保存评分标准、模型版本和原始理由。它的分数不是客观真值,而是一项可重复程度有限的测量。
故障集与正常任务集同样重要
Agent 评测应包含:
| 故障 | 观察点 |
|---|---|
| 模型限流 | 是否按策略退避 |
| 工具超时 | 是否取消并保存状态 |
| 权限拒绝 | 是否停止原样重试 |
| 结果截断 | 是否标明不完整 |
| 进程中断 | 是否从合法状态恢复 |
| 外部结果未知 | 是否避免重复副作用 |
只运行顺利路径,会让状态机、幂等和恢复逻辑没有进入测试。
效率不能只看工具次数
Codex 本次使用一条复合 Shell 调用,Kimi 使用两个并行调用。一次调用不必然优于两次:组合动作可能更难定位部分失败;两次调用也可能增加调度和上下文成本。
效率需要同时看端到端延迟、模型轮次、Token、工具耗时和恢复成本。
从单次实验形成回归集
每次发现一种失败,就把输入、环境、期望事件和终止状态保存为测试案例。系统 Prompt、工具 Schema或权限策略变化后重新运行。
评测的目标不是证明 Agent 永远正确,而是让变化产生的影响可以测量:哪类任务改善了,哪项约束退化了,失败停在什么层,是否能够恢复。
到这里,这次抓包已经从四份请求扩展成一套运行时检查框架。系统 Prompt 只是其中一个输入;Agent 是否可靠,还取决于工具契约、权限、状态、事件和评测共同形成的闭环。
版权声明: 如无特别声明,本文版权归 sshipanoo 所有,转载请注明本文链接。
(采用 CC BY-NC-SA 4.0 许可协议进行授权)
本文标题:15. 怎样评测一个 Agent,而不是评价最终回答
本文链接:https://www.sshipanoo.com/blog/ai/agent-runtime-lab/15-怎样评测Agent/