HumanEval 已终结:理解 LLM 代码基准测试的含义在 2026
您正在比较两个代码 LLM,第一个宣称在 HumanEval 上得分为 92%,第二个为 94%。这个数字几乎无法说明什么:HumanEval 已饱和数月,几乎所有近期模型的 pass@1 都超过了 90%。本指南解释了为什么这一历史基准已无法区分模型表现、已成为新标准的 SWE-bench Verified 和 LiveCodeBench 实际衡量什么,以及如何在安装开放权重模型之前解读其得分。
#为什么 HumanEval 已被淘汰
HumanEval 是 LLM 发展史上被引用最多的代码基准测试。它由 OpenAI 于 2021 年发布,曾连续四年作为参考标准。问题在于:到了 2026 年,它已经饱和。表现最好的开放权重代码模型在该测试中的“pass@1”达到 96% 至 98%,也就是说,它们第一次尝试就能解决几乎所有题目。当所有人都拿到 20/20 的满分时,分数就无法再区分高下。
一个饱和的基准测试已无法反映进步:它更多反映的是噪声。两个模型之间96%到98%的差距,可能仅源于一百个练习中的三个,这些练习往往模糊或表述不当。这不是能力差异,而是误差范围。2026年仍仅依据HumanEval分数选择代码语言模型,就如同在十米短跑中比较长跑选手的排名。
并不是 HumanEval 变差了,而是模型已经超出了它所能衡量的范围。它仍可用于回归测试——一个得分跌至 70% 的模型确实存在问题——但已无法用来区分顶尖模型。
#HumanEval 实际测量的是什么
只需 1 小时,即可在您的电脑上拥有专属的免费 ChatGPT — LM Studio、Ollama、Open WebUI、您的文档,无需云端。
- 在线空间,终身可用
- PDF + 文件
- 30 天内退款
理解为何 HumanEval 会饱和,需查看其实际测试内容。该基准测试包含 164 个小型 Python 编程问题。每个问题提供函数签名和描述预期行为的文档字符串;模型需编写函数体,随后由一组隐藏的单元测试进行验证。
- 格式
- 164个独立的Python函数待完成,每个函数均配有文档字符串和单元测试。
- 任务的性质
- 基础算法:处理列表、字符串,少量数学运算。每个问题仅需一个函数即可解决,无外部依赖。
- 测试内容
- 将简短且无歧义的规格说明转化为正确代码的能力。这是课堂练习,而非实际工作任务。
- 它不测试哪些能力
- 在现有仓库中导航,读取多个文件,理解已有的代码,修复真实缺陷,编写测试用例,管理依赖项。换句话说:真正的开发工作。
差距就在这里。根据清晰的需求描述编写一个独立函数,是 2026 年的模型已经掌握的任务。开发者——或连接到您编辑器的本地代码助手——真正要做的工作,是修改一个已有数千行代码的仓库。这正是新一代基准测试试图衡量的能力。
#SWE-bench Verified 解读
SWE-bench 是取代 HumanEval、成为严肃评测参考的基准测试。它的思路截然不同:不再使用玩具式练习题,而是从 Django、scikit-learn、Flask、sympy 等热门开源 Python 项目中提取真实的 GitHub“issue”。模型会收到完整的代码仓库和待修复 bug 的文字描述。它必须生成一个补丁,也就是 diff,真正解决这个问题。
修复结果不由人工或另一个模型评判:补丁会应用到代码仓库,然后运行项目的测试套件。如果原先失败的测试通过了,而原先通过的测试仍然通过,就说明问题已解决。这是一个客观且贴近实际工作的标准。
- SWE-bench Verified
- 500个经人工验证的问题。当前用于比较模型在真实Bug修复任务上表现的标准。
- SWE-bench Lite
- 300 个更简单、评估成本更低的问题。适用于快速测试,但判别能力较弱。
- SWE-bench 全量
- 超过 2000 个问题,其中部分存在缺陷。评分偏低且噪声较大,不建议用于对比。
这些数量级足以说明难度。在 HumanEval 上,成绩最高达到 98%;而在 SWE-bench Verified 上,最好的智能体模型达到 60% 至 70%,可在本地安装的优秀开放权重模型则更接近 40% 至 55%。终于有了提升空间,也就有了区分模型高下的余地。
#LiveCodeBench 与污染问题
SWE-bench 衡量在真实代码中修复 bug 的能力。LiveCodeBench 针对的是另一个问题:数据污染。其原理就体现在名称中的“live”(实时)一词里。该基准持续收集新的编程竞赛题目(LeetCode、AtCoder、Codeforces),并为它们记录时间戳。这样,就可以只用模型训练日期之后发布的题目来评估模型。
这一点至关重要。如果某个问题在模型训练前就已出现在互联网上,那么模型在训练过程中可能见过其解决方案。此时,模型的得分反映的就不是推理能力,而是记忆。通过按日期筛选,LiveCodeBench确保模型解决的是它此前不可能见过的问题。
- 性质
- 带有时间戳、持续更新的竞赛编程题目。
- 时间切分
- 选择一个晚于被测模型训练时间的日期范围。这样就不可能发生测试数据泄漏。
- 它所衡量的指标
- 针对全新问题的纯算法推理——与 HumanEval 的设计理念相近,但没有饱和与污染问题。
- 解读时的注意事项
- 务必检查公布的评测日期范围。如果 LiveCodeBench 的评测日期范围早于模型发布,其得分就没有参考价值。
LiveCodeBench和SWE-bench是互补关系,而非竞争关系。前者评估模型在新问题上的算法推理能力;后者则测试其在真实代码仓库中的操作能力。一个优秀的代码大模型必须在两者上都表现良好——算法能力强但无法在项目中实际操作的模型,无法胜任日常开发助手的角色。
#用通俗的话说明数据污染问题
数据污染正是需要警惕公布分数的关键原因。LLM 的训练数据涵盖海量网络内容,包括 GitHub。如果基准测试的题目和解答出现在网上,它们很可能最终进入训练数据。模型不再是在解题,而是在背诵。
一个值得警惕的信号:某个模型在老旧的静态基准测试中遥遥领先,却在“实时”或刚发布的基准测试中回到普通水平。两者的差距可以很好地衡量分数中有多大一部分来自记忆。这正是 LiveCodeBench 旨在揭示的问题。
#解读本地模型的分数
当您查看开放权重模型的模型卡(在 Hugging Face 上或厂商的公告中)时,代码评测得分几乎总会被突出展示。以下是解读这些信息的判断框架,帮助您避免被误导。
- 01确认基准测试的精确版本「SWE-bench」单独来看毫无意义。请查找「Verified」。对于 LiveCodeBench,需同时查找版本(v5、v6 等)和时间窗口。缺少这些细节,该数值无法与其他数据进行比较。
- 02检查pass@kpass@1 和 pass@10 绝不能拿来比较。厂商有时会展示两者中更好看的那个指标。如果没有明确说明,应按最坏的情况估计实际使用效果:日常使用中,重要的是第一次回答。
- 03确认 SWE-bench 所用的智能体框架SWE-bench 得分与取得该得分的智能体密不可分。“使用 OpenHands 达到 52%”并不等同于“使用 Aider 达到 52%”。如果发布方没有说明所用的智能体,这个数字就很难用于判断。
- 04警惕自行发布的评分模型卡上的数据来自厂商,厂商希望其表现良好。请寻找独立验证(公开排名、第三方文章)。从未被复现的分数仍属于商业宣传。
- 05至少对比两个基准测试模型在各项测试中都表现出色,是一个好迹象;如果某个模型只在一项基准测试中表现突出,在其他测试中却表现不佳,就可能意味着它针对特定测试做了专门优化,或存在数据污染。
#选择编程 LLM 时应关注哪些基准测试
根据您对本地助手的期望,相关基准测试会有所不同。以下是按使用场景进行优先级排序的方式。
- 智能体助手(Aider、Cline、Continue)
- 优先看 SWE-bench Verified。这是最接近“独立修改我的代码仓库”的基准测试。智能体的实际价值正是体现在这里。
- 自动补全与小型函数
- 使用 LiveCodeBench,并辅以 HumanEval 作为把关手段。对于边输入边补全代码的任务,算法推理比项目导航更重要。
- 从零开始生成代码
- LiveCodeBench(针对新问题的推理);如果您不只用 Python 编程,还应结合多编程语言基准测试进行评估——HumanEval 和 SWE-bench 都非常侧重 Python。
- 代码审查与错误检测
- 公开基准测试对这方面的覆盖较少。SWE-bench 仍是最好的间接评估依据,但在这里,必须针对您自己的代码改动进行自建测试。
#需避免的常见误区
- 比较不同的 k 值
- pass@1 与 pass@10:这是最常见的比较错误。后者会因 k 更大而使分数偏高。得出结论前,务必统一 k 值。
- 忽略量化
- 公布的分数是在全精度(BF16/FP16)下测得的。本地运行时,您会使用 Q4_K_M 或 Q5_K_M 量化版本,质量会略有损失。在 FP16 下 SWE-bench 得分为 50% 的模型,量化后表现会稍逊一筹。
- 把基准测试当作最终目标
- 专门为通过基准测试而优化的模型(“基准测试刷分”)在实际代码任务中可能表现不佳。分数只是参考,并非保证。
- 忽略基准测试日期
- 如果 LiveCodeBench 得分所用的评测时间窗口早于模型训练时间,该得分很可能受到数据污染。务必检查时间窗口是否晚于模型训练时间。
- 混淆模型与智能体
- “这个模型在 SWE-bench 上取得 55% 的成绩”,往往隐含着“这个模型在这个特定智能体中运行”的前提。换一个智能体,分数就会变化。
#深入了解
掌握基准测试的评估框架后,下一步是选择并安装一个模型,然后在您自己的代码上进行测试:
- 2026 年最适合编程的本地 LLM
- 我们对可自主部署的代码模型(Devstral、Qwen3-Coder 及其替代方案)的对比评测,包含评分、所需VRAM以及根据您的GPU选择推荐方案。
- 选择量化方案(Q4、Q5、Q8、FP16)
- 了解模型转为 Q4_K_M 后会损失多少质量——也就是公布的得分与您实际运行的模型表现之间的差距。
- 安装 Ollama(Windows、macOS、Linux)
- 这是在本地通过 11434 端口测试代码模型,并在几分钟内将其接入编辑器的前提。
有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。