Skip to content
Go back

AI 基准测试没告诉你的那些事:为什么排行榜高分不等于你的场景好用

新模型发布,排行榜显示 SWE-bench 92%,社交网络刷屏「史上最强编码模型」。你切过去在你的代码库上跑了一圈,结果跟之前差不多——可能还更差。

排行榜说的是 92%,那到底发生了什么?

这篇文章是微软 Agent Experience(AX)系列第六篇,讲的是你在选模型之前必须面对的那个问题:怎么评估哪个模型在你的技术栈上真的管用——以及为什么公开排行榜给不了你答案。

Goodhart 定律:当度量变成目标

「当一个度量变成目标,它就不再是一个好的度量。」Charles Goodhart 在 1975 年讲这句话的时候说的是货币政策,但用在 AI 基准测试上精准得令人不安。

基准分数驱动采纳,采纳压力驱动优化。模型厂商会针对行业关注的评测优化训练管线。这不是系统的缺陷,这是系统按设计在运转。

结果是每一代模型在基准测试形态的问题上都确实变得更强了。但这跟它们在你的问题上的提升有多大关系,是另一回事。

你能从排行榜上区分「模型的确变强了」和「模型只是被针对性优化过」吗?你分不清,除非在没被优化过的任务上——也就是你自己的任务上——亲自评测一遍。

基准测试到底测了什么

以 SWE-bench 为例:模型拿到一个 GitHub issue 和一个仓库快照,需要产出能通过该仓库测试套件的 patch。仓库是知名的开源项目,有真实 bug 和完整测试。

下面这些不在评测范围内:

一个 SWE-bench 92% 的模型,确实擅长修开源项目里有完整文档描述的 issue。但这跟它在你的内部认证库和你那套覆盖了半数默认行为的 AGENTS.md 面前能不能写出正确代码——没有任何关系。

分布差距

基准测试从一个分布里采样,你的工作生活在另一个分布里。这两个分布之间的重叠决定了一个基准对你有没有任何预测价值。

一个在 Django 上很强的模型,在你那个「看着像 Django 但几处关键逻辑完全不同」的内部框架上可能平平无奇。高基准分不意味着模型在你的场景里一定不好——它只意味着你还不知道好不好。基准没测你的场景,所以这个分数对你的场景不携带任何信息。

基准作为优化目标

更麻烦的是,这个分布差距会随着时间越来越大

数据重叠:SWE-bench 的任务来自公开仓库的 GitHub issue 和 patch,全是公开数据。模型在公开代码上训练,任务和训练数据重叠是必然的——而且每一代训练都会让更多基准相关代码进入公开语料库。

训练偏好:行业研究基准任务的难点是什么,训练管线就强调什么。如果 SWE-bench 上很多题需要理解测试夹具,训练数据就有针对性地覆盖测试夹具模式。模型还会在跟基准题目格式相似的任务上做微调——「在一个仓库里修 issue」是一种格式,你的任务可能是「用三个内部库按团队约定搭一项功能」。模型在基准形状的任务上变强的速度,远远快于在你的任务上变强的速度。

结果就是:基准分数涨得比真实效果快。两代之间分数的提升,一部分是真实能力的增长,另一部分只是格式层面的专项优化。

Harness 问题

就算一个基准完美代表了你的任务,还有另一层差距:harness——也就是组装上下文和调度执行的框架。

大多数基准用的是极简 harness:给模型仓库、issue,让它产出一个 patch。没有 MCP Server 返回 API 文档,没有指令文件引导行为,没有 skill 提供引导式工作流,没有来自其他 50 个文件的上下文。模型在一个跟你真实开发环境毫无相似之处的洁净间里操作。

一个在极简 harness 下拿高分的模型,在复杂环境里可能因为处理不了长上下文、或者在工具密集时做不好选择而表现更差。反过来也可能:一个基准分低一点的模型在你的 harness 下反而更强,因为它更擅长复杂上下文和工具密集环境。

哪个模型「更好」?答案取决于环境。基准只测了一种环境,你运行在另一种里。

基准测试的正确用法

尽管上面说了这么多,基准还是有用处的。高分至少告诉你模型有基线编码能力——它能推理代码、跨文件产出可工作的 patch。SWE-bench 30% 的模型大概率不适合生产,90% 的模型大概率有处理复杂任务的原始能力。

分数不能告诉你的是:这种能力在你的任务、你的扩展、你的 harness 里能不能转化为真实效果。把基准分数当作「必要但不充分」的过滤器:帮你缩小候选范围,但不帮你做最终决策。

适合用基准做什么:

不适合用基准做什么:

怎么跑自己的评测

和本系列第三篇文章的方法论一样:用你自己的场景做受控对比。不再比较「有扩展 vs 无扩展」,而是比较模型 A vs 模型 B,同样的 prompt、同样的工作区、同样的扩展、同样的评判标准。

注意,这个评测结果可能跟基准恰好相反。模型 A 在 SWE-bench 上 92%,模型 B 只有 88%。但在你的场景里,模型 B 成本更低、输出更好——因为它对你的私有 SDK 处理更准确,更严格遵循你的指令文件。基准没错,它只是没测对重要的东西。

从 5-10 个场景开始:挑你日常开发里最常见、最有代表性的任务。太简单每个模型都能做对的没有区分度,太复杂每个模型都搞不定的也没有区分度。要的是中间的:模型能力直接决定结果的任务。

比较四个维度

变化时重跑:新模型发布、harness 调整、扩展更新——任何一个变化都可能让上次的评测结果失效。把评测做成可重复的流程,而不是一次性调查。新版本一亮排行榜,你几小时内就能拿自己的场景跑出一份跟实际使用相关的结论。

组织层面的坑

这在团队层面也会重演。管理层看到排行榜,选最高分的模型,然后自上而下要求切换。这个决策来自基准数字,不是来自对团队实际工作负载的评测。

结果:切换模型后,一些东西悄悄地坏了——之前管用的指令文件不管用了、工具选择模式变了——但没人把这些问题跟模型切换联系在一起,因为「它基准分数更高」。在切换整个团队到一个对你们特定工作流效果更差的模型之前,花在跑 5 个场景上的时间是一个几乎可以忽略的成本。

小结

基准测的是在特定公开任务上的通用能力。它无法告诉你模型在你的扩展和私有代码下的表现,也无法告诉你它是否尊重你团队的约定。优化压力让这个差距越来越明显——基准分数涨得比真实效果快。

用基准做过滤,用自己的评测做决策。跑的和你测扩展提升时相同的场景,只是把比较对象从「有扩展 vs 无扩展」换成「模型 A vs 模型 B」。结果是你唯一跟实际产出对应的信号。


如果你关注 AI 助手、开发工具和软件工程实践,可以关注 Aide Hub。这里会继续分享能落地的工具教程、技术观察和项目经验。

参考


Tags


Previous

NuGet 包创建完全指南:从 .csproj 到 CI 自动化发布

Next

SQL MCP Server OBO 认证:让 AI Agent 操作数据库时可追溯用户身份