AI编写的代码是否比人类代码更容易出Bug?
通过对28个开源仓库、112,382次提交的分析,研究发现AI代理提交的代码引入Bug的概率并不高于人类,且代码存活时间更长。但此结论依赖于人类审核,且数据主要来自人工驱动的AI代理。
关于AI编写的代码是否比人类手写代码更容易引入Bug,工程师们一直各执一词,但很少有人能提供数据支持。Repowise团队采用缺陷预测领域的标准方法——通过分析实际项目的Git历史,将每次Bug修复归因于引入该Bug的提交。他们分析了28个公共仓库中112,382次提交,涵盖了AI编码代理首次合并真实Pull Request的一年时间。
研究首先构建了一个每个提交的溯源检测器,通过读取八种不同信号(如机器人账户身份、服务邮箱、提交消息页脚、合作者尾注等)来区分代码来源,并经过盲测验证,精确率达到96.2%。根据来源,代理提交被分为三个层级:T1(自动机器人代理,如Devin、Copilot编码代理)、T2(人类驱动的代理,如Claude Code、Codex,这是绝大多数)和T3(AI辅助,仅添加合作者标记)。
核心发现是:AI代理提交的代码并不比人类代码更容易引入Bug。在控制变更规模后,人类驱动的AI代理(T2)引入Bug的几率仅为人类的0.57倍(95%置信区间0.42-0.76),自动机器人代理(T1)为0.75倍(0.43-0.95),AI辅助(T3)为0.96倍(0.69-1.08),与人类无异。即使采用更严格的B-SZZ变体来消除偏向,T2的效果仍为0.79(0.68-1.01),置信区间上限刚触及1.0,因此没有证据表明代理提交引入了更多Bug。
此外,AI编写的代码行存活时间更长。在相同仓库中,人类驱动的AI代理编写的代码行存活率比人类代码高17.9个百分点。研究提出了三种可能原因:一是代理的Pull Request可能经过更严格的审查;二是代理提交偏向修复而非新功能,修复型提交风险较低;三是人类基线并非最优,包含了许多匆忙的提交。
然而,研究有重要限制:结果仅针对已审查并合并的提交;未检测到的代理代码(开发者手动复制)被计为人类,可能低估了影响;代理活跃的仓库较新(约12个月);数据集并非随机样本。总体而言,数据表明,在人类审查的前提下,有能力的开发者配合AI代理产生的代码质量至少不低于人类单独工作。