跳转到主要内容

基准测试本身没问题;问题在于你没做版本管理的 harness

排行榜上的分数是模型、工具 schema、重试策略和运行时限制共同作用的结果。不公开 harness,这个数字就毫无意义。

电路板的微距照片,清晰展示走线、焊点和表面贴装元件

分数究竟衡量了什么

一次基准测试运行并不是对模型的测量。它是至少四样东西的联合分布中的一个样本:模型权重与解码设置、提供给模型的工具定义、模型运行所受到的运行时限制,以及这些工具所触及的环境。改动其中任何一项,数字就会变。大多数公开的排行榜固定了第一项,却把其余几项留作隐含条件——这就是为什么两个实验室用同一个模型跑同一个基准测试,报告出来的结果却可能相差一个远大于被比较模型之间差距的幅度。

这不是对基准测试设计的抱怨。基准测试大体上没问题。问题在于 harness——把模型变成 agent 的那套脚手架——被当作实现细节,而它实际上是决定 agent 究竟能尝试什么的那个自变量。一个四步就能规划好的模型,和一个要折腾二十步的模型,在步数上限为二十五、重试预算为五的条件下是无法区分的。在模型被提问之前,harness 就已经替它回答了问题。

把 harness 当作产物的一部分。一条 eval 记录应当以哈希固定工具 schema、以摘要固定运行时镜像,并固定重试次数、步数上限、墙钟时间与 token 预算,以及沙箱网络策略。缺少这些字段,分数就只是一个带小数点的传闻。

数据中心内亮着灯的服务器机架特写,展示现代技术基础设施

harness 掩盖的失败模式

宽松的步数限制会奖励蛮力重试而非规划。如果一个 agent 能用略有不同的查询调用同一个搜索工具十一次,那么一个从不制定计划的模型仍然能得出答案,而且看起来和一个只规划一次、干净执行的模型一模一样。把上限收紧到四步,排名就会反转。两种配置都没有错;两者都是合理的产品。但一个公开的数字无法同时代表两者,而读者会默认它代表的是自己那一种。

相反的失败同样悄无声息。严格的上限会惩罚那些恢复能力强的模型。一个能检测到格式错误的工具响应、修复自己的参数并在第二次尝试中成功的 agent,做的正是生产系统所需要的工作,而它却被记为比一个碰巧一次就做对的模型更慢、更贵。如果重试策略没有公开,读者就无法判断这个分数奖励的是能力还是运气。

沙箱网络策略是最具影响力的隐形设置。禁用出网的运行衡量的是对工具的规划与推理,而不是工具使用。启用出网的运行衡量的是模型能否扛住真实延迟、部分失败和不一致的 schema。这是两种不同的产品。当厂商报告一个工具使用分数却不说明网络策略时,读者无从知道衡量的是两者中的哪一个,而这两者并不可比。

确定性的工具桩是另一个相关的陷阱。把搜索 API 打桩成返回一份固定文档,就消除了生产 agent 实际面对的歧义——被截断的结果、过期的索引、速率限制、schema 漂移。桩让 eval 可复现,这很有价值;同时也让它不具代表性,而这是你必须明确说明、而不是默默吞下的取舍。诚实的做法是两者都跑:一套打桩的套件用于回归检测,一套实时的套件用于能力声明,作为两个独立的数字发布,各自附上 harness 清单。

eval 结果的发布契约

如果一个分数要被引用,它就应该连同产生它的条件一起交付。一份可行的契约包含四个部分。

随分数交付 harness 清单。 至少包括:工具 schema 哈希、运行时镜像摘要、步数与时间预算、重试次数、网络策略、解码参数和种子集。清单应当机器可读,这样读者就能对比两个结果,立刻看出它们是否可比。没有清单的分数只是轶事。

报告方差,而不是点估计。 跨种子运行,并至少跨两种 harness 变体——一个紧预算、一个松预算——并公布分布范围。如果一个模型的分数在步数上限从二十降到八时崩塌,这是你能告诉读者的最有用的信息,而单一均值会把它完全掩盖。

让事故回放能针对同一 harness 版本重新运行。 当 agent 在生产中行为异常时,只有当回放针对产生该行为的那个 harness 运行时,回归才能被归因。像给模型做版本管理一样给 harness 做版本管理,并保持旧版本可运行。这是团队会跳过的那部分,也正是把 eval 套件从发布产物变成工程仪器的那部分。

说明你接受了什么取舍。 每一个 harness 选择都是用代表性换取可复现性,或者反过来。说清楚你选了哪一边。一套打桩、网络隔离、预算紧张的套件完全可以发布,只要标签上写明了这一点。

为什么这是工程问题,而不是报告问题

诱惑在于把 harness 披露当作一项文档任务——在附录里加一张表就完事。并非如此。一旦 harness 被版本化,它就变成了一样你可以测试、回归和推理的东西,而这会改变系统的构建方式。工具 schema 像 API 契约一样被评审。重试策略依据实测的恢复率而非直觉来调优。步数上限成为一个有明确理由的产品决策,而不是从框架示例里继承来的默认值。

代价是真实的:维护多个 harness 变体、保持旧运行时镜像可运行、让每套套件跨种子集运行,都会成倍增加算力和工程时间。只有一个模型、一个产品的团队会觉得这比他们需要的更重。诚实的立场是:完整的契约在你跨模型或跨实验室比较时才会回本——而那恰恰是这个数字最有可能被断章取义引用的时刻。

关于这些比较目前是如何被报告的、以及缺口在哪里,参见这篇关于 agent 评估实践的近期讨论。

基准测试并不是你缺失的那个变量。harness 才是,而它是你今天就能做版本管理的那个。

电子电路板的微距照片,展示微芯片和元件

分享XLinkedIn永久链接5 分钟阅读

相关阅读

这能回答的问题

What is an agent evaluation harness?

The scaffolding around a model during an eval: tool schemas, retry policy, step and time budgets, sandbox limits and network policy. It determines what the agent can attempt, so it belongs in the published result.

Why does an unpublished harness make scores non-comparable?

Two runs with the same model but different step ceilings or network policies measure different capabilities. Without the manifest a reader cannot tell whether two numbers describe the same task.

Should eval tools be stubbed or live?

Both. Stubs give reproducibility for regression detection; live tools capture the ambiguity production agents face. Publish them as separate numbers with the harness attached to each.