AI 编码 Agent 30 天产出 212 个 PR,但验证环节全面失守
作者用 AI Agent 独立构建多租户 SaaS 一个月,合并 212 个 PR、改动逾 11 万行代码,但人审缺席、…
一位开发者在 30 天内仅凭自己 + AI 编码 Agent 构建出一个多租户 SaaS 平台:Agent 共合并 212 个 PR,改动代码 11.1 万余行,仓库在 22 小时内即完成整套骨架合并。然而与此同时,208 个 PR 实际上无人 review,CI 任务链静默失效 16 天,staging 环境整个月都在跑 Terraform 占位镜像。当 AI Agent 的产出速度超过人的验证速度时,流程里每一道「人为把关」的环节都会悄悄退化为零——而系统依然一路报绿。
实验规模与产出
- 30 天内合并 212 个 PR,11.1 万行代码变动;571 次 commit 中绝大多数由 Agent 提交。
- 源代码约 1.96 万行,测试代码约 1.14 万行。
- 平台骨架(monorepo、DB、API、Web、Agent 服务、计费、通知、CI)在前 22 小时完成合并。
- 九个 UI 页面 PR(约 4700 行)在 39 分钟内全部合入。
- 单日峰值:7 月 4 日合并 59 个 PR。
技术栈刻意采用生产级「无聊组合」:Bun + Turborepo monorepo、Hono API、Next.js 15、Drizzle/Postgres(含 pgvector),基础设施用 Terraform 部署在 GCP 的 Cloud Run 与 Cloud SQL 上。交付流程被设计成 GitHub 紧耦合的闭环——开发者写 plan 文件,由同步脚本转成 issue,Agent 通过服务端分支 ref 认领 issue,按验收标准实现并跑一组确定性 gate 后开 PR。人在流程里只做两件事:写 plan 和 review PR。
验证真空:三条同时失守的防线
Agent 兑现了它们的速度承诺,作者承认自己没兑现 review 的承诺,结果是整个验证体系从三处同时塌陷:
- 人审缺席:212 个 PR 中有 208 个零 review,中位合并耗时约 90 秒,19 个 PR 在一分钟内就被合并。
- 自我背书:每个 PR body 里都有一张自报的 gate 表(format ✅、typecheck ✅、test ✅),由写代码的 Agent 自己填写,几乎从未被独立核对。
- CI 假阳性:CI gates 任务连续 16 天处于故障状态,PR 一直顶着红色 check 合入;与此同时 staging 环境始终在跑 Terraform 占位镜像,仪表盘上「已部署」的绿灯从未被怀疑。
代码本身并不差
复盘归复盘,作者强调 Agent 写的代码质量其实高于外界想象:每个实现 PR 都把验收标准一对一映射到命名测试;部分 PR 主动 mutation-test 自己——故意把修复点破坏、确认测试会变红;数据库测试跑在带真实语义的内存 Postgres 上而不是 mock;确定性 gate 从最初的 6 道扩展到 12 道,包括 import 方向边界、静态禁止某类多租户 bug 的身份 gate、阻断提交云项目 ID 的 config gate,以及要求所有运行期环境变量必须来自 Secret Manager 的 run-secrets gate。安全侧也做了真活:AES-256-GCM 凭据库(每值独立 IV)、HMAC 签名的 OAuth state、常量时间比较、用整数运算处理金额并写测试断言「恶意 LLM 无法篡改已存金额」。
更值得注意的是 Agent 的「诚实」:它们在代码注释里主动标注自己的捷径,在 PR body 里专门开「Honest gaps」小节。有一次甚至在基础设施变更里写明 Cloud Run 允许 allUsers 公开调用、ingress 未限制,并请求 review——而作者 56 秒后就把它合了。
关键经验
复盘后作者把结论压缩成几条规则:
- 速度从来不是瓶颈,验证才是:25–30% 的 PR 最终是返工,平台已经先于新功能进入「先稳定、再加东西」的阶段。
- review 是预算,不是美德:一个人一个月能认真看完的高风险 PR 大约 30 个,不是 212 个;应当按风险分层签字,而不是全量粗看。
- 自报绿色不是绿色:Agent 的成功声明几周内无人交叉印证,CI 坏了、deploy 跳了依然「绿」了 16 天——验证必须由机器独立、强制执行。
- 诚实需要消费者:Agent 在每个 PR 里都坦白了偷工减料,却没人接招;现在被披露的技术债会自动转成可追踪的工作项。
这一组数字与教训,本质上回答的是一个正在被整个行业反复问的问题:当 Agent 的产出速度持续超过人的认知与验证带宽时,工程流程该如何重新设计,才能让绿灯仍然是绿灯。
