AI 智能体可以在你喝完一杯咖啡的时间里生成一整个功能分支。只需一个编写良好的提示词,成千上万行代码就会随之而来。这种速度并没有改变一个基本事实:进入你代码库的代码仍然需要人类的判断。代码审查(Review)不是一个润色步骤,它是确保软件正常运行与防止技术债无声累积之间的屏障。
工作性质已经发生了变化。过去,我们把精力花在编辑器中逐行输入逻辑。现在,认知负荷发生了转移。难点不再是编写代码,而是阅读代码、质疑代码,并决定它是否真的应该进入你的系统。
这种转变要求我们采用不同的代码审查方法。以下是团队应该如何适应。
在任何人看到代码之前,先对自己负责
你需要像对待陌生人提交到你分支的代码一样去审查 AI 生成的代码。这种心态差异至关重要。当你亲手编写每一行代码时,你会自然地带着上下文。你知道为什么那个循环是从 1 而不是从 0 开始。而现在,你更像是一名技术主管(tech lead),在指导一名工作速度快得不合常理、却从不主动询问澄清问题的过度热情的承包商。
这使得自我审查(self-review)成为流程中最关键的关卡。甚至在创建拉取请求(pull request)之前,也要退后一步,提出尖锐的问题。
代码是否遵循了你的架构?生成的代码经常会引入训练数据中的模式,而这些模式可能与你的规范不符。它可能会在团队商定将逻辑保留在单体架构(monolith)中时启动一个新的服务,或者为了使用简单的 print 语句而忽略了内部的日志记录标准。
它是否解决了正确的问题?AI 模型的目标是完成提示词,而不是理解任务单(ticket)中的边缘情况。如果你的问题描述的是处理部分退款,生成的代码可能只覆盖了“快乐路径”(happy path),而将对账失败留给用户自己去处理。
是否可以用更少的代码完成相同的任务?AI 倾向于冗长。它会编写防御性包装器、冗余的注释以及复杂的错误处理,从而掩盖了实际逻辑。寻找那些重复结构的函数、毫无用途的导入或从未发生变化的变量。剔除噪音。如果你提示智能体进行简化和重构,你同时也学会了如何引导它。你会发现哪些约束条件能有效去除冗余。这种迭代式的精简现在是你工作的一部分。拉取请求上签着你的名字,你对每一行代码负责。
让机器进行扫描,但保持大脑参与
自动化审查工具应该属于你的 CI 流水线。现代 AI 驱动的审查工具可以标记注入漏洞等安全风险,发现未处理的边缘情况,并在这些问题进入生产环境之前捕捉过时的依赖项。它们扩展性好,且不会疲劳。
使用它们,但不要崇拜它们。
这些工具缺乏业务上下文。自动化审查工具可能会因为使用了字符串拼接而将数据库查询标记为高风险,却不知道你的中间件已经在另一个层级处理了数据清洗。它可能会建议将自定义算法重写为库调用,却不知道你锁定的库版本包含破坏性变更(breaking change)。这些建议是基于模式的合理推测,而非对你产品的深入了解。
务必仔细阅读反馈,然后做出决定。将自动化评论视为信号,而非指令。
此外,还有一个实际的
