想评一个审查员,先得有一张带标准答案的考卷。而这张考卷,决定了你产品能力的"天花板"和"适用范围"。
开场:怎么知道一个学生到底学得好不好
想知道一个学生学得好不好,最靠谱的办法是:给他一张带标准答案的考卷,让他考一下。
关键在两点:
- 考卷要好——出的题要能代表"他真的该会的东西",而不是专挑偏题怪题;
- 标准答案要可信——判分的依据不能是"老师凭感觉",而要是经过确认的正确答案。
要是考卷出偏了、或者答案本身不可靠,那考出来的分数再高也是假的——孩子可能被冤枉,也可能被高估。
AI 代码审查一模一样。要评它"审得好不好",你需要给它一张带标准答案的考卷,然后看它的成绩。
二、“考卷"在 AI 审查里长什么样
拿真实的工程例子来说:
- 题目(一个 PR 的代码改动):某个真实项目的某次改动,比如"给日程软件加了一个取消预约的功能”。
- 标准答案:这段改动里,资深工程师确认过的真实问题有几条、分别是什么。
把几十道这样的"题目+答案"凑在一起,就是一张 AI 审查的考卷(行业里叫 golden set,黄金数据集)。
举例,一道题的答案可能是:
“
deleteScheduledEmailReminder在forEach循环里被调用,但没有await,可能导致删除定时提醒的操作没执行完就返回了。”
有了这样一批题目和答案,我们把 AI 的审查结果跟答案一对,就能算出上一篇的 P 和 R——到底审得好不好,就有数了。
三、一份好考卷的三个硬要求
考卷不是"随便找几个仓库、让 AI 看看就完事"。一份可信的考卷,有三条硬要求:
① 来源可追溯 每道题从哪来的(哪个项目、哪个提交、哪次改动),必须清清楚楚。为什么?因为将来如果有人质疑"你这道题是不是选偏了",你要能把它的出身摆出来。来路不明的题,不能当标准。
② 内容被锁定、不能被偷偷改 这是最反直觉但最重要的一条。考卷里的代码和答案必须被"封存"住——打上指纹(哈希),一旦有人改动任何一个字节,系统立刻发现并报警。
为什么要这么严?因为考卷一旦悄悄变了,产品测试的结果就全部对不上了。想象:上次测出来"召回率 60%",结果有人偷偷改了两道题的答案,下次测变成"70%"——你会以为产品进步了,其实只是考卷被人动了手脚。锁死考卷,才能保证"每次测量都是同一场考试"。
③ 覆盖真实且多样的场景 题目不能都挑简单的,也不能都偏一个方向。理想的考卷要包含:
- 各种规模的改动(小改动、中改动、大改动);
- 各种类型的问题(逻辑错、安全漏洞、边界没处理、资源没释放……);
- 甚至一些"本来就没什么问题"的代码(干净题)——专门用来检测 AI 会不会没事找事、乱报。
特别是最后一种:“干净题"特别重要。如果 AI 对一道本来就很好的代码也报出一堆"问题”,那它的误报倾向就很明显——产品就不可信。
四、为什么说"考卷决定了能力的天花板"
这是产品设计里极其重要的一条觉悟:
你的 AI 审查能力再强,也只体现在"考卷覆盖的范围内"。考卷没覆盖的,你根本测不出来。
- 如果你的考卷全是 200 行以下的小改动,你就不知道它在 5000 行大改动上表现如何;
- 如果你的考卷没有 Python 代码,你就不知道它对 Python 项目好不好使;
- 如果你的考卷没有安全类问题,你就不知道它能不能抓安全漏洞。
考卷代表的,是"你验证过的能力范围";超出考卷的部分,都是未知数。 所以产品上线时,一定要诚实地把范围说清楚:“我们的 AI 在 X 类场景上经过了验证(Y 道题的考卷),Z 类场景是未经证实的。”
五、一个自检:这份考卷本身要被"验证过"
考卷不是造出来就完事,它自己也要被检查:
- 每道题的代码能不能正常打开、答案条数对不对、字体指纹对不对得上——**这些都有校验;
- 甚至要在断网条件下整个系统还能跑(说明考卷完全自包含,不偷偷依赖外网实时抓取)——保证这张考卷随时可复现。
一句话:考卷既是用来考 AI 的,它自己也要"经得起考"。
深入一点(可跳读)
- “标准答案"从哪来最靠谱? 最好是真实项目里的真实人工评审意见,而且是资深工程师确认过确实是对的问题。用真实世界的真问题做答案,最有代表性;老师凭空编的"假答案"参考价值低。
- 选择题 vs 问答题:理想的考题最好只带"问题描述 + 严重度”,避免"设计成让 AI 好蒙答案"的形状。
- 考卷版本:考卷要像收据一样带版本号(m 道题、n 条答案、来源提交、授权信息),这样"产品进步了"还是"考卷换过了"一查便知。
这一篇的收获
要评"AI 审得好不好",先得有一张带着标准答案、来源可溯、内容锁死、覆盖多样的考卷。这张考卷既是测量工具,也画出了产品能力的边界——考卷能测多宽,你才敢说产品有多行。
有了考卷,下一篇要解决另一个关键问题:谁来判分? 直觉会说"让 AI 判 AI",但这是个巨大的坑。