HeyDeer 在 ReviewBench 上精确率第一
我们为什么把精确率放在第一位,以及 HeyDeer 是怎么做到的
HeyDeer 团队 ·

ReviewBench 是 GitHub 推出的开放 AI 代码审查基准测试。它让每个审查工具审查来自 187 个仓库的 219 个真实 PR,再把审查工具报告的内容与经过人工审核和标注的问题进行对比。
现在,HeyDeer 已经登上排行榜。在排行榜的默认视图,也就是高严重程度问题上,HeyDeer 的精确率是榜单所有审查工具中最高的:99.0%。HeyDeer 报告的严重问题,几乎每一条都真实存在。
这并非偶然。从第一天起,精确率就是 HeyDeer 的首要设计目标。这篇文章聊聊为什么,以及我们是怎么做到的。
一、这些数字意味着什么
ReviewBench 主要报告两个分数(详见它的评测方法):
- 精确率:在审查工具报告、且基准测试能够判定的问题中,有多少是真实的。
- 召回率:在 PR 已知的问题中,审查工具找到了多少。
这两个指标此消彼长。什么都报的审查工具,能找到更多问题,也会带来更多噪音;几乎什么都不报的审查工具,很少出错,但也很少有用。在 ReviewBench 公布的这次评测中,HeyDeer 在高严重程度问题上的召回率为 51.4%,与榜单上大多数审查工具处于同一水平,而精确率是最高的。
二、为什么精确率很重要
对人来说:噪音会掩盖真正的 bug
每一条误报都要耗费人的时间:读评论、查代码,最后确认它是错的。更大的代价还在后面。经历几轮噪音之后,人们就会认定这个审查工具的评论大多不对,开始草草扫过,真正的那个 bug 也就混在其他评论里溜过去了。
一次审查给出八条评论、其中六条是错的,还不如只给三条真实的评论。只有人们还愿意读它说的话,审查工具才有用。
对 coding agent 来说:误报会变成代码
越来越多的团队把审查评论直接交给 coding agent。agent 有时确实会反驳,但研究表明,即使已经看出修改要求是错的,它们也常常照做,并在不知不觉中引入新的错误(Jaiswal et al., 2026)。一条误报,就会变成对一个不可能为 null 的值做空值检查,给不可能抛异常的代码包上 try/catch,或者对已经校验过的输入再校验一遍。
单看每一处都无伤大雅。但加在一起,它们会让代码库变得臃肿,掩盖代码真正保证的东西,也让下一个人(或下一个 agent)要读、要维护的内容更多。审查自动化的程度越高,精确率就越重要,因为已经没有人替你过滤噪音了。
三、HeyDeer 如何保持高精确率
多个模型交叉审查、互相校验
单个模型会漏报,也会误报,而同一个模型的多个副本往往会犯同样的错。HeyDeer 让来自不同厂商的模型审查每一处改动,再对每个疑似问题分别做独立核验,通过后才会发布到你的 PR 上。不同模型的盲区不同,交叉校验能纠正单个模型的大部分错误。
但意见一致本身不算证据:两个模型也可能错得一模一样。一个问题能不能发布,取决于证据。
每个问题都要有证据
报告的问题必须说明它是怎么发生的:从真实的调用方、用户操作或输入出发,经过改动的代码,最终导致什么后果。只说“这里可能为 null”是不够的,审查员必须指出 null 从哪里来。如果某个事实无法根据现有证据确定,问题里会如实说明并指出是哪个事实,而不是把猜测当成定论。
读源码,不靠猜
很多误报来自对 diff 之外代码行为的猜测。HeyDeer 的审查员会去核实,而不是去猜:
- 依赖源码:当一个判断取决于某个库的行为时,审查员会去读这个库的实际实现,而不是凭记忆。
- 文档:审查员会搜索代码所用框架和服务的官方文档。
- 沙箱验证:光靠阅读不够时,审查员可以在隔离的沙箱里验证一个具体的判断,比如某个函数如何处理边界情况。你仓库自身的代码永远不会运行。
四、召回率:找到更多问题,而不增加噪音
只要保持沉默,高精确率很容易做到,所以召回率同样重要。在 ReviewBench 评测的版本之后,我们已经提升了 HeyDeer 的召回率,等 ReviewBench 发布新一轮评测时,我们会公布具体数字。
思路是把“找问题”和“筛问题”分开。负责找问题的审查员会报告每一个能用证据支撑的候选问题,哪怕它看起来很小或不太可能发生;之后再由核验环节判断哪些是真的。因为有核验守住精确率,找问题的环节就可以挖得更深、看得更全,而不会给你的 PR 带来更多噪音。
看到多少也由你决定。通过 HeyDeer 的反馈范围设置,团队可以为整个工作区或单个仓库选择只显示重要的问题,或者显示所有已确认的问题。
五、关于这个基准测试
没有哪个基准测试能说明一切。ReviewBench 还处于研究预览阶段;上面的数字来自它默认的高严重程度视图,换一个严重程度筛选条件,数字也会变;而且单个分数也说明不了一个审查工具是否适合你的代码库和团队。我们认为,它是在真实 PR 上比较审查工具的一种公平、开放的方式,我们也很乐意接受公开的检验。
在你自己的 PR 上试试
最好的基准测试,就是你自己的代码。HeyDeer 提供免费套餐,你可以让它和你正在用的审查工具审查同样的 PR,亲自比较结果。