天工不止造物,也能修bug:Skywork-SWE給代碼智能體補上軟件工程課

天工不止造物,也能修bug:Skywork-SWE給代碼智能體補上軟件工程課

文章圖片

天工不止造物,也能修bug:Skywork-SWE給代碼智能體補上軟件工程課

文章圖片

天工不止造物,也能修bug:Skywork-SWE給代碼智能體補上軟件工程課

文章圖片

天工不止造物,也能修bug:Skywork-SWE給代碼智能體補上軟件工程課

文章圖片

天工不止造物,也能修bug:Skywork-SWE給代碼智能體補上軟件工程課

文章圖片

天工不止造物,也能修bug:Skywork-SWE給代碼智能體補上軟件工程課

文章圖片

機器之心報道
編輯:Panda
400 多年前 , 宋應星著成《天工開物》 。 這是一部寫給匠人、也寫給未來的書 。 它讓人相信:技術不是死物 , 而是人與世界持續互動的方式 。
如果說「天工」代表了中國古代對「工程」與「制造」的極致理解 , 那么今天 , 一個同樣以「天工」(即 Skywork)為名的 Agent 智能體 , 正試圖在另一片疆域(代碼世界)中 , 繼承這份精神 。
這個 Skywork , 不是煉鐵鑄器的匠人 , 而是自主代碼智能體基座模型 , 要修補的是一種現代最復雜的人造系統:(開源)軟件工程 。 它不握錘鑿 , 而是靠多輪交互、長上下文理解與邏輯推理 , 在成千上萬的 GitHub 項目中識別 issue/bug、定位原因、打補丁 , 并驗證是否真的修好了 。 故此 , 它得名 Skywork-SWE 。 (注:SWE 是指軟件工程 / Software Engineering 。 )

Skywork-SWE 因何而生?
軟件智能體面臨的困難
在古人的世界里 , 修一口破鼎、補一段布帛是「匠人精神」的體現 。 而在今天 , 最頻繁「破裂」的 , 莫過于代碼 。
如今 , 代碼系統早已成為現代文明的骨架 。 它們運行在日常軟件、銀行服務、交通調度等各式系統中 , 也支撐著我們所依賴的 AI 算法本身 。 但和古代器物一樣 , 再精妙的程序也難免出現 bug—— 有些是邏輯失誤 , 有些是環境變遷 , 有些甚至源于協作失控 。 比如 , 就在前幾天 , AWS、谷歌云、Azure 和 Cloudflare 都發生了中斷 , 連帶著 ChatGPT 和 Cursor 等熱門 AI 應用也一并短暫失聯;而這一事故的原因可能是一次錯誤的自動配額更新導致谷歌的 API 管理系統出現了故障 。
同時 , bug 修復也是軟件工程中最基礎 , 卻也是最復雜、最消耗人力的任務之一 。 特別是在真實的 GitHub 項目中 , 修一個 bug 并不是「找到一行錯字那么簡單」 , 它常常需要:

  • 讀取和理解成百上千個文件;
  • 推演變量在不同模塊的流動路徑;
  • 閱讀前人留下的修復記錄與討論;
  • 理解上下文、猜測意圖、編寫代碼補?。 ?/li>
  • 最后 , 還得跑幾遍測試 , 看看是不是真的「已解決」 。
那么 , 我們能否使用 AI 智能體來完成這些任務呢?
當然可以!但我們需要的絕不是傳統的用于解決單獨編程任務的 AI 編程模型 , 而是需要像人類開發者一樣能夠理解歷史上下文、進行多輪推理、在模糊與不確定中做決策、具備落地執行的能力的軟件工程智能體 。
而難題也隨之而生:這類任務長期缺乏高質量訓練數據 。 市面上現有的 SWE 數據集 , 不是驗證機制不足 , 就是訓練樣本雜亂無章 , 難以支持模型在真實工程中進化 。 另外 , 這些數據集的規模普遍較小 , 導致數據 Scaling Law 適用性不明確 。
正是為了應對這種挑戰 , 昆侖萬維推出了自主代碼智能體基座模型 Skywork-SWE 。 它不僅代表一個性能卓越的模型 ——32B 參數量級別的最強開源軟件工程智能體 , 更是一個集數據、驗證、推理與修復為一體的完整系統 。 不僅如此 , 他們還基于此成功揭示了 LLM 軟件工程能力的 Scaling Law 。
目前 , 該模型的技術報告和模型權重都已發布 。

  • 技術報告:https://huggingface.co/Skywork/Skywork-SWE-32B/resolve/main/assets/Report.pdf
  • 技術博客:https://quixotic-sting-239.notion.site/eb17f379610040ceb54da5d5d24065bd
  • 模型權重:https://huggingface.co/Skywork/Skywork-SWE-32B
