大模型首次直接理解代码图:不用Agent自动修bug,登顶SWE-Bench开源模型榜单

量子位·2025年06月27日 16:32
完全基于开源模型

AI自动修bug,解决率达44%!这是全球开源模型的最新最强水平

来自蚂蚁的开源新模型,在SWE-bench Lite上超越所有开源方案,性能媲美闭源模型。

具体表现如下,在SWE-bench Lite上:

  • 所有开源模型方法(Open Weight Model)中排名 第一
  • 所有开源系统方法(Open Source Syestem)中排名第六;
  • 总体排名第14;
  • 优于 目前榜单最好开源模型“KGCompass”7.33%。

他们首创将仓库代码图模态融入大模型(Code Graph Model, CGM),让大语言模型能直接理解代码图,更高效修复bug、补全代码。

彻底摆脱对黑盒模型(如GPT-4或Claude 3.7等)和复杂Agent工作流程的依赖,实现更加可控、透明、安全的SE自动化。

而且,CGM完全基于开源模型。要知道,开源模型在SWE-bench上的表现通常不够好,此前几乎所有SOTA级方案都是基于闭源模型实现。而CGM基于Qwen模型,做到了比肩闭源模型的水平。

CGM仅需4步就能快速定位、生成补丁,省去了Agent方案中复杂的编排过程,效率直线up。

让AI真正理解大模型代码库

大模型趋势以来,AI编程迅速崛起,尤其是在写函数这类小任务上的表现出色,比如在HumanEval等基准测试上,许多模型的准确率已经超过90%。

然而真实的软件工程远比”写一个函数“复杂得多。像Bug修复、功能增强这样的任务,通常需要跨文件、跨模块操作,并要求模型理解项目中复杂的结构、依赖关系和类的继承体系。

现在的主流方法通常是使用基于闭源模型的Agent。它们可以模拟人类程序员行为,如观察代码、调用工具、多轮交互等完成任务。

但这类方法也存在几个问题

  • 行为路径不可控,容易积累推理误差;
  • 依赖GPT-4、Claude等闭源模型,难以私有部署或定制;
  • 工程成本高,效率不高。

与此同时,当前使用开源模型的方案,很难实现SOTA级效果。

为此研究团队提出:能否只用开源模型、不依赖Agent,解决仓库级任务?CGM由此而来。

图结构与大模型深度融合

CGM采用类似Vision-Language Model(VLM)的跨模态建模方式。它将传统LLM的文本理解能力与代码仓库的结构图(Graph)结合,形成一种图-语言多模态模型。模型核心融合了两个模态:

  • 图模态:将仓库构建为结构化图 ,节点包括函数、类、文件、包等7种类型,边表示调用、包含、继承等依赖;
  • 语言模态 :用户输入的自然语言描述和代码提示,驱动模型生成patch或回答。

模型输入为代码图和文本形式的prompt,将在LLM中对结构-语义进行双模态对齐。

具体结构融合方法如下:

使用小型编码器(CodeT5+)对每个节点进行编码,压缩为单个“节点token”,每个节点内按照至多512个token的文本块切分。

通过一个适配器(一个两层MLP)将编码后的节点表征映射到LLM输入嵌入空间中。相当于将LLM上下文扩展512倍,能更好处理海量的代码仓库上下文。

使用图感知注意力掩码(Graph-aware Attention Mask)。替代LLM中原有的因果注意力,使注意力机制只作用于相邻节点间。类似于GNN的消息传递机制,能够让LLM直接感知和利用代码的结构依赖关系。

两阶段训练:结构理解+问题泛化

基于此模型架构,团队通过两阶段训练让LLM能够理解代码图的拓扑结构。

阶段一:子图重构预训练

为了训练CGM有效捕捉代码图的语义和结构信息,团队设计了一个“图生代码 (Graph-to-Code)”任务。从大型代码图中随机采样出子图(限制节点数量以控制输出代码长度),模型需要根据这些输入的子图(仅包含节点类型和连接关系,不含完整的代码内容)来重建出原始的代码片段。

