E AI 评测 企业级质量体系
导航
章节 / 第三篇:设计可信评测方案

第 14 章:Agent 轨迹级评测方法论

第 14 章:Agent 轨迹级评测方法论

14.1 最终成功不等于过程可靠

一个代码 Agent 最终修复了 Bug,测试也通过了。但评测人员回放轨迹后发现,它在过程中删除了一个失败测试,又修改了无关配置文件,最后靠绕过检查得到了“成功”结果。

一个客服 Agent 最终告诉用户退款进度,但过程中调用了一个不该访问的内部工具,查询到了超出当前用户权限的数据。

如果评测只看最终结果,这两个任务都会被判为成功。但从企业级质量视角看,它们都存在严重风险。

Agent 与普通 LLM 应用最大的不同,是它会在环境中执行多步动作。它不仅生成答案,还会规划、调用工具、读写状态、处理异常、改变外部系统。最终结果只是高度压缩的信号,过程才决定系统是否安全、稳定、可调试、可进化。

因此,Agent 评测必须把 Trace 作为一等对象。

14.2 什么是 Agent Trace

Agent Trace 是一次 Agent 执行任务的结构化过程记录。

它至少要回答:

  • Agent 接收到什么目标。
  • 初始环境和状态是什么。
  • 每一步做了什么决策。
  • 调用了什么工具,参数是什么。
  • 工具返回了什么。
  • 状态如何变化。
  • 是否发生错误、重试、循环或人工接管。
  • 最终结果和终态是什么。
  • 过程消耗了多少时间、Token 和外部资源。

一个最小 Trace 可以表示为:

图 14-1 Agent Trace 记录流程图

flowchart TD
  START["接收任务目标与初始状态"] --> PLAN["任务规划"]
  PLAN --> DECIDE{"决策下一步动作"}
  DECIDE -->|tool_call| CALL["调用工具"]
  CALL --> OBSERVE["获取工具返回/环境反馈"]
  OBSERVE --> UPDATE["更新状态"]
  DECIDE -->|response| RESP["生成回复"]
  UPDATE --> RECORD["记录Step: action/observation/state_change"]
  RESP --> RECORD
  RECORD --> CHECK{"任务完成或终止?"}
  CHECK -->|否| DECIDE
  CHECK -->|是| FINAL["记录最终状态与成本/延迟"]
trace_id: trace_refund_001
case_id: agent_refund_status_001
goal: "查询退款进度并解释未到账原因"
initial_state:
  user_authenticated: true
  order_id: "ORDER_123"
steps:
  - step_id: 1
    action_type: tool_call
    tool_name: refund_status_lookup
    arguments:
      order_id: "ORDER_123"
    observation:
      refund_status: "processing"
      estimated_arrival_days: 2
    state_change:
      refund_status_known: true
  - step_id: 2
    action_type: final_response
    content: "你的退款正在处理中,预计 2 个工作日内到账。"
final_state:
  task_completed: true
  privacy_violation: false
metrics:
  latency_ms: 1800
  token_cost: 1200

真正的生产 Trace 会更复杂,但核心思想不变:把 Agent 的过程从黑盒变成可回放、可评分、可归因的数据结构。

14.3 Trace Schema 的核心字段

字段 说明
trace_id 轨迹唯一标识
case_id 对应 Eval Case
goal 用户目标或任务目标
initial_state 初始状态
environment 工具、权限、知识库、沙箱配置
steps 决策和动作序列
action 每一步动作
observation 工具、环境或用户返回的信息
state_change 状态变化
error 异常、失败、超时
final_response 最终回答
final_state 最终业务状态
cost Token、工具、沙箱资源成本
latency 总耗时和步骤耗时

每一步 Step 也应结构化:

Step 字段 说明
step_id 步骤编号
timestamp 时间
thought_summary 可选的决策摘要,不要求保存完整思维链
action_type 回复、工具调用、状态更新、转人工等
tool_name 工具名称
arguments 工具参数
observation 工具返回或环境反馈
state_before 动作前状态
state_after 动作后状态
evaluator_notes 步骤级评分或诊断

这里需要注意:企业评测并不一定需要保存完整模型思维链。很多情况下,保存可解释的决策摘要、工具调用、输入输出和状态变化已经足够。Trace 的目标是支持评测、回放和归因,而不是无限制记录敏感内部信息。

14.3.1 Trace 采集的最小必要原则

Trace 越完整,越有利于归因;但 Trace 也会带来隐私、存储和安全风险。企业系统应采用最小必要原则。

至少应保存:

信息 原因
工具名称和参数 判断工具选择和参数是否正确
工具返回摘要 判断 Agent 是否正确使用结果
状态变化 判断多轮状态和业务终态
错误和重试 判断异常恢复
成本和延迟 判断效率和循环
版本信息 支持复现

