这篇解决了「Agent 到底该怎么评」的问题:从概念定义到可直接照抄的路线图,一站式讲清 Agent 评测的落地方法。

最值得拿走的是三类评分器(代码/模型/人工)的选型框架,以及 pass@k 与 pass^k 的区分——前者衡量「至少成功一次」,后者衡量「次次都成功」,面向客户的产品应盯后者。最易误用之处:用固定工具调用序列当评分标准,作者明确主张「评产物而非路径」;此外多次试验 0% 通过率往往是任务坏了,不是模型不行。

相比站内已有的评测概念内容,这篇是 Anthropic 在 SWE-bench、τ2-bench 等基准语境下的一手实践:20-50 个真实故障任务即可起步、评测饱和与「毕业」为回归套件的生命周期视角、以及评测驱动开发(先写评测定义未来能力,等新模型发布时验证押注)。国内读者可直接把第 4-8 步套进自己的 CI 流程,并把领域专家贡献评测任务纳入协作机制。

读完今天就从客服队列或 bug 列表里挑 20 个真实故障,写成带参考解法的评测任务。

—— FDEChina编辑部 · 架构师视角

导语

良好的评测(evaluation,简称 eval)能帮助团队更有底气地发布 AI Agent。没有评测,团队很容易陷入被动循环——只在生产环境中发现问题,而修好一个故障又会引发新的故障。评测能在问题和行为变化影响用户之前就让它们显形,而且其价值会在 Agent 的整个生命周期中不断复利累积。

正如我们在 Building effective agents 一文中所描述的,Agent 的运行横跨许多回合:调用工具、修改状态,并根据中间结果不断调整。让 AI Agent 有用的那些能力——自主性、智能与灵活性——恰恰也是让它们更难被评测的原因。

通过内部实践,以及与处在 Agent 开发前沿的客户合作,我们摸索出了如何为 Agent 设计更严谨、更有用的评测。以下是这些方法在真实部署中、跨多种 Agent 架构与用例反复验证有效的经验。

评测的结构

评测(eval)是对 AI 系统的一次测试:给 AI 一个输入,然后对其输出应用评分逻辑来衡量成败。本文聚焦于可以在开发过程中运行、无需真实用户参与的自动化评测。

单轮评测很简单:一条提示词、一个响应、一套评分逻辑。对早期的 LLM 而言,单轮、非 Agent 化的评测是主要评测方式。随着 AI 能力的进步,多轮评测变得越来越普遍。

在一个简单的评测中,Agent 处理一条提示词,由评分器(grader)检查输出是否符合预期。在更复杂的多轮评测中,一个编码 Agent 会拿到工具、一个任务(此例中是构建一个 MCP server)和一个环境,执行「Agent 循环」(工具调用与推理),并把实现写入环境。评分阶段再用单元测试来验证这个 MCP server 能否正常工作。

Agent 评测还要更复杂。Agent 会在许多回合中使用工具、修改环境状态并随机应变——这意味着错误会传播并叠加。前沿模型还可能找到超出静态评测边界的创造性解法。例如,Opus 4.5 在解 τ2-bench 一道订机票的题目时,发现了政策中的一个漏洞。按评测的原意它「失败」了,但实际上它为用户找到了更好的方案。

构建 Agent 评测时,我们使用以下定义:

  • 任务(task,也叫 problem 或 test case):一次有明确输入与成功标准的单独测试。
  • 任务的每次尝试是一个试验(trial)。由于模型输出在多次运行之间会有波动,我们会运行多次试验来获得更一致的结果。
  • 评分器(grader):对 Agent 表现的某个方面打分的逻辑。一个任务可以有多个评分器,每个评分器内部又包含多条断言(assertion,有时也叫 check)。
  • 转录(transcript,也叫 trace 或 trajectory):一次试验的完整记录,包括输出、工具调用、推理、中间结果以及其他所有交互。对 Anthropic API 来说,就是评测运行结束时完整的 messages 数组——包含评测期间对 API 的所有调用与返回的全部响应。
  • 结果(outcome):试验结束时环境中的最终状态。一个订机票 Agent 可能会在转录末尾说「您的机票已订好」,但结果指的是环境的 SQL 数据库里是否真的存在一条预订记录。
  • 评测框架(evaluation harness):端到端运行评测的基础设施。它提供指令与工具、并发运行任务、记录所有步骤、给输出打分并汇总结果。
  • Agent 框架(agent harness,或 scaffold):让模型能够作为 Agent 行动的系统:处理输入、编排工具调用并返回结果。当我们评测「一个 Agent」时,评测的是框架与模型协作的整体。例如,Claude Code 是一个灵活的 Agent 框架,我们通过 Agent SDK 使用它的核心原语构建了自己的长时运行 Agent 框架。
  • 评测套件(evaluation suite):一组为衡量特定能力或行为而设计的任务。同一套件内的任务通常共享一个大的目标。例如,一个客服评测套件可能涵盖退款、取消与升级转人工。

