ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

AI 提效的秘密武器:从 2000 个 PR 看工作流粒度与自动化实践

AI 提效的秘密武器:从 2000 个 PR 看工作流粒度与自动化实践 看到《GrokBot 核心成员 Lauren Tan每月交付 2000 个 PR 的人是怎么用 AI 的》这个标题时我的第一反应是怀疑。做过几年开源维护和团队基建的人应该都清楚PRPull Request这个缩写背后往往连着漫长的评审对话、CI 排队、commit 整理以及一堆“为什么这里要这么改”的说明。一个月能稳定合入二三十个 PR已经是很能打的工程师了。2000 个这个量级换算成工作日每天接近一百个几乎每五分钟交付一个。如果她是在用传统的“写好代码→提交→等Review→改意见→合入”流程那无论怎么压榨精力都做不到。后来我把这个数字拆开发现事情并没有表面上那么“反人类”。她真正厉害的不是手速而是把工作流设计到了一个让 AI 能安全介入的颗粒度。这篇文章我想顺着这个话题聊一聊我从中复盘出来的东西2000 个 PR 是怎么拆出来的AI 在哪些环节真实打工以及为什么很多人天天喊“AI 提效”却始终摸不到这种产能的边。1. 2000 个 PR 不是神话从工作量反推她的核心工作姿势先做一个很粗的估算。一个月按 22 个工作日算2000 个 PR 约等于每天 91 个。每天按 8 小时高效工作算每个 PR 只有大概 5 分钟的处理时间。可正常的 PR 生命周期是拉分支、写代码、跑本地测试、提交、写描述、推送、等 CI、修问题、再推、等 Review。这里面随便哪一个环节出点意外5 分钟都不够用。所以结论只有一个她交付的 PR绝大多数不是传统意义上“从零写一个功能”的 PR而是小粒度、可机械化处理的“标准件”。这种标准件 PR 长什么样我根据日常经验列几类PR 类型典型内容单次改动量为什么适合高频交付依赖升级把某个库从 1.2.3 升到 1.2.4通常只有 lockfile changelog只要测试通过风险极低评审可以直接看测试结果死代码清理删除一个不再被引用的函数几个文件各删几行自动化检查能确认没有引用人工确认成本低代码样式统一格式化、重命名局部变量几十个文件但无逻辑变化IDE 和 lint 工具能保证不改变行为测试补全给新函数补边界用例新增一个测试文件不动生产代码评审者只需检查用例合理性文档同步README、注释、接口文档更新文本为主逻辑简单AI 可以生成初稿人只做校对小范围重构把一段重复代码抽成函数若干调用点同步替换测试覆盖到位后机械替换非常安全其实这些 PR 单拿出来没有一个是有难度的甚至很多新人第一天就能做。它们的共同点是不需要长时间思考判断标准明确且可以由自动化工具与测试用例兜底。一旦把交付物切到这种粒度AI 能发挥的空间就开始指数级增长因为它不需要跟你讨论需求不需要理解复杂的业务上下文只需要在明确的边界里填内容。所以她的第一个核心工作姿势我总结为“把活儿切到机器能接手的粒度”。很多开发者天天抱怨 AI 不靠谱回头看看自己布置给 AI 的任务“帮我重构一下订单系统”“给我设计抽奖逻辑”——这种任务连人都不一定一次能说清楚AI 答非所问才是常态。真正能让 AI 稳定产出几千个 PR 的反而是那些切得很碎的机械任务。这个姿势带来的另一个好处是评审成本极低。PR 越小评审者越敢快速合入。你想想一个 PR 改六十个文件再牛的人也得抽出半小时仔细看一个 PR 只改了 lockfile 和三条配置测试绿了基本就可以直接过。小 PR 被合并的速度快意味着主分支的变更密度高而变更密度一旦上去各种依赖升级和自动化修复又可以继续拆成新的小 PR。这是一个飞轮效应不是效率高所以才交付 2000 个而是 PR 粒度足够小才让 2000 个变成可能。2. AI 在哪些环节真实替她打工从动手写代码到改完 Review 意见“用 AI”这个词太泛了。我在团队里观察过大家一说用 AI 写代码想到的就是打开对话框让它生成一段函数。但真实的高频交付场景里AI 更值钱的地方是那些不太起眼、却极其占用时间的中间环节。我顺着 PR 的完整生命周期梳理了一遍 Lauren 这类工作流里 AI 可能参与的位置。环节一代码生成与样板代码补全。这是最表层的一层但也是很多人对 AI 编程的全部认知。在她这种工作流里AI 不是用来生成核心逻辑的而是用来生成那些“有明确规律、但写起来很烦”的部分新接口的 CRUD 骨架、类型定义、Options 模式的默认参数、测试桩。我之前在一个项目里试验过让 AI 根据一个 OpenAPI 片段生成对应的 TypeScript 客户端一次性生成的代码几乎可以直接用因为它其实就是把字段名和类型做一个机械映射根本不需要“理解”。这类工作表面上不起眼但量一多节省的时间非常可观。环节二单元测试自动生成。很多工程师不爱写测试不是因为懒而是因为重复度高。你刚写完一个函数它的输入输出边界你心里清楚写测试用例就是把这些边界填进断言里这个过程毫无创作快感。AI 在这里反而是完美的工具给它函数签名和主要分支逻辑让它生成边界用例它可以在几秒内给出一个七到八个用例的测试文件。注意我不建议无脑采纳它生成的每一个用例因为 AI 有时会脑补一个不存在的异常分支但作为初稿它已经帮你省掉了 70% 的体力活剩下 30% 的裁剪工作量比从零写快多了。对于依赖升级、配置调整这类 PR只要测试文件补齐了评审基本可以闭眼过。环节三PR 描述和 Commit Message 生成。很多人小看了这一步的耗时。实际的工程团队里一个 PR 写得含糊不清等到 Review 时被追着问三四个来回时间成本比写代码本身还高。Lauren 这种一天近百个 PR 的节奏根本不可能手写每一条描述一定是用工具把 diff 归纳成结构化摘要改了什么、关联到哪个 issue、测试覆盖了哪些场景、是否有破坏性变更。现在的 AI 做这件事非常稳因为 diff 本身就是上下文不需要额外理解业务只要模型能从变更里提炼出“什么和为什么”。我自己现在的习惯是所有 PR 描述都让 AI 生成初稿我再改一遍措辞几十秒搞定但 Review 效率提升一个档次。环节四Review 意见的批量整改。这个环节经常被忽略却是高频交付节奏里最容易卡死的地方。你提了 PR评审人说“这里命名不好”“那里应该提取个常量”“这行注释多余了”这种意见往往零散又具体。如果人工逐条找代码位置去改每改一次都要重新切上下文。AI 在这里真正了不起的是可以做一个“逐条映射”你把评审意见整段贴给它再给出对应文件它可以快速输出每个意见对应的修改点。因为这类意见基本都是局部、明确的AI 处理起来非常稳。它不能替你做架构层面的评审但处理零星整改意见完全够格。环节五CI 失败后的修复。高频交付的另一个隐形杀手是 CI 偶发失败某个测试因为网络超时挂了某个 lint 规则没通过某个快照需要更新。这些东西单独看都是小事但一天碰几次节奏全乱。AI 可以直接拉取失败日志定位到出错的那个测试或那个 lint 规则然后给出修复建议甚至直接提修复 PR。尤其是“测试快照过期”这种AI 的修复其实比人快得多它只需要对比当前输出和旧快照的差异机械更新一下就行。顺着这五个环节连起来看会发现一个更有意思的事实Lauren 的工作流大概率不是“人写需求→AI 生成一切”的结构而是“人拆出标准任务→AI 逐环节辅助→人做最终验收”。它更像一条半自动流水线每一个环节的 AI 产出都不要求完美但都有人工兜底而且评估成本极低。这跟那种“我把整个模块的需求丢给 AI希望它一次生成完”的用法完全不是一个思路。3. 为什么多数人用 AI 提不了效工作流颗粒度差的不是一星半点我见过太多团队喊“AI 提效”实际效果却是朋友圈多了一张截图代码产出基本没变。问题通常不出在模型能力上而出在工作流颗粒度上。你让 AI 做“帮我优化这个项目”它只能给你一个宏大而无效的建议清单你让 AI 做“把这个函数里的 if 分支改成 early return”它一分钟就能搞定而且几乎不会出错。我花了很多时间研究这种颗粒度差异。传统工程思维里我们会把任务切成模块、接口、函数目的是让人能并行分工。但到了 AI 协作场景切任务的标准略有不同每个子任务必须足够独立、足够可验证、并且上下文足够完整。独立性保证了 AI 不会在多个任务之间把状态搞混可验证性保证了你敢接受它的产出上下文完整则保证了它不需要反复问你“这个需求是什么意思”。举个例子。我有一个项目需要把一批旧接口从 HTTP 迁移到 HTTPS涉及三十多个文件。如果直接跟 AI 说“帮我把接口全都迁到 HTTPS”它大概率会懵——它不知道哪些文件涉及、哪些依赖需要处理、哪些测试需要改。但如果你把它拆成这样的清单批量扫描代码里所有形如http://api.example.com/的字符串对每个字符串生成一个配置文件条目标记所在文件和行号生成一个批量替换脚本替换后再跑一遍类型检查。逐文件更新对应的 mock 数据和测试断言。你会发现每一个子任务都极其机械AI 做起来又快又稳。因为拆到这一步根本就不需要复杂推理了整件事的难点在你拆任务的能力上。这恰好是 Lauren 这类高产工程师的隐藏技能她未必比普通开发者聪明多少但在“把工程问题拆成机器可执行步骤”这件事上她一定练得比大多数人深得多。另一个关键点是上下文管理。很多人用 AI 做到一半发现它开始胡说八道通常是因为它丢失了开头给过你的约束。我常用的办法是每个子任务单独开一个会话但把必要的约束写成一个简短文件放在仓库里每次新会话先把这个文件贴进去。比如一份ai-rules.md里面只写三件事项目使用什么语言和框架、代码风格遵循哪条规范、测试必须用哪个断言库。就这么三行AI 的输出质量会明显上升。Lauren 那种高频交付节奏不可能反复给 AI 解释“我们项目是什么”一定也是把所有约束沉淀成了可复用的指令。我甚至怀疑她交付 2000 个 PR 的核心能力不在“写代码”而在“写规则”。AI 时代的工程师资深与否越来越体现为能不能用清晰的边界、可验证的标准和自动化的测试把一群不靠谱的“实习生”也就是模型管理得井井有条。这比手写多少行代码都值钱。4. AI 提效的地基不是机器人写多快而是人怎么切任务聊到这里肯定有人想问那我把自己手头的工作也切成小 PR再让 AI 帮我写是不是就能复制 Lauren 的节奏理论上方向是对的但前提是工程地基得跟得上。我用了很长一段时间才意识到AI 提效不是往现有流程里加一个机器人而是先重新设计流程让机器人能跑起来。这个流程本质上是一整套工程基础设施。首先是模块化的代码仓库。如果代码都是大泥球函数互相引用改一个地方崩三个模块那你切出来的小 PR 也很难独立验证。反过来代码边界清晰、接口稳定、模块之间依赖关系明确AI 在某个模块里改东西的风险就小得多你甚至敢让机器人批量处理某些模块的独立改动。所以想提效的人要做的第一件事不是急着用 AI而是看看仓库能不能支持“独立任务”的存在。其次是强测试覆盖与稳定的 CI。没有测试兜底AI 生成的代码就是无证驾驶。你可能一眼看得出来逻辑对不对但你不可能一天审查 90 个 PR 还不累。测试在这里的作用是把“人工判断”替换成“机器判断”的关键桥梁。CI 稳定同样重要如果流水线本身就经常因为偶发网络问题挂掉你就无法判断到底是 AI 改坏了还是环境又抽风了整个交付节奏都会被拖垮。我在做自动化依赖升级时最大的工程投入就是先把 CI 的偶发失败率降到最低否则机器人一提 PR三分之一都败在“重跑一次就绿了”的无效测试上谁也受不了。然后是严格的 PR 模板和自动化检查。Gerrit、GitHub 或 GitLab 上都可以配置 PR 模板标题格式、描述结构、关联 issue、测试勾选项强制所有人走同一个框架。有了这个框架AI 生成 PR 描述、生成 commit message 就都成了标准化填空不需要每次思考“这篇该怎么写”。自动化检查同理——lint、format、类型检查、安全扫描全部预先跑完不符合规则的 PR 直接无法合入。这会把人的注意力从“琐事”里抽出来只放在真正的判断上。上一节说到AI agent 可以自动干很多活。但在我的实操里必须清楚划分“哪些事可以交给 robot哪些事必须人拍板”。我自己的划分基准很简单凡是结果可以用测试和规则自动验证的就可以自动驾驶凡是要靠人的业务判断、架构权衡或者对外承诺的必须人来拍板。举个例子依赖升级完全可以交给机器人跑它会自动生成 PR、跑测试、在绿了之后请求合入如果有冲突再拉人去解决。近两年很流行的自动化依赖机器人就是这么工作的配合 AI 生成的变更摘要几乎能做到零人工介入。但如果是“把这个模块从单体架构中拆出来”这种任务哪怕 AI 能给出一版代码你也得亲自做架构判断——拆分边界选在哪里、是否影响其他团队的依赖、要不要分阶段灰度这些不是测试能覆盖的。这也是我在很多 AI 落地项目里看到的通病团队把太多本来需要人做判断的事硬塞给 agent最后被那些“看起来全对但整体跑不通”的产出搞得焦头烂额。实际上agent 用得好的团队恰恰是特别敢用自动化的团队——它们愿意把大量机械琐事放心交给机器人但同时在关键时刻非常保守。这种“敢放”和“敢收”之间的拿捏才是工程判断力的真正体现。5. 这套打法能抄吗规模、场景与个人适配的取舍聊到这里有个问题一定绕不开Lauren 能以这个节奏交付是因为她在 GrokBot 这样一个特定项目里环境有特殊性。那这套打法对普通团队、普通项目、甚至个人开发者到底有多少可迁移性先说合适什么场景。高频小 PR 的工作流最适合的是基础设施稳定、业务逻辑清晰、测试覆盖高的存量项目。比如 SaaS 后端、组件库、开源库维护、中间件团队、有多产品线的中大型代码仓库。这些项目的共同特点是约束多、规则明确、机械性任务量大所以 AI 能参与的比重很高。反过来在从 0 到 1 的早期创业项目里需求每天都在变代码一天重构三次这种环境下切小 PR 反而会拖慢节奏AI 也因为缺乏稳定上下文而派不上太大用场。所以如果你的项目每天都在换方向别急着追求 PR 数量先把流程稳住更重要。另一个场景适配点是团队协作的正式程度。如果团队本来就不太重视代码评审、测试覆盖低、PR 描述随便写两句那 AI 提效的基础就不复存在。它顶多帮你多写一点代码但没法帮你把交付质量从“乱”变成“规范”。我记得有个朋友跟我抱怨他们团队引进了 AI 编程助手之后PR 数量上去了但合并后线上 bug 也变多了。我去看了一眼发现他们的 master 分支根本没有保护规则任何人都能直接合入测试覆盖率不到 20%。这种地基上AI 只会在烂摊子上加速制造更大的烂摊子。那对普通开发者来说这套打法能不能从明天开始就用起来我的建议是不要一步到位而是先从一个环节切入。我个人认为最容易上手、短期内收益最明显的切入点是 PR 描述和 commit message 的生成它不涉及代码正确性风险极低而且能立刻改善协作效率。稳定的第二个切入点是给现有的函数批量补测试。这也不动生产代码AI 生成初稿、人做裁剪测试覆盖率上去以后后续所有自动化工作都会变得更安全。等这两个环节形成肌肉记忆了再试着把一个重复性手工操作比如依赖升级、快照更新、文档校验拆成清晰的步骤交付给 agent 去跑。还要说一句可能不太中听的话2000 个 PR 是结果不是目标。如果哪天你照猫画虎逼自己一个月提两千个 PR大概率只会制造一堆噪音——毫无信息量的描述、为拆而拆的小改动、合入后没人维护的垃圾代码。这套工作流真正值得借鉴的是对“产出可验证产物”的执念每个 PR 够小意味着每次变更都更容易被审查、被回滚、被理解每个环节都有测试兜底意味着质量不依赖某一个人的超人状态。这些才是它能不能给你带来效能的决定因素。结合我自己的实践来看AI 目前最让我受益的地方不是“神奇地帮我写出不可能写的代码”而是把那些稳定的、重复的、缺少智力乐趣的部分接了过去让我能把有限的注意力放在真正需要判断的事情上。要做到这一点技术反而是次要的更多是对自己工作的颗粒度有清醒的认识一个任务是人思考的还是机器执行的一条边界是规则约束的还是业务判断的。想清楚这些哪怕面对的是一个很普通的项目你也能在里面找出不少可以让 AI 帮你分担的空间。
返回列表