当我让 AI 处理代码审查时出现了什么问题(以及我如何修复)

发布: (2026年1月2日 GMT+8 17:47)
12 min read
原文: Dev.to

Source: Dev.to

请提供您希望翻译的具体文本内容,我将为您翻译成简体中文。

I – 你并未意识到的问题

以下是大多数开发者目前的做法:

  • 他们写代码。
  • 把代码粘贴到 ChatGPT 或 Claude,问一句:“这段代码好吗?”
  • AI 回答说可以(或提出一些小改动)。
  • 然后他们直接合并。

他们以为自己很高效,实际上却在大规模地累积技术债务。

问题不在于 AI 的输出,而在于把判断外包后,你的大脑会发生什么。

当你让 AI 负责代码审查时,你不再去问 为什么。你不再质疑架构。你也看不到代码库中的模式,因为你不再被迫在脑中同时保持多个上下文。

代码审查不仅仅是捕捉 bug;它还是维护整个系统工作方式的心智模型。

印刷术让抄写员失业。古腾堡之前,书商雇佣数十名受过训练的工匠手工抄写手稿——这是一项需要多年才能掌握的技能。等他们意识到时,这项技能已经没有价值。

但编辑的角色出现了——他们的工作是决定哪些内容值得印刷。

这种模式是技能向上抽象。

你不必亲自写每一行代码,但你绝对需要知道哪些行代码是关键的。

那么这一次为什么不同?

因为大多数开发者把 AI 当作拼写检查器使用,而实际上应该把它当作研究团队来利用。

II – 单模型审查是伪装成确定性的猜测

我一直在使用 Claude Opus 4.1 处理所有任务。模型很棒,分析能力出色,TypeScript 也很强——但它也有盲点。

有一天,我让它审查一个不必要重新渲染的 React 组件。Claude 建议使用 memoization。这个建议还算合理,我于是采用了。

随后,我出于好奇把同样的代码交给 GPT‑5 检查。GPT 指出真正的问题是 prop drilling——memoization 只是在处理症状,而不是根本原因。

那一刻,我恍然大悟。

每个 AI 模型的训练方式都不同。每个模型各有优势:

  • Claude 擅长细致的分析。
  • GPT 更善于把握架构模式。
  • Gemini 能捕捉 Claude 漏掉的边缘案例。

如果只使用单一模型,你得到的并不是一次完整的代码审查,而是该模型的视角,而这种视角必然存在盲区——因为你已经停止了多角度的审视。

平庸与卓越之间的差距在于 taste(审美/品味)。当每个人都能生成代码时,能够判断哪些代码值得信赖的能力才是真正的技能。

这正是 在多个模型之间运行相同审查 不再是一个功能,而是一种全新的思考方式。

III – 实际出现的问题(以及它给我的教训)

生产环境的 bug 很微妙:一个缓存层在预发布环境运行良好,但在高负载下失效。AI 已经审查了逻辑——逻辑是正确的。AI 没能捕捉到的是实现中隐藏的假设——缓存失效会同步发生。

为什么 AI 没能捕捉到它?

因为我没有给它足够的上下文。我粘贴了函数代码,但没有展示完整的数据流或解释部署架构。AI 只能审查你展示给它的内容,而在快速迭代时,你往往只给它最少的信息。

三种可预测的失败模式

故障模式描述
上下文崩溃你粘贴了 50 行代码;AI 只审查这 50 行,但 bug 实际上出现在这些代码与另外 200 行未包含的代码交互时。当你在整个代码库中分析代码时,就不会再遗漏集成错误。
架构盲点AI 在局部优化方面表现出色,但在系统设计上很糟糕。它可能会提出一个让单个函数更快的巧妙方案,却让整个架构变得更加脆弱。
信心问题AI 从不说“我不知道”。它会给出答案,而因为它表达流畅,你会信任它——即使它是错误的。

能够看清这些问题的人并没有放弃 AI;他们不再把它当作全能的预言机,而是把它当作需要指导的初级开发团队成员。

IV – 如何实际使用 AI 进行代码审查(而不破坏你的判断)

