代码评测对大模型有条铁规矩:程序跑不通,写得再漂亮也是零分。在所有 AI 评测基准里,它是少数让程序自己说话的考场——答案运行一下就知道对错。你在扣子上搭应用、让模型帮你写脚本时,页面上那个代码能力分数,就是被这类考卷量出来的。
评什么:执行判分,用例说了算
别的考场靠评审打分,代码考场靠执行:把模型生成的代码放进隔离的真实环境运行,喂进几组输入,比对输出对不对。像驾照考试——教练可以说你姿势标准,车开不动就是不过。判分核心是测试用例:正常用例给标准输入看标准输出;边界用例卡空输入、极大值、重复值这些容易翻车的角落;隐蔽用例不对外公布,防的是照着用例反推答案。用例覆盖越刁钻,分数越有含金量,只跑两三个正常用例的评测,水分不会少。
一个例子讲透:回文函数怎么考
假设题目是写一个函数,判断字符串是否为回文。正常用例会喂 level、上海自来水来自海上这类标准答案;边界用例会喂空字符串、单个字符、只含标点的字符串,看代码会不会崩;更严的用例还会问大小写混排、带空格的句子算不算回文——题目没说清的地方,模型要么做假设,要么先问澄清,处理方式本身就是能力的一部分。同一道题,三个用例全过和十组用例全过,可信度完全不同。看代码榜先问一句:这道题配了几组用例,隐蔽用例占几成。
考场环境:沙盒与防作弊
代码执行必须在沙盒里进行:模型生成的代码不可信,直接在评测方机器上跑有风险,所以用隔离环境,限制联网、限制读写文件。防作弊也是考场的一部分:禁止联网查答案、禁止读测试文件本身,防护不严的考场,分数要重审。防刷分还有一招是不公开考题,思路和不公开题目的盲测集一致——公开题被反复练习之后分数会虚高,盲测成绩才接近真实水平。
会做题和会干活差多远
基准里的代码题多是独立小题:写个函数、解个算法,有标准答案。真实开发是另一回事:理解模糊需求、读别人的旧代码、跨文件改动、排查环境问题,没一样有唯一解。所以基准分数要读成基础功底的证据,别直接当成生产能力的承诺,上线之后的可用性责任,是服务等级协议管的事。还有一层在跑通之后:基准跑分用的是完整版模型,自己部署时若做了压缩,表现要重新实测,量化部署之后的差距不能拿基准分推算。近年新基准开始出项目级大题:给一个半成品仓库,让模型补齐功能并跑通全部测试,这类分数比小题分数更能预示真实表现。
边界:机器判不到的地方
同一个功能可以有多种写法,全过用例的代码也有好坏:可读性、异常输入的处理、注释是否到位,机器判分管不到这一层,要靠人评。同样过测的两个实现,一个能维护很久,一个没几天就改不动,用例测不出来。跑通之外还有一笔账:把模型接进真实流程,单次调用和批量处理的成本结构不一样,批处理的成本账要单独算,只看单次成绩容易误判长期开销。
| 用例类型 | 在回文题里长什么样 | 抓的是什么错 |
|---|---|---|
| 正常用例 | level、racecar 这类标准回文 | 基本逻辑写没写对 |
| 边界用例 | 空字符串、单字符、纯标点串 | 代码崩不崩,报错处理对不对 |
| 隐蔽用例 | 混排大小写、含空格的句子、多语言串 | 假设是否成立,有没有走捷径 |
代码评测速查
- 判分:真实执行加测试用例,跑通才算数
- 用例:正常、边界、隐蔽三类,覆盖越全越可信
- 读分:先问用例组数和隐蔽用例占比
- 边界:测基础功底,不直接等于生产能力
换个问法再问三条
代码评测能测出安全漏洞吗?通用基准很少覆盖安全维度,跑通用例只说明功能对,不说明没有注入和越权问题,安全要单独测。
模型每次答案不一样,评哪一次?严谨的评测做多轮采样取通过率,单次成绩运气成分不小。自己对比两个模型时,同一题也建议跑三五次再下结论。
榜单分数隔几个月就刷新,旧分数还有参考价值吗?看相对位次比看绝对分数稳,题库泄露和练习过度都会推高绝对分,位次要结合用例构成一起读。
看完榜单,挑一道你业务里真实的小题让它当场写,跑通才算数,这一遍比任何分数都新鲜。


