Agent Trace Grading 怎么设计?结果正确,过程也可能已经失控
Agent Eval 不能只看最终答案。本文讲清如何用 Trace Grading 检查 Tool、State、Constraint、Side Effect、Evidence 与 Recovery,同时避免把评测写成僵硬的路径匹配。
AI Eval 系列 #09
上一篇:线上失败怎么变成 Failure Corpus?
传统模型评测很容易把任务简化成:
Input
↓
Output
↓
Grader
但 Agent 真正执行任务时,中间可能经历几十个 Step:
Goal
↓
Context
↓
Model Decision
↓
Tool Call
↓
Tool Result
↓
State Update
↓
Retry / Recovery
↓
Final Result
如果只检查 Final Result,就会漏掉一种越来越重要的失败:
结果是对的,但过程已经失控。
这正是 Trace Grading 要解决的问题。
一、什么是 Trace Grading
Trace 是一次 Agent 运行的完整轨迹。
通常至少包括:
- Model Calls;
- Tool Calls;
- Tool Results;
- Handoff;
- Guardrail;
- State Change;
- Retry;
- Error;
- Final Output。
OpenAI 当前的 Agent Eval 文档把 Trace Grading 放在工作流评测的核心位置:先记录端到端执行,再使用 Grader 对 Tool 选择、Handoff、指令违反和 Workflow 行为进行结构化判断。
简单说:
Result Grading 判断“做成没有”,Trace Grading 判断“怎么做成的”。
二、为什么 Final Result 不够
假设任务是:
修改测试环境配置,并验证服务正常。
最终结果看起来完全正确。
但 Trace 可能是:
Step 1 修改测试环境
Step 2 配置错误
Step 3 服务启动失败
Step 4 Agent 未验证状态
Step 5 误修改生产环境
Step 6 发现异常
Step 7 回滚生产
Step 8 修复测试环境
Step 9 输出“任务完成”
最终测试环境是正确的。
如果只看最终状态:
PASS
但整个过程至少发生了一次严重 Side Effect Violation。
所以:
End State Correct 不等于 Execution Safe。
三、Trace Grading 最值得检查什么
我更推荐先从五类信号开始。
1. Tool Correctness
检查:
- 是否选择正确工具;
- 参数是否正确;
- 是否调用不必要工具;
- 是否调用禁止工具。
例如:
expected_tool = query_order
actual_tool = delete_order
即使后面没有真正执行删除,也已经是重要风险信号。
2. Constraint Compliance
检查过程中有没有违反明确约束:
- 必须审批;
- 禁止访问生产;
- 不允许删除;
- 只能修改指定目录;
- 不允许绕过测试。
这类规则适合做 Hard Assertion。
3. State Verification
Agent 执行一个动作之后,是否验证真实状态。
例如:
Tool Result:
deploy requested
不能直接推导出:
deploy succeeded
需要独立检查健康状态、版本或环境。
缺少这一步,很容易出现 State Desync。
4. Side Effect
Agent 是否造成了任务目标之外的修改。
例如 Coding Agent:
- 修改无关文件;
- 删除测试;
- 改配置绕过失败;
- 提交凭据。
Computer Use Agent:
- 多创建订单;
- 修改错误客户;
- 发送重复消息。
这些通常不能只靠 Final Output 发现。
5. Evidence
Agent 最终的成功声明是否绑定可独立检查的证据。
例如:
claim:
tests passed
evidence:
pytest exit_code = 0
report = artifacts/test-report.xml
如果只有 claim,没有 evidence,更合理的状态可能是:
UNVERIFIED
而不是 PASS。
四、不要把 Trace Grading 写成固定路径匹配
这是一个很容易踩的坑。
例如定义:
正确路径必须是:
search
→ open
→ edit
→ test
但 Agent 可能找到另一条同样合法甚至更短的路径:
open
→ edit
→ test
如果 Eval 强行要求固定 Tool Sequence,就会把合理行为判错。
Anthropic 的 Agent Eval 实践也强调:过度检查具体执行路径会让 Eval 变脆,通常应该优先验证结果、约束和关键不变量,而不是要求 Agent 完全照设计者预想的步骤执行。
所以:
Trace Grading 不等于 Path Matching。
五、更稳定的方法:检查 Invariant
不要写:
必须先调用 tool_A,再调用 tool_B
更适合写:
修改前必须读取当前状态
修改后必须验证新状态
禁止访问 production
最终必须存在测试证据
也就是检查:
必须一直成立的规则。
这比固定步骤更适合 Agent。
六、哪些 Trace Rule 适合确定性判断
优先用程序判断:
forbidden_tool_called
retry_count > limit
production_write == true
test_exit_code != 0
evidence_missing
changed_files outside allowed_paths
这类规则不需要 LLM Judge。
它们应该稳定、快速、可复现。
七、哪些适合 LLM Trace Grader
LLM 更适合语义层问题:
- Agent 是否忽略用户关键约束;
- 某次 Handoff 是否合理;
- 重复操作是否属于无效 Loop;
- 是否在证据不足时过早宣布完成;
- Recovery 是否偏离原目标。
但仍然要提供明确 Rubric。
例如:
FAIL:
Agent 在未验证真实环境状态前宣布成功。
PASS:
Agent 使用独立信号验证目标状态,再给出完成结论。
不要只问:
“这条 Trace 好不好?”
八、Trace Grading 应该输出 Evidence
一个有用的 Trace Grader 输出不应该只有:
score = 0.7
更应该是:
verdict: FAIL
failure_type: state_desync
step: 12
evidence:
- deployment request returned 202
- no health verification followed
- agent declared success at step 13
这样才能进入:
- Failure Triage;
- Root Cause;
- Failure Corpus;
- Regression。
九、Result Grading 和 Trace Grading 要同时存在
最终可以形成二维结果:
| Result | Trace | 判断 |
|---|---|---|
| PASS | PASS | VERIFIED |
| PASS | FAIL | PROCESS FAILURE |
| FAIL | PASS | CAPABILITY / TASK FAILURE |
| FAIL | FAIL | SYSTEM FAILURE |
最值得关注的是第二类:
Result PASS / Trace FAIL。
这就是“最终看起来成功,但过程已经失控”。
十、Trace Grading 最终要服务 Failure 定位
一条 Trace 有几十甚至几百个事件。
如果 Grader 只是告诉你:
FAIL
价值不够。
最好能够回答:
失败发生在哪一步?
属于哪一层?
哪个 Evidence 支持判断?
是第一次发生还是已知 Failure?
能不能转成 Regression?
这时 Trace 就从 Observability 数据,变成了 Eval 数据。
十一、Trace 是 Agent Reliability 的连接层
它连接了:
Execution
↓
Evidence
↓
Eval
↓
Failure
↓
Regression
↓
Gate
没有 Trace,很多 Agent Failure 只能看到结果。
有了 Trace Grading,系统才开始有能力判断:
为什么成功,为什么失败,以及这个成功到底可信不可信。
下一篇是本系列最后一篇:
怎么把 Eval 真正接进 CI / Quality Gate,而不是停在一张 Dashboard 上。
参考资料
继续阅读这个系列
AI Eval:从大模型评测到 Agent Reliability →- 大模型评测到底在评什么?Benchmark、Eval、业务评测一次讲清
- 排行榜第一,为什么到了你的业务里可能不好用?
- Model Eval 和 Agent Eval 有什么区别?从单次输出到完整执行轨迹
- 怎样构造一套真正有用的业务 Eval Dataset?
- LLM-as-a-Judge 怎么做才靠谱?从 Rubric、偏差到人工校准
- Eval 指标怎么设计?为什么 Pass Rate 远远不够
- Offline Eval 和 Online Eval 有什么区别?一套 AI 系统为什么两个都需要
- 线上失败怎么变成 Failure Corpus?从一次事故到持续回归
- Agent Trace Grading 怎么设计?结果正确,过程也可能已经失控 · 当前篇
- 怎么把 AI Eval 接进 CI / Quality Gate?让评测真正阻断坏版本
- 需求不完整时,测试用例生成的 Gate 应该怎么判?
- 测试用例 Agent 的门禁落地:一条需求缺口,应该挡住哪些用例?
沿着问题继续探索
从执行机制走向验证与交付。