不应无控制保存:

  • 用户完整隐私信息。
  • 不必要的敏感业务数据。
  • 未脱敏的地址、手机号、证件号。
  • 与评测无关的完整内部推理文本。

例如,客服 Agent 的 Trace 可以保存“用户已完成身份核验”和“工具返回退款状态为处理中”,不必保存完整身份证号或收货地址。Trace 是评测证据,不是数据泄露的新入口。

14.4 结果评测和过程评测的差异

结果评测回答:“任务最终成了吗?”

过程评测回答:“任务是如何完成的,这个过程是否可靠、安全、可复现?”

维度 结果评测 过程评测
评测对象 最终回答或最终状态 步骤、工具、状态、异常、成本
主要问题 答案是否正确,任务是否完成 路径是否合理,是否有风险动作
优势 简洁,贴近用户感知 可归因,可调试,可发现隐藏风险
局限 无法解释失败原因 采集和评分成本更高

Agent 场景中,两者必须结合。只看结果会漏掉危险过程,只看过程可能忽视最终用户体验。

14.5 轨迹评分维度

Agent Trace 可以从八个维度评分。

14.5.1 规划合理性

Agent 是否把任务拆成合理步骤,是否先做必要确认,再执行高风险动作。

客服退款场景中,合理规划应该是:识别意图、校验身份、查询订单、判断资格、解释结果或提交申请。跳过身份校验直接执行退款,就是规划失败。

14.5.2 步骤必要性

每一步是否必要。无意义的重复查询、反复询问用户已提供的信息、过度调用工具,都会增加成本和失败概率。

14.5.3 工具选择

是否选择了正确工具。比如退款进度问题应调用 refund_status_lookup,而不是直接调用 refund_submit。

14.5.4 参数准确性

工具选对不代表参数正确。订单号、用户 ID、退款原因、金额、时间范围都可能出错。

14.5.5 结果利用

Agent 是否正确使用工具返回结果。常见问题是工具返回“不可退款”,但 Agent 仍然承诺可以退款。

14.5.6 状态一致性

多轮对话中,Agent 是否正确维护身份、订单、用户目标和任务进度。

14.5.7 异常恢复

工具超时、返回空结果、权限不足时,Agent 是否能重试、降级、解释或转人工。

14.5.8 安全和副作用

Agent 是否越权访问、泄露隐私、执行不可逆动作,或在缺少确认时改变外部状态。

14.6 轨迹级评分 Rubric

可以用如下 Rubric 评估 Agent Trace:

维度 通过标准 失败信号
规划合理性 步骤顺序符合任务和业务约束 跳过必要确认、顺序错误
工具选择 每次工具调用都有明确必要性 工具错用、过度调用
参数准确性 参数来自可信上下文且字段正确 错订单、错用户、错金额
状态一致性 多轮状态前后一致 忘记已验证身份、丢失订单
结果利用 正确解释和使用 observation 忽略工具返回、与返回冲突
异常恢复 能处理失败、超时和空结果 卡死、循环、错误承诺
安全边界 不越权、不泄露、不危险执行 未授权调用、高危副作用
成本效率 步骤数和资源消耗可接受 无效循环、重复调用

高风险维度不能被总分抵消。只要发生隐私泄露、越权工具调用或危险副作用,Trace 应直接失败。

14.6.1 步骤级评分示例

以会员部分退款为例,Trace 可以逐步评分:

步骤 实际动作 评分维度 结果
1 识别用户询问部分退款和积分 意图理解 通过
2 检索通用退款政策 RAG 证据 部分通过,缺少会员积分规则
3 未调用退款规则工具 工具选择 失败
4 直接承诺积分不会扣回 安全边界 / 证据忠实 失败
5 未提示转人工 异常兜底 失败

最终回答失败不是唯一结论。更重要的是,Trace 说明错误发生在步骤 2-4:证据不足、工具策略缺失、生成阶段无依据承诺。这会直接指向第 21 章的分层归因。

14.6.2 首个关键失败步骤

Trace 评分不应只给出一串通过和失败标签。归因时最重要的是找到首个关键失败步骤。

首个关键失败步骤,是指如果该步骤正确执行,后续错误大概率不会发生的步骤。它不一定是最终显性失败的位置。

例如,客服 Agent 最终错误承诺“积分不会扣回”,显性失败出现在最终回答。但首个关键失败可能更早:

  1. Query 改写阶段丢失“会员积分”。
  2. 检索阶段没有召回积分规则。
  3. Agent 计划阶段没有调用退款规则工具。
  4. 生成阶段在证据不足时仍做确定承诺。

如果首个关键失败在第 2 步,修复方向应优先看 RAG;如果在第 3 步,应优先看工具策略和编排;如果前面证据和工具都正确,仍在第 4 步失败,才更可能是 Prompt 或模型忠实性问题。

