← 返回闯关手册
ArchSynapse AI · 2026-07-07 · ★★★★☆ 精读(评测对象 = 模型 + harness 系统)

《Agent 评测实战》02 | Harness Engineering:Agent = 模型 + Harness,你评的是它俩的协作

为什么值得读

a05、a06 告诉你「评系统不评模型」,这一讲把「系统」拆成可操作的部件:harness 五部件、三治理面、「评测 harness 必须对齐生产」的铁律,最后给一个今晚就能跑的对照实验。是把系统观落到工程的关键一篇。

核心内容速览

适合谁 · 怎么用

先修:a05(Agent Eval 概念五件套)。准备给 Agent 搭评测环境的团队,在写第一行评测代码前读。与 a05(概念)、a15(工程体系)连读:这篇是两者之间的结构层。

闯关自测

先合上原文在心里作答,再点开对照。全对 = 本篇真正通关。

Q1 harness 的三个治理面分别对应哪三类评测?

Permission(能碰什么 → 安全评测:越权、注入);Control(跑多远 → 循环健康度:死循环、步数与成本失控);Observability(看得见吗 → 可观测性与 Tracing:能否定位到哪一步错了)。

Q2 为什么「理想化评测」会导致线下高分、线上翻车?

评测 harness(完美工具、温室环境)与生产 harness 不是一套:超时重试、脏数据、异常恢复从没被考验过。你测的那个 Agent 和上线的那个 Agent,根本不是同一个系统。

Q3 想验证「换模型值不值」,实验该怎么设计?

控制变量:固定 harness 只换模型(反之亦然);每个任务跑多次 trial 看通过比例而非单次;分维度对比(完成率 / 步数成本 / 失败聚集在轨迹哪一步)。

以下为原文全文

上方为本站原创导读,下方为原文完整收录,便于对照阅读。

上一讲结尾,我抛出了四个跃迁里最关键、也最被低估的一个:Agent 评测,评的不是模型,而是"模型 + harness"这个系统。这一讲,我们就把这件事彻底讲透。

为什么值得用一整讲?因为它是这门专栏的"地基中的地基"。这个认知没立稳,你后面做的每一件事——挑基准、设计评测集、读评测分数——都会在不知不觉中犯同一个错误:把系统的成绩,错算到模型头上。而这个错误的代价,往往就是"线下选了个高分模型,上线却跑不动"。

正好,最近工程圈有两个很火的概念——Harness Engineering 和 Loop Engineering——给我们提供了一套现成的、说人话的语言。这一讲我们先讲 harness,下一讲讲 loop。

先看一个让人不舒服的事实:同一个模型,差出几十个点

我们先不谈定义,先看一个现象。

两个团队,都做编码 Agent,用的是同一个底层大模型——同一个版本、同样的权重,一个字都没差。结果呢?在同一套任务上,一个团队的任务完成率,能比另一个高出几十个百分点。

如果你还停留在"模型决定一切"的思维里,这个现象是无法解释的:模型一模一样,成绩怎么会差这么多?

但只要你接受"Agent = 模型 + harness",一切就顺了。两个团队差的,不是模型,是包在模型外面的那层东西——工具怎么给的、提示怎么写的、上下文怎么管的、出错怎么处理的。这层东西,就是 harness。

这个现象不是个例,而是 Agent 工程的常态。它逼着我们承认一件事:

在 Agent 这个系统里,模型很重要,但模型之外的那层 harness,常常才是决定上限的地方。

什么是 Harness:模型的"操作系统"

先给一个能用的定义。

Harness,是包在模型外面的那层运行时基础设施,负责把模型"概率化的推理",翻译成"可依赖的行动"。它管理上下文、调度工具执行、施加安全控制、维护会话记忆——是模型与真实世界之间的全部中间层。

一个好用的类比是操作系统。模型就像 CPU,是负责"算"的核心,但一颗 CPU 单独摆在那儿什么也干不了;是操作系统把内存管理、设备驱动、进程调度、权限控制这些事都包办了,CPU 的算力才变成你能用的软件。Harness 对模型,就是操作系统对 CPU。

这里有个看待模型的视角转变,很值得你接受:把底层大模型当成一颗"冻结的推理计算器"(frozen reasoning calculator)。意思是,在你的应用里,模型的能力基本是给定的、冻结的——你不太会去重新训练它。那么,安全、执行的准确性、多步任务的编排、跨轮的记忆,这些责任就不应该寄希望于模型自己长出来,而要由你设计的 harness 来兜住。

