126 条评论降到 0:一个开发者把 AI 代码的 review 关了
Martin Gratzer 把人工代码 review 从流程里拿掉了,agent 现在自己合并低风险 PR。人从中间挪到两端:前面想清楚问题,后面把系统造结实。他拉了一个不懂代码的土木工程师做实验,五周 85 个 PR。
Martin Gratzer 一月在 Colorburst 的 25 个 PR 上写了 126 条行内评论。九月和十月,159 个 PR,一条没有。他的新项目 Tandler 总共只有三条手写评论,全在最早那个 PR 上。
这些数字来自他自己的统计。不是 agent 不犯错了,是能被他抓到的问题,基本已经被 agent 和它周边的系统先抓到。
他举了两个例子。Colorburst 改配额那次,两个新上下文的 reviewer 发现测试 fixture 用了一个不存在的定价档位,测试全绿,但免费档根本没被测到。另一次依赖更新,一个对抗性 review 用 30 个构造 payload 打 SVG sanitizer,找出三条绕过路径。两个问题都在 PR 内修掉了,人还没看过 diff。
图里左边是二月的流程:人计划 issue、agent 实现、人自查、人逐行看 diff。右边是十月:人先把问题塑形,agent 实现并在新上下文里跑一遍,guard 推着 CI 和 review 反馈往前走,land 给绿色 PR 做风险判定,低风险直接自动合并。人挪到了两头。
为了让证据不只来自自己,他拉了一个朋友做实验。Andreas 是和他共用办公室的土木工程师,在行业里有个想法搁了很久。Martin 给他看了 Claude,他用 Claude Cowork 搭出原型。功能跑得通,界面也拿得出手,潜在客户看了很兴奋。
但底下是典型的 vibe coding 灾难:一开始没有 git,没有 CI,一个巨大的 index.html 塞满内联 JavaScript,每次查询读将近 1GB 数据,因为没人告诉他地理数据该用 PostGIS。
Martin 从原型重新搭了一遍,套上自己项目的结构:lint、死代码和重复代码检测、import 边界、迁移检查、高覆盖率要求、每次 commit 部署到 VPS 的流水线。然后交给 Andreas 和 Forge。Andreas 不看代码,也看不懂。
前五周,Andreas 开了 85 个 PR,每个大约一千行。Martin 九月份批准了他 48 个 PR 里的 45 个。他承认很多细节是靠 Claude 的 /code-review,把结果贴在自己名下再开修复 PR。Simon Willison 管这叫 meat proxy review,人肉代理 review。真正有用的做法,是跨 PR 找模式,再把模式变成 guardrail。
Forge 的改动就是从这里长出来的。三个步骤:
/forge-setup-project # 每个仓库一次:生成 AGENTS.md 和 agent 工作用的文档
/forge-ship 42 # 实现 Issue #42,跑一遍,在新上下文里 review,开 PR
/forge-ship --guard 42 # 继续推进:CI、review 反馈,最后给风险判定
ship 把 issue 实现出来,再实际跑一遍应用,把看到的东西写进 PR 的 Exercised 段。review 的人是另一个上下文,不是写代码的那个 session。guard 无人值守地把 PR 推到可 review 状态,但它永远不合并,因为一个会修自己 PR 的循环不该同时拥有批准权。land 是最新的,它在 head commit 上判断风险:机械检查先过一遍,大小、迁移、CI 改动、安全敏感路径、被弱化的测试。这些都没命中,verdict 才可能是低风险,条件是 reviewer 能说出检查会漏掉什么。否则 PR 拿到一个 where to look 列表,每项是一个文件加一个问题。
他在 Colorburst、Tandler 和 Andreas 的项目上开了几天自动合并,太早,还看不出 land 判得准不准。Andreas 前六个 PR 里,两个判低风险。需要人看的四个里,有一个问的是代码有没有正确读懂建筑规范的一条条款,只有 Andreas 能答。
让他最终下决心改 Forge 的,是看见别人在几周内走到了同一个地方。Anthropic 的 Claude Code 团队优化的是不增加回滚和事故前提下最少的人工 review 时间,低风险变更检查全绿就不需要人批,理由是变更定层级,不是作者定。Imprint 的 Will Larson 团队做了 small-change,CI 决定一个 PR 够不够格,review skill 只能批准或忽略,放过一个错误就算系统失败。Gergely Orosz 把很多地方剩下的 review 叫 zombie code reviews。Amp 团队干脆不要 PR。风险画像差得很远,方向一样:把人从默认路径上拿下来,把注意力花在风险上。
有个反例值得记住。换掉图像模型之后,Colorburst 的新模板连续五周没有 title 和 tags,CI 一直绿,因为测试把模型响应写死了。读那些 PR 也抓不到,修法是加另一条 guardrail:对着真实模型跑 live contract test。结构让信任成为可能,但结构本身也会骗人。
局限也写得很清楚。这些都是单人项目,没有团队,没有合规。Gergely 发现其他全自动 review 的案例也都是 side project、单人公司、很早期的创业公司。工作里有合规,还有知识共享:如果没人读发出去的东西,就没人理解发出去的东西。
Martin 的说法是,人还在环里,还在控制。只是花更少时间读 diff,更多时间在两头:把 issue 塑形,和 agent sparring,问蠢问题,戳破双方的假设,直到该覆盖的都覆盖了。另一头是把系统养好,哪里漂了,哪里本可以避免,就把护栏加在哪里。
二月份他写过,规划是人加值最多的一步。现在看没变。没有人在中间,人在两端。
发布时间: 2026-10-27 21:32