一个Java开发团队最近开始大规模使用Codex。以前,开发人员完成一个功能,通常需要半天甚至一天。现在,简单接口修改、重复代码重构、测试补充和部分Bug修复,都可以交给Agent并行处理。

刚开始,大家都觉得效率明显提高了。

原来团队一天只能提交几个Pull Request,现在一天就能生成十几个PR。GitHub上的提交记录越来越多,CI运行次数明显增加,代码产出看起来比以前高了不少。

但运行两周后,技术负责人发现了一个反常现象。

代码生成越来越快,真正合并到主分支的速度却没有同步提高。

有些PR提交后两天没人审查;有些修改虽然只有几百行,审查人员却需要花很长时间才能理解为什么要改;还有些PR第一次审查没有明显问题,合并前却不断出现额外修改。

最明显的变化是,团队每天花在Code Review上的时间越来越长,开发人员自己负责的需求反而被挤占。

负责人开始怀疑:是不是Agent生成的代码质量下降了?

于是团队让Codex为每个PR补充测试、自动生成变更摘要,并要求所有代码通过CI。

结果测试通过率提高了,审查积压却仍然存在。

这时候问题已经不只是代码质量,而是整个软件交付流程出现了新的瓶颈。

Agent提高了代码生产能力,但代码审查、业务理解、风险判断和合并验证并没有同步扩容。

对于团队来说,能够生成代码,并不代表这段代码已经具备可以安全合并的条件。

一、先看现场:为什么PR越来越多,合并却越来越慢?

先把团队一天的工作拆开。

过去,一个开发人员提出修改方案,编写代码,自己测试,然后提交PR。审查人员通常能够从需求讨论、日常沟通中了解这次修改的背景。

现在,Codex可能同时完成多个任务。上午提交订单查询优化,下午又提交接口重构、单元测试和日志调整。

每个PR单独看都有代码、有测试、有说明,但审查人员需要重新建立上下文。

这个接口为什么要改?原来的实现有什么问题?修改是否涉及旧版本客户端?新增的工具方法会不会影响其他模块?

Agent生成代码的速度很快,但这些问题不会因为代码已经生成,就自动得到可靠答案。

更重要的是,PR不是提交后就能直接合并。

它还需要等待CI、分配审查人员、检查实现逻辑、确认业务边界、处理反馈,并通过最终验证。

如果代码提交速度持续高于团队能够安全审查和合并的速度,待审PR自然会不断增加。

即使所有开发人员都在工作,交付周期仍然可能变长。

真正需要优化的不是每天能生成多少个PR,而是团队每天能安全完成多少个有效变更。

二、为什么AI编程把瓶颈从写代码转移到了审查?

传统开发中,代码编写本身可能占据大量时间。

开发人员需要查阅项目结构、理解已有实现、编写逻辑、修改测试,再反复调试。

使用Codex之后,一部分工作被明显加速。

但代码审查具有不同的特点。

审查人员不只需要知道代码能不能编译,还要确认修改是否符合业务要求,是否破坏已有接口,是否引入新的安全风险,以及失败之后能否恢复。

这些判断往往依赖项目经验、业务背景和跨模块知识。

例如,一个订单Service中原来有一段看起来重复的校验逻辑。

Agent认为可以抽取公共方法,减少代码冗余。

但审查人员知道,这几段逻辑虽然相似,却分别对应不同业务阶段,其中某个条件是为了兼容历史订单。

这样的风险,很难仅通过代码是否整洁来判断。

因此,代码生成时间缩短,并不意味着代码理解时间会同比例缩短。

当越来越多的修改同时进入审查阶段,原来不明显的人工判断成本就开始集中暴露。

三、第一种原因:PR修改范围过大,审查成本不是线性增长

有些团队喜欢让Agent一次完成完整需求。

例如,优化订单模块时,Codex同时修改Controller、Service、Mapper、DTO和测试代码,还顺手统一了几个公共工具类。

最终形成一个修改十几个文件的PR。

从Agent角度看,这是一次连续任务,所有修改都有一定关联。

