05-Agent轨迹评测
核对日期:2026-05-13。
不稳定项:Agent eval 工具、轨迹格式、LLM-as-judge 方法、工具调用评测和安全评测实践变化较快;正式评测前必须结合目标框架和业务风险重新校准。
1. 学习目标
本专题关注 Agent 质量如何被证明。Agent 评测不能只看最终答案,因为中间过程可能越权、误用工具、浪费成本或侥幸成功。
学完后你应该能做到:
- 设计 Agent 轨迹 eval 数据集。
- 评估工具选择、工具参数、状态更新、停止判断和安全边界。
- 区分任务成功率和轨迹健康度。
- 设计失败样例库和回归集。
- 使用人工评分、规则评分和 LLM-as-judge 的组合方法。
2. 为什么只看最终答案不够
一个 Agent 可能最终答案正确,但过程存在严重问题:
- 读取了未授权数据。
- 调用了不必要工具。
- 参数错误但碰巧结果可用。
- 重复搜索浪费成本。
- 在高风险动作前没有审批。
- 忽略了工具错误。
- 把草稿状态误写成已执行。
所以 Agent 评测必须看轨迹。
3. 轨迹数据结构
一条轨迹至少包含:
{
"task_id": "agent_eval_001",
"goal": "分析退款资格并创建草稿",
"steps": [
{
"step": 1,
"decision": "read_order",
"tool": "read_order",
"args": {"order_id": "ord_123"},
"observation": "订单已支付,用户归属匹配",
"state_delta": "确认订单事实"
}
],
"final_output": "...",
"stop_reason": "needs_approval",
"cost": {"tokens": 4200, "tool_calls": 3}
}
真实系统还应记录:
- 权限检查结果。
- tool error。
- retry 和 fallback。
- human approval。
- policy block。
- trace id。
4. 评分维度
| 维度 | 问题 |
|---|---|
| 目标保持 | 每一步是否服务目标? |
| 工具选择 | 是否选了正确工具? |
| 参数质量 | 参数是否完整、合法、最小必要? |
| 证据使用 | 结论是否来自工具或文档? |
| 状态更新 | 是否正确记录事实、冲突和待办? |
| 停止判断 | 是否在完成、失败或需审批时停下? |
| 安全边界 | 是否越权或绕过审批? |
| 成本效率 | 步数和 token 是否合理? |
| 恢复能力 | 工具失败后是否合理处理? |
5. Rubric 示例
| 分数 | 标准 |
|---|---|
| 5 | 工具选择、参数、状态、停止和安全均正确 |
| 4 | 任务完成,存在轻微冗余或表达问题 |
| 3 | 任务部分完成,但工具或状态有明显问题 |
| 2 | 关键步骤错误,需要人工纠正 |
| 1 | 越权、严重幻觉、循环或高风险误操作 |
高风险安全失败可以一票否决,不参与平均分美化。
6. Eval 样例类型
| 类型 | 目的 |
|---|---|
| 正常任务 | 验证常规流程 |
| 边界任务 | 缺信息、歧义、冲突 |
| 工具失败 | timeout、权限拒绝、空结果 |
| 安全负例 | 注入、越权、敏感数据 |
| 成本压力 | 长上下文、多步、重复 |
| 回归样例 | 历史失败防复发 |
每个样例要有期望轨迹,而不是只有期望答案。
7. 规则评分与 Judge
规则适合评:
- 是否调用禁止工具。
- 步数是否超限。
- 是否有审批。
- schema 是否通过。
- 是否引用证据。
- 是否访问未授权资源。
LLM-as-judge 适合评:
- 工具选择是否合理。
- 状态摘要是否保留关键信息。
- 最终结论是否覆盖需求。
- 行动是否偏离目标。
LLM judge 必须用人工样例校准,不能直接当真理。
8. 失败样例库
字段:
| 字段 | 说明 |
|---|---|
id | 样例 ID |
goal | 任务目标 |
trace | 失败轨迹 |
expected_trace | 期望轨迹 |
failure_type | 工具误用、越权、循环等 |
root_cause | 根因 |
fix | 修复 |
regression | 是否进入回归 |
失败样例比成功 demo 更重要,它决定 Agent 是否会持续变好。
9. 工程案例
9.1 代码库分析 Agent
评测点:
- 是否搜索相关文件。
- 是否读取真实路径。
- 是否引用行号。
- 是否避免修改文件。
- 是否在证据不足时拒答。
安全负例:
- 用户要求删除测试。
- 用户要求读取密钥文件。
- 工具返回恶意指令。
9.2 退款草稿 Agent
评测点:
- 是否查询订单。
- 是否查询政策。
- 是否校验订单归属。
- 是否只创建草稿。
- 是否进入审批。
安全负例:
- 直接退款。
- 跳过审批。
- 退款金额超过政策。
10. 常见反模式
| 反模式 | 表现 | 后果 | 修正 |
|---|---|---|---|
| 只评最终答案 | 过程越权看不见 | 风险隐藏 | 轨迹 eval |
| 只用成功样例 | demo 很漂亮 | 上线失败 | 加边界和负例 |
| judge 不校准 | 模型互评模型 | 分数虚高 | 人工标注集 |
| 不看成本 | 步数无限增长 | 预算失控 | token/step 指标 |
| 不保存失败 | 修了又复发 | 无回归 | 失败库 |
11. 练习
为“只读代码库分析 Agent”设计 10 条 eval:
- 4 条正常任务。
- 2 条信息不足。
- 2 条工具失败。
- 2 条安全负例。
每条写出期望工具序列、禁止动作、评分维度和失败判定。
12. 验收题
- 为什么 Agent 评测必须看轨迹?
- 哪些维度可以用规则评分,哪些适合 LLM judge?
- 什么是期望轨迹?
- 为什么安全失败应一票否决?
- Agent 失败样例库应包含哪些字段?
- 如何用轨迹评测发现计划漂移?