LevelDescription
Level 1 – 粘贴者复制代码,粘贴到聊天机器人中,接受它的任何回答。你已经把思考外包了。
Level 2 – 提示工程师编写更好的提示,加入更多上下文,获得更好的答案——但你仍然受制于单一模型的视角。
Level 3 – 编排者将相同代码在多个模型上运行,进行比较、综合。注意 Claude 捕捉到的 GPT 漏掉的内容,反之亦然。
Level 4 – 架构师在特定审查任务中使用 AI,同时你掌控系统思考。你知道该用哪个模型来做什么,并已构建工作流。

大多数开发者从未超出 Level 1。以下是提升的方式:

Step 1: 停止孤立审查

不要只粘贴孤立的函数。粘贴完整的上下文:调用方、数据流、部署约束。当你在审查前从文档中提取模式时,你可以捕捉到 AI 看不到的假设。

Step 2: 始终使用多个模型

将你的代码至少在三种不同模型上运行。寻找分歧——分歧是值得调查的信号。瓶颈不在于获取审查,而在于在发布前知道该信任哪种视角

Step 3: 让 AI 展示其工作过程

不要只接受单一的“是”或“否”。让模型解释它为何建议更改,阐述推理过程,并指出它所做的任何假设。这迫使 AI 暴露其思考过程,给你提供验证——或拒绝——的机会。

V – 协议

早晨:架构评审(20 分钟)

在编写任何代码之前,我向三个模型提出相同的架构问题:

“鉴于 [system constraints],以这种方式实现 [feature] 的权衡是什么?”

我寻找分歧。它们一致时,我快速推进;出现分歧时,我放慢速度并思考。

开发期间:上下文丰富的提示

我不再审查单个函数。我审查:

  • 函数
  • 调用方
  • 数据流
  • 错误处理
  • 部署上下文

我每次都粘贴 全部 内容。

合并前:多模型分析

我将最终代码通过以下模型进行分析:

当它们的结论一致时,我信任;出现分歧时,我进行调查。

每周:回顾故障

每周五,我查看本周的 bug,回顾 AI 的审查,找出 AI 漏掉的地方及原因,并更新我的提示。

目标: 不是完美,而是迭代——构建一个每周都变得更聪明的系统。

VI – 实际花费

你可能在想:“这听起来工作更多,而不是更少。”

你说得对。要把 AI 用好需要付出努力——比把它用不好、甚至不使用时都要多。但你会得到:

之前(单模型,快速粘贴)之后(多模型,语境丰富)
审查时间每次审查 5 分钟每次审查 15 分钟
漏洞捕获率~70 %~95 %
判断力提升快速提升
代码质量趋势下降持续提升

额外的 10 分钟不是开销,而是投资。你不仅在审查代码,还在训练自己看清关键所在。

  • 快速但目光短浅的开发者 会在前六个月保持快速,随后花六个月时间调试自己制造的烂摊子。
  • 现在放慢脚步的人 将在六个月后变得更快,因为他们的判断力会更加敏锐。

VII – 你应该提出的问题

  • 你是用 AI 来加快思考,还是用它来避免思考?
  • 当 AI 建议修改时,你能解释为什么那个修改更好吗?
  • 如果明天不能使用 AI,你的代码质量会下降吗?

如果你诚实回答,可能会感到不舒服。这种不适正是关键——它说明你把判断外包了,却称之为效率。

差距正在显现:

  • 把 AI 当作拐杖的开发者 vs. 把 AI 当作杠杆的开发者
  • 让模型替自己思考的人 vs. 把多种视角组织起来做出更好决策的人

转变

代码审查已经被抽象到更高层次。你不需要捕捉每一个分号,但你 必须 了解系统。

  • AI 不会取代你。
  • 会组织 AI 的开发者将取代不会的开发者。

在接下来的六个月里弄清楚这一点的人,将在完全不同的层次上构建。那些仍然把代码粘贴到 ChatGPT 并接受返回结果的人,将继续困惑于为何生产环境频频出问题。

智能应该是流动的,而不是碎片化的。
你不必选边站——你 orchestrate all of them

— Leena :)

Back to Blog

相关文章

阅读更多 »