但从审查角度看,问题完全不同。

审查人员必须逐个确认修改的合理性,还要理解不同文件之间是否存在新的依赖和行为变化。

一个PR如果只修改一个局部方法,通常比较容易理解。

但如果它同时修改数据库查询、接口返回和异常处理,审查人员就需要把多个技术层面的风险放在一起判断。

更麻烦的是,修改范围越大,隐藏在其中的意外变更越不容易被发现。

例如,Agent原本只是优化SQL,却顺手删除了一个旧字段。测试可能正常通过,但其他服务仍然依赖这个字段。

这类问题不是修改行数越多就一定越严重,而是修改涉及的独立行为和依赖关系越多,审查人员需要建立的上下文就越复杂。

因此,不能只用代码行数衡量PR复杂度,还需要观察它跨越了多少模块、修改了多少业务契约,以及是否包含多个可以独立验证的目标。

四、第二种原因:Agent生成了代码,却没有留下足够的变更证据

很多Codex生成的PR,代码本身写得并不差。

但它们存在一个共同问题:审查人员不知道为什么采用当前方案。

例如,PR描述只有几句话:

“优化订单查询逻辑,减少重复代码,补充测试。”

这样的说明并没有回答真正重要的问题。

原来存在什么异常?为什么选择这次改法?有没有考虑其他方案?修改影响了哪些业务?哪些场景已经验证,哪些尚未验证?

如果这些信息缺失,审查人员只能重新阅读代码,甚至自己复现Agent之前做过的分析。

这实际上造成了重复劳动。

Agent可能已经花费大量时间分析项目,但最终只提交代码,没有把关键判断交给审查人员。

结果就是,开发阶段的效率提升,没有传递到审查阶段。

因此,AI编程工作流应该要求Agent留下必要的工程证据。

对于普通Bug修复,说明异常如何复现、根因是什么、改动如何消除问题。

对于性能优化,说明优化前后的执行行为和测试条件。

对于接口重构,说明哪些外部行为保持不变,以及使用什么方式验证兼容性。

PR描述不应该只是代码摘要,更应该是帮助审查人员快速理解变更的证据。

五、第三种原因:CI全部通过,为什么审查人员仍然不敢合并?

一些团队认为,既然Codex已经生成了单元测试,CI也全部通过,人工审查就可以大幅减少。

但这里存在明显的工程边界。

CI能够检查已经定义的规则,却不能自动理解所有业务背景。

例如,订单金额计算测试通过,可能只是因为测试按照当前代码行为构建,没有覆盖某个历史优惠规则。

接口测试通过,也可能只是验证新版本客户端,没有覆盖仍在使用旧字段的外部系统。

再比如,Agent新增一个依赖,Maven构建能够成功,但这个依赖是否符合团队安全和许可证要求,仍然需要相应检查机制。

因此,CI通过只是说明已经执行的检查没有发现问题。

它不等于这次修改完全符合业务需求。

不过,这并不意味着所有检查都必须由人工完成。

代码格式、静态分析、基础测试、依赖扫描和部分契约检查,应该尽量自动化。

人工审查则优先关注行为变化、业务边界、架构影响和自动化检查无法充分覆盖的风险。

Code Review不应该重复执行CI已经能够可靠完成的检查,而应该集中处理真正需要工程判断的问题。

六、第四种原因:多个Agent并行开发,合并成本可能被放大

一个开发人员同时运行多个Codex任务,是AI编程很有吸引力的工作方式。

例如,Agent A修改订单查询,Agent B优化公共DTO,Agent C补充接口测试。

每个任务都可以独立完成。

但它们可能共享同一批代码和业务契约。

Agent A基于旧DTO完成修改;Agent B随后调整DTO结构;Agent C生成的测试仍然假设原来的字段存在。

三个PR在各自分支中都能通过测试,合并到一起时却可能出现冲突。

有些冲突可以通过Git自动发现,比如同一行代码被修改。

还有些问题属于语义冲突。

