Anthropic 工程博客 · 中文学习笔记Anthropic 工程笔记

    揭秘 AI 智能体评测

    Demystifying evals for AI agents

    #11 · 模块 E 评测 原文发布:2026-01-09 阅读约 15 分钟 原文链接 ↗
    本页目录(19)
    1. 一句话总结
    2. 为什么重要
    3. 核心概念(中英对照)
    4. 方法 / 步骤
    5. 1. 为什么要建评测
    6. 2. 三类评分器
    7. 3. 能力评测 vs 回归评测
    8. 4. 四类智能体怎么评(概括)
    9. 5. 非确定性:pass@k 与 pass^k
    10. 6. 从零到一的八步路线
    11. 7. 评测与其他手段的配合
    12. 图解
    13. 图 1:智能体评测的组成
    14. 图 2:从零到一的八步路线
    15. 图 3:能力评测“毕业”为回归评测
    16. 图 4:多层评估的“瑞士奶酪”
    17. 关键原话
    18. 实践建议
    19. 延伸阅读

    一句话总结#

    没有评测,团队只能在“修好一个、又坏一个”的被动循环里打转。尽早用 20–50 个来自真实失败的任务起步,选对评分器,读评测记录,并把评测当成需要长期维护的产品资产。

    为什么重要#

    • 它是评测模块的总论,给出了一套可以通用的术语和流程,后面几篇(基础设施噪声、评测察觉、抗 AI 笔试)都可以放进这个框架来理解。
    • 专门针对“智能体”:多轮、有状态、会改环境,错误会累积,模型还会想出评测设计者没预料到的解法。
    • 非常可操作:给出了按智能体类型划分的评分方案示例和一份八步路线图。

    核心概念(中英对照)#

    中文English简要解释(笔者概括)
    评测eval / evaluation给 AI 系统一个输入,再用评分逻辑判断输出是否成功。
    任务 / 测试用例task / problem / test case单个测试,有明确的输入和成功标准。
    试验trial对一个任务的一次尝试;输出有随机性,所以要多次试验。
    评分器grader给智能体某方面表现打分的逻辑,可以包含多个断言(检查)。
    记录 / 轨迹transcript / trace / trajectory一次试验的完整记录:输出、工具调用、推理、中间结果等。
    结果outcome试验结束时环境里的最终状态(例如数据库里是否真有这笔订单),不等于智能体“说”自己完成了。
    评测 harnessevaluation harness端到端运行评测的基础设施:提供工具、并发执行、记录、评分、汇总。
    智能体 harness / 脚手架agent harness / scaffold让模型作为智能体运行的系统;评测智能体时评的是“harness + 模型”。
    评测套件evaluation suite一组衡量特定能力或行为的任务。
    能力评测capability (quality) eval回答“它能做好什么”,起点通过率应该较低,留出提升空间。
    回归评测regression eval回答“以前会的现在还会吗”,通过率应接近 100%。
    以模型为评委LLM-as-judge用 LLM 按评分细则打分,需要与人工校准。
    部分得分partial credit多步骤任务完成了一部分也能体现出来。
    饱和saturation能解的题都过了,评测不再提供提升信号。
    pass@k / pass^kpass@k / pass^kk 次至少成功一次的概率 / k 次全部成功的概率。
    评测驱动开发eval-driven development先写评测定义要实现的能力,再迭代到通过。
    瑞士奶酪模型Swiss Cheese Model安全工程概念:多层防线叠加,单层漏掉的问题由其他层拦住。

    方法 / 步骤#

    1. 为什么要建评测#

    • 早期靠手动测试、内部试用和直觉能走很远;但上线、规模扩大之后,没有评测就只能“盲飞”:等投诉、手动复现、修 bug、祈祷别的地方没坏。分不清真回归和噪声,也无法在发布前批量测试。
    • 原文举了 Claude Code 的例子:先靠员工和外部用户反馈快速迭代,之后先为简洁性、文件编辑这类窄领域加评测,再扩展到过度工程等复杂行为。
    • 客户案例:Descript(视频编辑智能体)按“别弄坏东西 / 照我说的做 / 做得好”三个维度建评测,从人工评分演进到由产品团队定义标准、定期人工校准的 LLM 评分;Bolt 在智能体已广泛使用后才开始建评测,三个月内搭起了包含静态分析、浏览器智能体测试应用、LLM 评委的体系。
    • 评测还能加快换用新模型:有评测的团队几天就能完成评估和升级。同时还能“免费”获得延迟、token、单任务成本、错误率的基线,并成为产品与研究团队之间带宽最高的沟通渠道。成本在前期看得见,收益在后期累积,所以容易被低估。

    2. 三类评分器#

    类型典型方法优点缺点
    代码评分器字符串 / 正则匹配、fail-to-pass 等二元测试、静态分析、结果状态校验、工具调用校验、记录分析(轮数、token)快、便宜、客观、可复现、易调试对合理的变体太脆弱,缺少细微判断,不适合主观任务
    模型评分器评分细则打分、自然语言断言、两两比较、参考答案对照、多评委共识灵活、可扩展、能把握细节、能处理开放式输出非确定性、比代码贵、需要与人工校准
    人工评分领域专家评审、众包、抽查、A/B 测试、标注一致性黄金标准,可用于校准模型评分器贵、慢、难以规模化找到专家

    单个任务的综合方式可以是加权(总分超过阈值)、二元(所有评分器都通过),或者两者混合。

    3. 能力评测 vs 回归评测#

    能力评测起点要低、要有“可以爬的山”;回归评测接近满分,用来防倒退。能力评测的通过率高了之后,可以“毕业”成为持续运行的回归套件。

    4. 四类智能体怎么评(概括)#

    类型评测要点
    编码智能体以确定性测试为主(代码能不能跑、测试过不过),例如 SWE-bench Verified、Terminal-Bench;还可以评记录:代码质量规则、LLM 细则评价工具使用与交互。原文的示意任务组合了单元测试、LLM 细则、静态分析、状态检查、工具调用检查和延迟 / token 指标,但强调实际中通常只需要单元测试 + 代码质量细则,其余按需添加。
    对话智能体交互质量本身就是被评对象;通常需要另一个 LLM 扮演用户;成功是多维度的:状态(工单已解决)、记录约束(少于 N 轮)、LLM 细则(语气是否恰当)。参考 τ-Bench、τ2-Bench。
    研究智能体“全面”“来源可靠”乃至“正确”都依赖具体场景;专家可能意见不一、参考内容会变、输出越长越容易出错。组合使用:有据性检查(论断有检索来源支撑)、覆盖度检查(必须包含的关键事实)、来源质量检查;有客观答案的用精确匹配;LLM 细则要经常与专家判断校准。
    电脑使用智能体在真实或沙箱环境中运行,检查最终是否达成目标,例如 WebArena 检查 URL、页面状态和后端状态,OSWorld 检查文件系统、配置、数据库、UI 元素。浏览器场景还要在 token 效率和延迟之间取舍(DOM 快但费 token,截图慢但省 token);原文提到 Claude for Chrome 专门评测了“在不同情境下选对工具”。

    5. 非确定性:pass@k 与 pass^k#

    • pass@k:k 次中至少一次成功,k 越大越高;适合“只要有一次成功就行”的工具。编码场景通常最关心 pass@1。
    • pass^k:k 次全部成功,k 越大越低;例如单次成功率 75%,连续 3 次全部成功约 42%;面向客户、要求每次都可靠的智能体更该看它。
    • k=1 时二者相同;k 很大时一个趋近 100%,一个趋近 0。

    6. 从零到一的八步路线#

    步骤要点(概括)
    0. 尽早开始不必等到有几百个任务;20–50 个来自真实失败的简单任务就是很好的起点(早期改动效果大,小样本就够)。拖得越久越难建。
    1. 从已有手动检查开始发布前手动验证的行为、用户常做的任务;已上线的话看 bug 跟踪和客服工单,按用户影响排序。
    2. 写无歧义的任务 + 参考解好任务是两位领域专家会独立给出相同判定的任务;评分器检查的一切都应能从任务描述中看出(原文举例:Terminal-Bench 审计发现有任务没指定脚本路径,测试却假定某个路径)。前沿模型在大量试验中 0% 通过,多半是任务坏了;每个任务配一个能通过所有评分器的参考解。
    3. 平衡的题集同时测“应该做”和“不该做”;原文以 Claude.ai 网页搜索为例,既要在该搜时搜,也要在不该搜时不搜,在触发不足和过度触发之间反复调整。
    4. 稳定的 harness 与环境评测中的智能体要和生产环境大致一致;每次试验从干净环境开始,避免残留文件、缓存、资源耗尽造成的相关失败;共享状态也可能虚高分数(原文观察到 Claude 翻看之前试验留下的 git 历史获得不公平优势)。
    5. 精心设计评分器能用确定性就用确定性,必要时用 LLM,人工用于额外验证;评产出而不是评路径,不要死卡工具调用顺序;多部分任务给部分得分;LLM 评委要与人工校准,允许它回答“不知道”,按维度拆开、各维度用独立评委;防止被绕过或钻空子。原文举例:Opus 4.5 在 CORE-Bench 最初只有 42%,修复过严的数值比对、含糊的任务和不可复现的随机任务,并换用约束更少的脚手架后升到 95%;METR 也发现过要求“达到阈值”、评分却要求“超过阈值”的配置错误。
    6. 读评测记录不读大量记录就无法知道评分器是否靠谱;失败应该“看起来公平”。
    7. 监控能力评测是否饱和接近饱和时,大幅能力提升只体现为小幅分数变化,容易误判(原文提到 Qodo 的一次性编码评测没能体现 Opus 4.5 在长任务上的进步,后来改建了智能体式评测)。原则:在有人深入看过细节和记录之前,不按表面分数下结论。
    8. 长期维护评测套件是需要明确负责人的“活”资产;原文认为最有效的做法是专门的评测团队负责基础设施,领域专家和产品团队贡献任务并自己运行。提倡评测驱动开发;产品经理、客户成功、销售人员也可以用 Claude Code 以 PR 的形式贡献评测任务。

    7. 评测与其他手段的配合#

    手段擅长局限
    自动化评测快、可复现、无用户影响、可以每次提交都跑前期投入大,需要持续维护,不贴近真实用法时会带来虚假信心
    线上监控真实规模的行为,能发现合成评测漏掉的问题被动,信号嘈杂,缺少评分用的标准答案
    A/B 测试衡量真实用户结果,控制混杂因素慢,需要足够流量,难以解释“为什么”
    用户反馈发现意料之外的问题,带真实样例稀疏、有选择偏差,偏向严重问题,用户很少说明原因
    人工审阅记录建立对失败模式的直觉,发现细微问题耗时,不能规模化,覆盖不均
    系统化人工研究黄金标准,可以处理主观任务、校准模型评分器贵、慢,难以频繁进行

    发布前和 CI 中以自动化评测为第一道防线;上线后用监控发现分布漂移;有足够流量时用 A/B 验证重大改动;反馈分诊和每周抽读记录作为常规;系统化人工研究留给评分器校准和主观输出。像瑞士奶酪模型一样,多层叠加。

    原文附录还列了一些评测框架(Harbor、Braintrust、LangSmith、Langfuse、Arize Phoenix / AX),并提醒:框架只是工具,真正决定价值的是任务和评分器的质量。

    图解#

    图 1:智能体评测的组成#

    flowchart TB
        Suite[评测套件 suite] --> Task1[任务 task]
        Suite --> Task2[任务 task ……]
        Task1 --> Tr1[试验 trial 1]
        Task1 --> Tr2[试验 trial 2]
        Task1 --> Tr3[试验 trial k]
        subgraph H["评测 harness(并发运行 / 记录 / 评分 / 汇总)"]
            Tr1 --> AH["智能体 harness + 模型<br/>在隔离环境中执行"]
            AH --> TS[记录 transcript<br/>输出、工具调用、推理]
            AH --> OC[结果 outcome<br/>环境最终状态]
        end
        TS --> G[评分器 graders<br/>代码 / 模型 / 人工]
        OC --> G
        G --> S[得分 → 汇总指标<br/>pass@k、pass^k、成本、延迟]

    图解:每次试验都在隔离环境中运行智能体 harness 和模型,记录 transcript 与环境最终状态,再交给评分器(graders)打分并汇总指标。

    图 2:从零到一的八步路线#

    flowchart LR
        s0["0 尽早开始<br/>20–50 个真实失败"] --> s1[1 从手动检查与工单出发]
        s1 --> s2[2 无歧义任务 + 参考解]
        s2 --> s3[3 正反两面平衡]
        s3 --> s4[4 稳定、隔离的 harness]
        s4 --> s5["5 评产出不评路径<br/>部分得分、校准 LLM 评委"]
        s5 --> s6[6 读记录]
        s6 --> s7[7 监控饱和]
        s7 --> s8[8 明确负责人,开放贡献]
        s8 -. 新的失败变成新任务 .-> s1

    图 3:能力评测“毕业”为回归评测#

    stateDiagram-v2
        [*] --> 能力评测: 新能力,通过率低
        能力评测 --> 能力评测: 迭代智能体(爬山)
        能力评测 --> 回归评测: 通过率稳定很高,“毕业”
        回归评测 --> 告警: 分数下降
        告警 --> 回归评测: 修复后恢复
        能力评测 --> 已饱和: 能解的题全部通过
        已饱和 --> 新建更难的能力评测

    图解:能力评测起步时通过率低,靠迭代智能体逐步“爬山”;通过率稳定后“毕业”为回归评测,分数下降就告警;能解的题全部通过说明评测已饱和,需要更难的新题。

    图 4:多层评估的“瑞士奶酪”#

    flowchart LR
        I[潜在问题] --> L1[自动化评测<br/>发布前 / CI]
        L1 -- 漏过 --> L2[线上监控]
        L2 -- 漏过 --> L3[A/B 测试]
        L3 -- 漏过 --> L4[用户反馈 + 每周抽读记录]
        L4 -- 漏过 --> L5[系统化人工研究]

    关键原话#

    “it’s often better to grade what the agent produced, not the path it took.” —— 通常更好的做法是评判智能体产出了什么,而不是它走了哪条路。

    “Read the transcripts!” —— 去读评测记录!

    实践建议#

    • 本周就从 bug 跟踪和客服工单里挑 20 个真实失败,写成第一个评测套件。
    • 每个任务都配一个参考解,并让另一位同事独立判断“这题算过还是没过”。
    • 每个行为都同时测“应该触发”和“不应该触发”。
    • 评分优先看环境的最终状态,而不是智能体自己说了什么;不死卡工具调用顺序。
    • LLM 评委按维度拆开,允许回答“不知道”,并定期与人工打分对比。
    • 每次试验使用全新、隔离的环境。
    • 区分能力套件和回归套件,分别设定预期通过率。
    • 面向客户的智能体,把 pass^k 加入看板。
    • 分数异常(0% 或突然大涨)时,先读记录、查任务和评分器,再下结论。
    • 笔者补充:给评测套件建 CODEOWNERS,像管理测试代码一样管理它。

    延伸阅读#

    站内笔记

    原文引用的资源


    本笔记依据 2026-10-17 抓取的在线原文撰写。原文:Anthropic,《Demystifying evals for AI agents》。

    进度只保存在本机浏览器,在学习路线中查看
    本页目录