Agent 评测的组成部分。

为什么要构建评测?

团队刚开始构建 Agent 时,靠人工测试、内部试用(dogfooding)和直觉相结合,往往能走得出乎意料地远。更严格的评测甚至可能显得像是拖慢发布的开销。但一旦度过早期原型阶段,当 Agent 进入生产环境并开始规模化之后,没有评测的开发方式就开始失效。

崩溃点往往出现在用户反馈「改动之后 Agent 变差了」的时候,而团队正处于「盲飞」状态,除了反复试错之外别无验证手段。没有评测,调试是被动的:等投诉、手工复现、修 bug,然后祈祷没有引入新的回归。团队无法区分真实的回归与噪声,无法在发布前针对数百个场景自动测试变更,也无法衡量改进。

我们目睹过许多次这样的进程。例如,Claude Code 早期依靠 Anthropic 员工与外部用户的反馈快速迭代。后来我们加入了评测——先是针对简洁性、文件编辑这类窄领域,随后扩展到过度工程这类更复杂的行为。这些评测帮助我们发现、指导改进,并聚焦研究与产品团队之间的协作。结合生产监控、A/B 测试、用户研究等手段,评测为 Claude Code 规模化后的持续改进提供信号。

在 Agent 生命周期的任何阶段,编写评测都有用。早期,评测迫使产品团队明确「对 Agent 而言成功意味着什么」;后期,评测帮助守住一致的质量底线。

Descript 的 Agent 帮助用户剪辑视频,因此他们围绕成功剪辑工作流的三个维度构建评测:不弄坏东西、照我说的做、把它做好。他们从人工评分,演进到由产品团队定义标准、并定期人工校准的 LLM 评分器,现在定期运行两套独立的套件,分别用于质量基准测试和回归测试。Bolt AI 团队起步较晚,在他们的 Agent 已被广泛使用之后才开始构建评测。他们在 3 个月内搭建起一套评测系统:运行自己的 Agent,用静态分析给输出打分,用浏览器 Agent 测试应用,并用 LLM 裁判评估指令遵循等行为。

有些团队在开发之初就创建评测;另一些团队是在规模化之后、评测成为改进 Agent 的瓶颈时才补上。在 Agent 开发的早期,评测尤其有用,因为它把预期行为显式地编码下来。两个工程师读同一份初始规格,可能对 AI 应如何处理边界情况得出不同理解。一套评测消解了这种歧义。无论何时创建,评测都能加速开发。

评测还决定了你采用新模型的速度。当更强的模型发布时,没有评测的团队要花数周时间测试,而有评测的竞争者可以迅速摸清新模型的长处、调整提示词,几天内完成升级。

评测一旦建立,基线和回归测试就白送了:延迟、token 用量、单任务成本和错误率都可以在一组静态任务上持续跟踪。评测还可以成为产品团队与研究团队之间带宽最高的沟通渠道,为研究人员定义可以优化的指标。显然,评测的收益远不止跟踪回归与改进。它的价值会复利累积,只是因为成本先期可见、收益滞后显现,而容易被忽视。

如何评测 AI Agent

今天大规模部署的 Agent 有几类常见形态:编码 Agent、研究 Agent、计算机操作(computer use)Agent 和对话式 Agent。每种类型都可能部署在各种行业中,但可以用相似的技术来评测。你不需要从零发明一套评测。下面几节介绍针对若干 Agent 类型的经过验证的方法。把它们当作地基,再扩展到你自己的领域。

Agent 评测的三类评分器

Agent 评测通常结合三类评分器:基于代码的、基于模型的和人工的。每个评分器评估转录或结果的某一部分。高效评测设计的一个关键环节,就是为手头的工作选对评分器。

基于代码的评分器

方法 优势 劣势
  • 字符串匹配检查(精确、正则、模糊等)
  • 二元测试(fail-to-pass、pass-to-pass)
  • 静态分析(lint、类型、安全)
  • 结果验证
  • 工具调用验证(使用了哪些工具、参数)
  • 转录分析(轮数、token 用量)
  • 便宜
  • 客观
  • 可复现
  • 易于调试
  • 可验证特定条件
  • 对不完全匹配预期模式的有效变体很脆弱
  • 缺乏细微差别
  • 对一些较主观的任务作用有限

