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代理產生的代碼質量至少不低於人類單獨工作。