AI 自動修 bug,解決率達 44%!這是全球開源模型的最新最強水平。
來自螞蟻的開源新模型,在 SWE-bench Lite 上超越所有開源方案,性能媲美閉源模型。
具體表現(xiàn)如下,在 SWE-bench Lite 上:
所有開源模型方法(Open Weight Model)中排名第一;
所有開源系統(tǒng)方法(Open Source Syestem)中排名第六;
總體排名第 14;
優(yōu)于目前榜單最好開源模型“KGCompass”7.33%。
他們首創(chuàng)將倉庫代碼圖模態(tài)融入大模型(Code Graph Model, CGM),讓大語言模型能直接理解代碼圖,更高效修復(fù) bug、補全代碼。
這徹底擺脫對黑盒模型(如 GPT-4 或 Claude 3.7 等)和復(fù)雜 Agent 工作流程的依賴,實現(xiàn)更加可控、透明、安全的 SE 自動化。
而且,CGM 完全基于開源模型。要知道,開源模型在 SWE-bench 上的表現(xiàn)通常不夠好,此前幾乎所有 SOTA 級方案都是基于閉源模型實現(xiàn)。而 CGM 基于 Qwen 模型,做到了比肩閉源模型的水平。
CGM 僅需 4 步就能快速定位、生成補丁,省去了 Agent 方案中復(fù)雜的編排過程,效率直線 up。
讓 AI 真正理解大模型代碼庫
大模型趨勢以來,AI 編程迅速崛起,尤其是在寫函數(shù)這類小任務(wù)上的表現(xiàn)出色,比如在 HumanEval 等基準測試上,許多模型的準確率已經(jīng)超過 90%。
然而真實的軟件工程遠比”寫一個函數(shù)“復(fù)雜得多。像 Bug 修復(fù)、功能增強這樣的任務(wù),通常需要跨文件、跨模塊操作,并要求模型理解項目中復(fù)雜的結(jié)構(gòu)、依賴關(guān)系和類的繼承體系。
現(xiàn)在的主流方法通常是使用基于閉源模型的 Agent。它們可以模擬人類程序員行為,如觀察代碼、調(diào)用工具、多輪交互等完成任務(wù)。
但這類方法也存在幾個問題:
行為路徑不可控,容易積累推理誤差;
依賴 GPT-4、Claude 等閉源模型,難以私有部署或定制;
工程成本高,效率不高。
與此同時,當前使用開源模型的方案,很難實現(xiàn) SOTA 級效果。
為此研究團隊提出:能否只用開源模型、不依賴 Agent,解決倉庫級任務(wù)?CGM 由此而來。
??圖結(jié)構(gòu)與大模型深度融合
CGM 采用類似 Vision-Language Model(VLM)的跨模態(tài)建模方式。它將傳統(tǒng) LLM 的文本理解能力與代碼倉庫的結(jié)構(gòu)圖(Graph)結(jié)合,形成一種圖-語言多模態(tài)模型。模型核心融合了兩個模態(tài):
圖模態(tài):將倉庫構(gòu)建為結(jié)構(gòu)化圖,節(jié)點包括函數(shù)、類、文件、包等 7 種類型,邊表示調(diào)用、包含、繼承等依賴;
語言模態(tài):用戶輸入的自然語言描述和代碼提示,驅(qū)動模型生成 patch 或回答。
模型輸入為代碼圖和文本形式的 prompt,將在 LLM 中對結(jié)構(gòu)-語義進行雙模態(tài)對齊。
具體結(jié)構(gòu)融合方法如下:
使用小型編碼器(CodeT5+)對每個節(jié)點進行編碼,壓縮為單個“節(jié)點 token”,每個節(jié)點內(nèi)按照至多 512 個 token 的文本塊切分。
通過一個適配器(一個兩層 MLP)將編碼后的節(jié)點表征映射到 LLM 輸入嵌入空間中。相當于將 LLM 上下文擴展 512 倍,能更好處理海量的代碼倉庫上下文。
使用圖感知注意力掩碼(Graph-aware Attention Mask)。替代 LLM 中原有的因果注意力,使注意力機制只作用于相鄰節(jié)點間。類似于 GNN 的消息傳遞機制,能夠讓 LLM 直接感知和利用代碼的結(jié)構(gòu)依賴關(guān)系。
??兩階段訓(xùn)練:結(jié)構(gòu)理解 + 問題泛化
基于此模型架構(gòu),團隊通過兩階段訓(xùn)練讓 LLM 能夠理解代碼圖的拓撲結(jié)構(gòu)。
階段一:子圖重構(gòu)預(yù)訓(xùn)練
為了訓(xùn)練 CGM 有效捕捉代碼圖的語義和結(jié)構(gòu)信息,團隊設(shè)計了一個“圖生代碼 (Graph-to-Code)”任務(wù)。從大型代碼圖中隨機采樣出子圖(限制節(jié)點數(shù)量以控制輸出代碼長度),模型需要根據(jù)這些輸入的子圖(僅包含節(jié)點類型和連接關(guān)系,不含完整的代碼內(nèi)容)來重建出原始的代碼片段。
然后采用層級化方法,保持重建代碼的結(jié)構(gòu)一致性和可讀性。按照拓撲排序與行號順序拼接倉庫上下文:高級別節(jié)點(如 REPO、PACKAGE)置于輸出序列或文件的起始;文件節(jié)點通過拓撲排序確定順序;文件內(nèi)節(jié)點(如 CLASS、FUNCTION)則按行號順序拼接。
階段二:噪聲增強微調(diào)
此階段使用真實的 GitHub 問題-修復(fù)補丁數(shù)據(jù)對 CGM 進行微調(diào)。
模型學習基于兩項輸入生成代碼補?。?i) 一個相關(guān)的代碼子圖;(ii) 一段文本提示,指明根據(jù)補丁可能需要修改的實際文件。為了提升模型的魯棒性,特意在提示中引入了 10% 的噪聲輸入:例如,提示中可能包含一個實際上無需修改的不相關(guān)文件,或者遺漏至少一個本應(yīng)被修改的關(guān)鍵文件。在訓(xùn)練中引入這種受控的噪聲有助于模型更好地泛化到實際輸入信息不完整或包含干擾的場景。
??推理階段:Graph-RAG 框架替代 Agent
最后,為了進一步提升實際應(yīng)用能力,CGM 構(gòu)建了一個無 Agent 輕量化框架 Graph-RAG。
它還原了人類程序員 bug 修復(fù)工作流,但比現(xiàn)有 Agent 方案效率更高。
核心模塊數(shù)量從 10 個進一步精簡到了 4 個:改寫器 → 檢索器 → 重排器 → 生成器(CGM 模型)。
改寫器(Rewriter):改寫問題描述,提取關(guān)鍵詞與相關(guān)文件;
檢索器(Retriever):通過語義與結(jié)構(gòu)檢索,從代碼圖中抽取連通子圖;
重排器(Reranker):排序檢索結(jié)果,選擇最關(guān)鍵文件用于生成;
生成器(Reader):結(jié)合子圖與提示生成最終修復(fù)代碼。
基于以上,CGM 在多個測試基準中取得了領(lǐng)先成績。具體如下 ——
實驗結(jié)果
研究團隊在多個主流基準上系統(tǒng)評估了 CGM 的性能,涵蓋兩個主要任務(wù)類別:(1)代碼修復(fù)和(2)代碼補全。
倉庫級別的代碼修復(fù)
在 SWE-bench Lite Leaderboard 上,CGM 以 44.00% 的結(jié)果排名開源權(quán)重榜單第一。
在 SWE-bench Verified 上,CGM 相比于最佳開源基線提升了 10.20%,至 50.40%;
對于 Java 項目,CGM 在 SWE-bench-java Verified 上達到 14.29%,則相比于最佳開源基線提升了 4.4%。
這些結(jié)果表明 CGM 能夠處理跨語言、跨項目的大規(guī)模倉庫級 Bug 修復(fù)任務(wù),展現(xiàn)出強大的結(jié)構(gòu)理解與泛化能力。
倉庫級別的代碼補全
在復(fù)雜代碼生成任務(wù)中,CGM 在 ComplexCodeEval 和 CrossCodeEval 上也顯著領(lǐng)先于同尺寸開源模型,特別是在需要跨文件推理和補全的場景下效果突出。
此外,研究團隊在不同基座模型上(CodeLlama-7B 和 DeepSeek-Coder-7B)分別部署了 CGM,并與近期 RAG 系統(tǒng)進行比較。結(jié)果顯示,CGM 具備很好通用性,可以適配多種基座模型,并且表現(xiàn)超越傳統(tǒng) RAG 方法。
總結(jié)來看,CGM 不依賴復(fù)雜 Agent 系統(tǒng),首次實現(xiàn)了在大模型中融合代碼圖模態(tài),讓 AI 像人類一樣 get 倉庫里文本和代碼之間的復(fù)雜依賴關(guān)系,“真正理解一個項目”。
更關(guān)鍵的是,它基于開源模型就能實現(xiàn),不局限于特定模型。為企業(yè)和開發(fā)者提供了一個靈活、透明且可控的方案。
??最后,CGM 的技術(shù)論文、核心代碼、模型權(quán)重與訓(xùn)練數(shù)據(jù)均已開源,感興趣的同學可進一步了解詳情。
技術(shù)論文:https://arxiv.org/abs/2505.16901
開源代碼:https://github.com/codefuse-ai/CodeFuse-CGM
模型權(quán)重:https://huggingface.co/codefuse-ai/CodeFuse-CGM-72B
訓(xùn)練數(shù)據(jù):https://huggingface.co/datasets/codefuse-ai/CodeGraph
??團隊此前工作:
Code LLM綜述:Awesome-Code-LLM(TMLR)https://github.com/codefuse-ai/Awesome-Code-LLM
Graph+LLM前序研究:GALLa(ACL 2025)https://github.com/codefuse-ai/GALLa
高效注意力架構(gòu):Rodimus(ICLR 2025)https://arxiv.org/abs/2410.06577
代碼多任務(wù)微調(diào)框架:MFTCoder(KDD 2024)https://arxiv.org/abs/2311.02303