基于模型的评分器

方法 优势 劣势
  • 基于量规(rubric)的打分
  • 自然语言断言
  • 成对比较(pairwise comparison)
  • 基于参考答案的评测
  • 多裁判共识
  • 灵活
  • 可扩展
  • 捕捉细微差别
  • 能处理开放式任务
  • 能处理自由格式的输出
  • 非确定性
  • 比代码更贵
  • 需要与人工评分校准才能保证准确

人工评分器

方法 优势 劣势
  • 领域专家(SME)评审
  • 众包判断
  • 抽检采样
  • A/B 测试
  • 评分者间一致性
  • 黄金标准的质量
  • 匹配专家用户的判断
  • 用于校准基于模型的评分器
  • 昂贵
  • 通常需要能规模化获得人类专家

对每个任务,计分可以是加权式的(各评分器得分合计须达到阈值)、二元式的(所有评分器都须通过)或混合式。

能力评测与回归评测

能力(capability)评测或「质量」评测问的是:「这个 Agent 能把什么做好?」它们的通过率应该起步较低,瞄准 Agent 搞不定的任务,给团队一座可以攀登的山。

回归(regression)评测问的是:「Agent 还能处理过去能处理的所有任务吗?」通过率应接近 100%。它们防止倒退——分数下滑意味着出了问题、需要修复。团队在能力评测上登山时,也要同时运行回归评测,确保改动不在别处引发问题。

Agent 上线并优化之后,通过率很高的能力评测可以「毕业」成为持续运行的回归套件,用来捕捉任何漂移。曾经衡量「我们到底能不能做到?」的任务,转而衡量「我们还能稳定做到吗?」

评测编码 Agent

编码 Agent 编写、测试并调试代码,像人类开发者一样在代码库中导航、运行命令。对现代编码 Agent 有效的评测通常依赖三样东西:定义清晰的任务、稳定的测试环境,以及对生成代码的充分测试。

确定性评分器天然适合编码 Agent,因为软件通常不难评价:代码能跑吗?测试通过吗?两个广泛使用的编码基准 SWE-bench VerifiedTerminal-Bench 都遵循这一思路。SWE-bench Verified 把热门 Python 仓库的 GitHub issue 交给 Agent,通过运行测试套件来评分;只有修好了失败的测试、又没破坏现有测试的解法才算通过。短短一年间,LLM 在这个评测上的成绩从 40% 提升到 80% 以上。Terminal-Bench 走的是另一条路:它测试端到端的技术任务,比如从源码构建 Linux 内核,或训练一个机器学习模型。

一旦有了一套判定编码任务关键结果的通过/失败测试,对转录进行评分往往也有价值。例如,基于启发式的代码质量规则可以在「测试是否通过」之外评价生成的代码;带有清晰量规的基于模型的评分器则可以评估 Agent 如何调用工具、如何与用户互动等行为。

示例:一个编码 Agent 的理论评测

考虑这样一个编码任务:Agent 必须修复一个身份验证绕过漏洞。如下面示意性的 YAML 文件所示,可以同时用多个评分器和指标来评测这个 Agent。

task:  id: "fix-auth-bypass_1"  desc: "Fix authentication bypass when password field is empty and ..."  graders:    - type: deterministic_tests      required: [test_empty_pw_rejected.py, test_null_pw_rejected.py]    - type: llm_rubric      rubric: prompts/code_quality.md    - type: static_analysis      commands: [ruff, mypy, bandit]    - type: state_check      expect:        security_logs: {event_type: "auth_blocked"}    - type: tool_calls      required:        - {tool: read_file, params: {path: "src/auth/*"}}        - {tool: edit_file}        - {tool: run_tests}  tracked_metrics:    - type: transcript      metrics:        - n_turns        - n_toolcalls        - n_total_tokens    - type: latency      metrics:        - time_to_first_token        - output_tokens_per_sec        - time_to_last_token

注意,这个示例为了展示而罗列了全部可用的评分器类型。实践中,编码评测通常依靠单元测试做正确性验证,再用一个 LLM 量规评估整体代码质量,其他评分器与指标按需添加。

评测对话式 Agent

对话式 Agent 在支持、销售或辅导等领域与用户交互。与传统聊天机器人不同,它们维护状态、使用工具,并在对话中途采取行动。虽然编码与研究 Agent 也可能涉及多轮用户交互,但对话式 Agent 带来一个独特的挑战:交互本身的质量就是你评测对象的一部分。有效的对话式 Agent 评测通常依赖可验证的终态结果,以及同时捕捉任务完成度与交互质量的量规。与大多数其他评测不同,它们常常需要一个第二 LLM 来模拟用户。我们在对齐审计(alignment auditing)Agent 中就采用这种方法,通过长时间的对抗性对话对模型进行压力测试。