然后采用层级化方法,保持重建代码的结构一致性和可读性。按照拓扑排序与行号顺序拼接仓库上下文:高级别节点(如REPO、PACKAGE)置于输出序列或文件的起始;文件节点通过拓扑排序确定顺序;文件内节点(如CLASS、FUNCTION)则按行号顺序拼接。

阶段二:噪声增强微调

此阶段使用真实的GitHub问题-修复补丁数据对CGM进行微调。

模型学习基于两项输入生成代码补丁:(i) 一个相关的代码子图;(ii) 一段文本提示,指明根据补丁可能需要修改的实际文件。为了提升模型的鲁棒性,特意在提示中引入了10%的噪声输入:例如,提示中可能包含一个实际上无需修改的不相关文件,或者遗漏至少一个本应被修改的关键文件。在训练中引入这种受控的噪声有助于模型更好地泛化到实际输入信息不完整或包含干扰的场景。

推理阶段:Graph-RAG框架替代Agent

最后,为了进一步提升实际应用能力,CGM构建了一个无Agent轻量化框架Graph-RAG。

它还原了人类程序员bug修复工作流,但比现有Agent方案效率更高。

核心模块数量从10个进一步精简到了4个:改写器→检索器→重排器→生成器(CGM模型)。

改写器(Rewriter) :改写问题描述,提取关键词与相关文件;

检索器(Retriever) :通过语义与结构检索,从代码图中抽取连通子图;

重排器(Reranker) :排序检索结果,选择最关键文件用于生成;

生成器(Reader) :结合子图与提示生成最终修复代码。

基于以上,CGM在多个测试基准中取得了领先成绩。具体如下——

实验结果

研究团队在多个主流基准上系统评估了 CGM 的性能,涵盖两个主要任务类别:(1)代码修复和(2)代码补全。

仓库级别的代码修复

在SWE-bench Lite Leaderboard上,CGM以44.00%的结果排名开源权重榜单第一。

在SWE-bench Verified上,CGM相比于最佳开源基线提升了10.20%至50.40%

对于Java项目,CGM在SWE-bench-java Verified上达到14.29%,则相比于最佳开源基线提升了4.4%。

这些结果表明CGM能够处理跨语言、跨项目的大规模仓库级Bug修复任务,展现出强大的结构理解与泛化能力。

仓库级别的代码补全

在复杂代码生成任务中,CGM在ComplexCodeEval和CrossCodeEval上也显著领先于同尺寸开源模型,特别是在需要跨文件推理和补全的场景下效果突出。

此外,研究团队在不同基座模型上(CodeLlama-7B和DeepSeek-Coder-7B)分别部署了CGM,并与近期RAG系统进行比较。结果显示,CGM具备很好通用性,可以适配多种基座模型,并且表现超越传统RAG方法。

总结来看,CGM不依赖复杂Agent系统,首次实现了在大模型中融合代码图模态,让AI像人类一样get仓库里文本和代码之间的复杂依赖关系,“真正理解一个项目”

更关键的是,它基于开源模型就能实现,不局限于特定模型。为企业和开发者提供了一个灵活、透明且可控的方案。

最后,CGM的技术论文、核心代码、模型权重与训练数据均已开源,感兴趣的同学可进一步了解详情。

  • 技术论文:https://arxiv.org/abs/2505.16901
  • 开源代码:https://github.com/codefuse-ai/CodeFuse-CGM
  • 模型权重:https://huggingface.co/codefuse-ai/CodeFuse-CGM-72B
  • 训练数据: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

  • 高效注意力架构:Rodimus(ICLR 2025)

https://arxiv.org/abs/2410.06577

  • 代码多任务微调框架:MFTCoder(KDD 2024)

https://arxiv.org/abs/2311.02303

本文来自微信公众号 “量子位”(ID:QbitAI),作者:明敏 ,36氪经授权发布。

+1
14

好文章,需要你的鼓励

参与评论
评论千万条,友善第一条
后参与讨论
提交评论0/1000

下一篇

抖音快手,YU7们的“第二战场”。

6小时前

36氪APP让一部分人先看到未来
36氪
鲸准
氪空间

推送和解读前沿、有料的科技创投资讯

一级市场金融信息和系统服务提供商

聚焦全球优秀创业者,项目融资率接近97%,领跑行业