這項由Scale AI研究團隊完成的研究於2026年6月發表,論文編號為arXiv:2606.30573,有興趣深入了解的讀者可以通過該編號查詢完整論文。
**一個被忽視的真相:真實的開發者從來不會把話說清楚**
現實中,沒有哪個程序員在委託AI助手完成任務時,會把所有要求一次性說得清清楚楚、毫無遺漏。實際情況更像是:老闆走進辦公室,扔下一句"把那個語音播放模組改一改",然後等你做出來之後,才開始一條條告訴你哪裡不對,哪裡還差一點。
然而,目前絕大多數用來評測AI編程能力的基準測試,都是按照"完美甲方"的假設來設計的——把所有需求、所有接口規範、所有實現細節,一股腦塞進一個超級詳細的任務說明,然後讓AI去實現。這種測試方式當然能衡量某些能力,但它幾乎完全忽略了現實開發場景中最普遍的情況:需求是模糊的、會變的,用戶是挑剔的、有時候自己也不清楚想要什麼的。
正是為了填補這個空白,Scale AI的研究團隊構建了一個名為SWE-INTERACT的全新測試平台。它的核心思想是:把現有的編程任務基準測試,從"一次性交付全部需求"改造成"在來回對話中逐步透露需求",讓AI編程助手真正面對一個像人類一樣工作的"甲方用戶"。
**一、那個會檢查你代碼的虛擬甲方是怎麼設計出來的**
要理解SWE-INTERACT的獨特之處,不妨先想像這樣一個場景:你是一名程序員,公司里來了一位資深工程師充當你的客戶。他不會把需求文檔甩給你,而是先說一句很隨意的話:"幫我把語音廣播模組重構一下,加個錄製功能,用事件驅動。"
然後你動手做了第一版,給他看。他掃一眼,說:"單例模式,下一步。"你修改,他又看,說:"構造函數裡的初始狀態不對,再改。"這樣來來回回,每次他只提一個問題,每次都是在看過你的具體實現之後才說。他不會提前給你完整的規格說明書,也不會一次性把所有問題都告訴你。
這,正是SWE-INTERACT里那個"虛擬用戶模擬器"的工作方式。
研究團隊在設計這個模擬器之前,首先分析了SWE-chat數據集中數千條真實的用戶與編程AI之間的對話記錄。他們發現,現實中最常見的使用模式是"振動編碼"(vibecoding)——用戶幾乎不自己寫代碼,超過99%的代碼都由AI完成,用戶只負責提要求和審核。而最典型的用戶畫像是"資深挑剔者"(Expert Nitpicker)——這類用戶的消息短、隨意、直接,他們關心的是API接口的精確細節,會一輪一輪地疊代批評實現,隨時加新需求,直到滿意為止。
基於這些真實數據,團隊設計了一個具有詳細行為規則的用戶模擬器。這個模擬器不只是一個靜態的"回答問題"的LLM接口,而是一個真正會主動行動的智能體——它能用shell命令檢查AI編程助手的工作區,查看代碼文件,比對git提交記錄,然後根據自己實際看到的內容,給出有針對性的批評和新要求。換句話說,它會"看你寫的代碼",而不只是"聽你匯報進度"。
整個測試框架從三個知名的編程基準測試中各挑選了25道題,合計75道,涵蓋SWE-bench Pro、SWE Atlas和DeepSWE。這些原本都是"一次性給全需求"的單輪任務,被團隊改造成了多輪對話任務,任務的最終評分標準不變,還是用原來的驗證器檢查代碼正確性——只是獲取需求的過程,變得像真實工作一樣曲折。
**二、真實對話讓最強模型的通過率直接腰斬**
研究團隊選取了五款當時最先進的AI模型進行測試,分別是GPT 5.5、Opus 4.8、Kimi K2.6、Gemini 3.5 Flash和Sonnet 4.6,並為每款模型設置了"單輪基準"和"多輪對話"兩種測試條件。
在單輪基準條件下,也就是一次性給出所有需求的傳統測試方式,各模型的成績尚可。Opus 4.8以50.7%的通過率領跑,GPT 5.5緊隨其後達到48%,Gemini 3.5 Flash和Kimi K2.6分別是29.3%和25.3%,Sonnet 4.6則是21.3%。
然而,一旦切換到SWE-INTERACT的多輪對話模式,所有模型的成績都出現了顯著下滑。Opus 4.8從50.7%跌至26.7%,GPT 5.5從48%跌至24.7%,下跌幅度都超過了23個百分點。Gemini 3.5 Flash和Kimi K2.6也分別下跌了12和10.7個百分點。唯一跌幅相對較小的是Sonnet 4.6,只跌了2.5個百分點——但這並不是因為它在多輪對話中表現更好,而是因為它在單輪任務中本就表現墊底,下跌空間有限。
換個方式來理解這組數據:原本能完成一半任務的最強模型,在面對真實風格的"挑剔甲方"之後,只能完成大約四分之一的任務。相當於把考試卷的難度調高了一倍,但考試內容其實是同一道題。
與此同時,多輪對話模式所消耗的計算資源也大幅增加。步驟數通常是單輪的3到4倍,token消耗量增加了1.6到4.5倍,運行成本也相應翻漲。其中最極端的一個案例,整個任務軌跡包含了27條用戶消息,用戶對AI工作區發出了332次工具調用來檢查代碼,而AI自身則執行了超過1000步操作才完成任務。
**三、AI是如何在對話中逐漸"摸清"任務要求的**
研究團隊還設計了一套方法來追蹤AI在整個對話過程中"摸清任務要求"的進度,就像給一場偵探破案的過程打進度條。
具體做法是:把每個任務的完整需求拆解成若干個獨立的子目標,比如"函數必須放在特定文件里"、"必須正確處理負數輸入"、"API接口必須返回特定類型"等,每個子目標都有一個權重,所有子目標的權重加起來等於100分。然後,在AI每次提交一版實現之後,就用一個獨立的評分模型來給當前實現評分——看它已經覆蓋了多少個子目標。
通過這種方式,研究團隊得到了一張每個AI模型的"目標發現曲線":從最初寫下計劃文件(PLAN.md)開始,到每次根據用戶反饋提交修改,目標覆蓋率是如何變化的。
有一個有趣的規律出現了:幾乎所有模型在"計劃階段"的得分,都高於"第一次實際實現"時的得分。這背後有兩個原因:一方面,給計劃評分的模型往往比較寬鬆,只要計劃里提到了某個方向,就算覆蓋;另一方面,AI在實際寫代碼時容易丟失一些在計劃里已經考慮到的細節。打個比方,就像一個學生列了一份很完整的考試複習提綱,但真正上考場時,提綱上的知識點並沒有全部答出來。
隨著對話的推進,用戶模擬器會逐漸"揭露"更多外部可見的需求,AI的目標覆蓋率也隨之上升。GPT 5.5、Opus 4.8和Sonnet 4.6最終都能覆蓋超過90%的任務目標,而Gemini 3.5 Flash得分稍低,Kimi K2.6則明顯落後。
但"知道了目標"和"真正實現正確"之間,還有一道不小的鴻溝。研究發現,幾乎所有最終通過驗證器的解決方案,目標覆蓋率都在90%以上;但反過來,目標覆蓋率高達90%的實現,卻未必能通過驗證器。換句話說,AI可以"知道該做什麼",但"做對"是另一回事。
**四、失敗的原因:不是不懂要求,而是做不對**
為了搞清楚為什麼那麼多任務最終還是失敗了,研究團隊對287個失敗軌跡進行了系統性的原因歸類,每個失敗案例可以被貼上一個或多個標籤。
占比最大的兩類失敗,分別是"技術實現錯誤"和"遺忘了某個需求",各自占到了所有失敗標籤的約三分之一。
技術實現錯誤,指的是需求已經清楚、AI也試圖去實現,但最終代碼還是出了問題。比如在一個KCP流多路復用的任務中,AI正確地創建了會話、流、幀等所有組件,但最終實現中,字節計數器始終是零,流在不應該關閉的時候被關閉了,遠程關閉信號也無法喚醒正在等待的寫入操作。這類錯誤更像是工匠在按圖紙施工,但細節處理出了問題。
遺忘需求,指的是某個需求在對話早期已經明確提出,AI也回應說做了,但在後續的修改中,這個需求被悄悄抹掉了。比如在一個消息隊列(Kombu)的任務中,用戶先要求了取消通知的回調方式,後來又要求加入消費者晉升功能。AI加入晉升功能時,卻把之前說好的取消通知行為丟了。這類錯誤像極了一個裝修工人,客戶第一天說要留個插座,第三天說要改牆面布局,工人改完之後那個插座就不見了。
排在第三位的是"誤解或錯誤假設",占約14%。這類錯誤發生在AI對需求做出了錯誤的理解,而沒有去向用戶確認。比如一個任務要求`Invalid`對象把錯誤存成不可變的元組,但AI把傳入`Invalid(...)`的元組當成了單個錯誤,而不是作為錯誤集合的儲存格式。
第四類是"用戶從未告知的需求",占約12%。這類情況實際上更像是測試本身的漏洞——用戶模擬器沒有把某個必要的需求傳達給AI,導致AI無從得知。研究團隊把這類情況識別為模擬器自身的不足,需要在未來改進。
最後還有一類"回歸錯誤",占約7%,指的是用戶提出新需求後,AI修改代碼時破壞了之前已經正確實現的功能。比如在一個Helm配置合併策略的任務中,AI針對"無匹配合併鍵時回退到追加策略"這一需求做了專門的修改,但後續為了處理其他新需求而調整代碼時,這個已經正確的邏輯又被覆蓋掉了。
**五、"挑剔型用戶"角色的設計,直接決定了測試的真實性**
研究團隊還專門做了一組對比實驗,把他們精心設計的"資深挑剔者"用戶角色,與一個極簡的"中性用戶"版本進行比較。中性版本保留了相同的任務內容和工具接口,但去掉了所有詳細的角色行為規則,改成了一個簡單的"當AI來問時,把需求告訴它"的通用提示詞——這正是此前類似研究常用的做法。
結果非常清楚。使用"資深挑剔者"角色時,AI的對話輪數增加了約90%到97%,執行步驟增加了30%到50%,而通過率對於四個模型來說進一步下降了。這說明精心設計的用戶角色確實製造了更真實、更有挑戰性的測試環境——因為它不會一次性把所有需求和盤托出,而是像真正的用戶那樣,一次只提一個問題,分多輪疊代。
定性上看,兩種角色之間的差異也非常顯著。中性版本的模擬器往往在對話開始就給出相對完整的說明,並在AI完成後直接批准。而研究團隊的"挑剔者"版本則真正展現出真實用戶的行為模式:先給一個模糊的起始請求,看完AI的實現後再提API形狀不對,等AI修改後再說SNMP計數器還有問題,再修改後說流開啟的接口簽名還差一點……一輪接一輪,每次只扣一顆螺絲。
**六、用什麼模型來扮演"用戶"也至關重要**
實驗中使用了兩個不同的模型來扮演"用戶模擬器"角色:GPT 5.5和Claude Opus 4.7,並比較了它們各自搭配同一批AI編程助手時的差異。
GPT 5.5版本的用戶模擬器明顯更好地遵循了"資深挑剔者"的角色設定。它傾向於把需求拆分成更多輪次逐步透露,而不是一次給出一批;它在檢查AI工作區時用的工具調用次數是Opus 4.7版本的4到5倍;它給出的批評也更具針對性和準確性。
由此帶來的影響是,當用戶模擬器是GPT 5.5時,AI編程助手的任務軌跡通常比Opus 4.7版本長出50%到100%,經歷的對話輪次也更多。但另一方面,由於GPT 5.5模擬的用戶會更徹底地檢查實現並揭露更多需求,AI最終在部分任務上的得分反而略高——因為它得到了更完整的需求資訊,犯"遺漏需求"類錯誤的機會減少了。
**七、代碼改了多少次、改得有多亂,也能說明問題**
為了評估不同AI模型在多輪對話中處理代碼演化的能力,研究團隊還設計了兩個衡量"修改效率"的指標。
第一個叫"冗餘修改量"(Churn Overhead),計算方式是:把所有輪次的代碼修改量加起來,減去最終提交的總修改量,再除以最終總修改量。這個數字越低,說明AI的每次修改都更接近最終方向,沒有走太多彎路。第二個叫"後期修改占比"(Late Change Share),計算的是第一次實現提交之後的所有修改量,占全部修改量的比例——這個比例越低,說明AI在初期實現中就覆蓋了更多的正確方向,不需要後期大幅返工。
Opus 4.8在這兩項指標上都表現最好:冗餘修改量只有6.9%,說明它的每次修改都相當緊湊,與最終方向高度一致;後期修改占比也只有24.7%,意味著超過四分之三的代碼工作在第一次實現中就完成了。GPT 5.5緊隨其後,後期修改占比為28.6%。相比之下,Gemini 3.5 Flash的後期修改占比高達54.5%,說明它在初次實現後需要做大量的推翻重寫,像是一個沒有規劃好就動手的施工隊,蓋到一半才發現地基方向不對。
**八、研究的最後話:這不只是更難的編程考試**
研究團隊在結論中明確指出,SWE-INTERACT測量的是一個與單輪自主編程截然不同的能力維度。通過率從50%驟降至25%,這個差距不是因為任務變得更複雜、需要更多代碼——任務本身完全沒變,唯一變的是獲取需求的方式。
最強的模型——Opus 4.8和GPT 5.5——在模糊指令下能保持較好的開局,能堅持到所有需求被揭露,最終產出的代碼也相對整潔。但即便如此,它們依然會犯技術錯誤、遺忘早期需求、在新需求和舊實現之間顧此失彼。
較弱的模型則在模糊指令下就開始走偏,有時候在用戶還沒說完所有要求時就急著提交,對話輪次更短,但正確性也更差,代碼改來改去,留下大量無用的修改痕跡。
說到底,讓AI在和人類的來回對話中完成一個編程任務,考驗的不是它能不能寫出正確的代碼——那一關,現在的模型已經勉強過得去。真正的挑戰,在於它能不能在需求逐步到來的過程中保持清醒,把前幾輪說好的事情記住,把後幾輪加進來的新要求融合進去,不把舊代碼弄壞,不把新需求搞亂。這需要一種更像"長期注意力"和"多線程協調"的能力,而這恰恰是當前模型最明顯的短板之一。
對於普通用戶來說,這項研究的意義很直接:現在流行的AI編程助手,確實能幫你寫不少代碼,但如果你和大多數人一樣,習慣於邊做邊改、隨時加需求、事後挑問題,那麼你的AI助手很可能會在某個時刻悄悄把你三輪前說的要求給丟掉,或者為了滿足你的新要求,把之前已經做對的部分給破壞掉。了解這一點,至少能讓你更有意識地檢查AI的輸出,而不是只看它說"已完成"就直接信任。
對這項研究感興趣的讀者,可以通過arXiv編號2606.30573查閱完整論文,也可以訪問論文中提供的GitHub倉庫地址github.com/scaleapi/SWE-Interact獲取測試平台的完整代碼和數據。
---
Q&A
Q1:SWE-INTERACT和普通的編程AI基準測試有什麼本質區別?
A:普通的編程基準測試會把所有需求一次性告訴AI,AI只需要按圖紙施工。SWE-INTERACT則模擬真實開發場景:一個虛擬用戶先給出模糊指令,等AI提交實現後,才逐步通過對話揭露更多具體要求,而且這個虛擬用戶還會實際查看AI寫的代碼,而不只是聽AI的匯報。
Q2:為什麼在SWE-INTERACT測試中,AI通過率會大幅下降?
A:主要有三類失敗原因:一是代碼技術實現有錯誤,需求懂了但寫對是另一回事;二是AI在處理新需求時遺忘了早期輪次里已經確認好的要求;三是為了滿足新需求修改代碼時,把之前已經正確的功能搞壞了。這些問題在"一次性給全需求"的單輪測試中基本不會出現。
Q3:SWE-INTERACT測試中哪款AI模型表現最好?
A:在多輪對話測試中,Opus 4.8以26.7%的通過率略領先於GPT 5.5的24.7%。兩者在代碼修改效率上也更好,冗餘修改量更低、後期大幅返工更少。相比之下,Gemini 3.5 Flash和Kimi K2.6不僅通過率更低,代碼演化過程也更混亂,後期修改占比明顯更高。