对话式 Agent 的成功是多维的:工单是否解决(状态检查)、是否在 10 轮内完成(转录约束)、语气是否得体(LLM 量规)?体现这种多维性的两个基准是 τ-Bench 及其后续 τ2-Bench。它们模拟零售客服、机票预订等领域的多轮交互,由一个模型扮演用户角色,Agent 则在真实场景中应对。

示例:一个对话式 Agent 的理论评测

考虑一个客服任务:Agent 必须处理一位情绪激动的客户的退款。

graders:  - type: llm_rubric    rubric: prompts/support_quality.md    assertions:      - "Agent showed empathy for customer's frustration"      - "Resolution was clearly explained"      - "Agent's response grounded in fetch_policy tool results"  - type: state_check    expect:      tickets: {status: resolved}      refunds: {status: processed}  - type: tool_calls    required:      - {tool: verify_identity}      - {tool: process_refund, params: {amount: "<=100"}}      - {tool: send_confirmation}  - type: transcript    max_turns: 10tracked_metrics:  - type: transcript    metrics:      - n_turns      - n_toolcalls      - n_total_tokens  - type: latency    metrics:      - time_to_first_token      - output_tokens_per_sec      - time_to_last_token

与编码 Agent 的例子一样,这个任务为了展示而组合了多种评分器类型。实践中,对话式 Agent 评测通常使用基于模型的评分器来同时评估沟通质量与目标完成度,因为许多任务——比如回答一个问题——可能有多个「正确」解法。

评测研究 Agent

研究 Agent 收集、综合并分析信息,然后产出答案或报告等结果。与编码 Agent 不同(单元测试能给出二元的通过/失败信号),研究质量只能相对于任务本身来判断。什么算「全面」「来源可靠」甚至「正确」,取决于上下文:市场扫描、收购尽职调查和科学报告各有不同的标准。

研究评测面临独特的挑战:专家之间可能对一份综述是否全面意见不一;基准真值(ground truth)不断漂移,因为参考资料持续变化;更长、更开放的输出也留下更多犯错空间。例如 BrowseComp 这类基准,测试的是 AI Agent 能否在开放互联网的大海里捞针——问题被设计成易于验证但难于解决。

构建研究 Agent 评测的一种策略是组合多种评分器。扎根性(groundedness)检查验证论断是否被检索到的来源支撑;覆盖度检查定义一份好答案必须包含的关键事实;来源质量检查确认引用的来源是权威的,而不只是碰巧排在检索结果前面的那几个。对有客观正确答案的任务(「X 公司三季度的营收是多少?」),精确匹配就够用。LLM 可以标记缺乏支撑的论断与覆盖缺口,同时也能核查开放式综述的连贯性与完整性。

鉴于研究质量的主观性,基于 LLM 的量规应当频繁地与专家人工判断进行校准,才能有效评测这类 Agent。

计算机操作(computer use)Agent

计算机操作 Agent 通过与人类相同的界面与软件交互——截图、鼠标点击、键盘输入和滚动——而不是通过 API 或代码执行。它们可以使用任何带图形用户界面(GUI)的应用,从设计工具到老旧的企业软件。评测需要在真实或沙箱环境中运行 Agent,让它实际操作软件应用,然后检查它是否达成了预期结果。例如 WebArena 测试浏览器任务,用 URL 与页面状态检查来验证 Agent 的导航是否正确,并对修改数据的任务辅以后端状态验证(确认订单真的下了,而不只是确认页出现了)。OSWorld 把这一点扩展到完整的操作系统控制,其评测脚本会在任务完成后检查多种产物:文件系统状态、应用配置、数据库内容和 UI 元素属性。

浏览器 Agent 需要在 token 效率与延迟之间取得平衡。基于 DOM 的交互执行快但消耗大量 token;基于截图的交互更慢但更省 token。例如,让 Claude 总结维基百科时,从 DOM 提取文本效率更高;而在亚马逊上找一个新笔记本电脑包时,截图更高效(因为提取整个 DOM 太耗 token)。在 Claude for Chrome 产品中,我们开发了评测来检查 Agent 是否为每种情境选对了工具。这让我们更快、更准确地完成浏览器任务。

如何看待 Agent 评测中的非确定性

