在軟件開發(fā)的世界里,一場悄無聲息的革命正在發(fā)生。想象一下,有一個非常聰明的編程助手,它不僅能夠理解你想要什么功能,還能直接為你寫代碼、修改bug、甚至自動提交到GitHub上供其他開發(fā)者審核。這聽起來像科幻小說,但實際上已經(jīng)成為現(xiàn)實。
這項由日本奈良先端科學技術大學的渡邊未來、柏川雄太郎、布里塔尼·里德、飯?zhí)镌妊芯空撸约凹幽么蠡屎蟠髮W的李浩、艾哈邁德·哈桑共同完成的開創(chuàng)性研究,于2025年9月發(fā)表在軟件工程領域的頂級會議上。研究團隊首次深入分析了567個由Claude Code(一款AI編程工具)在157個不同開源項目中創(chuàng)建的代碼貢獻,為我們揭開了AI智能編程在真實世界中的表現(xiàn)。
研究團隊發(fā)現(xiàn)了一個令人振奮的現(xiàn)象:這些由AI生成的代碼貢獻中,有83.8%最終被項目維護者接受并合并到主代碼庫中。這就好比一個新來的程序員,十次提交的代碼中有八次都能通過老員工的審核,這個成功率已經(jīng)相當不錯了。更有趣的是,在被接受的代碼中,有54.9%完全不需要修改就能直接使用,這意味著AI已經(jīng)能夠產(chǎn)出相當高質量的代碼。
然而,這個故事還有更深層的內容。研究團隊像偵探一樣仔細分析了每一個代碼貢獻的細節(jié),從AI最擅長處理什么類型的任務,到人類開發(fā)者需要對AI的代碼做哪些修改,再到有些代碼為什么會被拒絕。這些發(fā)現(xiàn)不僅讓我們了解了當前AI編程工具的真實能力,也為未來的發(fā)展指明了方向。
一、AI編程助手最喜歡做什么:從重構到測試的全方位表現(xiàn)
當我們深入觀察AI編程助手Claude Code在開源項目中的表現(xiàn)時,就像觀察一個新員工的工作習慣一樣有趣。研究團隊發(fā)現(xiàn),AI和人類程序員在處理不同類型任務時確實表現(xiàn)出了明顯的偏好差異。
首先讓人驚訝的是,AI特別熱衷于做那些讓人類程序員感到枯燥的重復性工作。比如代碼重構,這就像重新整理一個雜亂的房間,讓所有東西都擺放得更整齊,但功能完全不變。AI在這方面的表現(xiàn)遠超人類,24.9%的AI貢獻都涉及重構,而人類只有14.9%。這很好理解,因為重構往往遵循一些固定的規(guī)則和模式,而AI恰恰擅長識別和應用這些模式。
更令人印象深刻的是AI在測試方面的表現(xiàn)。測試就像給軟件做體檢,確保各個功能都能正常工作。18.8%的AI貢獻都與測試相關,而人類只有4.5%。有一個特別精彩的例子:一個AI助手為某個項目系統(tǒng)性地添加了測試,將代碼覆蓋率從70%提升到94%。它不僅增加了測試數(shù)量,還針對之前完全沒有測試的代碼路徑、核心方法的驗證、操作邏輯檢查,以及SQL生成中的錯誤處理等關鍵場景都添加了相應的測試。這就像一個非常細心的質檢員,不放過任何一個可能出問題的角落。
AI還特別擅長處理文檔工作。22.1%的AI貢獻涉及文檔更新,相比之下人類只有14.0%。這包括更新用戶手冊、修正格式錯誤、改進API文檔說明等。有個生動的例子是,一個AI為項目文檔添加了實用的代碼示例,糾正了格式不一致的問題,并且優(yōu)化了配置描述,讓新用戶更容易上手。這就像一個貼心的助手,總是記得把說明書寫得清楚明白。
在代碼優(yōu)化方面,AI也表現(xiàn)出色。結合代碼風格改進和性能優(yōu)化,AI的貢獻占比達到12.7%,而人類只有3.2%。AI特別善于發(fā)現(xiàn)那些微小但重要的優(yōu)化機會,比如消除數(shù)據(jù)庫查詢中的通配符選擇來提升性能,或者解決代碼檢查工具發(fā)現(xiàn)的命名規(guī)范問題。這些改進看似微不足道,但積累起來能顯著提升代碼質量。
不過,AI也有自己的局限性。在項目維護和配置任務方面,AI和人類表現(xiàn)相當,分別占20.7%和21.2%。但這些任務往往需要對項目的整體架構和長期規(guī)劃有深入理解,比如依賴包的升級策略、版本發(fā)布流程等。雖然AI能夠處理這些任務,但通常需要更多的人工指導。
特別有趣的是,AI創(chuàng)建的代碼貢獻經(jīng)常是"一箭多雕"的。40%的AI貢獻同時解決多個問題,而人類只有12.2%。最常見的組合包括功能開發(fā)加測試(9.0%)、重構加測試(7.7%)、以及bug修復加測試(7.7%)。這顯示了AI的一個優(yōu)勢:它能夠系統(tǒng)性地思考,在解決主要問題的同時順帶處理相關的次要問題。就像一個高效的管家,一次出門就能把幾個不同的事情都辦好。
在代碼規(guī)模方面,AI通常比人類更"大手筆"。AI貢獻的代碼平均增加48行,而人類平均增加24行。同時,AI寫的代碼描述也更詳細,平均355個單詞,而人類只有56個單詞。這可能是因為AI會詳細記錄自己的思考過程和所做的改動,這對代碼審核者來說是很有幫助的信息。
這些發(fā)現(xiàn)揭示了一個重要趨勢:AI正在成為處理重復性、規(guī)則性工作的得力助手,讓人類程序員能夠將更多精力投入到需要創(chuàng)造性思維和深度理解的任務上。同時,AI的系統(tǒng)性思維也為軟件開發(fā)帶來了新的可能性。
二、成功率超八成但仍需人工把關:AI代碼的接受度分析
當我們把AI生成的代碼比作學生的作業(yè)時,結果顯示這位AI學生的表現(xiàn)相當不錯,但還不是班里的尖子生。研究團隊發(fā)現(xiàn),83.8%的AI代碼貢獻最終被接受,這個成績雖然不錯,但確實比人類程序員的91.0%接受率要低一些。這就像一個勤奮的實習生,大部分工作都能完成得很好,但偶爾還是需要老員工的指導和修正。
更有趣的是代碼審核的時間。AI代碼的平均審核時間是1.23小時,而人類代碼是1.04小時,差異并不大。這說明審核者對AI代碼并沒有特別的偏見或額外的謹慎,他們基本上用同樣的標準和流程來評估這些代碼。
那么,那些被拒絕的AI代碼都出了什么問題呢?研究團隊像法醫(yī)一樣仔細分析了每一個被拒絕的案例,發(fā)現(xiàn)了一些非常有趣的模式。
最常見的拒絕原因并不是代碼質量問題,而是項目演進的自然結果。12.1%的拒絕是因為其他開發(fā)者或團隊選擇了不同的解決方案。就像你精心準備了一道菜,但發(fā)現(xiàn)別人已經(jīng)做好了另一道同樣美味的菜。有個典型例子是,一個AI提交的功能改進最終被關閉,項目維護者說:"我們可能會回到這個方案,但現(xiàn)在我們用不同的方式解決了根本問題。"
第二大原因是AI有時候過于"勤奮",創(chuàng)建了一些僅用于驗證目的的代碼提交。5.5%的拒絕是因為這些代碼只是為了觸發(fā)自動化檢查(比如持續(xù)集成流程),并不是真正要合并的功能。這就像有人為了測試門鈴是否正常工作而按了很多次,但實際上并不想進門。
代碼規(guī)模過大也是一個重要問題,占拒絕原因的3.3%。一個被拒絕的大型代碼貢獻收到了這樣的評論:"關閉這個,支持更小、更專注的PR,讓審核更可管理。"這強調了協(xié)作開發(fā)中的一個重要原則:即使功能正確,如果改動太大,也會給審核帶來困難。
項目演進導致的過時問題同樣占3.3%。這就像你為修理一臺老電視準備了零件,但發(fā)現(xiàn)家里已經(jīng)換了新電視。隨著項目需求的變化或新功能的實現(xiàn),一些AI的貢獻可能在提交時就已經(jīng)不再需要了。
技術問題相對較少,只占4.4%的拒絕案例。這些問題主要包括設計方案不夠優(yōu)化(2.2%)、實現(xiàn)過于復雜(1.1%)、以及引入bug或破壞兼容性(1.1%)。比如有個AI的代碼被拒絕,是因為它繞過了項目特定的序列化機制,違反了架構原則。另一個例子是,審核者發(fā)現(xiàn)現(xiàn)有的主題已經(jīng)能實現(xiàn)同樣功能,AI的實現(xiàn)反而增加了不必要的復雜性。
戰(zhàn)略性不匹配的問題占2.2%,包括1.1%是因為沒有增加價值,另外1.1%是因為不符合社區(qū)興趣。這類拒絕往往涉及"做什么"而不是"怎么做"的問題。比如一個AI的貢獻雖然技術上正確,但被維護者判斷為沒有解決真正的性能瓶頸。
貢獻者不活躍導致的拒絕占2.2%。這些AI貢獻被提交后,當審核者提出修改建議時,沒有人跟進處理,最終被自動關閉。這反映了AI工具使用中的一個現(xiàn)實問題:雖然AI能生成代碼,但還需要人類來處理后續(xù)的交互和修改。
特別值得注意的是,有1.1%的拒絕明確是因為對AI生成代碼缺乏信心。一個貢獻者甚至主動關閉了自己的AI代碼提交,明確表示擔心Claude輸出的準確性。這反映了一個重要的社會技術障礙:即使AI技術在進步,人們對其可靠性的信任仍需要時間建立。
最令人困惑的是,63.7%的被拒絕AI代碼沒有收到任何解釋性評論或討論就被關閉了。這種"沉默的拒絕"讓人無法了解真正的拒絕原因,也反映了在評估AI生成貢獻時存在的透明度挑戰(zhàn)。
這些發(fā)現(xiàn)告訴我們,雖然AI在代碼生成方面已經(jīng)相當成熟,但在項目協(xié)作的社會性方面還有改進空間。大多數(shù)拒絕并不是因為AI"不夠聰明",而是因為它還不能完全理解項目的動態(tài)演進、團隊的決策過程,以及開源社區(qū)的協(xié)作文化。
三、過半代碼無需修改直接采用:AI代碼的修訂需求程度
當我們進一步觀察那些被接受的AI代碼時,發(fā)現(xiàn)了一個相當令人鼓舞的現(xiàn)象。就像評判一份初稿的質量一樣,研究團隊發(fā)現(xiàn)54.9%的AI代碼可以"一稿過",也就是完全不需要任何修改就能直接使用。相比之下,人類程序員的"一稿過"率是58.5%,兩者差距并不大。這意味著AI已經(jīng)能夠生產(chǎn)出相當高質量的可用代碼。
對于那些需要修改的代碼,情況同樣令人驚喜。無論是AI代碼還是人類代碼,都通常需要大約2次修訂提交才能最終完成。在修改工作量方面,統(tǒng)計分析顯示AI代碼和人類代碼之間沒有顯著差異。這就像兩個不同的廚師做菜,雖然風味可能略有不同,但都需要差不多的調味次數(shù)才能達到完美狀態(tài)。
具體來看修改的內容,研究團隊發(fā)現(xiàn)了一些有趣的模式。當需要修改時,額外變更的文件數(shù)量相對于原始提交增加了50%,這個比例在AI代碼和人類代碼中完全相同。不過在代碼行數(shù)的變化上,人類代碼的修改幅度稍大一些,平均增加121.1%,而AI代碼增加94.3%。這可能反映了人類在修改時往往會進行更大范圍的重組,而AI的修改相對更加精確和集中。
這種相似性其實透露了一個重要信息:一旦審核者決定接受一個代碼貢獻,無論它來自AI還是人類,后續(xù)的打磨工作量基本相當。這說明AI已經(jīng)跨越了"能用"的門檻,達到了與人類程序員相當?shù)幕A質量水平。
更深層的含義是,這種等價性為AI工具的廣泛應用提供了強有力的支持。如果AI能夠生成與人類質量相當?shù)某跏即a,那么團隊就可以將AI作為提高開發(fā)效率的有效工具,而不是需要額外投入大量修正成本的"麻煩制造者"。
從實際應用的角度來看,這些發(fā)現(xiàn)為開發(fā)團隊提供了重要的決策依據(jù)。當團隊考慮引入AI編程工具時,可以預期大約一半的AI生成代碼可以直接使用,另一半需要的修改工作量與人類代碼相當。這意味著AI能夠顯著減少初始編碼的工作量,而不會在后期修改階段造成額外負擔。
研究還發(fā)現(xiàn),AI代碼修改的類型分布相當均勻,沒有特別集中在某一類問題上。這表明AI在各個方面的能力都比較均衡,不存在明顯的薄弱環(huán)節(jié)。當然,這也意味著在各個方面都還有改進的空間。
特別值得注意的是,在需要持續(xù)迭代的開發(fā)環(huán)境中,這種修改模式的相似性尤其重要。它表明AI可以很好地融入現(xiàn)有的代碼審核和迭代流程,而不需要團隊為AI代碼建立特殊的處理流程。
這些發(fā)現(xiàn)也為AI工具的未來發(fā)展指明了方向。既然AI已經(jīng)在基礎質量上與人類相當,下一步的重點應該是提高"一稿過"的比例,減少需要修改的情況。同時,對于那些確實需要修改的代碼,如何讓AI更好地響應人類的反饋意見,也是一個值得深入探索的方向。
四、修訂重點:bug修復占主導地位的四大改進方向
當AI代碼需要修改時,人類審核者主要關注哪些方面呢?研究團隊詳細分析了214個需要修訂的AI代碼貢獻,發(fā)現(xiàn)了一個清晰的優(yōu)先級排序,就像醫(yī)生診斷時會按癥狀的嚴重程度來處理一樣。
bug修復毫無爭議地占據(jù)了首位,45.1%的修訂都與修復功能性錯誤相關。這就像房子的基礎結構問題,必須優(yōu)先處理。研究團隊發(fā)現(xiàn),AI生成的代碼經(jīng)常在錯誤處理方面過于樂觀。有個典型例子是,一個并發(fā)錯誤傳播的問題需要引入基于通道的通信機制,確保致命錯誤能夠立即從工作進程中傳遞出來。另一個例子是將文件操作失敗從警告升級為致命錯誤,因為審核者認識到某些失敗條件應該停止執(zhí)行,而不是在可能損壞的狀態(tài)下繼續(xù)運行。這些修改揭示了AI的一個持續(xù)性限制:它經(jīng)常實施樂觀的錯誤處理策略,無法很好地區(qū)分可恢復和不可恢復的失敗情況。
文檔更新緊隨其后,占27.4%的修訂。雖然AI有時會生成或更新代碼注釋,但經(jīng)常無法保持所有相關文檔的同步。有個生動的例子是,一個修訂刪除了安裝文檔中過時的可選依賴部分,這些內容應該在相關代碼更改時一并刪除。這種脫節(jié)意味著在實踐中,人類審核者需要花費相當多的精力確保文檔、README文件和代碼注釋準確反映AI的代碼更改。
代碼重構占25.7%的修訂,這表明AI提交的初始代碼雖然功能正確,但審核者經(jīng)常需要重新組織以更好地符合項目架構、增強可維護性并減少技術債務。有個例子是,審核者將分散在多個入口點的冗余初始化邏輯整合到統(tǒng)一的服務中。在這個案例中,數(shù)據(jù)庫遷移和文件同步的通用功能從獨立組件中提取出來,移到共享模塊中,改善了錯誤處理和日志記錄的一致性。這表明雖然AI的初始提交功能正確,但審核者經(jīng)常需要重構以更好地與項目架構對齊。
代碼風格改進占22.1%的修訂,主要涉及強制命名約定、糾正格式以及解決AI工具遺漏的靜態(tài)分析警告。有個例子是,審核者處理了AI原始代碼中存在的多個靜態(tài)分析違規(guī),包括未使用的導入、聲明但從未引用的異常變量,以及不正確的導入排序。這些更改主要是裝飾性的但對集成是必要的,表明當前的AI經(jīng)常在項目特定的風格規(guī)則上表現(xiàn)不佳,需要人工干預來維護可讀性和一致性。
項目管理任務占19.9%的修訂,通常涉及AI忽略的項目級元數(shù)據(jù),如版本升級或發(fā)布說明。比如一個修訂包含了從"3.0.0-alpha01"到"3.0.0-alpha02"的簡單但關鍵的版本升級,這是新發(fā)布所必需的步驟,但AI沒有執(zhí)行。這種模式表明AI能力中的特定差距:雖然它們成功修改應用代碼,但經(jīng)常無法將相應更改傳播到項目級配置文件。因此,這些基本的管理任務落到人類審核者身上,以確保項目的版本控制和發(fā)布過程保持一致和準確。
功能增強占14.6%的修訂,顯示人類審核者在審核過程中識別出AI實現(xiàn)通常提供核心功能但遺漏高級特性或邊緣情況。有個例子是,一個修訂擴展了AI最初實現(xiàn)的基本PR審核API功能,增加了多行注釋支持,包括行定位的新參數(shù)、參數(shù)組合的驗證邏輯以及全面的測試覆蓋。這種增強表明AI生成的實現(xiàn)經(jīng)常提供核心功能,但遺漏了開發(fā)者在審核過程中識別出的高級特性或邊緣情況。
構建配置調整占13.3%的修訂。一個修訂解決了靜態(tài)分析工具與較新Go版本之間的兼容性問題。AI的初始實現(xiàn)沒有考慮版本不兼容性,導致Go 1.24.1的構建失敗。修訂更新了靜態(tài)分析工具版本,配置為運行減少的檢查集,并修改構建過程以在靜態(tài)分析失敗時繼續(xù)。這個臨時解決方案允許構建管道運行,同時計劃在后續(xù)更新中進行全面修復。
測試覆蓋補充雖然只占15.5%的修訂,但添加的測試套件經(jīng)常是實質性的,覆蓋原始提交未處理的邊緣情況和失敗路徑。有個例子是為GPU X-VGA支持檢測功能添加了全面的單元測試,這些測試在AI的初始提交中完全缺失。新測試覆蓋了設備參數(shù)生成、檢測過程驗證、錯誤處理場景和配置流程驗證。AI實現(xiàn)了GPU支持功能但沒有相應的測試覆蓋,這被審核者識別為需要補救的差距。
CI/CD和性能優(yōu)化代表了修訂的較小但關鍵部分,總計7.9%。CI/CD修改相對罕見,只占6.6%的修訂,但對維護健康的管道至關重要。性能改進出現(xiàn)在更小的比例中,只有1.3%,比如當審核者為AI實現(xiàn)的高效但可能過時的存儲驅動程序添加緩存清除機制以確保數(shù)據(jù)新鮮度時,從而同時實現(xiàn)準確性和性能。
特別值得注意的是,AI在修訂過程中仍然保持活躍參與。41.1%的修訂AI代碼都有Claude的共同署名,占修訂過程中所有提交的34.1%。這表明開發(fā)者不僅依賴AI工具進行初始代碼生成,還在審核期間依賴它們進行迭代改進。AI共同署名在修訂中的大量存在強調了AI系統(tǒng)在整個軟件開發(fā)周期中的持續(xù)作用。
這些發(fā)現(xiàn)強調了一個重要觀點:雖然AI生成的代碼是一個強有力的起點,但人類監(jiān)督對確保正確性、可維護性以及遵守項目標準仍然至關重要。同時,AI和人類在開發(fā)過程中的持續(xù)協(xié)作也預示著未來軟件開發(fā)的新模式。
Q&A
Q1:Claude Code生成的代碼有多少能被開源項目接受?
A:研究顯示83.8%的Claude Code生成代碼最終被項目維護者接受并合并,雖然略低于人類程序員的91.0%接受率,但這個成功率已經(jīng)相當不錯。更重要的是,在被接受的代碼中,有54.9%完全不需要修改就能直接使用。
Q2:AI編程助手最擅長處理什么類型的編程任務?
A:AI特別擅長處理重復性和規(guī)則性任務。研究發(fā)現(xiàn)24.9%的AI貢獻涉及代碼重構,18.8%涉及測試相關工作,22.1%涉及文檔更新。AI在這些需要系統(tǒng)性思維但相對機械化的任務上表現(xiàn)遠超人類程序員。
Q3:當AI代碼需要修改時,主要問題出在哪里?
A:45.1%的修改集中在bug修復上,特別是錯誤處理方面的問題;27.4%需要更新文檔以保持同步;25.7%需要重構以符合項目架構;22.1%需要改進代碼風格以符合項目規(guī)范。這表明AI代碼雖然功能基本正確,但在細節(jié)完善和項目標準遵循方面還需人工把關。
好文章,需要你的鼓勵
浙江大學團隊提出動態(tài)專家搜索方法,讓AI能根據(jù)不同問題靈活調整內部專家配置。該方法在數(shù)學、編程等任務上顯著提升推理準確率,且不增加計算成本。研究發(fā)現(xiàn)不同類型問題偏愛不同專家配置,為AI推理優(yōu)化開辟新路徑。
清華大學研究團隊提出SIRI方法,通過"壓縮-擴張"交替訓練策略,成功解決了大型推理模型"話多且準確率低"的問題。實驗顯示,該方法在數(shù)學競賽題上將模型準確率提升43.2%的同時,輸出長度減少46.9%,真正實現(xiàn)了效率與性能的雙重優(yōu)化,為AI模型訓練提供了新思路。
南洋理工大學與騰訊聯(lián)合研究團隊開發(fā)出Rolling Forcing技術,實現(xiàn)AI視頻實時流式生成的重大突破。該技術通過滾動窗口聯(lián)合去噪、注意力錨點機制和高效訓練算法三項創(chuàng)新,解決了長視頻生成中的錯誤累積問題,可在單GPU上以16fps速度生成多分鐘高質量視頻,延遲僅0.76秒,質量漂移指標從傳統(tǒng)方法的1.66降至0.01,為交互式媒體和內容創(chuàng)作開辟新可能。
華中科技大學研究團隊發(fā)現(xiàn),通過讓AI模型學習解決幾何問題,能夠顯著提升其空間理解能力。他們構建了包含約30000個幾何題目的Euclid30K數(shù)據(jù)集,使用強化學習方法訓練多個AI模型。實驗結果顯示,幾何訓練在四個空間智能測試基準上都帶來顯著提升,其中最佳模型達到49.6%準確率,超越此前最好成績。這項研究揭示了基礎幾何知識對培養(yǎng)AI空間智能的重要價值。