因此,Trace 回放报告应同时记录:

项目 作用
first_critical_failure_step 定位首个关键失败
downstream_failures 记录后续连锁错误
root_cause_hypothesis 形成根因假设
counterfactual_check 验证如果修正该步骤,结果是否改善

这能避免团队只修最终回答,而忽略真正导致失败的中间链路。

14.7 沙箱与动态环境

Agent 评测不能只在静态文本上完成。凡是涉及工具、代码、浏览器、数据库、文件或业务系统状态变化的任务,都需要动态环境。

沙箱要提供:

  • 初始状态:订单、账户、文件、数据库、网页等。
  • 可用工具:工具 Schema、权限、返回模拟。
  • 状态变化:工具调用后环境如何改变。
  • 终态检查:任务是否真的完成。
  • 隔离机制:避免评测影响真实生产系统。
  • 日志和 Trace:记录每一步动作。

客服 Agent 沙箱可以模拟订单、退款状态、用户身份、工具返回和权限规则。代码 Agent 沙箱可以包含仓库、测试、依赖、文件系统和命令执行权限。

沙箱最大的问题是保真度。环境过于简化,Agent 在评测中表现很好,生产中仍会失败。环境过于复杂,又会导致成本和维护压力过高。评测团队需要明确:哪些环境细节必须真实,哪些可以模拟。

14.7.1 沙箱中的副作用隔离

动态评测必须处理副作用隔离。Agent 如果能提交退款、修改账户、发送通知或创建工单,评测环境必须保证这些动作不会影响真实用户和生产数据。

副作用隔离至少包括:

隔离项 要求
数据隔离 使用沙箱订单、沙箱用户和沙箱权益
工具隔离 提交类工具指向模拟服务或预提交接口
状态回滚 每个 Case 运行后能恢复初始状态
幂等控制 重复调用不会造成重复业务动作
审计标记 所有评测动作都带有 eval_run_id
权限限制 评测账号不能访问生产敏感数据

没有副作用隔离,Agent 评测会变成生产风险;隔离过度简化,又会让评测失真。出版级的轨迹评测必须同时说明这两个边界:既要安全隔离,也要保留足够真实的业务状态和错误模式。

14.8 沙箱保真度检查清单

检查项 问题
工具行为 工具返回是否接近真实系统
错误模式 是否模拟超时、空结果、权限失败
状态变化 工具调用后状态是否真实改变
权限边界 是否模拟不同用户和角色权限
数据分布 测试数据是否覆盖真实业务状态
并发和时序 是否考虑重复提交、状态延迟
审计日志 是否保留可回放记录
成本约束 沙箱资源是否能支撑规模化评测

沙箱不是越真实越好,而是要对评测目标足够真实。

14.8.1 沙箱保真度分级

沙箱可以按保真度分级,避免所有任务都使用最高成本环境。

等级 特征 适用场景
L1 静态模拟 固定输入和固定工具返回 Smoke、格式和简单工具选择
L2 状态模拟 工具调用会改变状态 退款进度、订单状态、多轮流程
L3 异常模拟 包含超时、空值、权限失败 异常恢复、重试、转人工
L4 生产近似 接近真实权限、数据分布和延迟 发布前高风险回归
L5 受控线上 小流量灰度和真实监控 最终真实分布验证

客服 Agent 的普通政策问答可以用 L1 或 L2;退款工具和身份校验应至少用 L3;涉及提交类工具的发布前评测,应接近 L4。这样可以在成本和保真度之间平衡。

14.9 长程任务评测

长程 Agent 任务的难点是错误会累积。早期一个小错误,可能在后续多步中被放大。

长程任务评测要关注:

  • 分阶段成功率。
  • 中间状态正确性。
  • 关键步骤通过率。
  • 错误恢复能力。
  • 循环和卡死检测。
  • 成本随步骤增长的放大。

代码 Agent 修复真实 Issue 时,不能只看最终测试是否通过,还要看:

  • 是否理解 Issue。
  • 是否定位到正确文件。
  • 是否修改最小必要代码。
  • 是否运行相关测试。
  • 是否避免无关修改。
  • 是否保留原有行为。

长程任务可以拆成里程碑评分。每个关键状态都要可检查,而不是只等最后结果。

14.9.1 长程任务切片

长程任务不应只形成一个大 Case。更好的方式是切成可评测片段。

切片 评测目标
目标理解切片 是否正确理解用户最终目标
计划切片 是否拆成合理步骤
工具切片 每个关键工具调用是否正确
状态切片 中间状态是否符合预期
异常切片 工具失败后是否合理恢复
终态切片 最终业务状态是否完成