无论哪种 Agent 类型,Agent 的行为在多次运行之间都会有波动,这让评测结果比看上去更难解读。每个任务都有自己的成功率——也许一个任务 90%,另一个 50%——而上一次评测运行中通过的任务,下一次可能失败。有时,我们想衡量的是 Agent 在某个任务上成功的频率(即多大比例的试验获得成功)。

两个指标有助于捕捉这种细微差别:

  • pass@k 衡量 Agent 在 k 次尝试中至少得到一个正确解的可能性。随着 k 增大,pass@k 分数上升:「射门次数」越多,至少进一球的概率越高。50% 的 pass@1 意味着模型在评测中一半的任务上首次尝试即成功。在编码场景中,我们最关心的往往是 Agent 一次就找到解法——pass@1。在另一些场景中,只要有一个方案可行,提出许多方案就是合理的。
  • pass^k 衡量 k 次试验全部成功的概率。随着 k 增大,pass^k 下降,因为要求更多次试验保持一致是更严苛的标准。如果你的 Agent 单次成功率为 75%,跑 3 次试验,三次全过的概率是 (0.75)³ ≈ 42%。这个指标对面向客户的 Agent 尤其重要,因为用户期望每一次都有可靠的表现。

随着试验次数增加,pass@k 与 pass^k 会分道扬镳。在 k=1 时,两者相同(都等于单次成功率)。到 k=10 时,它们讲述的是相反的故事:pass@k 趋近 100%,而 pass^k 跌向 0%。

两个指标都有用,选哪个取决于产品需求:一次成功就够用的工具用 pass@k,一致性至关重要的 Agent 用 pass^k。

从零到一:通往优秀 Agent 评测的路线图

本节给出我们经过实战检验的建议,帮助你从「没有评测」走到「值得信赖的评测」。可以把它看作评测驱动 Agent 开发的路线图:尽早定义成功,清晰地衡量它,并持续迭代。

为初始评测数据集收集任务

第 0 步:尽早开始

我们看到团队迟迟不建评测,是因为他们以为需要几百个任务。实际上,从真实故障中抽取的 20-50 个简单任务就是一个很好的开端。毕竟在 Agent 开发早期,系统的每次改动往往都有清晰、显著的影响,这种大效应量意味着小样本就够用。更成熟的 Agent 可能需要更大、更难的评测才能检测更小的效应,但一开始最好采用 80/20 的做法。评测拖得越久越难建。早期,产品需求可以自然转化为测试用例;拖得太久,你就只能从一个已经上线的系统里反向工程成功标准。

第 1 步:从你已经在手工测试的内容入手

从开发过程中你已经在执行的手工检查开始——每次发布前你验证的那些行为,以及终端用户常做的任务。如果你已经上线,去看你的 bug 跟踪系统和客服队列。把用户报告的故障转化为测试用例,能确保你的套件反映真实使用情况;按用户影响排定优先级,能把力气花在刀刃上。

第 2 步:编写无歧义的任务并附上参考解法

把任务质量做好比看上去更难。一个好任务是:两位领域专家独立判断会得出相同的通过/失败结论。他们自己能完成这个任务吗?如果不能,任务需要打磨。任务规格中的歧义会变成指标中的噪声。这对基于模型的评分器的标准同样成立:模糊的量规产生不一致的判断。

每个任务都应该能被一个正确遵循指令的 Agent 完成。这一点可能很微妙。例如,对 Terminal-Bench 的审计发现:如果任务要求 Agent 写一个脚本但没有指定文件路径,而测试假定脚本在某个特定路径上,Agent 就可能莫名其妙地失败。评分器检查的一切都应该能从任务描述中明确推出;Agent 不应该因为规格含糊而失败。对前沿模型而言,多次试验中 0% 的通过率(即 0% 的 pass@100)最常见的原因是任务本身有问题,而不是模型不行——这是提醒你复查任务规格与评分器的信号。为每个任务创建一个参考解法(reference solution)也很有用:一个能通过所有评分器的已知正确输出。它证明任务可解,也验证评分器配置无误。

第 3 步:构建均衡的题目集

既测试「某行为应该发生」的情形,也测试「不该发生」的情形。单边的评测催生单边的优化。例如,如果你只测试 Agent 在该搜索时是否搜索,最后可能得到一个对几乎什么都去搜索的 Agent。尽量避免类别不均衡的评测。我们在为 Claude.ai 的网页搜索构建评测时对此深有体会。挑战在于:既要防止模型在不该搜索时搜索,又要保留它在合适时机做深入研究的能力。团队构建了覆盖两个方向的评测:模型应当搜索的查询(比如查天气),以及模型应当凭已有知识回答的查询(比如「苹果公司是谁创办的?」)。在触发不足(该搜不搜)与过度触发(不该搜也搜)之间找到平衡非常困难,提示词和评测都经历了许多轮打磨。随着更多样例出现,我们持续往评测里补充以扩大覆盖面。

