Skip to Content

前言

开篇:评测全绿却线上翻车

我第一次意识到自己评错了对象,是在一次发布之后。

那阵子我在维护一个内部的 DevOps 值班 agent。为了让它改配置前更稳一点,我给它的提示词加了一句话:执行写操作前,先复述一遍将要改动的字段。改动很小,方向也对。离线评测集五十条任务跑完,全绿,总分还涨了一点。我合并、发布,然后去吃饭。

晚上线上出了事。值班 agent 在一个本该停下来等人批准的环节,自己往下走,把一条生产配置改了。

复盘花了很久。那句”先复述”让模型在动手前多输出了一段话,语气很笃定——“我将把 X 字段从 A 改成 B”。下游有一个负责判断”要不要叫人”的步骤,它的逻辑里把”出现了笃定的确认措辞”当成”已经有人确认过”的信号。模型这段自我复述,恰好命中了这条信号,于是它判定无需升级,直接放行。

模型没换,离线分没掉,可系统的行为变了,而且是往坏的方向。一开始我以为是模型退化,把评测集重跑了一遍,还是全绿。那一刻我才看明白:我的评测从头到尾只问一件事——“模型这句答得对不对”;而真正出事的地方,在提示词、那段被多吐出来的话、和下游那个判断步骤三者的相互作用里,没有一样在模型内部。

模型之外那一整套东西——编排、工具、记忆、工作流——有个名字,叫 harness。我那套评测,压根没在评它。

为什么是这本书

后来我去翻资料,想看看别人怎么解决,结果发现这是个普遍的盲区。讲 LLM 评测的内容,大半在讲怎么评模型、怎么评单条回答好不好:相不相关、忠不忠实于上下文、有没有幻觉。这些都对,也都有现成工具。可一旦问题变成”我有一个已经跑起来的 agent 系统,怎么知道它整体可靠、哪个模块在拖后腿、改一版会不会偷偷劣化”,能讲清楚、还能让你照着上手的资料,就稀薄得多。

这两年这个缺口变得更扎眼。一个能干活的 agent,外面那层 harness 越堆越厚——多个子 agent、十几个工具、记忆召回、多步工作流、人在回路的中断与恢复。系统的实际行为,越来越多地由这层结构决定,而不是由单独某一次模型调用决定。继续盯着”模型答得对不对”,等于拿一把只能量单个零件的尺子,去验收整台机器。

这本书想补的就是这一层:怎么给一个真实的 harness 量出整体效果分,怎么把一次失败定位到具体是哪个模块、哪一步,怎么评”该不该停下来问人”,怎么用评测数据反过来防止系统劣化、指引下一步该改哪里。读完之后,你手里应该是一个能持续守护 harness 的评测系统,而不是一堆跑过一次就扔的脚本。

这本书写给谁

适合:

  • 已经在搭 agent、harness、skill 或知识库,但说不清它到底好不好用、好在哪、差在哪的工程师;
  • 团队里那个改完提示词、加完工具、发布前心里没底的人;
  • 带着一套 agent 系统在线上跑,需要量化每个模块的贡献、又得防止整体劣化的负责人;
  • 读过姊妹篇《AI Agent 评测工程实战》,想从”自己搭一套评测框架”进阶到”用评测驱动整个系统工程”的人。

不适合:

  • 对 agent 评测完全没有概念、从没跑过任何评测的人——这本书假设你已经会做最基本的评测,如果这一步还没迈出去,先读上册更值当;
  • 只关心模型预训练、RLHF 这类模型内部机制,不做应用层系统的人;
  • 想要一个开箱即用的 SaaS 评测平台、不打算自己动手改 harness 的人。

需要说清楚的是:没读过上册,不影响读这本。书里用到的基础概念,我都会在用到的地方重新讲一遍,不会让你为了一个术语去翻另一本书。

覆盖什么,不覆盖什么

覆盖:评测方法论的术语地基(消融实验、确定性评测、贡献度归因、pass^k 这些后面反复要用、你现在可能还没听过的词);怎么给一个真实 harness 量出整体效果分;怎么把一次失败定位到具体某一步、某个模块;怎么评”该不该停下来问人”这类只有 agent 才会有的问题;怎么用线上和离线两套评测数据,反过来防止系统劣化、指引迭代。

不覆盖:模型训练与对齐机制(不在范围内,也不是应用层工程师每天要碰的东西);某个具体评测平台的点按操作手册(工具会过时,方法不会,本书讲的是方法)。

全书贯穿一个例子:用 TypeScript agent 框架 Mastra 搭一个 DevOps 值班助手——它会查日志、查监控、在确认无误后改配置、遇到高危操作就升级给人类 oncall——再从零给它装上一整套评测闭环。选这个场景,是因为它一个例子就能覆盖本书要讲的三种典型情况:可以批量回放的只读任务、必须人在回路的高危写操作、以及有前后端形态之分的交互。你跟着把每一层装上去,最后得到的不是一堆孤立知识点,而是一个能跑、能复用的评测系统。

怎么读

  • 快速上手:先读第 1、2 章建立坐标系和术语,再直接跳到第 5、7 章把评测层挂上去、跑出第一个整体分。适合急着先有产出、回头再补地基的人。
  • 系统学习:从第 1 章顺读,配合每章的 examples/ 跟着敲。前四章是地基,第二部分把评测装上,后面依次做模块归因、稳定性、人在回路、防劣化。适合想一次打通整条闭环的人。
  • 按问题查:每章对应一个具体痛点——哪个模块在拖后腿、该不该打断问人、改完怎么确认没退化。手上正卡在哪个问题,就先翻哪一章,章内基本自洽。

配套资源与说明

每章都带一个 examples/ 目录,是能独立跑起来的 TypeScript 工程,不是贴上去好看的伪代码。正文里讲到的每段关键代码,你都能在对应章节的示例里找到完整可运行的版本。引用到的开源项目——Mastra、Inspect AI、τ-bench 这些——我都拉了源码对着写,正文里标到具体文件路径,方便你自己翻、自己核。

这个领域跑得很快。书里涉及的一部分前沿方法(比如用 Shapley 值给模块分账、用 change manifest 驱动防劣化)来自较新的论文,有些还没有被独立大规模复现。凡是这类内容,我都在正文里标了出处、点明它是”值得一试的新方向”而非”成熟定论”,并尽量自己用最小代码先验证一遍。哪些是站得住的成熟做法、哪些是前沿探索,你读的时候分得清。集中的来源与边界说明放在附录 B。

书中如有错漏,欢迎反馈,我会在后续版本里订正。现在,从第 1 章开始。

本书资源

继续阅读 · 同作者其他书

Last updated on