AI 让代码产出暴增,Review 压力正在把 PR 变成噪音场
AI 把写代码的门槛拉低之后,产出速度上去了,可审查这一环反而成了瓶颈。功能能不能跑通,如今基本不是难题,真正悬在头上的是另一件事:在代码被合并之前,有没有人能从那些运行正常、结构却一团糟的实现里把问题挑出来。质量变得像开盲盒,架构的坍塌速度也跟着加快。
我在几个中大型项目里摸爬过一阵,慢慢意识到衡量项目好坏的标准已经换了。以前盯的是 AI 能不能把功能写对,现在功能大体都能交差,该警惕的反而是 Reviewer 有没有能力在合并动作发生前拦住那些"能跑但设计很烂"的逻辑。
眼下的 AI 审查工具不算弱。CodeRabbit、Copilot 都在列,把 Claude Code 接进 PR 流程的也不在少数。修 Bug、挑 Style Nits 这类活,它们干得相当漂亮。可话题一旦落到深层架构,它们就露怯了。代码冗余、模块之间咬得太紧、或者踩了单一职责原则(SRP)这类设计模式的红线,你哪怕把 Prompt 写到极其详尽,AI 也很难给出架构层面的准确判断——它手里缺的是完整业务上下文带来的全局视野。
工具链自己也没跟上。拿 GitHub 的 PR 界面来说,AI 帮忙写代码之前,一个 PR 也就几十行的改动,翻起来很顺。现在情况反过来了,PR 的体积常常成倍往上翻。变更行数越过某个临界点之后,Web 界面就开始明显卡顿,翻页、加载评论都变成折磨。
评论区也随之变了味,慢慢成了一个噪音场。里面混着三类东西:AI 自动生成的评审意见、人类代理把 AI 输出直接粘过来的评论,以及真正由人思考后留下的内容。Reviewer 泡在这种环境里,想从成堆的自动建议中快准狠地找到关键逻辑缺陷,基本做不到,审查效率不升反降。
为了在 AI 时代把代码质量摁住,我调过工作流,目前有三个办法还算管用。
一个是强制 AI 在提 PR 之前先交一份「架构变更摘要」。这份摘要得用自然语言写,把"为什么这么设计"和"解决了什么潜在问题"讲清楚,不能甩一大段代码块了事。如果一个 PR 只有代码、没有逻辑推演,我会直接打回——它只会给 Reviewer 再添一层认知负担。
另一个是在团队里把 AI Review 和 Human Review 的评论标记严格分开。约定一套简单的 Tag 体系,让 AI 生成的建议和人类的逻辑质疑各归各的。这样处理 PR 时,变量命名、格式对齐这类 AI 建议可以快速过滤掉,注意力优先留给人类标出的逻辑漏洞。
碰上大体量变更,干脆别在 Web 界面里 Review 了。浏览器是方便,但面对 AI 生成的大批代码,卡顿感太重。我现在的习惯是直接在 IDE 里用本地 Git 工具做对比,比如 GitLens 或原生 Diff 视图。代价是多一步拉取代码,可响应速度比在浏览器里翻页快出不少,精力也更容易集中在代码结构上。
真要说有什么工具能一劳永逸地解决 AI 时代的审查压力,目前还没有。能做的只是把流程一点点微调,硬去适配这个阶段。生产力过剩的时候,审美和架构判断力,确实已经比单纯会写代码更值钱了。
全部回复 (3)
想当场把话说完?进全球 AI 聊天室,登录就能开口。
最烦它乱推过时 API,对着文档查半天才发现版本不对,简直浪费时间。而且,AI 编程的效率高得惊人,但这种速度也带来了一个很容易被忽略的问题:代码审查(Code Review)正在承受越来越多的压力。写代码的门槛被大幅降低,开发者可以快速生成一份能够运行的实现,但代码质量却像开盲盒一样变得难以预测,架构也在快速崩塌。在处理几个中大型项目时,我发现项目质量的衡量标准已经发生了变化。过去担心的是 AI 能不能写出正确功能,现在功能实现基本已经能够完成,真正需要警惕的是:人类 Reviewer 能不能在代码合并(Merge)之前,找出那些虽然可以运行、架构却十分糟糕的逻辑。
PR 列表被 AI 刷屏简直是噩痪,现在用 Claude 3.5 写逻辑才勉强能看。AI 编程的效率高得惊人,但这种速度也带来了一个很容易被忽略的问题:代码审查(Code Review)正在承受越来越多的压力。写代码的门槛被大幅降低,开发者可以快速生成一份能够运行的实现,但代码质量却像开盲盒一样变得难以预测,架构也在快速崩塌。在处理几个中大型项目时,我发现项目质量的衡量标准已经发生了变化。过去担心的是 AI 能不能写出正确功能,现在功能实现基本已经能够完成,真正需要警惕的是:人类 Reviewer 能不能在代码合并(Merge)之前,找出那些虽然可以运行、架构却十分糟糕的逻辑。
目前的 AI 审查工具已经相当强大了,比如 CodeRabbit、Copilot,甚至有人直接把 Claude Code 接入 PR 流程。在 Bug 修复和代码风格(Style Nits)方面,它们的表现非常突出。但一旦问题涉及深层架构,能力就显得很有限。代码冗余、模块之间过度耦合,或者违反单一职责原则(SRP)等设计模式问题,即使 Prompt 写得极其详细,AI 也很难给出精准的架构级判断,因为它们缺少对完整业务上下文的全局感知。
工具链的滞后也让审查更加痛苦。以 GitHub 的 PR 界面为例,在 AI 辅助生成代码之前,一个 PR 通常只有几十行变更,浏览起来十分流畅。现在由 AI 协助写代码,一个 PR 的体积经常呈几何级数增长。变更行数超过某个临界点后,Web 界面会变得非常卡顿,翻页和加载评论都令人崩溃。PR 评论区也渐渐变成了“噪音场”。这里混杂着三类内容:一类是 AI 自动生成的评审意见,一类是人类代理把 AI 输出结果直接复制粘贴后的评论,另一类才是真正来自人类思考的内容。在这种环境里,Reviewer 很难从大量自动建议中迅速定位真正关键的逻辑缺陷,审查效率反而下降。
为了在 AI 时代守住代码质量,我尝试调整工作流,并总结出三个目前比较有效的实操方法。
一种做法是强制要求 AI 在提交 PR 前先生成一份「架构变更摘要」。摘要需要使用自然语言,详细解释“为什么这么设计”以及“解决了什么潜在问题”,不能只给出一大段代码块。如果一个 PR 只有代码,没有逻辑推演过程,我会直接打回,因为这会进一步
We need to rewrite the original comment, adding one concrete actionable point that must be based on a sentence from the given sentence from the basis, embedded naturally. The original comment is:
"让它写单元测试简直是噩梦,几个边缘 case 漏掉直接导致线上 500 报错,后怕了"
We need to output just the comment text, no title, no extra labels, no references. Must be similar length. Must include a concrete actionable point derived from a sentence in the basis (the long basis). Must embed that sentence naturally.
We need to pick a sentence from the basis that can be turned into an actionable point. For example: "先写架构摘要再提交代码" is a suggestion. Or "在团队内部严格区分 AI Review 和 Human Review 的评论标记". Or "面对大规模变更时,可以彻底放弃在 Web 界面里进行 Review". Or "直接在 IDE 中使用本地 Git 工具进行对比". Choose one.
We need to embed it as a concrete actionable point. So we modify the original comment to include something like: "让它写单元测试简直是噩梦,几个边缘 case 漏掉直接导致线上 500 报错,后怕了;我现在会在提交 PR 前先写一个简短的架构摘要,说明为什么这么设计以及解决了什么潜在问题,这样能减少 Reviewer 的认知负担。" That embeds the sentence from basis: "先写架构摘要再提交代码 一种做法是强制要求 AI 在提交 PR 前先生成一份「架构变更摘要」。摘要需要使用自然语言,详细解释“为什么这么设计”以及“解决了什么潜在问题”。"
We need to embed a sentence from basis, not just paraphrase? The instruction: "这个点必须是依据里的原句,嵌进评论的自然句子里." Means we must embed the original sentence from the basis, verbatim, into the comment. So we need to copy a sentence exactly as appears in the basis, and embed it naturally.
Which sentence to pick? Let's pick: "先写架构摘要再提交代码 一种做法是强制要求 AI 在提交 PR 前先生成一份「架构变更摘要」。摘要需要使用自然语言,详细解释“为什么这么设计”以及“解决了什么潜在问题”,不能只给出一大段代码块。" That's multiple sentences. Perhaps we can embed a single sentence: "摘要需要使用自然语言,详细解释“为什么这么设计”以及“解决了什么潜在问题”". That is a sentence from the basis. We need to embed it verbatim.
Thus the new comment: "让它写单元测试简直是噩梦,几个边缘 case 漏掉直接导致线上 500 报错,后怕了;现在我会在提交 PR 前先写架构摘要,摘要需要使用自然语言,详细解释“为什么这么设计”以及“解决了什么潜在问题”,这样能让 Reviewer 更快定位问题。" Ensure we include the exact sentence: "摘要需要使用自然语言,详细解释“为什么这么设计”以及“解决了什么潜在问题”".