两个月后,把代码审查权交给AI,团队发生了什么变化?
摘要:两个月前,我做了一个在团队里引发争议的决定。 把Code Review的第一道关,交给AI来做。 不是完全替代人工review,而是规定:所有PR提交之前,必须先过一遍AI,把AI的review意见贴到PR描述里,再等人工review。 当
两个月前,我做了一个在团队里引发争议的决定。
把Code Review的第一道关,交给AI来做。
不是完全替代人工review,而是规定:所有PR提交之前,必须先过一遍AI,把AI的review意见贴到PR描述里,再等人工review。
当时老赵听完就皱眉:
"这不是把关口往前移了,是在给大家找借口——AI说没问题,人就不认真看了。"
我没和他争。
我说,先跑两个月,看数据说话。
两个月后,我把数据整理出来,叫上团队开了一次复盘会。
会上有人沉默,有人皱眉,还有一个人说了一句让我至今没忘的话。
一、为什么要做这件事
先说背景。
我们团队5个人,每周大概有30-40个PR需要review。
以前的流程是:提PR → 指定reviewer → reviewer看完approve → 合并。
问题在于:reviewer的时间是碎片化的,很多review是"扫一眼,能跑就行"。
不是大家不认真,是认真review一个PR需要15-30分钟,每周30个PR,光review就要10-15小时,这还是在主业开发没有停下来的前提下。
所以我们的review质量,说实话,参差不齐。
有时候能发现真正的问题,更多时候是走过场。
我在想:AI review的速度是秒级的,覆盖面是系统性的,如果能把AI用作第一道筛选,让人工review更聚焦在AI发现不了的问题上,整体质量会不会更高?
于是有了这个实验。
二、怎么跑的
规则很简单,三条:
第一,提PR前强制跑AI review。
我们统一用Claude,把diff喂进去,Prompt固定:
请对以下代码变更做CodeReview,重点关注:
1.潜在bug(空指针、并发、边界条件)
2.安全风险
3.性能问题(N+1、大循环)
4.业务逻辑是否合理
对每个问题说明严重程度(严重/中/低)和修改建议。
如果没有问题,直接说"未发现明显问题"。
[粘贴diff]
第二,把AI的review意见原文贴进PR描述。
不允许自己过滤,AI说什么贴什么,让人工reviewer也能看到。
第三,人工reviewer要标注哪些AI意见是对的,哪些是错的或不适用的。
这个记录后来成了最有价值的原始数据。
三、两个月后,数据说了什么
跑完两个月,我统计了几个数字。
AI发现的问题里,有多少是人工以前会漏掉的?
两个月,共209个PR,AI一共标注了各类问题344条。
人工reviewer确认:
有效问题:214条(62%)
误判或不适用:130条(38%)
214条有效问题里,我们做了一个额外统计:如果没有AI,这条问题人工review会不会发现?
结论是:214条里,约有60条(28%)是人工大概率会漏掉的。
60条听起来不多,但平摊到209个PR上,相当于每3-4个PR里,AI帮我们发现了1个人工会漏掉的真实问题。
其中有2条是安全风险,1条是并发场景下的幂等性缺失,这三条如果上线,轻则功能异常,重则资损。
这是让我觉得这件事值得继续做的数据。
但数据的另一面,同样需要正视。
四、我们踩的坑
坑1:AI review变成了"免责牌"
第三周的时候,我发现了一个苗头。
小林提了一个PR,AI review结论是"未发现明显问题"。
人工reviewer老赵看了一眼,approve了,备注:
"AI过了,应该没问题。"
但那个PR里有一段逻辑我自己看的时候起了疑心,翻了一下需求文档,发现有一个业务规则没有处理。
不是bug,是漏了一个需求点。
AI发现不了,因为AI不知道需求文档说了什么。
老赵如果认真看,大概率能发现。但他没有认真看,因为AI说没问题了。
这是最让我担心的信号:AI的"通过",开始成为人放松注意力的理由。
我把这件事在群里说了,定了一条规则:AI review结论不影响人工review的责任。AI说没问题,人照样要认真看。
之后这个问题有所改善,但没有完全消失。
坑2:有人开始懒得自己想
第五周,我在做一次普通的人工review,发现了一个有意思的现象。
那个PR的代码,有一段处理逻辑,结构上有点奇怪,绕了一个弯。
我问提交者:这里为什么这么写?
他说:AI建议这样写的,我觉得能跑就提了。
我继续问:你自己觉得这样合理吗?
他沉默了几秒,说:我没仔细想。
这不是孤立案例。后来我留意了一下,发现部分PR里,代码的"AI痕迹"越来越明显——结构是AI推荐的,注释是AI生成的,连变量命名风格都在向AI靠拢。
不是说AI的风格不好。
是因为提交者自己的判断越来越少出现在代码里了。
坑3:团队对AI的信任度出现了分歧
这是最难处理的一个变化。
