AI 编程能力怎么测?从刷题分数到真实项目

评估

LeetCode 全对、榜单刷分高,不代表模型能改好你的项目。本文讲清刷题类 benchmark 的局限、真实编程能力该怎么评测的维度和方法,并给出一套用你自己代码库搭编程评估集的可操作流程。

选 AI 编程工具或模型时,最容易被误导的就是那些「编程能力」榜单:某模型 LeetCode 全对、某 benchmark 通过率九十几。数字很漂亮,但你真正在意的问题是——它能不能在我这个又老又乱的真实项目里,改对一个 bug 而不改坏三个地方? 这两件事的相关性,比想象中低得多。

刷题考的是「从零写一个独立、边界清晰的小函数」,而真实开发是「在一大堆已有代码、隐性约定和依赖关系里做局部修改」。前者强不代表后者行。这篇文章讲清刷题类评测的局限、真实编程能力该怎么测的维度,以及怎么用你自己的代码库搭一套有意义的评估集。方法论和《如何评测一个大模型》一脉相承,这里聚焦编程这个特殊场景。

代码评测与真实项目对比
代码评测与真实项目对比

刷题考「从零写小函数」,真实开发考「在存量代码里做局部修改」——两者能力并不等价。

为什么刷题分数会骗人

刷题类 benchmark(算法题、独立函数题)有几个和真实开发脱节的地方:

  • 任务形态不同:刷题是「给一个干净的题目,从零写解法」;真实开发是「在几万行代码里定位、理解、局部修改」,还要不破坏现有功能。后者对「读懂上下文」的要求远高于「写出算法」。
  • 数据污染:热门算法题、经典 benchmark 很可能已进入训练数据,模型是「见过答案」而非「真会解」,分数虚高。
  • 没有工程约束:刷题不考代码风格一致性、不考向后兼容、不考团队约定、不考「改动别越界」——而这些恰恰是真实项目里 AI 最容易翻车的地方
  • 单点 vs 系统:刷题是孤立的点,真实任务牵一发动全身,需要全局视野——正是 AI 的短板。

所以刷题分数可以用来「排除明显不行的」,但绝不能用来「选出最适合你项目的」。

真实编程能力该测哪些维度

把「编程能力」拆成对真实开发有意义的维度:

维度问什么
定位能力在大代码库里能不能找到该改的地方
上下文遵循改动符不符合项目已有的风格、约定、架构
改动精准度是最小必要改动,还是顺手改了一大片
正确性功能对不对、有没有引入 bug、边界处理了吗
不破坏性有没有改坏其他功能(回归)
幻觉控制有没有调用不存在的 API、编造依赖
可验证性写的测试是真测试还是摆设
效率与体验完成一个任务要来回多少轮、花多少 token

注意,「能不能写出算法」在这张表里只是「正确性」的一小部分。对真实开发,定位、上下文遵循、不破坏性往往比算法能力更决定体验。

更接近真实的评测方法

业界在往「真实任务」方向走,值得参考的思路:

  • 基于真实仓库的任务集:给一个真实项目和一个真实 issue,让模型提交修复,用项目自带的测试判断是否真的修好——这类评测(如 SWE-bench 一类的思路)比刷题接近真实得多,也解释了为什么很多模型「刷题很强、这类分数却不高」。
  • 端到端看结果,而非看代码:不只看它写的代码「像不像对的」,而是跑起来看功能是否达成、测试是否通过。Code Agent 的核心优势就是能自我验证,评测也该用同样的硬标准。
  • 多轮任务成本:真实使用是多轮交互的,要记录「完成一个任务平均几轮、多少 token、多少次返工」——一个「最终能做对但要来回二十轮」的模型,体验并不好。
工程师用真实项目测试 AI 工具
工程师用真实项目测试 AI 工具

最有说服力的评测:给真实 issue、让它提交修复、用项目自带测试判分——端到端看结果。

用你自己的代码库搭评估集

公开评测能缩小范围,但最终选型要用你自己的项目说话——因为工具在你的技术栈、你的代码风格、你的问题类型上的表现,才是你真正关心的。一套可操作的流程:

  1. 挑 10–20 个真实任务:从你项目的历史 issue、真实 bug、真实小需求里选,覆盖不同类型(修 bug、加功能、写测试、重构、跨文件改动)。太简单的没区分度,选有一定上下文依赖的。
  2. 定义清楚「做对」的标准:每个任务标注验收条件——哪些测试要通过、哪些行为要正确、哪些地方不能动。没有标准就没法客观比较。
  3. 同样的任务喂给候选工具/模型:控制变量,同一份任务、同样的项目上下文,跑一遍。
  4. 按维度打分:不只看「最终对没对」,也记录定位准不准、有没有越界改动、有没有幻觉、花了几轮。可以人工评,也可以对客观项(测试通过率)自动化。
  5. 叠加工程指标:成本、延迟、稳定性一并记录。质量接近时,快而便宜的胜出。

这套评估集一旦建好就是长期资产:新模型、新工具出来,跑一遍就知道值不值得换,不必被营销数字牵着走。

团队对比不同 AI 编程工具的评测结果
团队对比不同 AI 编程工具的评测结果

用自己项目的 10–20 个真实任务建评估集,比任何公开榜单都更能回答「哪个工具适合我」。

适用人群与替代方案

适合要为团队选 AI 编程工具/模型、或想验证「换个模型是否更好」的技术负责人和开发者。如果你是个人轻度使用,不必这么正式——拿你手头几个真实任务,让候选工具各做一遍,凭体验选也够了,关键是一定要用真实任务而非玩具例子。可以参考站内的 AI 编程助手横评AI IDE 测评缩小候选,再用自己的任务做最终决定。

常见问题

Q:那些「编程能力第一」的模型榜单完全没用吗? A:不是没用,它能帮你快速排除明显弱的、圈定第一梯队。但「第一梯队里哪个最适合我的项目」,榜单答不了,只能用你自己的任务测。把榜单当粗筛,别当终判。

Q:评测要不要区分「模型」和「工具」? A:要。同一个模型,配上不同的编程工具(上下文管理、检索、验证能力不同),实际表现可能差很多。测的时候明确你是在选模型还是选工具,或者干脆按「模型+工具」的组合整体评测——因为你最终用的是组合。

Q:怎么测「会不会改坏项目」? A:这正是要跑项目完整测试套件的原因。让工具改完后跑全量回归测试,看有没有把别的功能弄坏。没有测试覆盖的项目,就靠人工 review 关键路径,参考 AI 代码 review 清单

小结

测 AI 编程能力,别被刷题分数骗了:那考的是「从零写小函数」,你要的是「在存量项目里改对而不改坏」。真实能力要看定位、上下文遵循、改动精准度、不破坏性这些维度,用「真实 issue + 跑测试判分」的端到端方法评测。而最终选型,一定要用你自己代码库里的 10–20 个真实任务搭评估集——在你项目上的表现,才是唯一算数的分数。