AI编程工具如今能在几分钟内生成数千行代码,帮助企业更快构建功能、运行测试并修复问题。但大量AI生成的代码仍需经过审查。大语言模型生成的代码表面看起来整洁,却可能隐藏错误的假设、安全漏洞,或是部署后才显现的细微问题。修复这些问题可能会抵消AI带来的效率提升。
面对AI代码问题的冲击,企业正在重新思考代码审查方式。新的策略正在出现:工程师在AI开始编写代码之前先审视计划,部署专门的AI智能体来捕捉常见缺陷,将高风险改动发送给人工审查者,或要求开发者为智能体生成的代码进行说明。
这一转变发生的背景是,AI生成代码的激增给工程团队带来了新的压力。AI代码验证初创公司Sonar对1100多名开发者进行的调查显示,受访者估计AI贡献了他们添加到共享代码库中代码的42%。然而,尽管开发者认为AI在解释和原型设计代码方面很有用,但96%的人并不完全信任其输出能够正确运行。
投资者从中看到了机会。例如今年8月,AI代码审查初创公司CodeRabbit以15亿美元估值完成1.43亿美元融资,该公司称其每周为包括英伟达、Indeed和宝马集团在内的1.7万名客户执行超过200万次审查。
新的代码审查时代将决定AI能否真正提供既更快又更可靠的代码。这也让一些软件工程师开始思考这一行业的未来:如果初级工程师自己编写代码的时间越来越少,他们又该如何学会判断代码的好坏?
AI代码审查瓶颈
AI编写的代码正在将瓶颈从生成软件转移到审查软件上。根据Sonar的研究,38%的开发者表示审查AI生成的代码比审查同事编写的代码需要“更多精力”。其中61%的人表示,AI生成的代码常常看起来正确,但实际上“不可靠”。
对于AI视频生成平台Synthesia而言,代码审查已成为其工程工作流程中不可或缺的一环。2025年11月,Synthesia的118名工程师全面采用了Claude Code等AI编程工具。该公司首席技术官彼得·希尔表示,这带来了代码量的大幅激增。
“我不知道我们是否真的能达到完全信任智能体生成代码的那一天。”——彼得·希尔,Synthesia
这些代码需要仔细审查。希尔表示,截至8月,提交审查的拉取请求(即对代码库提出的更改)数量同比增长了120%。其中95%的请求包含AI生成的代码。
一个反复出现的问题是重复代码。希尔说,AI工具可能无法识别某项任务的代码已经存在,由于上下文有限,它们会重新编写一个版本。Synthesia发现同一个功能竟出现了多达10个版本,工程师们不得不识别并删除冗余功能。完成这项工作后,工程师们还需重新训练AI智能体,以避免类似问题再次发生。希尔说,在公司这样的规模下,让AI产生预期输出是一项“巨大的工作量”。
代码审查工作流程中的AI智能体
一些团队正试图在AI生成任何一行代码之前,就预防审查问题的产生。
亚马逊商店部门的高级首席工程师麦克拉伦·斯坦利表示,他正在利用AI对支撑亚马逊移动购物应用长达17年的代码进行现代化改造。他所在的70人团队为1000多名开发者提供支持,维护他们构建功能所需的架构基础。斯坦利说,随着AI开始编写代码,工程师们在生成开始前,会花更多时间来明确AI应该做什么。
其中大部分工作是编写“规格说明”,即详细说明AI智能体应构建什么以及如何构建的计划。在生成代码之前预防重复出现的错误,可以为工程师后续节省时间。
斯坦利回忆说,有一次因为缺少一条指令,导致智能体在错误版本的Swift编程语言中生成了2.5万行代码。切换版本后产生了600个无法一次性修复的错误。斯坦利放弃了这些代码,更新了规格说明,并重新启动了智能体。15分钟后,它正确地重新生成了代码。
一旦代码生成完毕,专门的AI智能体可以在人工介入之前完成第一轮检查。
亚马逊云科技(AWS)高级首席工程师大卫·雅纳切克表示,公司使用智能体在人工审查之前测试代码是否有效、对照原始计划进行检查,并寻找安全漏洞。
随着AI生成代码量的增加,这第一轮检查变得愈发重要。非营利软件提供商Bonterra拥有约290名工程师,该公司首席技术官塔努贾·科尔勒普拉表示,采用AI后的三个月内,提议的代码更改量增加了三倍。进入审查环节的代码量增长了十倍,审查时间也增加了三倍,这使得工程师逐行检查每段代码变得不再现实。
“我们绝不允许代码审查变成未经检查的模型输出的倾倒场。”——萨马尔·阿巴斯,Temporal
Bonterra的智能体会将代码与已批准的设计方案、安全规则、编码标准和无障碍要求进行比对,然后报告其对结果的可信程度。如果得分较低或发现问题,该更改就会被发送给人工处理。涉及支付、个人数据或其他敏感系统的代码则始终需要人工审查。
“智能体负责阅读,人类负责判断。”科尔勒普拉说。
Synthesia同样利用AI智能体来决定哪些情况需要人工审查。工程师设定的标准会将更多审查资源引导至高风险的更改上。修改一条错误信息的风险,远低于处理客户数据或核心业务规则的代码。即便如此,只有不到5%的更改会绕过人工审查。
“我不知道我们是否真的能达到完全信任智能体生成代码的那一天,”希尔说。
自动化审查并不会改变最终代码的责任归属。
软件咨询公司Making Sense的首席AI架构师JD·雷蒙迪表示,当机器生成的代码数量超出工程师能够仔细阅读的范围时,人工批准可能会变成“表演式批准”。也就是说,工程师可能只是确认功能能正常运行,粗略浏览一下代码就予以批准,而完全不理解背后的设计选择。
开源开发者平台Temporal则把责任交回给提交代码的人。首席执行官萨马尔·阿巴斯表示,随着AI的应用,代码量和审查时间都有所增加。根据该公司的“退回”政策,Temporal的工程师必须用自己的话解释智能体的设计选择,以及代码如何处理异常情况,否则审查者将拒绝该代码。
“我们绝不允许代码审查变成未经检查的模型输出的倾倒场,”阿巴斯说。
如何培养初级工程师
随着AI将工程工作的重心从编写代码转向判断代码,企业开始重新思考如何让初级工程师获得成长经验。
雷蒙迪表示,Making Sense的初级工程师从AI中获得了最大的生产力提升,但这也引发了人们对他们不再通过实践学习哪些技能的担忧。该咨询公司让初级工程师继续参与决定客户为何需要某项功能以及该功能应如何运作,而不是仅仅让他们检查AI的输出结果。
IBM正在利用AI让新入职的工程师更早接触更具挑战性的任务。IBM自动化与AI总经理尼尔·桑达雷桑表示,如今新入职的应届毕业生已经开始参与曾经只属于高级工程师的产品功能和项目。AI帮助实现和测试代码,但如果代码出现问题,初级工程师需要评估问题所在并加以修复,然后才能交由高级开发者进行最终审批。桑达雷桑估计,AI可以帮助初级工程师完成一些过去需要高级工程师才能完成任务中的70%到80%。
Synthesia主要招聘中高级工程师。其经验较少的员工会与一名高级同事以及一个AI智能体共同工作,负责部分项目内容,同时学习如何定义成功的代码标准。
在Bonterra,智能体现在承担了许多曾用于培养新工程师的、定义明确的编码任务。取而代之的是,初级工程师与经验丰富的同事共同负责工作成果,学习如何指导智能体、质疑其输出,并对最终结果承担责任。她表示,这种方法有助于初级工程师建立职业发展所需的技能和知识。
“如果这个行业不再招聘初级工程师,那么这个行业也就不再能培养出高级工程师,”科尔勒普拉说。
Q&A
Q1:为什么AI生成的代码需要更多审查?
A:因为AI生成的代码虽然表面看起来整洁正确,但可能隐藏错误假设、安全漏洞或细微错误,这些问题往往只在部署后才显现出来,因此需要更严格的审查流程来发现和修复。
Q2:企业是如何应对AI代码审查压力的?
A:企业采取了多种策略,包括在AI编写代码前先制定详细规格说明、部署专门的AI智能体进行初步检查、根据风险等级将高风险改动交给人工审查,以及要求开发者用自己的话解释代码的设计逻辑。
Q3:AI是否会影响初级工程师的成长?
A:企业普遍担心初级工程师因AI承担了更多编码工作而失去实践学习的机会,因此正在调整培养方式,例如让初级工程师参与需求分析、指导AI智能体、对项目结果负责,以帮助他们积累判断代码质量所需的经验。