代码 Agent 修复 Bug 可以切成“定位文件”“提出修复假设”“修改代码”“运行测试”“解释变更”。客服 Agent 退款流程可以切成“身份核验”“订单查询”“规则判断”“工具执行”“结果解释”。切片后,评测结果更容易归因,也更适合构建 Regression Set。

14.10 多 Agent 协作评测

多 Agent 系统增加了新的失败模式:

  • 角色边界不清。
  • 信息传递丢失。
  • 多个 Agent 相互强化幻觉。
  • 循环讨论。
  • 决策责任不明确。
  • 工具权限分配混乱。

多 Agent 评测需要额外关注:

维度 评测问题
角色分工 每个 Agent 是否承担清晰职责
信息传递 关键信息是否准确传递
决策收敛 是否能形成最终行动
幻觉传播 错误信息是否被其他 Agent 接受
协作效率 是否出现无意义反复
权限隔离 是否越权调用其他角色工具

多 Agent 不是本书主线,但这些原则可以复用到复杂企业 Agent 系统。

14.11 Trace 回放与归因

Trace 的价值不只是评分,更重要的是归因。

当客服 Agent 错误承诺退款时,Trace 回放可以帮助团队判断:

  1. 是否召回了正确政策。
  2. 是否调用了退款资格校验工具。
  3. 工具返回是否正确。
  4. Agent 是否忽略了工具结果。
  5. 是否跳过了身份校验。
  6. 错误发生在哪一步。

没有 Trace,团队只能看最终回答猜原因。有 Trace,团队可以把错误定位到具体步骤。

Trace 还支持消融实验:

  • 固定检索结果,看模型是否仍答错。
  • 固定工具返回,看编排是否仍失败。
  • 替换 Prompt,看规划是否改善。
  • 替换模型,看工具调用是否改善。

这些实验能把“Agent 表现不好”拆成可修复的工程问题。

14.11.1 Trace 回放报告

Trace 回放应输出一份简短诊断报告,而不只是展示日志。

报告至少包含:

字段 说明
case_id 对应 Case
failure_step 首个关键失败步骤
affected_layers 涉及模型、Prompt、RAG、Tool、Agent 或业务规则
evidence 支撑判断的 Trace 片段
counterfactual 对照实验结果
suggested_fix 修复方向
regression_asset 是否进入回归集

退款误答的回放报告可以指出:首个关键失败步骤是检索没有召回会员积分规则;次要失败步骤是 Agent 没有调用退款规则工具;注入正确证据后模型可正确回答,说明主修复方向是 RAG Query 和工具策略,而不是直接微调模型。

14.12 交付物一:Agent Trace Schema

字段 类型 说明
trace_id string 轨迹唯一标识
case_id string 对应 Eval Case
goal string 任务目标
initial_state object 初始状态
environment object 工具、权限、知识库、沙箱
steps list 步骤序列
final_response string 最终回答
final_state object 终态
metrics object 成本、延迟、步骤数等
evaluation object 轨迹评分和失败标签

Step Schema:

字段 类型 说明
step_id number 步骤编号
action_type enum response / tool_call / state_update / handoff
tool_name string 工具名
arguments object 工具参数
observation object 返回结果
state_before object 动作前状态
state_after object 动作后状态
error object 错误信息
latency_ms number 步骤耗时
cost object 资源消耗

14.13 交付物二:轨迹级评分 Rubric

评分维度 评分方式 门禁建议
任务规划 1-5 分 低于 3 进入人工复核
工具选择 pass / fail 核心工具错误可阻断
参数准确性 字段级准确率 高风险参数错误阻断
状态一致性 pass / fail 身份和权限状态错误阻断
异常恢复 1-5 分 连续失败无恢复进入回归
安全边界 pass / fail 越权、泄露、危险操作一票否决
成本效率 数值指标 超阈值进入软门禁

14.14 交付物三:沙箱保真度检查清单

类别 检查问题
初始数据 是否覆盖真实业务状态
工具模拟 工具返回是否包含成功、失败和异常
权限系统 是否模拟不同角色和身份状态
状态变化 操作后状态是否真实改变
终态校验 是否能判断任务是否真正完成
安全隔离 是否避免影响生产系统
可观测性 是否记录完整 Trace
可扩展性 是否能批量运行

14.15 本章小结

Agent 评测不能只看最终答案。过程、状态、工具、副作用和环境同样重要。

Trace 让 Agent 从黑盒变成可回放系统。它支撑三类能力:

  1. 过程评分:判断路径是否合理、安全、高效。
  2. 失败归因:定位错误发生在哪一步。
  3. 优化闭环:把问题转化为 Prompt、RAG、工具、编排或数据改进。

有了完整的评测方案,下一章我们要回答一个关键问题——评测结果本身可信吗?统计方法和 Meta-Eval 如何帮我们避免被分数误导。