例如,两份修改分别都能通过编译,但合并后改变了订单状态判断顺序,或者让旧版接口返回不同结果。

这种冲突不会因为使用了Git worktree就自动消失。

worktree能够隔离工作目录,却不能保证多个分支的业务修改彼此兼容。

因此,并行Agent越多,越需要清晰的任务边界、共享契约和最终合并验证。

不能把每个独立PR的CI结果简单相加,就认为最终合并代码一定安全。

七、怎样拆分Agent任务,才能让PR真正容易审查?

解决问题的第一步,不是降低Agent生成代码的速度,而是调整任务粒度。

一个好的PR应围绕一个可以独立理解、独立验证的变更目标。

例如,订单模块需要优化数据库查询、调整接口返回和补充监控。

如果三项修改没有必须一起提交的技术依赖,就不应该因为由同一个Agent完成而全部放进一个PR。

但也不能机械地把一个完整功能拆成十几个过小的PR。

如果审查人员必须先后阅读多个PR,才能理解一个完整业务行为,那么碎片化同样会增加成本。

真正合理的拆分标准是:

一个PR能够清楚回答它解决了什么问题、改变了什么行为,以及怎样证明修改正确。

对于跨模块变更,可以先提交不改变外部行为的基础重构,再提交真正的业务调整。

对于接口迁移,可以先增加兼容能力,再逐步迁移调用方,最后在满足条件后移除旧实现。

这样的拆分有助于降低单次审查风险,也让回滚和问题定位更容易。

八、让Codex提交PR时,应该附带哪些信息?

我更建议把PR说明作为Agent任务的正式交付物,而不是最后自动生成的一段摘要。

一个可审查的PR,至少应该说明五件事。

第一,问题是什么。提供需求背景或可复现的异常,不只是描述修改文件。

第二,为什么采用当前方案。说明关键设计选择,以及是否存在已知限制。

第三,修改影响哪些范围。明确涉及的模块、公共接口、数据库、配置和依赖。

第四,怎样验证。列出实际运行过的测试、关键结果和没有覆盖的场景。

第五,风险和回退方式是什么。尤其是数据库、权限、支付和公共契约修改,需要明确失败后的处理策略。

但这里也有一个新的风险:Agent可能生成看起来完整、实际上未经验证的测试说明。

因此,审查人员不能只看PR描述,还需要核对CI记录和真实测试结果。

可以让Codex自动整理Git Diff、执行日志和测试输出,再形成变更报告。

让Agent提供证据,比让Agent反复保证“修改没有问题”更有价值。

九、为什么审查人员反复要求修改,PR会越来越慢?

有些PR第一次提交时没有明显错误,但审查过程中不断产生新改动。

例如,审查人员要求保留一个旧字段,Agent修改DTO;随后又发现测试不完整,Agent补充测试;最后另一个审查人员指出依赖不符合规范,Agent再次调整。

这时候,原本已经完成的审查可能需要重新进行。

因为代码变了,之前的结论未必继续成立。

如果修改范围很大,每次重新审查都可能耗费大量时间。

这就是为什么有些PR明明只有几轮评论,最终合并周期却很长。

要改善这种情况,可以在正式提交前增加一次Agent自检,让Codex对照任务边界、项目规范、公共契约和测试要求检查变更。

但自检不应该变成无限循环。

Agent最多执行有限轮次的检查,无法确认的风险应明确列出,交给审查人员判断。

另外,如果审查反馈涉及新的业务需求,不应不断往原PR中叠加功能,而要重新判断是否应该拆成独立变更。

十、如何设计AI时代的Code Review流程?

面对Agent生成的大量PR,团队应该采用分层审查,而不是要求所有PR都经历同样漫长的人工流程。

第一层:自动检查。

由CI验证编译、测试、格式、静态分析、依赖和必要的接口契约。

第二层:变更范围检查。

确认实际修改是否超出任务目标,有没有意外改变公共接口、数据库结构或权限逻辑。

第三层:按风险分配审查。

文档修改、局部重构和低风险测试补充,可以采用相对轻量的审核。