设计评测框架与评分器

第 4 步:搭建拥有稳定环境的健壮评测框架

关键在于:评测中的 Agent 的行为要大体等同于生产中的 Agent,同时环境本身不引入额外噪声。每次试验都应当「隔离」,从干净的环境起步。运行之间不必要的共享状态(残留文件、缓存数据、资源耗尽)会因为基础设施抖动而非 Agent 表现导致关联性失败。共享状态还会人为抬高成绩。例如,在一些内部评测中,我们观察到 Claude 通过翻看之前试验留下的 git 历史而在某些任务上获得了不公平优势。如果多个不同的试验因为环境中的同一个限制(比如 CPU 内存不足)而失败,这些试验就不是独立的——它们受同一因素影响,评测结果对衡量 Agent 表现而言就不可靠。

第 5 步:深思熟虑地设计评分器

如前所述,优秀的评测设计要为 Agent 和任务选择最合适的评分器。我们的建议是:能用确定性评分器就用确定性评分器,必要或需要额外灵活性时用 LLM 评分器,并审慎地使用人工评分器做补充验证。

有一种常见的本能:检查 Agent 是否严格遵循了非常具体的步骤,比如按正确顺序的一串工具调用。我们发现这种做法太僵硬,会造出极其脆弱的测试,因为 Agent 经常找到评测设计者没有预料到的有效路径。为了不过度惩罚创造力,更好的做法往往是给 Agent 产出的东西评分,而不是给它走的路径评分。

对有多个组成部分的任务,要设计部分得分(partial credit)。一个正确识别问题、验证了客户身份、但没能处理退款的客服 Agent,明显好于一开始就失败的 Agent。在结果中呈现这种成功的连续谱很重要。

模型评分往往需要细致的迭代来验证准确性。LLM 裁判(LLM-as-judge)评分器应与人类专家紧密校准,以确信人工评分与模型评分之间分歧很小。为避免幻觉,要给 LLM 留退路,比如指示它在信息不足时返回「Unknown」。创建清晰、结构化的量规来给任务的每个维度打分,然后用彼此隔离的 LLM 裁判分别评每个维度(而不是用一个裁判评所有维度),也有帮助。等系统足够稳健之后,只需偶尔进行人工复核即可。

有些评测存在隐蔽的失败模式:即使 Agent 表现良好也得分很低,因为 Agent 因评分 bug、Agent 框架限制或歧义而「没能解题」。连非常成熟的团队也会漏掉这些问题。例如,Opus 4.5 在 CORE-Bench 上最初只得 42%,直到一位 Anthropic 研究员发现了多个问题:僵化的评分(预期「96.124991…」时对「96.12」判罚)、含糊的任务规格,以及无法精确复现的随机性任务。修复 bug 并换用约束更少的 scaffold 之后,Opus 4.5 的分数跳到了 95%。类似地,METR 在其时间跨度(time horizon)基准中发现若干配置错误的任务:任务要求 Agent 优化到某个给定的分数阈值,但评分却要求超过该阈值。这让像 Claude 这样遵循指令的模型受到惩罚,而忽视既定目标的模型反而得分更高。仔细复查任务与评分器可以帮助避免这些问题。

要让评分器抗绕过、抗作弊。Agent 不应能轻易「骗过」评测。任务与评分器的设计应确保:通过评测真的需要解决问题,而不是钻非预期的空子。

长期维护并使用评测

第 6 步:阅读转录

除非你阅读大量试验的转录与评分,否则你不会知道评分器是否工作良好。在 Anthropic,我们投入建设了查看评测转录的工具,并定期花时间阅读它们。当某个任务失败时,转录会告诉你:是 Agent 真的犯了错,还是你的评分器拒绝了一个有效解。它还常常暴露出关于 Agent 与评测行为的关键细节。

失败应当显得公平:能清楚看出 Agent 错在哪、为什么错。当分数不再上升时,我们需要确信这源于 Agent 表现而非评测本身。阅读转录是你验证「评测正在衡量真正重要的东西」的方法,也是 Agent 开发的一项关键技能。

第 7 步:监控能力评测的饱和