顺便交代一下来历,方便你查资料:harness engineering 这个提法,近期由 Mitchell Hashimoto 等人推热,很快成了圈内热词(OpenAI 的工程博客也用它来讲"用 Codex 造 Agent 时,改进 harness 比换模型更重要")。它和你可能听过的另一个词 scaffold(脚手架)基本是同义的——本专栏统一用 harness,你在别处看到 scaffold,知道是一回事就行。

再补一个正在成形的视角:有人把它进一步拆成 model / harness / skill 三层——在模型和 harness 之外,"skill"指可组合、可按需加载的能力单元(如 Anthropic 的 Agent Skills)。你先不必纠结三分还是两分,记住本质即可:模型之外那几层,才是决定 Agent 上限、也是评测真正要盯的地方。

把 Agent 系统拆开:模型 + Harness 的五个部件

一个 Agent 系统 = 模型(核心)+ 包在它外面的 harness。先摆好中心:模型 / 推理核心是决策大脑,负责判断"现在该干嘛"(比如"这个订单该不该退")——但在你的应用里它基本是给定的("冻结的计算器")。真正需要你去设计、也是这一讲要拆开看的,是包在模型外面、构成 harness 的这五个部件(还是用"退款 #1234 并发确认邮件"来对照):

一是上下文与记忆。模型能看到什么信息、看不到什么信息,都由 harness 决定——当前对话、之前的工具返回、外部知识,进还是不进上下文窗口,怎么压缩、怎么取舍。在长任务里,这一块的设计直接决定模型会不会"记岔了"。

二是工具与接口。Agent 能调哪些工具(查订单、退款、发邮件)、每个工具的描述写得清不清楚、参数定义合不合理、调用协议(比如 MCP)怎么接。工具描述写错一个字,模型就可能选错工具。

三是权限。哪些工具能直接调、哪些必须先经人审批。比如"查订单"可以随便调,但"退款"这种动钱的操作,要不要设一道门槛?

四是控制回路。驱动 Agent 一轮轮往前走的循环逻辑,以及套在它身上的"缰绳"——最多走几步、最多花多少钱、多久超时。没有这层,Agent 可能在某个环节反复打转停不下来。

五是观测与反馈。把 Agent 每一步的行为记录下来(日志、轨迹、指标),以及行动之后的校验器(比如调完退款接口,自动跑个检查确认状态真的变了)。

你发现没有:模型之外这五个部件,恰恰就是上一讲说的那些"结果与轨迹"的生产者。所以评 Agent,本质上就是在评"模型 + 这五个 harness 部件"协同工作的质量。

Harness 的三个治理面:Permission / Control / Observability

六个部件还是有点散。业界有一个更凝练的归纳,把"harness 在运行时如何约束和管理 Agent"收敛成三个治理面。我特别推荐你记住这三个面,因为后面好几个评测主题,都能直接挂回到它们身上。

第一个面:Permission(权限)——它能碰什么。沙箱隔离、文件系统隔离、网络限制、工具的风险分级、哪些操作需要人在环路审批。它回答的是"边界在哪"。在我们的例子里,"退款"该不该被允许直接执行,就是权限面的事。这个面对应后面的安全评测:你的 Agent 会不会越权、会不会被提示注入诱导着做了不该做的事。

第二个面:Control(控制)——它能跑多远。递归与步数上限、成本天花板、超时设置。它回答的是"什么时候必须停"。这是防止 Agent 停不下来、防止一次任务烧爆预算的"缰绳"。这个面对应后面的循环健康度与非功能评测:死循环、步数失控、成本失控,测的就是这层缰绳有没有真的勒住。

第三个面:Observability(观测)——它在干什么你看得见吗。结构化日志、执行轨迹(trace)、聚合指标。它回答的是"出了问题,你能不能定位到是哪一步"。这个面对应后面的可观测性与 Tracing:没有观测,一个失败的分数对你就是个黑箱;有了观测,你能精确地指到"就是第三步那次工具调用错了"。

你看,harness 的三个设计面(怎么设计),几乎一一对应着评测的三类任务(怎么验证)。这不是巧合——这正是这门专栏的主线:设计与验证,一体两面。

为什么模型和 harness 的功劳,掰不开

到这里你可能会想:既然 Agent = 模型 + harness,那评测的时候,我能不能把模型的贡献和 harness 的贡献分开算?

很遗憾,基本掰不开。这是 Agent 评测最别扭、也最重要的一个性质,必须讲清楚。

原因在于,harness 控制着模型与任务之间的全部接口。模型看到什么、能用什么工具、工具长什么样、出错后有没有机会重来——全是 harness 喂给它的。所以当一个任务失败时,你面对的是一道无法干净拆分的归因题:

