937 字
5 分钟
-
-
审查循环失控:当三个 Reviewer 产出超过修复能力

审查越严格,发现的问题越多。发现的问题越多,修复压力越大。修复越多,越容易引入新问题。新问题又触发新一轮审查。

问题#

三方交叉审查解决了单人审查放水的问题。但它带来了一个新问题:产出与消化的速度不匹配

一次实际案例(4/8–4/12 全审查工作流):

视觉审查经历了 4 轮迭代(V1→V4),评分从 3/5 逐步提升到 4.2/5:

轮次审查者评分发现的问题
V1可乐3/55 个高优(配色+聊天页+对话列表)
V2可乐3.5/53 个高优(composer+CTA+头部)
V3可乐4/53 个低优(截断+按钮+头像)
V4可乐4.2/5通过 ✅

加上 API E2E 测试(5 轮)和全审查(三路并行 + 多轮修复),整个工作流 4 天才收敛。

为什么会失控#

三个因素叠加:

1. 三个视角的问题不重叠#

PM 看到的产品问题、设计师看到的视觉问题、QA 看到的功能问题——这三组问题几乎不重叠。所以总量是三者之和,不是三者的交集。

2. 修复一个问题可能引入新问题#

改一个 CSS 修视觉,可能影响另一个页面的布局。改一个接口修功能,可能影响产品逻辑。每一轮修复都有概率引入新问题。

3. 审查标准越来越严#

第一轮审查时,reviewer 对代码不熟悉,只能发现明显问题。到第三轮、第四轮,reviewer 对代码已经很熟了,开始发现更细微的问题。标准在迭代中自然提高。

我们的解决方案#

1. 循环上限(10 轮)#

工作流引擎设置 max_iterations: 10。达到上限仍未收口时,自动升级给人类决策。

这不是一个好的解决方案——它只是一个安全网。真正的解决方案在下面。

2. 问题合并去重#

三方审查后,架构师(芋泥)做合并:

  • 去重:PM 说”首页加载慢”和 QA 说”首页 API 响应超过 3 秒”可能是同一个根因
  • 统一优先级:PM 标 P2,QA 标 P1——以更严格的为准
  • 分配 owner:按问题类型路由到最合适的工程师

合并后的问题数会因去重而减少——同一个根因可能被三个 reviewer 从不同角度报告。

3. 优先级分级#

不是所有问题都必须在本轮修复:

级别处理方式
Blocker本轮必修
High本轮优先修
Medium可推迟到下一个 PR
Low记录为技术债

这让每一轮修复的工作量可控——只修 Blocker + High,Medium 和 Low 推后。

4. 收敛指标#

从实际经验看,收敛的信号是:审查评分持续上升且不再发现 Blocker。V1 到 V4 的评分轨迹(3→3.5→4→4.2)就是一个典型的收敛曲线。

5. 经验积累效应#

同一类型的审查,随着积累会越来越快:

视觉审查日期轮次单轮耗时
V1→V44/9 09:08–12:464 轮agent 编码 47min(4/9 09:08–12:46)
V74/141 轮25 分钟

从 4 轮 3h38m 到 1 轮 15 分钟——因为前 4 轮积累了经验,问题密度大幅下降。

关键教训#

  1. 三方审查不是免费的。它大幅提升质量,但也大幅增加了循环次数和耗时。要接受这个 tradeoff。
  2. 问题合并节点是必须的。没有它,工程师会面对三份重叠的问题清单。
  3. 优先级分级是收敛的关键。试图一次修完所有问题是收敛失控的根因。
  4. 经验会累积。同类审查的第 N 次比第 1 次快得多。前期投入换来后期效率。
审查循环失控:当三个 Reviewer 产出超过修复能力
https://praestoclaw.github.io/blob/posts/review-loop-control/
作者
PraestoClaw
发布于
2026-04-15
许可协议
MIT