100% 的评测只能跟踪回归,对改进不再提供任何信号。当 Agent 通过了所有可解任务、再无改进空间时,就发生了评测饱和。例如,SWE-bench Verified 的分数今年从 30% 起步,前沿模型如今已接近 80% 以上的饱和区。随着评测接近饱和,进展也会放缓,因为只剩最难的任务。这会让结果具有欺骗性:巨大的能力提升在分数上只表现为小幅增长。例如,代码评审创业公司 Qodo 最初对 Opus 4.5 印象平平,因为他们的单轮编码评测没能体现更长、更复杂任务上的收益。作为回应,他们开发了一套新的 Agent 化评测框架,从而更清晰地看到进展。

作为一条规则,在有人深入研究评测细节并阅读一些转录之前,我们不直接采信评测分数。如果评分不公、任务含糊、有效解被误判,或框架限制了模型,就应该修订评测。

第 8 步:通过开放贡献与持续维护让评测套件长期健康

评测套件是一个需要持续关照和明确归属的活文档,否则就无法保持有用。

在 Anthropic,我们试验过各种评测维护方式。事实证明最有效的是:成立专门的评测团队负责核心基础设施,而领域专家与产品团队贡献大多数评测任务,并自己运行评测。

对 AI 产品团队而言,拥有并迭代评测应当像维护单元测试一样成为日常。团队可能在「早期测试能跑通」的 AI 功能上浪费数周,而这些功能满足不了未曾言明的期望——一套设计良好的评测本可以更早把它们暴露出来。定义评测任务是检验产品需求是否具体到可以开工的最佳方式之一。

我们推荐实践评测驱动开发(eval-driven development):在 Agent 还做不到之前,先构建评测来定义计划中的能力,然后迭代直到 Agent 表现良好。在内部,我们经常构建今天「够用」的功能,但它们其实是对几个月内模型能力的押注。从低通过率起步的能力评测让这种押注可见。新模型发布时,跑一遍套件就能迅速看出哪些押注兑现了。

离产品需求和用户最近的人最有资格定义成功。以当前模型的能力,产品经理、客户成功经理或销售都可以用 Claude Code 以 PR 的形式贡献一个评测任务——放手让他们做!或者更进一步,主动为他们创造条件。

创建有效评测的流程。

评测如何与其他方法配合,形成对 Agent 的完整认知

自动化评测可以在数千个任务上运行,无需部署到生产环境或影响真实用户。但这只是理解 Agent 表现的众多方式之一。完整的图景还包括生产监控、用户反馈、A/B 测试、人工转录审读和系统性人类评估。

理解 AI Agent 表现的各类方法一览

方法 优势 劣势
自动化评测
以程序方式运行测试,不涉及真实用户
  • 迭代更快
  • 完全可复现
  • 不影响用户
  • 可以在每次提交时运行
  • 无需生产部署即可大规模测试场景
  • 需要更多前期投入来搭建
  • 随着产品与模型演进需要持续维护,以防漂移
  • 如果与真实使用模式不符,会造成虚假信心
生产监控
跟踪线上系统中的指标与错误
  • 大规模揭示真实用户行为
  • 捕捉合成评测漏掉的问题
  • 提供 Agent 实际表现的基准真值
  • 被动;问题先到达用户,你才知道
  • 信号可能有噪声
  • 需要在埋点上投入
  • 缺乏用于评分的基准真值
A/B 测试
用真实用户流量比较不同版本
  • 衡量真实的用户结果(留存、任务完成率)
  • 控制混杂因素
  • 可扩展且系统化
  • 慢;需要数天或数周才能达到显著性,且需要足够流量
  • 只能测试你实际部署的变更
  • 若无法彻底审读转录,对指标变化的底层原因信号较少
用户反馈
点踩、bug 报告等显式信号
  • 浮现你没有预料到的问题
  • 附带来自真实用户的真实案例
  • 反馈往往与产品目标相关
  • 稀疏且自我选择
  • 偏向严重问题
  • 用户很少解释失败的原因
  • 无法自动化
  • 主要靠用户来发现问题,会对用户造成负面影响
人工转录审读
人类通读 Agent 对话
  • 建立对失败模式的直觉
  • 捕捉自动化检查漏掉的细微质量问题
  • 帮助校准「好」的样子并把握细节
  • 耗时
  • 无法规模化
  • 覆盖不一致
  • 评审疲劳或评审者不同会影响信号质量
  • 通常只给出定性信号而非清晰的定量评分
系统性人类研究
由受训评分者对 Agent 输出做结构化评分
  • 来自多位人类评分者的黄金标准判断
  • 能处理主观或含糊的任务
  • 为改进基于模型的评分器提供信号
  • 相对昂贵、周转慢
  • 难以高频进行
  • 评分者之间的分歧需要调和
  • 复杂领域(法律、金融、医疗)需要人类专家来执行研究

