Home
avatar

.Sam

【LLM测评-05】代码:从“写个函数”到“修好一个真实 bug”

这是“LLM测评”系列的第 5 篇。这一篇聊程序员最关心的维度——代码:AI 写代码的能力是怎么测的,以及“能写函数”和“能修好仓库”差多远。

摘要

本文回答三个问题:代码评测是怎么演进的、SWE-bench 为什么是“最像真实工作”的代码考试、以及读代码类榜单时该注意什么。

核心论点:代码评测正在从“考试”走向“上岗”。 从写一个函数(HumanEval)到修好一个真实仓库的 bug(SWE-bench),评测越来越接近程序员真实的工作方式。

从一道“函数题”说起

如果你是 2023 年开始关注 AI 编程,一定见过这个数字:HumanEval 93%。

HumanEval 是 2021 年 OpenAI 提出的代码基准,只有 164 道题:给一段函数签名和 docstring,让模型把函数体写出来,然后用预先写好的单元测试验证。它当年证明了“大模型能写代码”。

但 2026 年再拿 HumanEval 说事,已经没什么信息量了——头部模型普遍 93%+,题目公开多年,早就被学透了。 就像用“会背九九乘法表”来区分大学生,没有意义。

代码评测的四级进化

代码评测走过了四步,每一级都比上一级更接近真实工程:

图1:代码评测四级进化——HumanEval(164 个函数题,已饱和,头部 93%+)→ MBPP(基础编程题,接近饱和)→ LiveCodeBench(动态更新新题,当前主力)→ SWE-bench(真实仓库修 bug,最接近工程)。越往右越接近真实工作。

基准考什么2026 状态
HumanEval写一个函数,跑单测已饱和,头部 93%+
MBPP描述 → 代码 → 测试接近饱和
LiveCodeBench动态更新的新题当前主力对比榜
SWE-bench真实仓库修 bug最接近工程,业界最看重

关键转折在 SWE-bench:它不再给模型一道“孤立的题”,而是扔给它一个真实开源仓库、一个真实的 bug 报告,让它自己读代码、定位问题、改代码、跑测试。

SWE-bench 为什么可信

SWE-bench 的评分设计是它可信的核心:用仓库里本来就有的测试套件当“考官”

图2:SWE-bench 流程——真实 issue → 模型定位与修改(多文件协同)→ 产出补丁 → 仓库测试套件判定,过则成功。评分不靠人、不靠 LLM 裁判,客观可复现。2026 年变体:Pro/Multilingual/Live,Verified 已退役。

这意味着:

  • 没有主观分:测试过了就是过了,不存在“我觉得写得不错”。
  • 不考表演:模型不能靠话术让考官满意,只能真的改对代码。
  • 可复现:同一个补丁,谁跑都是同一个结果。

它测的是真实的工程能力:读得懂代码库、找得到问题、改得动多个文件、过得了测试。

它测不到什么(重要)

SWE-bench 再接近真实,也还是考试:

  • 不测需求理解:issue 已经写好了,模型不需要和产品经理对话。
  • 不测评审沟通:不需要解释你的改动,不需要应对 code review。
  • 不测可维护性:测试通过就完事,没人管代码风格和长期维护。

所以读榜时记住:SWE-bench 高分 ≠ 能替代整个程序员岗位,它衡量的是“给定明确任务,独立完成代码修改”这一段能力。

一个读榜提醒

SWE-bench 家族现在已经分化:Verified(500 个人工验证题,2026 年退役)、Pro(更难的多文件任务)、Multilingual(多语言)、Live(滚动更新)。读分数先确认:

  • 哪个变体?(Verified / Pro / Multilingual / Live)
  • 什么测试装置(harness)和增强结构(scaffold)跑的?(第 1 篇的教训)
  • 报的是 pass@1 还是多次运行?

同一个模型在 Verified 和 Pro 上可以差 20 分以上——这是能力差距,不是噪声:多文件协同、长程上下文、抗污染,恰恰是“会写函数”到“会修仓库”之间消失的那部分能力。

实战:GPT-6 Astra——函数题饱和,真实工程任务差距拉开

2026 年 9 月 GPT-6 Astra 的官方数据,正好把“代码评测已进化”这件事演成了一张对比图:

Terminal-Bench 4.0(在真实终端环境里完成运维/科研任务):

模型Terminal-Bench 4.0
GPT-6 Astra57.9%
Claude Fable 5.155.8%
Claude Opus 552.3%
GPT-5.6 Sol37.3%

SRE-Bench(无源码的二进制逆向): Astra 88.0%,上一代 Sol 仅 55.9%,差 32.1 分。

图3:代码与终端真实跑分——Terminal-Bench 4.0 上 Astra 57.9% vs Sol 37.3%、Fable 5.1 55.8%、Opus 5 52.3%;SRE-Bench 上 Astra 88.0% vs Sol 55.9%;ExploitBench 官方 100% vs 抗污染版 39.0%。真实工程任务的差距(20-32 分)远大于函数题。

这个案例印证了本篇的论点,还额外加了三条信息:

第一,“会写函数”确实没意义了。 官方这次几乎没有宣传 HumanEval/MBPP 这类函数题——因为头部模型都 93%+,没有宣传价值。真正拿来当卖点的是 Terminal-Bench(真实终端任务)、SRE-Bench(逆向工程)这种“上岗级”任务。

第二,真实任务的差距远大于函数题。 Astra 对 Sol 在 SRE-Bench 上领先 32.1 分、在 Terminal-Bench 上领先 20.6 分——这个差距比“会写函数”的差距大一个量级。越接近真实工程,新一代的领先越明显,这正是评测进化的价值:让真实差距显形。

第三,口径又一次决定数字。 ExploitBench(漏洞利用)官方口径 Astra 100% 满分,但抗污染版本(只含 2026 年 6-8 月的新漏洞)只有 39.0%——差 61 分。不是作弊,是题目是否被提前“见过”决定了分数:这正是第 7 篇要展开的“污染”问题,在代码/安全赛道尤其致命。

函数题考到人人满分,真实仓库和终端任务还能拉开 20-30 分的差距——读代码榜,请盯着最难的那一档。

小结

  • 代码评测从写函数进化到修真实仓库,越来越接近上岗。
  • SWE-bench 用真实测试套件当考官,客观可信。
  • 读代码榜单先看变体、测试装置(harness)、增强结构(scaffold)和统计口径,别把“会写函数”当成“会修仓库”。

下一篇,我们进入最前沿的赛道——Agent 测评:当 AI 不再只“答题”,而是去“干活”,我们怎么给它打分?

会写函数和能修好仓库之间,隔着整个真实工程。

LLM测评 Benchmark 代码 SWE-bench HumanEval 科普