涉及支付、权限、数据库迁移、用户隐私和关键业务状态的修改,则需要更严格的人工审查及适当审批。

第四层:最终合并验证。

尤其对于多个Agent并行修改的情况,应在目标分支的实际组合状态下重新运行必要检查,而不能完全依赖每个独立分支原来的测试结果。

这套流程的目的不是让Agent绕过Code Review,而是把审查人员的时间放在真正重要的风险上。

自动化负责可重复检查,人工负责业务判断和高风险决策。

十一、怎样让Codex真正帮助减少审查工作?

Codex不仅可以生成代码,也可以帮助准备审查材料。

例如,开发人员完成一个功能后,让Agent先读取Git Diff,检查是否存在无关文件修改、遗漏测试、公共契约变化和新增依赖。

然后让它输出简短的风险清单,并附上测试执行结果。

对于较大的PR,可以让Agent按业务行为分组解释修改,而不是按照文件顺序机械地介绍每个类。

对于审查反馈,也可以让Agent先归类:哪些是功能错误,哪些是兼容性风险,哪些只是代码风格偏好。

但Agent的自我审查不能直接代替独立验证。

尤其是它刚刚生成的代码,可能延续了同样的错误假设。

因此,关键变更仍应由独立测试、不同审查视角和可追溯的业务证据共同验证。

真正的目标,是减少人工重复整理信息的时间,而不是把人工判断也全部交给同一个Agent完成。

十二、用一个指标判断审查效率是否改善

这篇只突出一个核心指标:单个PR的有效审查耗时。

它统计审查人员为一个PR实际投入的理解、检查、反馈和重新审查时间,不包括PR单纯等待排队或CI运行的时间。

例如,某类PR改造前平均需要60分钟人工审查;通过控制变更范围、增加测试证据和自动检查后,相近风险等级的PR平均需要35分钟。

这说明审查工作量可能有所降低。

但这里的数字只是示例,实际需要根据团队记录验证。

统计时,应区分低风险文档修改与高风险业务改造,避免通过大量简单PR拉低平均值。

也不能只看首次审查耗时。如果PR反复修改,后续重新审查同样应该计入。

此外,还需要检查合并后的缺陷和回滚情况。人工审查时间下降,如果生产问题明显增加,就不能认为流程真正改善。

有效的审查优化,是减少不必要的理解和重复检查成本,而不是压缩那些本来就必要的风险判断。

十三、Plus和Pro怎么判断?

如果主要使用ChatGPT、Codex完成单个项目的功能开发、PR整理、代码自检和少量Code Review辅助任务,Plus通常够用。

如果日常需要跨多个大型仓库、多个Agent并行处理需求,持续分析大量PR、复杂依赖和跨模块修改,并进行长时间代码审查、测试和合并验证,Pro更适合高频、长任务的工程工作流。

但需要明确,套餐升级不会自动增加团队的人类审查能力,也不能保证Agent提交的每个PR都符合业务要求。

真正影响交付效率的,仍然是任务拆分、变更证据、自动化检查和审查流程设计。

最后

Agent一天能生成十几个PR,为什么团队Code Review反而越来越慢?

因为代码生成能力提高后,审查和合并可能成为新的瓶颈。大量跨模块修改、缺乏变更证据、重复审查以及多个Agent之间的语义冲突,都会增加人工判断成本。

真正可靠的工程路径是:

控制任务粒度 → 明确变更边界 → 提供审查证据 → 自动执行基础检查 → 按风险分配人工审查 → 验证最终合并结果。

ChatGPT、Codex的价值,不应该只用代码行数和PR数量衡量。

一个团队即使每天生成几十个PR,如果真正合并的有效变更没有增加,甚至因为审查积压而延迟交付,那么AI编程的效率优势就没有完整转化为工程成果。

AI时代真正值得优化的,不是代码生成速度,而是从需求到安全交付的整个过程。

持续分享 Codex、大模型开发与 AI 编程实战内容

也整理了稳定的 Plus/Pro 会员订阅渠道,有需要可自取。

Logo

更多推荐