这些方法对应 Agent 开发的不同阶段。自动化评测在发布前和 CI/CD 中尤其有用:每次 Agent 变更和模型升级时运行,是抵御质量问题的第一道防线。生产监控在上线后启动,用于检测分布漂移与预料之外的真实故障。一旦流量足够,A/B 测试用来验证重大变更。用户反馈与转录审读是持续进行的补位实践:不断分诊反馈,每周抽样阅读转录,必要时深入挖掘。系统性人类研究则留给校准 LLM 评分器,或评估那些以人类共识为参照标准的主观输出。

正如安全工程中的瑞士奶酪模型(Swiss Cheese Model),没有任何单一的评测层能捕捉所有问题。多方法组合之后,从一层漏掉的失败会被另一层接住。

最高效的团队组合使用这些方法:自动化评测用于快速迭代,生产监控提供基准真值,周期性的人工复核用于校准。

结论

没有评测的团队深陷被动循环——修好一个故障又制造另一个,无法区分真实回归与噪声。尽早投入的团队则看到相反的图景:失败变成测试用例,测试用例阻止回归,指标取代猜测,开发随之加速。评测给整个团队一座清晰可攀的山,把「Agent 感觉变差了」变成可行动的东西。它的价值会复利累积——前提是你把评测当作核心组件,而不是事后补丁。

模式因 Agent 类型而异,但本文描述的基本原则是不变的。尽早开始,不要等完美的套件。从你看到的真实失败中提取贴近实际的任务。定义无歧义、稳健的成功标准。深思熟虑地设计评分器并组合多种类型。确保题目对模型来说足够难。持续迭代评测以提高信噪比。去读转录!

AI Agent 评测仍是一个新兴、快速演进的领域。随着 Agent 承担更长的任务、在多 Agent 系统中协作、处理越来越主观的工作,我们需要不断调整自己的技术。我们会随着学习的深入继续分享最佳实践。

致谢

本文由 Mikaela Grace、Jeremy Hadfield、Rodrigo Olivares 与 Jiri De Jonghe 撰写。同时感谢 David Hershey、Gian Segato、Mike Merrill、Alex Shaw、Nicholas Carlini、Ethan Dixon、Pedram Navid、Jake Eaton、Alyssa Baum、Lina Tawfik、Karen Zhou、Alexander Bricken、Sam Kennedy、Robert Ying 等人的贡献。特别感谢在评测合作中让我们受益的客户与伙伴,包括 iGent、Cognition、Bolt、Sierra、Vals.ai、Macroscope、PromptLayer、Stripe、Shopify、Terminal Bench 团队等。这项工作凝聚了 Anthropic 内部多个团队共同发展评测实践的努力。

附录:评测框架

若干开源与商业框架可以帮助团队实现 Agent 评测,而不必从零搭建基础设施。如何选择取决于你的 Agent 类型、现有技术栈,以及你需要的是离线评测、生产可观测性,还是两者兼要。

Harbor 专为在容器化环境中运行 Agent 而设计,提供跨云厂商大规模运行试验的基础设施,以及定义任务与评分器的标准化格式。Terminal-Bench 2.0 等流行基准通过 Harbor 注册表分发,让运行既有基准与自定义评测套件都变得容易。

Braintrust 是一个把离线评测、生产可观测性与实验追踪结合起来的平台——适合既要在开发期迭代、又要监控生产质量的团队。它的 autoevals 库内置了事实性、相关性等常见维度的现成评分器。

LangSmith 提供追踪、离线与在线评测以及数据集管理,与 LangChain 生态深度集成。Langfuse 提供类似能力,是面向有数据驻留要求团队的、可自托管的开源替代品。

Arize 提供开源的 LLM 追踪、调试与离线/在线评测平台 Phoenix,以及在其之上扩展的 SaaS 产品 AX,支持规模化、优化与监控。

许多团队会组合多种工具、自研评测框架,或从简单的评测脚本起步。我们的体会是:框架固然能加速进展、统一规范,但它的价值取决于你用它运行什么评测任务。最好的做法通常是快速选一个契合工作流的框架,然后把精力投入评测本身——迭代高质量测试用例与评分器。

延伸阅读:如果你在搭建 Agent 或评测体系,可以继续阅读 FDEChina 的 Agent 专题实践指南,也可以了解 FDE 项目生命周期中评测在交付各阶段的定位。

本文由 FDEChina 团队翻译自原文,转载已注明出处;如需引用请以原文为准。