跳转到内容

Agent Eval 的核心对象:Task、Environment、Trajectory 与 Grader ​

系列:开源模型评测

来源公众号:智能大时代

发布时间:2026-09-10 22:24

原文链接:阅读公众号原文

如果说传统 LLM Eval 是在做“答题评分”,那么 Agent Eval 更像是在观察一个人进入真实工作环境后,能不能把事情做成。

比如给一个办公 Agent 一条指令:

根据 Alice 邮件中提供的 Q4 销售数据,更新季度预测表,并为本周五的 Review Meeting 创建会议草稿。更新时保留已有的历史实际数据;会议仅创建草稿,未经确认不要发送邀请。

这时候,我们就不能只盯着最终回复。Agent 可能说“任务已完成”,但真正重要的是:它读了哪封邮件?更新的是不是正确表格?有没有改坏公式?会议是否创建在正确时间?有没有越权发送邀请?

也就是说,一次 Agent Eval 关注的不只是“输入 → 输出”,而是一条完整链路:

Task + Environment         ↓    Agent Rollout         ↓     Trajectory         ↓       Outcome         ↓       Grader

理解这条链路,基本就理解了 Agent Eval 最重要的一组基础概念。

1. Task:到底让 Agent 做什么 ​

Task 不应该只是一段自然语言 Prompt。一个真正可评测的任务,至少要回答四件事:

用户要求 Instruction、任务开始时的世界状态 Initial State、成功条件 Goal、不能违反的约束 Constraints。

对于上面的例子:

  • • Instruction:根据邮件更新 forecast,并创建会议草稿;

  • • Initial State:邮箱里有多封邮件,表格里已有 actual 和 forecast,日历里已有其他会议;

  • • Goal:正确的 Q4 forecast 被更新,会议草稿被创建;

  • • Constraints:不能覆盖历史 actual,不能邀请错误的人,不能未经确认直接发送。

这里要区分 Instruction 和 Goal:Instruction 是 Agent 收到的任务描述,Goal 是 Eval 系统判断任务是否完成的标准。

如果两者没有定义清楚,那么后面的 Grader 再精确,也可能只是在“精确地评错题”。

2. Environment:Agent 操作的“世界” ​

LLM 通常是在文本空间里回答问题,而 Agent 会操作一个有状态的环境。

这个环境可能是代码仓库、Linux 容器、浏览器,也可能是 Email、Calendar、Spreadsheet、CRM。

可以把 Environment 简化理解为四部分:E=(S,O,A,P)

S 是环境状态,O 是 Agent 能看到的 Observation,A 是允许执行的 Action 或 Tool,P 是动作之后状态如何变化。

例如,Agent 调用 update_cell() 后,表格状态发生变化;调用 create_event() 后,日历里多了一个会议对象。

这也是 Agent Eval 和普通 LLM Eval 最本质的区别之一:

传统 LLM Eval 更多关注模型生成了什么;Agent Eval 则进一步关注 Agent 实际做了什么,以及环境状态是否被正确改变。

换句话说,LLM Eval 更多是在评“说得对不对”,而 Agent Eval 还要进一步评“事情有没有真的做对”。

3. Trajectory:Agent 到底做了什么 ​

Agent 执行任务时,会产生一条连续的行为轨迹,也就是不断重复“观察环境 → 执行动作 → 获得反馈”的过程。

例如下面是文章开头例子的一条 Trajectory:

搜索 Alice 的邮件 → 打开附件 → 读取 Q4 数据 → 找到 forecast 表格 → 更新数据 → 检查日历 → 创建 meeting draft

Trajectory 非常有价值,因为它能帮助我们分析 Agent 为什么失败、是否出现循环和无效步骤、是否调用了错误工具、是否发生越权,以及成本和延迟花在了哪里。

但是也要说明:

记录 Trajectory,不等于必须按照 Trajectory 评分。

同一个任务通常存在多条合法路径。不同模型、不同 Scaffold,甚至同一个 Agent 的不同 Rollout,都可能采用不同的工具和执行顺序。只要最终结果正确,并且没有违反过程约束,就不应该因为路径不同而判错。

一个实用原则是:

Outcome First,Process When Necessary。

默认优先检查结果 Outcome;只有当安全、权限、不可逆操作、成本或业务规则与过程有关时,才需要评过程 Process。

例如,最终会议虽然创建正确,但 Agent 中途曾把机密附件发送给外部邮箱,仅检查最终状态显然是不够的。

4. Verifier、Grader、Metric、Reward 到底有什么区别 ​

这几个词经常混在一起,其实可以顺着一次 Eval 的数据流理解。

Verifier 负责验证具体事实,例如:

assert spreadsheet["Q4 Forecast"] == expected assert calendar.has_event("Q4 Review")

回答的是:“这个事实成立吗?”

Grader 是把多个 Verifier、规则或语义判断组合起来,对一次 Trial 给出评价,例如:

{  "goal_completed": true,  "actual_overwritten": false,  "unauthorized_send": false,  "pass": true }

它回答的是:“这次任务完成得怎么样?”

Metric 是我们希望量化的评测指标,例如成功率、平均成本、P95 延迟、权限违规率、Pass@k。它可以来自 Grader,也可以直接来自运行数据。

它回答的是:“我们用什么数字来描述系统表现?”

而 Reward 属于另一条链路。

当一个评价信号进入训练过程,用来推动模型改变策略,它就不再只是“测量工具”,而变成了“优化目标”。

Eval Grader 和 Training Reward 可以共享某些机制,但不能简单视为同一个东西。两者最大的区别不在于“是不是一个数字”,而在于系统是否开始主动优化这个信号。

一旦评价信号成为优化目标,就需要进一步警惕 Goodhart、reward hacking 等问题。

5. 一次失败,不一定是模型失败 ​

Agent Eval 还有一个很重要的基础认识:

Fail ≠ Model Failure。

一次任务失败,可能来自很多层:

Model Scaffold Tool Environment Task Grader Infrastructure

例如 Agent 没有完成任务,可能是模型不会规划,也可能是 Tool Schema 写得含糊、环境发生异常、任务本身无解,甚至是 Grader 把正确结果判错了。

所以 Trajectory 不仅可以帮助我们“看 Agent 做了什么”,还可以帮助形成 Failure Attribution 的假设:到底是谁出了问题?

但仅仅查看 Trajectory,通常还不能完成真正的归因。要进一步判断问题究竟来自哪一层,还需要进行干预实验:例如固定模型更换 Scaffold、固定 Agent 更换 Tool 实现、重跑同一任务,或者用新的 Grader 对已有轨迹重新评分。

这样,我们就能把 Eval 从“给模型打分”,进一步升级成“定位系统瓶颈”。

结语 ​

把一次 Agent Eval 拆开来看,其实并不复杂:

Task:要做什么 Environment:在哪个世界里做 Trajectory:具体做了什么 Outcome:世界最终变成了什么 Verifier:某个事实是否成立 Grader:这次任务完成得怎么样 Metric:用什么指标描述系统表现 Reward:如何把评价变成优化信号

Agent Eval 的核心,不是找一个更聪明的 Judge,而是建立一条完整、可信的证据链:

任务定义 → 环境执行 → 轨迹记录 → Outcome 检查 → Grader 评价 → Metric 汇总

当这条链路成立之后,我们才有基础继续讨论成功率、排行榜和模型比较,也才有可能进一步把 Eval 数据用于系统优化和模型后训练。

持续沉淀企业 AI 技术内容。