Faros AI 的新报告给出了一个数字:自去年四月那份报告以来,未经审查就合并的拉取请求(PR)增加了 76.3%。不少公司现在对 50% 到 80% 的 PR 跑 AI 审查。AI 审查接管了找 bug 这件事,但没接管另一件事——团队争论"我们决定了什么、为什么这么定"的那场对话。
大多数团队卡在两种模式里:要么逐行审,自己变成瓶颈;要么盖章放行,然后搞不清改了什么、为什么改。中间地带目前还不存在。
AI 审查擅长的是机械的那一半。它不会累,每一行都读,对每个 PR 保持同一套标准。但它没看见当初决定了什么。它不会告诉你"这东西不该做",也无法为结果负责。换个更好的模型解决不了,因为工具在错误的时间读了错误的产物。
代码审查是团队建立系统心智模型的方式,也是工程师之间唯一被排进日程的、聊这套系统的时刻。把审查交给 AI 工具的团队,很少注意到自己同时放弃了那个时刻。
五层框架:机器验证,人来决定
新的审查瓶颈框架同样分五层,前二层是机器的活,后两层是人的活,中间那层是过去缺的。
- 挑战(Challenge):PR 还不存在时,另一个跑在不同模型上的智能体先对编码智能体的方案提出反驳。输出记录下提了什么、否了什么、为什么否、哪个智能体让了步。已经谈定的点也留在记录里,因为两个智能体也可能一致选择视而不见。
- 捕获(Capture):意图(为什么做这个改动)和验收标准(它应该怎么表现)从与智能体一起编码的过程中被提取出来,附到 PR 上。两者缺一不可:有意图没标准无法核验,有标准没意图无法判断。
- 固化(Codify):团队反复重复的审查意见,比如"用 Money 类型,别用 float",进入一个 AI 垃圾代码登记表,变成不变量——每次改动都要检查的常设规则。
- 辩论(Debate):人讨论智能体抛出但没能谈定的决策,逐行检查交给机器。这是唯一一层追问"我们是不是在做对的东西"。
- 归属(Own):模型没有声誉,也没法被追问为什么,所以由一个具名团队拥有不变量和背后的心智模型,并对改动签字。
设计原则只有一句:智能体验证,人做决定。人更擅长判断一个改动对不对、权衡取舍与风险、并为决定负责。不变量是给智能体的规则,决策是给人的判断,反复出现的判断再变成规则。
辩论这一层也终结了"工程师该不该读 AI 生成的代码"的争论。《Clean Code》作者 Robert "Uncle Bob" Martin 最近说自己不再读代码了,但他也说人应当对系统负责,责任在代码之上那一层。决策就坐在那一层。辩论过决策的审查者,不必逐行读代码也能解释一次改动。
为什么不直接审规格
最直接的反驳是:这不过是把阅读挪到别处,而那个别处曾经是规格文档。审规格的问题在于它看起来是倒着来的——规格写起来费时间,写在工作还没教给你任何东西之前,实现一开始它就漂移了。
决策从工作本身长出来。它们是实时产生的,很短,每一条之所以存在,是因为这个改动本可以走另一条路。这也是为什么捕获是在工作之后从编码会话里提取意图和验收标准,而不是要求谁提前写出来。
一条决策长什么样
例子是一个给 webhook 入口加按安装限流的 PR。意图一句话:按 GitHub 安装维度限制 webhook 突发流量,让一个吵闹的客户无法饿死消息代理,同时不丢事件、不打乱顺序。
这个 PR 带六条决策。还开着的那条是产品判断而非代码判断:突发上限对所有客户用同一个值。两条是被接受的风险:Redis 故障时放行(fail open),延迟事件把负载留在代理里。把限流器指标暴露到本地部署的 Grafana 面板上,变成带关联工单的后续项。另外两条由作者、审查者和智能体争论后谈定。
拿谈定的一条举例:"用令牌桶,不用滑动窗口"。作者的智能体在讨论串里解释:每个事件一次 Lua 调用,而不是一次有序集合扫描,这是在回放一场 webhook 风暴做性能分析后选的。有异议的审查者可以在同一串里反驳,或直接问智能体。这些在 diff 里全都看不见。
审查者要做的就三步:读意图和改了什么;过一遍决策,在不同意处开辩;看没通过的是什么,然后批准。这足以理解改动、建立心智模型、争论要紧的事,而不必逐行读。每条决策是独立讨论串,人和智能体分开标注,谁做的哪个决定一目了然。审查者可以同意、质疑、推翻,或把一条决策转成被跟踪的后续项。代码还在,顺着决策的指向去打开它,代码上的评论汇入同一份记录。
合并之后
决策活得比审查长。团队能看到自己那部分代码库过去一天或一周的关键决策,不用读 PR——知识共享式代码审查本来就是这个用途。编码和审查智能体会拉取所碰代码的历史决策,不再重吵已经谈定的取舍。"以后再做"变成关联工单,而不是 PR 描述里没人再看的某一行。某条决策反复出现时,提议它成为不变量,有人批准后才成为规则。
但总得有人签字。模型没有声誉,也没法被追问为什么,所以每条辩论过的决策最后都落到一个具名的人身上,由他同意。辩论在这里交棒给最后一层:归属。
如果 AI 已经在审你的大部分 PR,不妨在团队里问一句:上周我们决定了什么,谁同意的?
热门跟贴