Skywork-SWE
數據錘煉出的智能工匠
那么 , 昆侖萬維究竟是如何打造出 Skywork-SWE 的呢?
核心的秘訣在于:在軟件工程任務上高質量地達成了數據 Scaling Law 。
為了獲得高質量數據 , 昆侖萬維構建了構建了一套自動化、結構化、可復現的 SWE 數據收集與驗證流程 , 共分為三大階段、九個步驟 。
最終 , 他們從 15 萬個 GitHub 開源項目中篩選出 10169 個真實代碼問題和 8209 條多輪交互軌跡 , 構建出了業內最大規模、可驗證的 SWE 數據集 , 其中每一個樣本都不是「描述性」的 , 而是「工程級」的:
  • 每條任務都能在 Docker 中復現;
  • 每個補丁都要通過單元測試驗證;
  • 每條智能體軌跡都覆蓋完整修復閉環 。
下圖展示了其完整的數據構建流程:

數據構建流程圖
具體來說 , 階段 A 的工作是數據采集與預篩選 , 其中又細分為 GitHub 元數據抓取、PR(Pull Request)收集與任務初篩和安裝驗證 3 個步驟 。 第一階段的處理下來 , 昆侖萬維團隊從 15 萬個開源倉庫中得到了 23389 個有效任務樣本 。 為了防止數據泄漏 , 排除 SWE-bench Verified(測試數據集)已包含的倉庫 。
而階段 B 則是環境設置和基于執行的驗證 。 同樣 , 這一階段也分為三個步驟:統一命令生成、Docker 環境構建和單元測試驗證 。 很容易看出來 , 這一步的目標是確保問題的修復是有效的 , 進而進一步保證數據的質量 。
最后 , 還需要針對每個任務生成正確的智能體軌跡 。 這也正是階段 C 的任務目標 。 同樣地 , 三個步驟:首先 , 昆侖萬維團隊基于開源的 OpenHands 代碼智能體框架 , 選用代碼能力突出的商用大模型(如 Claude , DeepSeek 等)作為智能體基座 , 對每個任務執行最多 100 輪交互 , 完整記錄智能體在問題求解過程中的交互軌跡 。 然后 , 他們進行了 Patch 級的驗證 , 以確保智能體行為嚴格對齊倉庫級代碼修復目標 。 最后 , 構建訓練樣本庫 , 得到了 8209 條高質量、長上下文、多輪交互的經過驗證的軌跡 。
走完全流程后 , 昆侖萬維團隊得到了一個當前規模最大、質量最高且可驗證的軟件工程任務數據集:Skywork-SWE 。 是的 , 正是基于該數據集 , 昆侖萬維訓練出了同名的自主代碼智能體模型:Skywork-SWE-32B?。 ㄗⅲ?2B 是指模型參數量 。 )

數據構建過程中各個階段數據樣本量變化圖
在任務數量與代碼覆蓋廣度方面 , Skywork-SWE 遠超現有同類數據集(如 SWE-Gym Lite 與 SWE-bench Verified) , 可為大模型提供豐富、多樣且貼近實際的軟件工程任務樣本 , 進而持續推動智能體模型的能力進化 。
更具體而言 , 如下左表所示 , 相較于其他基準數據集 , Skywork-SWE 中的任務在編輯復雜度上顯著更高:平均每個補丁涉及 2 個以上函數修改、6 個代碼塊、以及多達 74 行代碼變更 , 能更真實地反映 GitHub 開發中的問題修復復雜度 。 這也意味著 , 模型要在此類任務中實現有效修復 , 必須具備更強的代碼理解、上下文建模與多輪交互推理能力 。

Skywork-SWE 數據集統計表與 GitHub 倉庫詞云圖
而右圖則給出了 Skywork-SWE 數據集的倉庫名稱詞云 。 可以看到 , 其中不僅涵蓋如 Pydantic、SQLGlot、DVC 等主流開源項目 , 還包含大量中小型倉庫 , 呈現出高度貼近真實開發生態的任務分布特征 。 這種貼近真實開發生態的數據構成 , 有助于提升模型在復雜多樣場景下的問題解決能力 。
這些能力也在基于 Skywork-SWE 數據集微調得到的 Skywork-SWE-32B 模型上得到了體現 。 (注:采用的基座模型是 Qwen2.5-Coder-32B-Instruct) 。
Skywork-SWE-32B 的實驗表現
在廣受關注的 SWE-bench Verified 基準(包含 500 個實例 , 來自 12 個流行 Python GitHub 庫的 PR)上 , Skywork-SWE-32B 在 OpenHands Agent 框架下取得了 47% 的準確度 , 超越了現有參數規模在 32B 以下的開源模型 , 甚至優于參數量高達 671B 的 DeepSeek-V3-0324 模型 。

而在這個亮眼成績背后 , 他們的實驗還成功揭示了 LLM SWE 能力在數據方面的 Scaling Law:隨著訓練數據規模的持續擴展 , SWE 模型性能會持續提升 , 充分驗證了「數據 scaling 帶來的性能增益」在軟件工程任務中的有效性與適用性 。 Skywork-SWE-32B 實現了 38.0% pass@1 準確度 , 刷新 Qwen2.5-Coder-32B 系列模型在 OpenHands 代碼框架下的最佳成績 。

