這項由斯坦福大學主導的研究發表於2026年4月,論文編號為arXiv:2604.20779v1,歸檔於cs.AI領域。有興趣深入了解的讀者可通過該編號在arXiv平台查詢完整論文。
**研究背景:一個被忽視的大問題**
每天都有數以百萬計的軟體開發者在使用AI編程助手寫代碼。這些工具聲稱能大幅提升效率,各大科技公司的報告也充滿了令人振奮的數字。然而,有一個核心問題長期以來幾乎無人能夠回答——這些AI助手在真實工作場景中,到底表現如何?
這不是一個無關緊要的問題。當我們說"AI助手幫我寫了代碼",背後藏著很多值得追問的細節:這些代碼最終真的被用上了嗎?程序員在過程中需要糾正AI多少次?AI寫出的代碼安全可靠嗎?以前,這些問題的答案要麼來自經過精心設計的實驗室測試,要麼來自企業自己發布的宣傳材料,兩者都難以真實反映開發者的日常體驗。
斯坦福大學的研究團隊決定徹底改變這一局面。他們構建了一個名為SWE-chat的數據集,收錄了來自真實開源項目、由真實開發者與AI編程助手進行的完整對話記錄。這是同類數據集中第一個同時包含完整人機對話、AI工具調用軌跡,以及精確到每一行代碼的"這行是人寫的還是AI寫的"歸屬資訊的數據集。截至2026年4月,數據集已收錄來自200多個公開GitHub倉庫的近6000個編程會話,超過6.3萬條用戶指令,以及35.5萬次AI工具調用,總計270萬個記錄事件。
**一、數據是如何收集的——給代碼裝上行車記錄儀**
要理解這項研究的價值,得先弄清楚數據是怎麼來的。研究團隊藉助一個名為Entire.io的開源工具完成了數據採集工作。這個工具的運作方式有點像給汽車裝行車記錄儀——開發者在自己的電腦上安裝這個工具後,工具會自動在後台靜默記錄每一次與AI編程助手的對話,包括開發者輸入了什麼、AI回應了什麼、AI調用了哪些工具(比如讀取了哪個文件、執行了什麼命令),以及最終提交到代碼庫的是哪些內容。
更精妙的是,這個工具還會將對話記錄與git版本控制系統深度集成。簡單來說,git是程序員用來追蹤代碼變更歷史的工具,每一次代碼修改都會留下記錄。Entire.io通過在git提交節點插入鉤子程序,能夠在代碼被正式保存時,精確標註出哪些行是人類寫的、哪些行是AI寫的。這就像在每篇文章的每一行旁邊,都標註了"作者:張三"還是"作者:AI助手"。
參與數據採集的開發者需要主動選擇加入,並將自己的會話日誌推送到公開的GitHub分支。研究團隊通過查詢GitHub代碼搜索接口,自動發現並下載這些公開的記錄。這套流程完全自動化、持續運行,數據集因此成為一個"活的"數據集,會隨時間不斷擴充。從2026年1月到4月,累計用戶提示數量呈現出陡峭的上升曲線,增長速度相當驚人。
當然,這種採集方式也有其局限性。參與的開發者都是主動選擇使用Entire.io的早期採用者,他們不一定代表所有程序員群體。此外,如果開發者完全放棄了AI生成的代碼,這個會話根本不會被提交到代碼庫,也就不會出現在數據集中。這意味著數據集可能略微高估了AI的成功率。研究團隊在論文中坦誠指出了這些局限,體現了相當的研究嚴謹性。
**二、三種不同的人機協作模式——從"完全自己來"到"完全交給AI"**
數據分析揭示了一個非常有趣的規律:在這6000個會話中,人類和AI之間的分工方式呈現出極端的兩極化分布,中間狀態相對稀少。研究團隊據此將所有會話歸納為三種截然不同的編程模式。
第一種模式被稱為"人類主導編程",占所有會話的22.7%。在這些會話中,最終提交到代碼庫的代碼全部由人類自己編寫,AI更像是一個聰明的參考工具,被用來解釋代碼、排查問題、或者處理版本控制操作,而不是直接生成代碼。
第二種模式叫做"協作編程",占36.5%。在這裡,人類和AI共同貢獻了最終提交的代碼,AI負責其中超過0%但不足99%的部分。兩者各司其職,相互配合。
第三種模式最引人注目,叫做"氛圍編程"(vibe coding),占40.8%。在這些會話中,超過99%的最終代碼都由AI生成,人類更像是一個監督者和驗收者,而不是真正意義上的代碼編寫者。這個詞源於編程社區,描述的是那種幾乎把所有代碼生成工作都甩給AI、自己只管提需求和審查結果的工作方式。
令研究團隊印象深刻的是,氛圍編程的比例在短短三個月內翻了一番——從2026年初的約20%增長到4月份的超過40%。換句話說,越來越多的開發者正在將代碼生成的控制權整體轉讓給AI。這是一個正在加速發生的趨勢,而不是某種邊緣現象。
從整體數字來看,所有提交到代碼庫的代碼中,55.8%是由AI撰寫的。但如果只看中位數,這個數字是73.3%,說明在更多的會話中,AI承擔了大部分甚至絕大多數的代碼生成工作。這兩個數字的差異,恰恰說明了那種雙峰分布的存在:許多會話幾乎全是人寫的,另一批會話則幾乎全是AI寫的,中間狀態反而不多。
**三、開發者到底在用AI做什麼——超出你想像的用途多樣性**
在研究團隊對所有用戶提示的意圖進行分類後,一個出乎意料的發現浮出水面:開發者最常向AI提出的請求,並不是"幫我寫這個功能",而是"幫我理解這段代碼"。
具體來看,26.6%的提示被歸入"其他"類別,說明編程場景的多樣性難以簡單歸類。在明確分類的請求中,理解現有代碼或程序行為是最常見的單一意圖,占所有提示的19.0%。創建新代碼以13.4%排在第二位。日常開發任務同樣占據相當比例:git版本控制操作占13.4%,調試排錯占13.0%。代碼重構占9.2%,編寫測試占4.0%,設置系統連接占1.0%。
這個分布揭示了一個被現有AI基準測試嚴重忽視的現實:真實世界中的開發者並不主要把AI當成代碼生成機器,他們更多地將其用作代碼理解工具和日常工作助手。然而,幾乎所有的AI編程能力評測(如SWE-bench等知名基準)都聚焦於"能否修復這個bug"或"能否實現這個功能",對AI在代碼理解、版本控制輔助等任務上的能力測量幾乎是空白。
在AI的工具調用層面,數據同樣很有啟發性。AI每次響應用戶請求時,往往會連續執行多個操作。從工具類型分布來看,讀取文件(19.8%)和編輯文件(19.6%)是最常見的兩類操作,合計約占所有工具調用的四成。git相關命令(11.9%)、grep搜索(10.1%)和構建命令(8.0%)也是高頻操作。
從時間順序來看,AI在處理一個請求時有固定的行為模式:在對話開始時傾向於使用讀取、搜索和git等資訊收集工具,隨著工作推進,文件編輯、寫入和構建命令的比例逐漸增加。這就像一個認真的工匠,先把圖紙看清楚,再動手施工。
**四、用戶的行為習慣——為什麼AI總是挨罵**
研究團隊不僅分析了AI的行為,還對用戶的互動風格進行了系統分類。他們將每個會話中的用戶歸入四種"行為人格"之一。
最常見的人格是"挑剔專家",占所有會話的39.7%。這類用戶技術能力強,目標清晰且穩定,但對執行細節極度講究。他們會針對AI輸出的每一個細節給出精確的糾正意見,但整體方向不會變化——就像一個對廚師有很高要求的食客,要求改火候、換調料,但始終點的是同一道菜。
排在第二位的是"模糊請求者",占33.5%。這類用戶傾向於給出籠統的指令,把大量決策權交給AI,也不太會對細節進行糾正。他們的典型提示是"幫我把這個做好"之類的寬泛表述。
"其他"類型占19.9%,通常是會話太短或行為模式不明顯導致無法歸類。
"善變者"是最少見的類型,只占7.0%。這類用戶會在會話進行到一半時改變整體目標,要求AI推倒重來。前面看的一個典型例子是:用戶先讓AI隱藏一個命令行指令,AI按要求完成了,然後用戶說"我想了想,乾脆把這個命令徹底刪掉"。
一個特別值得關注的細節是,就算在氛圍編程會話中,挑剔專家依然是最常見的用戶類型,比例達到47%。這說明即便把代碼生成工作全權交給了AI,大多數開發者仍然保持著對輸出結果的高標準要求,遠沒有完全"放手"。
另一個對比鮮明的觀察是:現有的AI編程基準測試往往在一開始就給出完整詳盡的問題描述,假設用戶的需求是清晰而完整的。但真實場景中,用戶更多時候是在看到AI的第一次輸出之後,才開始清晰化和細化自己的要求。這是測試環境和真實環境之間的一個根本性差異。
**五、AI的效率真相——超過一半的代碼被扔掉了**
這是整篇論文中最讓人清醒的部分。研究團隊設計了一套精密的指標體系來衡量AI生成代碼的實際效用,核心發現是:所有AI生成的代碼中,只有44.3%最終進入了用戶提交的版本,其餘55.7%都被丟棄了。
研究團隊對"丟棄"的原因做了進一步拆解。最主要的浪費來源是"人類刪除"——AI生成了代碼,但用戶直接決定不提交這些代碼,比例高達42.2%。其次是"人類改寫",用戶覺得AI的代碼方向對了但具體實現不滿意,自己動手改掉,占9.3%。還有"AI自我改寫",這發生在用戶反饋後AI將自己之前的代碼重寫的情況,占6.6%。
在三種編程模式之間,效率差異也相當懸殊。協作編程模式下,AI生成的代碼只有38.2%的編碼效率(即考慮了AI的自我改寫開銷後,最終進入提交的比例),代碼存活率為44.1%。氛圍編程模式下,存活率看上去更高,達到59.0%,但這很可能部分反映的是用戶審查力度的降低,而非AI質量的提升。
成本和時間方面,氛圍編程的開銷遠超協作編程。以每100行最終提交代碼為基準,氛圍編程消耗的token數(AI處理資訊量的計量單位)約為協作編程的3倍,美元成本的中位數為0.13美元,協作編程只需0.05美元,人類主導編程需要0.07美元。時間上,協作編程是最高效的,每100行提交代碼只需4.8分鐘,而氛圍編程需要12.6分鐘,人類主導編程需要8.6分鐘。在用戶自己花費的提示字符數(可以理解為溝通成本)上,氛圍編程同樣是最高的。
協作編程在所有維度上都是最高效的工作模式。這個發現頗具諷刺意味:當前業界正在大力推動的全自主AI編程趨勢,恰恰是效率最低的工作方式。研究團隊明確指出,這並不是在論證不應該使用AI,而是在揭示當前AI的運作方式存在大量可以改進的空間。
**六、安全危機:AI寫的代碼有多不安全**
研究團隊對所有代碼提交進行了安全掃描,使用的是Semgrep這款開源靜態分析工具。這個工具能夠在代碼中識別已知的安全漏洞模式,比如SQL注入(黑客通過特殊輸入操控資料庫的攻擊方式)、命令注入(通過惡意輸入讓程序執行危險命令)、路徑遍歷(繞過限制訪問不該訪問的文件)等。
掃描結果令人擔憂。以每1000行提交代碼引入的新漏洞數量為指標,人類主導編程模式引入了0.08個新漏洞,協作編程引入了0.14個,而氛圍編程引入了0.76個——大約是人類主導編程的9倍,是協作編程的5倍多。
有人可能會說,AI寫的代碼量更多,所以引入漏洞的絕對數量多是正常的。但這裡的統計已經是每1000行的比率,排除了代碼量的影響。換句話說,AI在氛圍編程模式下寫出的代碼,本身就更容易存在安全問題。
研究團隊還觀察到,氛圍編程也修復了更多漏洞(每1000行0.52個,相比人類主導的0.04個),這反映出AI處理的代碼改動中安全相關內容更多。但無論在哪種模式下,新引入的漏洞數量都多於修復的漏洞數量,而氛圍編程中這一差值最大。
從漏洞類型來看,最常見的是JavaScript路徑拼接未做安全處理,其次還有不安全的格式字符串、缺失完整性校驗、作業系統命令注入和SQL注入等。這些都是程序安全性中的經典問題,理論上每個有經驗的開發者都應該規避,但AI在沒有明確約束的情況下顯然並不能可靠地做到這一點。
論文中提供了一個具體的Python代碼漏洞例子:AI生成了一個函數,直接將用戶傳入的參數拼接進shell命令字符串並用`shell=True`執行,這是一個教科書級別的命令注入漏洞——任何人只要傳入特殊字符,就能在伺服器上執行任意命令。
**七、誰在掌控局面——AI獨立作業越來越久,用戶反推越來越多**
研究團隊對會話中的"控制權交接"進行了深入分析,揭示了一個有趣的動態格局。
從AI主動暫停的角度來看,在所有Claude Code的會話輪次中,AI只在1.1%到2.6%的輪次中主動停下來向用戶提問尋求澄清。氛圍編程模式下,這個比例更低。換句話說,AI幾乎從不說"我不確定,你的意思是...嗎?"它更傾向於自己做決定、繼續執行。
與此形成鮮明對比的是,用戶的干預頻率要高得多。在所有輪次中,用戶在AI仍在工作時直接打斷(硬中斷)的比例為3.3%到6.0%,這個數字在整個數據收集期間保持穩定,不隨時間變化。打斷最常發生的時機,是AI剛剛完成規劃準備進入執行階段、進行git操作或編輯文件的時候——這些都是用戶覺得"等一下,不對"的關鍵節點。
更普遍的是軟性反推,也就是在AI完成一輪輸出後,用戶在下一次提示中對AI的輸出進行糾正、拒絕或報告問題,而不是直接打斷。總體來看,所有輪次中有39%到41%包含了某種形式的用戶反推,而且這個比例在三種編程模式下幾乎相同。
用戶反推被分為三種子類型:糾正(用戶指出AI的方向或理解有誤,提供正確資訊)是最常見的,其次是失敗報告(用戶反映AI的代碼不能正常運行),拒絕(用戶明確表示不接受AI的輸出,要求重來)相對較少。
從時間趨勢來看,AI的單輪工作時長在悄悄增加。中位數仍然不到1分鐘,90百分位數不超過7分鐘,但最頂端的0.1%已經超過了100分鐘。這意味著AI正在變得更加自主,能夠在沒有人類干預的情況下工作更長時間——但這種自主性的增加,並沒有伴隨著更少的錯誤或更高的代碼質量。
**八、多數會話成功,但失敗案例很有價值**
對所有會話進行綜合成功率評分的結果顯示,90%的會話獲得了50分以上的評分(滿分100分),說明AI在大多數情況下還是能夠完成用戶的基本需求的。會話成功率的總體均值為82分,中位數為82分。有趣的是,人類主導編程模式的平均成功率略低於協作和氛圍編程,這可能是因為在人類主導模式下,AI主要承擔輔助理解和解釋的角色,這類任務本身更難評判是否成功。
研究團隊對評分最低的50個會話進行了人工審查,發現了幾類典型失敗模式。最常見的是用戶在AI給出有效輸出之前就中止了會話。還有一類是AI經過大量搜索工具調用後依然無法找到相關代碼,陷入死循環。有會話因為AI被提示詞中提到的使用配額耗盡而強制中止("你的額外使用量已耗盡,凌晨1點重置")。也有AI能夠診斷出問題所在,但拒絕實際修復的情況。還有AI將任務轉給子代理但什麼也沒執行的情況。
這些失敗案例中有一個印象深刻的例子:用戶請AI修復歷史列表卡片動畫出現緩慢的問題,具體是容器動畫太慢。AI在第一次和第二次回應中都修改了單個卡片的動畫參數,用戶兩次指出錯了,請AI先弄清楚哪個參數控制容器動畫再修改。會話最終在沒有任何提交的情況下結束,評分只有10分。
**總結:一面鏡子,照出真實的AI編程**
歸根結底,SWE-chat這個數據集和基於它的分析,做了一件非常簡單但極有價值的事情:把AI編程助手從測試台搬到了真實的工作桌上,如實記錄下發生的一切。
這幅圖景既有令人鼓舞的部分——超過一半的提交代碼由AI完成,大多數會話最終達成了用戶目標——也有需要認真對待的隱患:超過一半的AI生成代碼被丟棄,氛圍編程模式下代碼安全漏洞率是人類編程的9倍,而AI幾乎從不主動尋求澄清。
對於普通用戶來說,這項研究的最直接啟示是:和AI協作寫代碼,保留自己的判斷和介入,效果往往比完全放手給AI更好、更安全、成本也更低。完全的"氛圍編程"在效率和安全性上都付出了相當大的代價。
對於研究者和工具開發者來說,這項研究指出了幾個明確的改進方向:讓AI學會在適當的時候主動尋求確認,而不是一路悶頭執行;設計出能反映真實協作過程的評測基準,而不是繼續用精心設計的單輪問題來評估多輪交互工具;以及從真實的人機互動數據中訓練能模擬用戶行為的模擬器,降低評估成本。
SWE-chat是一個會持續更新的活數據集,研究團隊承諾定期發布新數據,隨時間追蹤AI編程行為的演變。這意味著我們終於有了一面持續更新的鏡子,能夠看清AI編程工具在現實中真正的樣子——而不僅僅是實驗室條件下最好的模樣。對這個領域感興趣的讀者,可以通過arXiv編號2604.20779查找原論文,數據集和代碼也以開源形式對外開放。
---
Q&A
Q1:SWE-chat數據集是什麼,它和以前的AI編程數據集有什麼不同?
A:SWE-chat是斯坦福大學構建的真實開發者與AI編程助手的對話數據集,包含近6000個真實會話。它最大的不同在於同時擁有三項其他數據集都缺失的內容:真實用戶提示、完整的AI工具調用軌跡,以及精確到每行代碼的人類與AI歸屬標註。之前的類似數據集(如SWE-smith、CoderForge等)只有AI自動化軌跡,沒有真實用戶參與,也無法區分哪行代碼是誰寫的。
Q2:氛圍編程為什麼被認為效率更低,不是AI做了更多工作嗎?
A:氛圍編程中AI確實寫了更多代碼,但問題在於大量代碼被浪費了。以每100行最終提交代碼為基準,氛圍編程消耗的token是協作編程的約3倍,美元成本是協作編程的2.6倍,耗時也接近協作編程的3倍。協作編程的效率更高,因為人類的實時參與幫助AI少走彎路,減少了無效代碼的生成量。
Q3:AI寫的代碼為什麼比人寫的代碼更容易出現安全漏洞?
A:研究通過Semgrep安全掃描發現,氛圍編程每1000行引入0.76個新漏洞,是人類主導編程(0.08個)的約9倍。原因在於AI在生成代碼時往往優先滿足功能需求,不會像有經驗的人類開發者那樣自動規避常見安全陷阱,比如直接拼接用戶輸入執行shell命令。而且AI幾乎不會主動說"這裡有安全風險",錯誤只能等用戶檢查時才會被發現。






