
最近很多人在聊 AI 编程GrokBot 核心成员 Lauren Tan 的分享却让我停下来反复看了很久——她一个人一个月交付 2000 个 PR。这不是团队指标不是小组产出是落在一个人头上的数字。你可能第一反应是这个数是不是吹的。我第一反应也是。但把细节拆开之后我发现她说的不是我一个月写了 2000 个 PR 的代码而是我把 PR 的生产、验证、合并流程变成了 AI 流水线。这个区别是普通 AI 用户和真正的 AI 驱动开发者之间的分水岭。这篇文章我想从她的工作方式出发聊聊高密度 PR 交付背后的核心思路再结合我自己在类似项目里的实操经验给出一套可以复制的 AI 辅助工作流。适合那些已经在用 AI 写代码但总觉得AI 帮我写代码挺快但交付效率没有质变的人。看完你会明白问题不在工具而在你怎么设计人和 AI 之间的协作链路。1. 先看数据2000 个 PR 意味着什么1.1 数字背后的真实工作量先做一个简单的算术。一个月按 21 个工作日算2000 个 PR 意味着平均每天要产出 95 个左右的 PR。按照 8 小时工作制每小时要交付近 12 个 PR。如果每个 PR 都靠人工一行一行写哪怕每个 PR 只改 10 行代码一天也要敲 950 行高质量代码还要处理提交、推送、写描述、应对 review、修测试。这个强度人类不可能持续一个月。所以 2000 这个数字本身就说明她的工作流里人的手和AI 的手是分开的。人类负责定义目标、拆解边界、审查关键路径AI 负责批量生成变更、自动验证、准备可合并的 PR。这不是什么科幻而是已经跑通的生产模式。另外还要注意她所在的 GrokBot 是一个 AI 相关的项目本身这类项目天然有大量自动化测试、基础设施、文档生成、示例代码、配置调整等看起来不起眼但数量极大的 PR 类型。这种 PR 单个体量小、结构清晰、验证成本低非常适合 AI 批量处理。换句话说2000 个 PR 的前提是选对了 PR 类型不是盲目把所有需求都塞给 AI。1.2 核心拆解什么样的 PR 算一个 PR很多人在讨论 PR 数量时忽略了 PR 的颗粒度。一个 PR 可以是 5000 行的巨型重构也可以是一次 5 行的依赖升级。Lauren 的 2000 个 PR绝大多数是后者。这才是关键。她的思路是把大需求拆成大量小步、可独立合并、回滚成本低的变更单元。每个小变更都对应一个清晰的意图比如更新这个函数的错误提示文案给某个 API 补充缺失的单元测试把某个配置参数从硬编码改为环境变量。这些变更用 AI 做非常合适因为它们目标明确、上下文局部、验证标准客观。反过来说如果你让 AI 一次生成一个覆盖 20 个文件的大 PRAI 很快会迷失在上下文里产生的代码十有八九和你想要的南辕北辙。人也不容易 review合并风险也高。所以高 PR 数量的第一个秘诀其实是把 PR 切小。2. 她的 AI 工作流不是让 AI 写代码而是用 AI 重构交付流水线2.1 需求到任务的拆分喂给 AI 的不是做个功能而是一段可验证的变更我从她的做法里看到的第一条准则给 AI 的任务边界必须等于一个 PR 的边界。具体来说她会把产品需求拆成一条条可独立验证的任务卡。每张卡包含四件事目标这个 PR 要改变什么、约束不要动哪些文件、必须符合哪些已有模式、验证方式跑哪个测试能证明它做对了、以及验收样例一个 AI 可以自我检查的例子。这一点和普通开发者直接跟 AI 聊天完全不同。很多人打开 AI 编程工具就说帮我实现一个用户登录功能这是一个开放性问题AI 会生成一堆猜测。而像她这样拆完任务卡之后AI 面对的是一个收敛问题在 module_a 下新增一个函数输入布尔值返回对应文案通过 user_visible_messages_test.go 中新增的三个用例即算完成。这个过程有点像带实习生。优秀的人不会扔给实习生一个帮我做一个系统的任务而是把任务拆到实习生能独立复现、有明确完成标准。AI 也一样它没有常识但只要你把边界和验证标准讲清楚它能在你定义的框里做到非常高的一致性。2.2 AI Agent 的并行工厂多个任务同时推进Lauren 的第二个关键做法是让 AI Agent 以并行的方式同时推进多个任务。她不是在一个对话里让 AI 连续做 10 个任务而是同时对同一个代码仓库开出多个独立的 Agent 会话。每个 Agent 处理一张任务卡拥有自己的工作目录或分支互不干扰。这个设计非常聪明因为 AI 编程工具的最大瓶颈其实是上下文窗口。一个 Agent 如果长时间在同一个会话里处理多个任务它的注意力会被之前的内容污染后面的产出质量会急剧下降。并行分工之后她就相当于在本地跑了一个程序员流水线。Agent A 在写 A 模块的单元测试Agent B 在更新文档Agent C 在修复某个 lint 告警。她作为流水线上的唯一人类主要工作变成了验收而不是生产。更进一步她会在 CI 里嵌入 AI 验证层。每个 Agent 完成变更后不是直接推 PR而是先自动跑一轮提交前检查代码风格、类型检查、单元测试、编译验证。只有这一层全部通过Agent 才会把变更提交到远程然后自动生成一个带有完整描述的 PR。也就是说AI 不只是写代码它自己还把代码质量检查员的活干了一部分。2.3 人机协作的检查点设计很多人好奇AI 都干到这个份上了人到底在干嘛总不可能真的人手完全不沾代码。Lauren 的答案是人只出现在少数关键检查点。她自己的日常节奏是早上用大约半小时扫描昨晚 AI Agent 生成的所有 PR 标题和摘要快速过滤明显有问题的那批。上午用于处理那些她标为需要人工理解的复杂变更比如涉及架构调整、跨模块数据流变化、环境安全的改动。下午是集中处理 review 和合并同时给第二天的任务卡做拆分和提权。这给了我一个很重要的启发AI 的目的不是减少人类的参与而是把人类的注意力从低价值反复动作上挪走。人不需要盯着 AI 生成的每一行代码但人需要对什么该合并、什么不该合并保持判断力。她也明确说过几乎每个模块的负责人都有一定的最终拍板权AI 生成的 PR 只负责把选项送到人面前。3. 关键实操从 0 到 1 搭建自己的高 PR 量 AI 工作流3.1 第一步规范代码仓库的机器可读性如果你想复制这套工作流第一个要做的事不是装一个更贵的 AI 工具而是把仓库整理成 AI 更容易理解的形态。什么意思AI 编程工具读懂代码靠的是上下文检索和语法结构。一个包组织混乱、命名随意、文档缺失的仓库AI 生成的代码大概率也是混乱的。反过来一个有着清晰目录结构、模块职责单一、注释简明到位的仓库AI 生成的变更会准确很多。我实际的建议是先从三件事开始做在仓库根目录放一个AGENTS.md或者.cursorrules一样的文件详细描述仓库的技术栈、代码风格、测试命令、目录职责、禁忌模式。把单测作为硬约束所有代码变更都必须有对应测试。AI 生成的代码如果没有测试直接引导它补齐。把 CI 流程做到快而全。一个 PR 从推送到验证完成尽量控制在 10 分钟以内。因为 AI 并行生成 PR 的速度极快CI 是这套工作流里的限速器。CI 越慢整体交付速度就越拖后腿。这步做完你的仓库就不再是一个人类开发者凭记忆协作的地方而是一个机器也可以安全操作的工厂。3.2 第二步用 AI Agent 自动生成 PR 草稿仓库准备到位之后就可以开始让 AI 批量生成 PR 草稿。我的做法是写一个任务描述模板结构如下目标在 payment-service 模块中对 /charge 接口补充幂等校验 约束 - 只修改 internal/payment 目录下的文件 - 不要改动数据库迁移文件 - 遵循现有错误处理模式使用 errors_pb 包 验证 - 运行 go test ./internal/payment/... - 新增 TestChargeIdempotency 用例 验收样例 - 相同请求带上 idempotency_key 时第二请求应返回 200 且不重复扣款把这个模板填好之后交给支持自定义 agent 的 AI 编程工具现在比较常见的 Cursor、Claude Code、Gemini CLI 都行。运行它AI 会自己读相关代码、写实现、补测试、跑验证然后把结果作为 PR 的 body 提交。这一步的关键是模板里不要出现模糊词汇。比如优化一下是灾难因为 AI 不知道优化到什么程度。你应该说将超时时间从 3s 改为可配置默认值保持 3s并在配置文件中暴露字段。用这种模板生成的 PR天然就是可审查的它目标明确、改动范围受控、验证方式可见。我在实践中发现这种 PR 的合并率远高于跟 AI 自由聊天生成的一坨改动。3.3 第三步自动化审查与合并策略PR 草稿有了如果每个 PR 都人工逐行审查那量一上来你同样会累垮。所以第三步是把审查和合并策略也变成一套可执行规则。先说审查。我的经验是分两个层面第一层是机器审查跑静态检查、类型检查、单测、覆盖率、以及针对改动范围的 lint 规则。这一层完全自动在 PR 推上来之后由 CI 完成。第二层是 AI 辅助审查。让另一个 Agent 用只看 diff 不看实现者的方式检查 PR重点追踪安全问题硬编码密钥、SQL 注入、越权检查缺失和代码风格问题。注意这一步不要和生成代码的 Agent 共用同一个上下文确保审查者不带写代码者的偏见。再看合并策略。对于低风险、高确定性 PR文档、格式化、常规依赖升级可以采取CI 通过 一个负责人点一下确认即合并的轻量流程。对于涉及核心模块、数据迁移、API 变更的 PR强制要求至少一个模块负责人做深度 review。这里有一个很实用的细节把每个 PR 的说明文档写好AI 生成的 PR 默认会带一个标准化的描述模板包括背景、改动清单、测试结果、影响范围。reviewer 只需要花 30 秒就能大致判断这个 PR 建不建议合并。如果你发现自己 review 一个 PR 要花超过 5 分钟说明 PR 拆得不够小或者描述不充分跟 AI 的能力无关。3.4 第四步数据反馈与 prompt 迭代这套流程用起来之后你会很快积累一个AI 生成 PR的速度和合并率数据。这些数据不是拿来炫的而是用来反向优化 prompt 和仓库规范的。我每两周会做一次复盘统计这几项指标AI 生成 PR 的合并率低于 60% 的模块说明该模块的任务描述模板有缺陷。PR 从创建到合并的平均时间超过 1 天的部分多半是 review 阻塞。某类 PR 的返工次数如果 AI 反复在同一类问题上被要求修改我就把对应的约束写进AGENTS.md。比如有一次我发现 AI 生成的测试经常依赖真实数据库连接。问题不在 AI而是仓库里没有一个清晰的 mock 示例。后来我在规范文件里补充了所有单元测试必须使用内存态存储参考internal/testutil中的 FakeRepo 示例这类返工就直接降到了零。所以你在搭这套工作流时一定要把 prompt 当成代码来维护而不是一段当时随便写的咒语。每次踩到坑先想想能不能把坑的教训固化成任务模板里的约束而不是下次靠运气避开。4. 常见问题与排查实录4.1 AI 生成的代码与主分支冲突怎么办并行 Agent 太多必然会出现两个 PR 都改了同一个文件第二个合并时冲突一堆。Lauren 的做法也间接解决了这个问题她把任务卡拆到足够小让不同 Agent 改的文件尽量不重叠。如果冲突还是出现我建议不要用传统的人肉合并去处理直接让 AI 用当前 main 分支的最新代码作为上下文把冲突部分重新生成一遍。因为这里已经不是判断哪个逻辑对的问题而是纯粹的技术合并问题AI 在结构化合并上做得比大多数人快。只要你的任务卡明确声明了约束只修改 internal/payment 目录下的文件不同 Agent 之间几乎不会打架。真正要避免的是两个 Agent 同时改一个公共工具函数这种情况应该在任务卡分配时就从路径上避开。4.2 测试通过但 review 不通过怎么办这是用 AI 生成 PR 后很常见的场景单测全绿但模块负责人看了之后说这个实现不符合我们的架构约定。我分析过很多次之后发现根因通常是仓库规范文件里没有写清楚架构约定到底长什么样。测试只能证明逻辑对证明不了代码风格和架构分层是对的。解决办法是把架构约定显式化。比如controller 层只负责参数解析所有业务逻辑必须放在 service 层这类规则加到仓库的规范文件里之后AI 生成的代码就会自动遵守。还有一个简单技巧让 AI 先找出仓库里三个最接近的已有实现要求新代码必须和它们的模式保持一致。这种模式对齐比抽象描述对你说的架构规则有效得多。如果 review 还是卡住就叫停那个 Agent不要在同一上下文里反复让它修改因为越改越乱。正确的做法是关闭当前会话重新开一个在任务描述里引用 review 的具体意见比如上一个版本被指出没有处理 BigDecimal 精度丢失问题请参考 TestDecimalRounding 的用例修复。4.3 如何避免为了 PR 数量牺牲质量说到 2000 个 PR很多人本能地担心这是数字游戏质量和数量不可兼得。我的看法是如果你用传统的人工方式来理解数量这两者确实冲突。但在 AI 辅助流水线里质量和数量可以同时成立因为质量的把控点从人写代码时的小心翼翼换成了规范、测试、审查策略的严密程度。实际操作中我会对低风险 PR 采取自动化前置质量门禁包括覆盖率阈值、test 运行时长、以及 diff 规模上限。比如一个 PR 如果改动超过 300 行或者涉及超过 5 个文件它会自动被标记为需要人工深度 review不允许走轻量合并通道。这样一个粗暴的规则反而能保证大部分高密度 PR 都是小步、低风险、可快速审查的。还有一条铁律所有 PR 都必须有可回滚方案。依赖升级类 PR 要写明如果出现兼容问题回滚到上一个 commit 即可。这样即使 AI 批量产出的 PR 里偶尔混入一个疏漏也不会酿成灾难最多花两分钟回滚。4.4 团队协作中的AI 沟通技巧最后聊一个很多人忽略的问题AI 生成 PR 不是在真空中进行的它需要和一群人类同事共处。Lauren 能拿到 2000 这个数字背后一定还有团队协作上的顺畅配合。我学到的技巧是让 AI 生成的 PR 在格式上比人类写的更规范这样才能减少团队中的摩擦。具体做三件事每一条 PR 描述都严格按模板填写开头标题遵循类型简短摘要格式比如test: 补充 payment idempotency 用例。PR 里附上合并后需要关注的事项哪怕 AI 不知道这些事项也可以从任务卡里继承比如此改动会影响 /charge 接口的超时行为相关调用方需要回归。对可能产生争议的 PR让 AI 先在评论里列出替代方案以及为什么选择当前方案。做到这几点后团队同事不会把 AI 生成的 PR 看成来路不明的家伙反而会把它当作一个特别守纪律的机器人同事。我个人使用下来最深的体会是高 PR 量的秘密不在一两个工具而在把产品的需求拆到机器能理解的颗粒度再把所有验证规则显性化。Lauren 的方法其实一点都不玄她只是比大多数人更早意识到在 AI 时代能力强的开发者不再是数组写得好的人而是能把编码流程变成可并行、可验证、可自动化的流水线设计者。如果你今天想开始尝试我的建议是别急着追求 2000 这个数字先拿一个模块跑两周。把仓库规范补好把任务卡模板写清楚让 AI 负责生成和验证自己做 review 和决策。两周后你大概率会发现PR 数量翻倍只是副产品真正的变化是你终于从低效的机械劳动里抬起了头有时间去思考那些 AI 替不了你的问题。