最新研究推翻了人們對 AI 與開源最大的擔憂

請查看你的收件匣中的確認信,你可以在信中調整偏好設定,甚至加入其他群組。

在你常用的社群媒體上追蹤 TNS。

成為 LinkedIn 上的 TNS 追蹤者

關於 AI 可能對開源造成什麼影響,有一種常見的擔憂:程式碼代理(coding agents)會接手那些適合新手入門的 issue,而這些 issue 原本有助於新貢獻者開始參與;它們生成的程式碼更難維護,最後新維護者的人才管道逐漸枯竭。這是個合理的情境。不過根據最新研究,實際情況似乎並非如此。

​一項北京大學於 7 月 2 日提交至 arxiv.org 的研究追蹤了 1,888 個採用 AI 程式碼代理的 GitHub 儲存庫,也就是 Cursor 和 Claude Code 這類工具,觀察 AI 進入工作流程後,這些專案發生了哪些變化。研究人員把「採用」定義為專案首次提交代理設定檔的時間點,例如 .cursorrules 或 CLAUDE.md,接著將這些專案與一組從未採用的對照專案進行比較。

他們使用差異中的差異法(difference-in-differences),這基本上是用來區分某項工具實際造成的影響,與工具出現前專案本來就已經在發生的變化之間差異的黃金標準。而他們發現的結果是……變化不大。新手參與度維持穩定,或略微上升。在最保守的統計模型設定下,他們能找到的最糟情況,是 1.5% 的下降,但這遠未達統計顯著。

複雜度上升,貢獻者維持穩定

​​循環複雜度(cyclomatic complexity)計算的是一個函式中獨立路徑的數量;在採用這些工具後,所有語言的循環複雜度都上升了 3% 到 4%。認知複雜度(cognitive complexity)則是更棘手的指標,會對高度巢狀的邏輯與糾結的控制流程給予懲罰;在 Python 專案中,這項指標上升了約 11%。這聽起來很糟,直到你拿它和卡內基美隆大學去年發表的一項研究相比;那項研究發現,採用 Cursor 讓同一項指標增加了 41%。北京大學團隊使用更大、也更成熟的一組專案,並採用更嚴格的統計控制,最後得到的結果大約只有先前估計值的四分之一。

但這項研究真正有意思的地方在於:它沒有只是把複雜度與新進者數量當成兩個剛好出現在同一份 PDF 裡的獨立發現來呈現,而是把分析鎖定在那 128 個複雜度確實上升的 Python 專案。

在這些同一批儲存庫中,新進貢獻者的加入並沒有下降,留存率維持穩定,活躍貢獻者群也有所成長。這兩個現象都是真的,但看起來並沒有彼此相連。AI 產生的程式碼變得稍微更複雜了,但這些額外複雜度似乎沒有讓新進貢獻者卻步,至少在這項研究觀察到的程度下是如此。

AI 產生的程式碼變得稍微更複雜了,但這些額外複雜度似乎沒有讓新進貢獻者卻步,至少在這項研究觀察到的程度下是如此。

這項研究排除了什麼

這裡有幾個重要但書。最大的問題是,這項研究聚焦在已經有一定基礎的開源專案。採用 AI 寫程式工具的儲存庫中,將近三分之二幾乎是在建立後不久就採用了這些工具,導致研究者沒有有意義的 AI 導入前基準可供比較。這些儲存庫因此被排除在主要分析之外;主要分析改為聚焦在 603 個在導入 AI 前至少已有六個月歷史的專案。

研究者也檢視了完整資料集,其中新進貢獻者的參與看起來有所下降。但進一步觀察後發現,這些專案在採用 AI 前就已經在流失貢獻者,因此無法把這個下降歸咎於工具本身。

衡量採用狀況的盲點

還有另一個限制。這項研究是透過尋找與 Cursor 這類工具相關的設定檔來衡量 AI 採用情況,而不是追蹤開發者實際使用這些工具的頻率。也就是說,它可以告訴我們專案採用 AI 後發生了什麼,但無法說明高度仰賴 AI 的團隊,是否和只是試用 AI 的團隊有不同結果。

GitHub 表示,整個平台上已合併的 pull request(PR)數量,已從 2023 年初每月約 2,500 萬件,成長到如今每月約 9,000 萬件。

GitHub 也已開始回應。這家公司最近針對外部貢獻者可同時開啟的 PR 數量設下限制,並推出新工具,協助維護者整理日益增加的審查佇列。

關於被排擠的擔憂,目前可以暫時放下。

這讓我們走到哪裡

排擠效應的擔憂,目前可以先放下了。在成熟的開源專案中,以目前的採用程度來看,AI 代理程式並沒有把新貢獻者擋在門外。然而,pull request(PR)的數量幾乎增加到四倍。這些 PR 帶來的程式碼稍微更複雜。提交的人可能也不完全理解自己提出的是什麼。而這一切最後都落到維護者身上,但維護者的人數並沒有以接近相同的速度成長。

研究人員表示,未來的研究應該檢視專案對 AI 程式開發工具的依賴程度,並找出更好的方法,研究那些幾乎是在 AI 環境中誕生的程式碼儲存庫。這些都是重要的下一步。但眼前最迫切的問題似乎是:不是 AI 會不會改變誰會出現並參與貢獻,而是 AI 會不會改變長期維護一個開源專案所需付出的心力。

不是 AI 會不會改變誰會出現並參與貢獻,而是 AI 會不會改變長期維護一個開源專案所需付出的心力。

社群建立了路線圖、文章、資源與學習旅程, 協助開發者選擇自己的道路,並在職涯中成長。