可以看到 , 隨著訓練軌跡數量的增多 , Skywork-SWE-32B 的性能會持續提升 。 請注意 , 上圖的橫軸采用了指數刻度 , 這意味著模型性能幾乎呈指數級隨數據增長而提升 。 更重要的是 , 在當前數據集規模范圍內 , 性能提升尚未出現飽和跡象 , 這充分揭示了進一步擴展高質量數據的巨大潛力 。
另外 , 為了在推理階段進一步釋放模型能力 , 昆侖萬維團隊也實驗了測試時擴展(TTS)技術對 Skywork-SWE-32B 帶來的提升 , 充分釋放了模型的潛力 , 在 Best of 8 的測試下即可達到 47% 的正確率 。
下圖展示了其具體在不同倉庫上的得分情況 。

相較于主流的一些閉源模型 , 經過 TTS 后的 Skywork-SWE-32B 的表現也相當不俗:顯著超越了 GPT-4.1-mini(23.86%)、 Claude 3.5 HaiKu(40.6%)和 OpenAI-o1-preview (41.3%) , 并且領先于 Claude v3.5(46.0%) 。

下面通過一個實際案例來看看 Skywork-SWE-32B 的工作過程 。
以用 Python 編寫的、用于天文學的通用核心軟件包 Astropy 及對應的 #14309 PR 為例 。

Astropy 倉庫 issue:修復當提供的文件路徑沒有 args 參數時 FITS 鏈接邏輯崩潰問題 。
向 Skywork-SWE-32B 模型輸入上述 Astropy 倉庫 issue 和相應的代碼倉庫 , 可以看到該模型能精準定位問題源文件與具體缺陷 , 并生成 patch 修復方案 。

生成 patch 修復方案示例圖
如下所示 , Skywork-SWE-32B 生成的方案成功通過了全部測試樣例 , 實現了在 GitHub 代碼倉庫中從問題理解到解決的一站式代碼修復 。

單元測試結果示例圖
Skywork-SWE-32B 的優異表現充分驗證了 Skywork-SWE 數據集的高質量與實際價值 。
一份數據集
撬動一個智能體時代
在大模型走向智能體時代的今天 , 真正稀缺的已不是算力 , 也不是參數 , 而是經得起驗證、貼近真實、具備閉環反饋的數據 。
Skywork-SWE 的意義 , 恰恰在于此 。 它不僅僅代表了一個模型 , 而是一套系統化構建真實工程數據的范式 , 其中收集的不是孤立的函數調用或代碼段 , 而是成千上萬個來自 GitHub 倉庫的實際修復任務 —— 每一條都能在環境中復現、通過測試、形成可追蹤的智能體交互軌跡 。
這份數據集不僅讓 Skywork-SWE-32B 成為當前 32B 參數規模下最強的開源軟件工程模型之一 , 更重要的是 , 它揭示了 LLM 在 SWE 任務中持續增長的性能與數據之間的強相關性 , 首次系統性驗證了數據 Scaling Law 在復雜工程任務上的適用性 , 堪稱軟件工程智能體的「ImageNet」 。
昆侖萬維表示 , 未來 Skywork-SWE 數據集還將向更多編程語言擴展;另外 , 其在運行時環境中執行并驗證單元測試的設置也有助于近期 LLM 社區對在線強化學習方法的探索 。
這背后 , 折射出昆侖萬維對行業趨勢的清醒判斷:大模型走得再遠 , 最終也要落到真實任務中;開源要想站穩腳跟 , 必須在「數據+系統+執行力」上全面補強 。
過去一年里 , 昆侖萬維圍繞 Skywork 系列已布局從 MoE 架構、預訓練模型到智能體框架與垂直場景的全鏈條 。 我們看到了多模態推理模型 Skywork-R1V 以及超越 Suno V4 的音樂模型 Mureka O1 , 甚至還有國內首個短劇創作大模型 Skyreels-V1、可交互視頻生成世界模型 Matrix-Game 和 Matrix-Zero 以及堪稱智能體界的全能型選手的天工超級智能體(Skywork Super Agent) 。 而更妙的是 , 以上這些模型大都是開源的?。 傻慊鞫雜α唇恿私庀昵?。 )
Skywork-SWE 的推出 , 標志著這一體系進一步落地 , 也是昆侖萬維在代碼、內容、辦公等智能體任務場景長期探索的延續 。 在這個探索中 , 他們不僅造模型 , 更造數據;不僅做生成 , 還進行驗證 。 而放眼未來 , 這種以高質量任務型數據為基礎的智能體訓練范式 , 或將成為代碼、軟件工程乃至通用多模態智能體的「標準工藝」 。
【天工不止造物,也能修bug:Skywork-SWE給代碼智能體補上軟件工程課】天工再起 , 從數據開始 。 Skywork-SWE 是對「工程智能體」時代最扎實的回答 , 也是昆侖萬維寫下的一份面向行業的「天工開物」 。

    推薦閱讀