更反直觉的是,模型和 harness 之间还存在"适配"关系:一个能力偏弱的模型,配上一套贴合它习性的 harness(比如把任务拆得更碎、提示给得更具体),完全可能反超一个更强、但 harness 很粗糙的对手。也就是说,"哪个模型更好"这个问题,脱离 harness 根本没有答案。

这件事对评测有两个非常具体的后果,请你记牢:

后果一:评测分数永远是"联合成绩"。你报出的任何一个数字,都是"某个模型 + 某套 harness"一起跑出来的,不是模型的独奏。所以——评测报告里必须记清楚 harness 信息(模型版本、工具集、提示版本、环境)。一份只写了"成功率 78%"却没说 harness 的报告,是不可复现、不可比较的,约等于没有结论。

后果二:想做"干净"的对比,必须控制变量。你要么固定 harness 只换模型(回答"换个模型值不值"),要么固定模型只改 harness(回答"我这次 harness 优化有没有用")。两个一起变,那分数变了你也不知道该归功于谁。这个方法,我们下一节就动手。

一条铁律:评测用的 harness,要对齐生产

既然分数是模型和 harness 的联合成绩,那就引出一条贯穿整门专栏的工程铁律:

评测时用的 harness,要尽量和生产那套对齐——工具、环境、提示、控制策略,越一致,结论越可信。

这条铁律的反面,是一个特别常见、又特别坑的错误。我把它叫做"理想化评测":

工程师在评测时,给 Agent 配了一组"完美"的工具——永远秒回、永远不报错、永远返回干净的数据;环境也是精心准备的、不会有意外的"温室"。在这套温室里,Agent 表现优异,成功率漂亮。于是上线。

可生产环境是什么样的?工具会超时、会限流、会返回半截脏数据;用户的输入千奇百怪;网络会抖。Agent 一进真实世界,那些在温室里从没被考验过的环节——超时重试、脏数据处理、异常恢复——全线崩溃。

线下高分,线上翻车,十有八九就是评测 harness 和生产 harness 不是一套。你测的那个 Agent,和上线的那个 Agent,根本就不是同一个系统。

所以,在你信任任何一个评测分数之前,先用这张清单核对一遍"评测 harness"和"生产 harness"对齐了没有:

动手:一个"固定模型、只改 harness"的对照实验

光说道理不够,我给你设计一个最小的、你回去就能跑的对照实验,亲手感受一下 harness 的分量。

目标:在模型完全不变的前提下,验证"harness 的好坏,足以显著改变 Agent 的成绩"。

步骤:

  1. 固定两样东西:选定一个模型、一套评测任务集(哪怕就 20 个任务,比如各种各样的"退款"场景)。
  2. 准备两套 harness,只在一个维度上有差别。挑一个你最想验证的维度,比如:A 套工具描述写得很潦草("refund:退款");B 套工具描述写得很清楚(写明参数、前置条件"仅当订单状态为 paid 且未发货时可退"、返回值含义)。其他一切保持完全一致。
  3. 各跑多次。Agent 不确定,所以每个任务在每套 harness 下都要跑多次(比如各 5 次),看通过的比例,而不是跑一次定胜负。
  4. 对比三个指标:任务完成率(outcome 维度)、平均步数 / 平均 token 成本(效率维度)、失败的轨迹里错误集中在哪一步(轨迹维度)。

你大概率会观察到:仅仅是把工具描述写清楚,B 套的完成率就明显高于 A 套,而且 A 套的失败会扎堆在"选错工具/传错参数"那一步。模型一个字没变,成绩却变了——这就是 harness 的力量,也是"为什么评测对象是系统"最直观的证据。

这个实验还顺手教了你一件事:这正是一次小型的受控评测。把变量控制好、跑足够多次、分维度看结果——评测的基本功,都在里面了。

小结

这一讲,我们用 Harness Engineering 的视角,把上一讲的"评系统而非评模型"彻底落地了:

一句话总纲:你评的,从来不是模型,而是模型和它的 harness 协作出来的那个系统。

思考题

  1. 回想你手上的 Agent,它的 harness 在 Permission / Control / Observability 三个面里,哪一个最薄弱?你觉得这个薄弱,会最先在哪个评测维度上暴露出来?
  2. 如果只允许你在评测报告里记录一项 harness 元信息(除了模型版本之外),你会记哪一项?为什么它对"结论可复现"最关键?
  3. 上面那个对照实验,如果换成"有没有上下文压缩"作为唯一变量,你预期 A / B 两套在长任务上的成绩会怎么分化?
原文出处:公众号「ArchSynapse AI」· 2026-07-07。本文全文仅用于个人学习交流,版权归原作者及发布方所有;如原作者认为不妥,请联系删除。