SWE-bench Verified 跟原始版 SWE-bench,差在哪裡?為什麼連「升級版」都會失效?
原始版 SWE-bench 在 2023 年推出時,本身就存在測試環境不穩定、部分題目根本無解等問題。OpenAI 在 2024 年找專家人工複核了 1699 題,篩出品質較好的 500 題子集,稱為 SWE-bench Verified,目的就是要修掉這些明顯的評測缺陷。
但這次失效的根本原因跟原始版不同——不是題目本身設計不良(雖然這次稽核也發現了殘留的測試設計問題,佔比接近六成),而是「資料污染」:這 500 題全部來自公開的開源專案,隨著時間推移,這些程式碼庫的內容越來越可能被收錄進各家公司訓練模型用的網路爬蟲語料裡。換句話說,升級版解決的是「題目設計」層面的問題,但無法解決「題目遲早會被模型看過」這個結構性問題,這也是為什麼即使是精心複核過的版本,一樣逃不過失效的命運。
如果只是「有些題目被模型看過」,為什麼會嚴重到讓 OpenAI 直接放棄整個榜單?
關鍵不在於「有沒有看過」,而在於 OpenAI 分析裡特別強調的一點:看過題目答案的模型,成功率會明顯更高,因為它們額外獲得了原本題目描述裡沒有講清楚的資訊,等於是拿到了一份「不完整考題的完整答案」。舉例來說,django__django-14725 這道題目的測試要求一個叫做 edit_only 的新參數,但這個參數名稱完全沒有出現在題目描述裡;GPT-5.2 在推理過程中卻直接寫出「這個參數大概是在 Django 4.1 版本附近新增的」,代表它其實是靠對 Django 版本歷史的記憶回答,而不是真的從題目描述推理出解法。
這代表分數上的進步,有一部分其實是「記憶力」的進步,而不是「解決未見過問題的能力」的進步——而後者才是業界真正想測量、也是《防範框架》真正想追蹤的東西。當這兩者被混在同一個分數裡且無法分離,這個分數就失去了原本的用途。
SWE-bench Pro 真的能徹底解決問題嗎,還是只是把同一個困境延後發生?
短期而言,SWE-bench Pro 確實有效降低了污染程度——OpenAI 用同一套「套話」手法測試後發現,能成功挖出污染跡象的案例遠比 SWE-bench Verified 少,而且沒有任何模型能完整複誦出一份黃金補丁,這代表它目前的防護力明顯更強。
但從結構上看,SWE-bench Pro 面對的其實是同一個長期困境的另一個階段:它是私有題庫,這解決了公開資料容易被訓練語料收錄的問題,但代價是建置與更新成本高出許多,題目來源也更有限。隨著時間推移,如果這個題庫的內容同樣被以各種方式(例如被引用、被討論、甚至被部分洩漏)流入公開網路,一樣可能面臨污染風險——這正是為什麼 OpenAI 同時強調要投資像 LiveCodeBench 那種「依發布日期動態篩選」、以及像 GDPVal 那種「完全私有命題、人工評分」的評測方式,用多種防護機制互相搭配,而不是把希望完全寄託在單一榜單上。
一般讀者不是研究人員,沒辦法自己去查證污染問題,那該怎麼判斷一個 coding agent 產品的宣傳分數可不可信?
可以留意幾個相對容易查證的線索。第一,看這家公司引用的分數是不是 SWE-bench Verified——如果是,且沒有附上任何關於污染風險或替代指標的說明,這本身就是一個值得提高警覺的訊號,因為業界標準已經在 2026 年 2 月之後轉向。第二,查這家公司是否同時公布了 SWE-bench Pro 或其他抗污染榜單上的分數,並比較兩者的落差——落差過大,代表 Verified 分數的參考價值有限。第三,如果產品宣傳只給單一榜單的單一數字、沒有任何方法論說明或原始資料連結,這種呈現方式本身就違反了「一個分數需要交叉核對」的基本原則,值得多打幾個問號再做決定。
2026 年 2 月 23 日,OpenAI 發布了一篇罕見的自我修正聲明:公司將停止報告 SWE-bench Verified 的分數,並建議整個業界比照辦理。這件事之所以值得留意,不是因為又有一個 benchmark 過時了——過去兩年 AI 圈已經對「某個榜單被玩壞」麻木了——而是因為 SWE-bench Verified 正是 OpenAI 自己在 2024 年一手打造、用來修正原版 SWE-bench 缺陷的「升級版」,如今連這個升級版都被自己的創造者宣告失去測量意義。
SWE-bench 最早在 2023 年推出時,是 AI 編程評測的一次真正突破——它不再測試玩具級的單一函式補完,而是直接把模型丟進真實開源專案的 GitHub Issue 裡,要求模型讀懂問題描述、修改對應的程式碼、通過原始 pull request 附帶的測試案例。早期最強模型的分數只有 20% 到 30% 上下,這個榜單一度被認為「夠難、夠誠實、夠有用」。但原始版本存在明顯的評測缺陷——測試案例過於死板、問題描述模稜兩可、跨作業系統執行環境不穩定——OpenAI 因此在 2024 年找來專家人工複核 1699 個原始題目,篩出 500 題品質較佳的子集,發布為 SWE-bench Verified。
接下來一年半,SWE-bench Verified 迅速成為業界公認的標準指標,幾乎每一次前沿模型發布都會附上這個分數,也被 OpenAI 自己的《防範框架》(Preparedness Framework)用來追蹤能力進展。但根據 OpenAI 這次公布的分析,過去半年頂尖模型在這個榜單上的進步幅度,已經從 74.9% 放緩到 80.9%,這讓公司開始追問一個更根本的問題:剩下這些解不出來的題目,到底是模型能力真的碰到天花板,還是資料集本身的問題?
OpenAI 這次的稽核聚焦在 138 道模型經常解不出來的題目,每題交由至少 6 位資深工程師獨立審查。結果顯示,其中 59.4% 的題目本身就有明顯瑕疵:35.5% 屬於「測試過窄」——測試案例要求特定的實作細節(例如硬性規定某個函式必須叫做某個名字),即使模型寫出功能正確的替代解法,也會因為命名不符而被判定失敗;18.8% 屬於「測試過寬」——測試案例涵蓋的範圍超出題目描述所要求的內容,例如某道題目的原始 pull request 其實一次修了三個問題,但題目描述只截取了其中一個,模型正確解決了描述要求的部分,卻因為沒處理另外兩個「沒被要求」的問題而被判失敗。
第二個更根本的問題是資料污染:SWE-bench 的題目全部取自公開的開源專案,而這些專案的程式碼庫、release notes、甚至討論串,很可能早就被收錄進各家模型的訓練語料。OpenAI 設計了一套自動化紅隊測試,讓 GPT-5 去「套話」GPT-5.2、Claude Opus 4.5、Gemini 3 Flash Preview 這幾個非推理模型,測試方式是只給模型題目的部分線索,看它能不能「回憶」出完整的正確答案(即所謂的黃金補丁,gold patch)。結果相當驚人:GPT-5.2 只憑一句片段的問題描述,就完整複誦出正確的程式碼修改、精確的函式與變數名稱;Claude Opus 4.5 甚至能一字不差地引用出原始 pull request 裡的程式碼註解;Gemini 3 Flash 則是連題目描述的逐字逐句內容都能完整背出來。三家公司、三個不同模型,全部被抓到看過同一批題目的正確答案。
OpenAI 這次公開建議業界改用 SWE-bench Pro 作為替代指標——這是一個專門設計來抵抗資料污染的私有題庫,OpenAI 的污染測試顯示,同樣的套話手法在 SWE-bench Pro 上找到的污染案例遠比 SWE-bench Verified 少得多,且沒有任何模型能夠完整複誦出一份黃金補丁。但轉用新榜單的代價,是分數看起來會出現斷崖式下滑:在 SWE-bench Verified 上能拿到 80% 以上、甚至逼近 93% 的頂尖模型,換到 SWE-bench Pro 上,分數普遍落在 46% 到 58% 之間。這個落差本身就是最直接的證據——不是模型突然變笨了,而是舊榜單長期以來一直在虛報進步幅度。
SWE-bench 系列陷入的困境,本質上是所有取材自公開資料的 benchmark 都無法迴避的兩難:題目來源越貼近真實世界,就越容易被收錄進訓練資料;題目來源越封閉、越私有,建置與維護的成本就越高。OpenAI 在這次分析裡也承認,這正是為什麼公司近期轉向投入像 GDPVal 這類由領域專家私下命題、由受訓評審人工評分的評測方式——雖然成本高出許多,但能有效降低污染風險。這也呼應了近期多篇獨立分析指出的產業共識:讀一個 benchmark 分數之前,必須先弄清楚這個分數的「防禦機制」是什麼——它有沒有隨時間更新題庫、有沒有針對特定領域重新命題、評分是自動化還是人工——因為缺乏防禦機制的分數,本質上只是一組隨時可能被繞過的數字。
如果你正在依據 benchmark 分數評估某個 AI 編程工具、或做跟 AI 相關的投資決策,這次事件最直接的啟示是:任何單一榜單的分數,都不該被當成穩定可信的「溫度計」讀數,而更像是一份需要交叉核對的意見調查。具體可以怎麼做——優先查證一家公司近期是否仍在報告 SWE-bench Verified 分數而未做任何但書說明(這可能代表資訊揭露不夠透明);比較同一模型在 SWE-bench Verified 與 SWE-bench Pro 上的分數落差,落差越大,代表舊分數的參考價值越低;長期而言,留意像 LiveCodeBench 這類會依發布日期動態更新題庫、明確防止訓練資料污染的評測方式,這類指標雖然不完美,但至少讓「防禦機制是什麼」這件事變得可查證,而不是廠商自說自話。