找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 77|回复: 0

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

[复制链接]

153

主题

1

回帖

467

积分

管理员

积分
467
发表于 2025-6-27 16:01:32 | 显示全部楼层 |阅读模式
<p data-vmark="8aaf" style="text-align: left;">AI 自动修 bug,解决率达 44%!这是全球开源模型的最新最强水平。</p><p data-vmark="6e3e" style="text-align: left;">来自蚂蚁的开源新模型,在 SWE-bench Lite 上超越所有开源方案,性能媲美闭源模型。</p><p data-vmark="0428" style="text-align: center;"><img src="https://img.ithome.com/newsuploadfiles/2025/6/4301d184-92aa-44a2-9698-3b20f3879f7b.png?x-bce-process=image/format,f_auto" w="1080" h="211" data-type="png" data-weibo="0" data-vmark="321a" class="no-alt-img"></p><p data-vmark="b6ba" style="text-align: center;"><img src="https://img.ithome.com/newsuploadfiles/2025/6/ea242eef-4e3f-4cfa-8ddc-819ecba45b6f.png?x-bce-process=image/format,f_auto" w="1080" h="432" data-type="png" data-weibo="1" data-vmark="d2a7" class="no-alt-img"></p><p data-vmark="8e18" style="text-align: left;">具体表现如下,在 SWE-bench Lite 上:</p><ul class=" list-paddingleft-2"><li><p data-vmark="771c">所有开源模型方法(Open Weight Model)中排名<strong>第一</strong>;</p></li><li><p data-vmark="88bf">所有开源系统方法(Open Source Syestem)中排名第六;</p></li><li><p data-vmark="ab0e">总体排名第 14;</p></li><li><p data-vmark="ff08">优于目前榜单最好开源模型“KGCompass”7.33%。</p></li></ul><p data-vmark="2953" style="text-align: center;"><img src="https://img.ithome.com/newsuploadfiles/2025/6/0a919df2-0f65-4ff2-8e8e-a104033673a0.png?x-bce-process=image/format,f_auto" w="1080" h="565" data-type="png" data-weibo="2" data-vmark="e9de" class="no-alt-img"></p><p data-vmark="94ed" style="text-align: left;">他们首创将<strong>仓库代码图模态融入大模型</strong>(Code Graph Model, CGM),让大语言模型能直接理解代码图,更高效修复 bug、补全代码。</p><p data-vmark="466f" style="text-align: left;">这彻底摆脱对黑盒模型(如 GPT-4 或 Claude 3.7 等)和复杂 Agent 工作流程的依赖,实现更加可控、透明、安全的 SE 自动化。</p><p data-vmark="3b78" style="text-align: left;">而且,<strong>CGM 完全基于开源模型</strong>。要知道,开源模型在 SWE-bench 上的表现通常不够好,此前几乎所有 SOTA 级方案都是基于闭源模型实现。而 CGM 基于 Qwen 模型,做到了比肩闭源模型的水平。</p><p data-vmark="47b0" style="text-align: left;">CGM <strong>仅需 4 步</strong>就能快速定位、生成补丁,省去了 Agent 方案中复杂的编排过程,效率直线 up。</p><p data-vmark="1f1f" style="text-align: center;"><img src="https://img.ithome.com/newsuploadfiles/2025/6/3e524f34-26a9-45af-b516-da21f8582acc.jpg?x-bce-process=image/format,f_auto" w="1080" h="451" data-type="jpg" data-weibo="3" data-vmark="8702" class="no-alt-img"></p><h2 data-vmark="61ba">让 AI 真正理解大模型代码库</h2><p data-vmark="6895" style="text-align: left;">大模型趋势以来,AI 编程迅速崛起,尤其是在写函数这类小任务上的表现出色,比如在 HumanEval 等基准测试上,许多模型的准确率已经超过 90%。</p><p data-vmark="1f4f" style="text-align: left;">然而真实的软件工程远比”写一个函数“复杂得多。像 Bug 修复、功能增强这样的任务,通常需要跨文件、跨模块操作,并要求模型理解项目中复杂的结构、依赖关系和类的继承体系。</p><p data-vmark="e806" style="text-align: left;">现在的主流方法通常是使用<strong>基于闭源模型的 Agent</strong>。它们可以模拟人类程序员行为,如观察代码、调用工具、多轮交互等完成任务。</p><p data-vmark="68e3" style="text-align: left;">但这类方法也存在几个问题:</p><ul class=" list-paddingleft-2"><li><p data-vmark="261c">行为路径不可控,容易积累推理误差;</p></li><li><p data-vmark="3afe">依赖 GPT-4、Claude 等闭源模型,难以私有部署或定制;</p></li><li><p data-vmark="ff24">工程成本高,效率不高。</p></li></ul><p data-vmark="f0b3" style="text-align: left;">与此同时,当前使用开源模型的方案,很难实现 SOTA 级效果。</p><p data-vmark="a70d" style="text-align: left;">为此研究团队提出:<strong>能否只用开源模型、不依赖 Agent,解决仓库级任务?CGM 由此而来。</strong></p><h3 data-vmark="604e">🔍图结构与大模型深度融合</h3><p data-vmark="1af9" style="text-align: left;">CGM 采用类似 Vision-Language Model(VLM)的跨模态建模方式。它将传统 LLM 的文本理解能力与代码仓库的结构图(Graph)结合,形成一种图-语言多模态模型。模型核心融合了两个模态:</p><ul class=" list-paddingleft-2"><li><p data-vmark="5ef3">图模态:将仓库构建为结构化图,节点包括函数、类、文件、包等 7 种类型,边表示调用、包含、继承等依赖;</p></li><li><p data-vmark="ac68">语言模态:用户输入的自然语言描述和代码提示,驱动模型生成 patch 或回答。</p></li></ul><p data-vmark="67a0" style="text-align: center;"><img src="https://img.ithome.com/newsuploadfiles/2025/6/82bca07d-ebc6-4f01-a03f-6a169cab6b13.png?x-bce-process=image/format,f_auto" w="504" h="495" data-type="png" data-weibo="4" data-vmark="f088" class="no-alt-img"></p><p data-vmark="d1c4" style="text-align: left;">模型输入为代码图和文本形式的 prompt,将在 LLM 中对结构-语义进行双模态对齐。</p><p data-vmark="deee" style="text-align: left;">具体结构融合方法如下:</p><p data-vmark="fccf" style="text-align: left;">使用小型编码器(CodeT5+)对每个节点进行编码,压缩为单个“节点 token”,每个节点内按照至多 512 个 token 的文本块切分。</p><p data-vmark="0b5b" style="text-align: left;">通过一个适配器(一个两层 MLP)将编码后的节点表征映射到 LLM 输入嵌入空间中。相当于将 LLM 上下文扩展 512 倍,能更好处理海量的代码仓库上下文。</p><p data-vmark="5cb8" style="text-align: left;">使用图感知注意力掩码(Graph-aware Attention Mask)。替代 LLM 中原有的因果注意力,使注意力机制只作用于相邻节点间。类似于 GNN 的消息传递机制,能够让 LLM 直接感知和利用代码的结构依赖关系。</p><h3 data-vmark="cd4e">✏️两阶段训练:结构理解 + 问题泛化</h3><p data-vmark="22e8" style="text-align: left;">基于此模型架构,团队通过两阶段训练让 LLM 能够理解代码图的拓扑结构。</p><ul class=" list-paddingleft-2"><li><p data-vmark="9526">阶段一:子图重构预训练</p></li></ul><p data-vmark="3905" style="text-align: left;">为了训练 CGM 有效捕捉代码图的语义和结构信息,团队设计了一个“图生代码 (Graph-to-Code)”任务。从大型代码图中随机采样出子图(限制节点数量以控制输出代码长度),模型需要根据这些输入的子图(仅包含节点类型和连接关系,不含完整的代码内容)来重建出原始的代码片段。</p><p data-vmark="2966" style="text-align: left;">然后采用层级化方法,保持重建代码的结构一致性和可读性。按照拓扑排序与行号顺序拼接仓库上下文:高级别节点(如 REPO、PACKAGE)置于输出序列或文件的起始;文件节点通过拓扑排序确定顺序;文件内节点(如 CLASS、FUNCTION)则按行号顺序拼接。</p><ul class=" list-paddingleft-2"><li><p data-vmark="04f5">阶段二:噪声增强微调</p></li></ul><p data-vmark="5963" style="text-align: left;">此阶段使用真实的 GitHub 问题-修复补丁数据对 CGM 进行微调。</p><p data-vmark="afd7" style="text-align: left;">模型学习基于两项输入生成代码补丁:(i) 一个相关的代码子图;(ii) 一段文本提示,指明根据补丁可能需要修改的实际文件。为了提升模型的鲁棒性,特意在提示中引入了 10% 的噪声输入:例如,提示中可能包含一个实际上无需修改的不相关文件,或者遗漏至少一个本应被修改的关键文件。在训练中引入这种受控的噪声有助于模型更好地泛化到实际输入信息不完整或包含干扰的场景。</p><h3 data-vmark="6fb8">📎推理阶段:Graph-RAG 框架替代 Agent</h3><p data-vmark="f63f" style="text-align: left;">最后,为了进一步提升实际应用能力,CGM 构建了一个无 Agent 轻量化框架 Graph-RAG。</p><p data-vmark="d2b2" style="text-align: left;">它还原了人类程序员 bug 修复工作流,但比现有 Agent 方案效率更高。</p><p data-vmark="795a" style="text-align: left;"><strong>核心模块数量从 10 个进一步精简到了 4 个</strong>:改写器 → 检索器 → 重排器 → 生成器(CGM 模型)。</p><ul class=" list-paddingleft-2"><li><p data-vmark="709a">改写器(Rewriter):改写问题描述,提取关键词与相关文件;</p></li><li><p data-vmark="a12d">检索器(Retriever):通过语义与结构检索,从代码图中抽取连通子图;</p></li><li><p data-vmark="3c37">重排器(Reranker):排序检索结果,选择最关键文件用于生成;</p></li><li><p data-vmark="b693">生成器(Reader):结合子图与提示生成最终修复代码。</p></li></ul><p data-vmark="33d3" style="text-align: center;"><img src="https://img.ithome.com/newsuploadfiles/2025/6/3e646c8d-9b3e-4cec-a85e-4c1df0ec8ce6.png?x-bce-process=image/format,f_auto" w="1000" h="344" data-type="png" data-weibo="5" data-vmark="ea51" class="no-alt-img"></p><p data-vmark="7dc0" style="text-align: left;">基于以上,CGM 在多个测试基准中取得了领先成绩。具体如下 ——</p><h2 data-vmark="3991">实验结果</h2><p data-vmark="e9f0" style="text-align: left;">研究团队在多个主流基准上系统评估了 CGM 的性能,涵盖两个主要任务类别:(1)代码修复和(2)代码补全。</p><h3 data-vmark="6a3e">仓库级别的代码修复</h3><p data-vmark="2344" style="text-align: left;">在 SWE-bench Lite Leaderboard 上,CGM 以 44.00% 的结果排名开源权重榜单第一。</p><p data-vmark="b687" style="text-align: center;"><img src="https://img.ithome.com/newsuploadfiles/2025/6/0aecfca9-9b3b-4f64-831b-001b7bb3465a.png?x-bce-process=image/format,f_auto" w="1080" h="565" data-type="png" data-weibo="6" data-vmark="6aed" class="no-alt-img"></p><p data-vmark="e32b" style="text-align: left;">在 SWE-bench Verified 上,CGM 相比于最佳开源基线提升了 10.20%,至 50.40%;</p><p data-vmark="38c0" style="text-align: left;">对于 Java 项目,CGM 在 SWE-bench-java Verified 上达到 14.29%,则相比于最佳开源基线提升了 4.4%。</p><p data-vmark="09db" style="text-align: center;"><img src="https://img.ithome.com/newsuploadfiles/2025/6/84cc63ed-adfc-45a9-a660-7a0cefcc496e.png?x-bce-process=image/format,f_auto" w="712" h="260" data-type="png" data-weibo="7" data-vmark="2575" class="no-alt-img"></p><p data-vmark="26a4" style="text-align: left;">这些结果表明 CGM 能够处理跨语言、跨项目的大规模仓库级 Bug 修复任务,展现出强大的结构理解与泛化能力。</p><h3 data-vmark="e435">仓库级别的代码补全</h3><p data-vmark="8184" style="text-align: left;">在复杂代码生成任务中,CGM 在 ComplexCodeEval 和 CrossCodeEval 上也显著领先于同尺寸开源模型,特别是在需要跨文件推理和补全的场景下效果突出。</p><p data-vmark="e3a0" style="text-align: center;"><img src="https://img.ithome.com/newsuploadfiles/2025/6/39b2fdbe-74ec-45e9-9d09-5df56b547deb.png?x-bce-process=image/format,f_auto" w="744" h="219" data-type="png" data-weibo="8" data-vmark="bd9d" class="no-alt-img"></p><p data-vmark="2842" style="text-align: left;">此外,研究团队在不同基座模型上(CodeLlama-7B 和 DeepSeek-Coder-7B)分别部署了 CGM,并与近期 RAG 系统进行比较。结果显示,CGM 具备很好通用性,可以适配多种基座模型,并且表现超越传统 RAG 方法。</p><p data-vmark="eca5" style="text-align: center;"><img src="https://img.ithome.com/newsuploadfiles/2025/6/177347b6-2ad5-4ded-9658-586c8d13316a.png?x-bce-process=image/format,f_auto" w="748" h="546" data-type="png" data-vmark="4a47" class="no-alt-img"></p><p data-vmark="8d10" style="text-align: left;">总结来看,CGM 不依赖复杂 Agent 系统,首次实现了在大模型中融合代码图模态,让 AI 像人类一样 get 仓库里文本和代码之间的复杂依赖关系,“真正理解一个项目”。</p><p data-vmark="3318" style="text-align: left;">更关键的是,它基于开源模型就能实现,不局限于特定模型。为企业和开发者提供了一个灵活、透明且可控的方案。</p><p style="text-align: left;" data-vmark="4a5f">🚀最后,CGM 的技术论文、核心代码、模型权重与训练数据均已开源,感兴趣的同学可进一步了解详情。</p><ul class=" list-paddingleft-2"><li><p data-vmark="d181"><span class="no-auto-spacing">技术论文:<span class="link-text-start-with-http">https://arxiv.org/abs/2505.16901</span></span></p></li><li><p data-vmark="07f6"><span class="no-auto-spacing">开源代码:<span class="link-text-start-with-http">https://github.com/codefuse-ai/CodeFuse-CGM</span></span></p></li><li><p data-vmark="16b9"><span class="no-auto-spacing">模型权重:<span class="link-text-start-with-http">https://huggingface.co/codefuse-ai/CodeFuse-CGM-72B</span></span></p></li><li><p data-vmark="2cae"><span class="no-auto-spacing">训练数据:<span class="link-text-start-with-http">https://huggingface.co/datasets/codefuse-ai/CodeGraph</span></span></p></li></ul><p style="text-align: left;" data-vmark="c802"><span class="no-auto-spacing">😎团队此前工作:</span></p><ul class=" list-paddingleft-2"><li><p data-vmark="0e9f"><span class="no-auto-spacing">Code LLM综述:Awesome-Code-LLM(TMLR)<span class="link-text-start-with-http">https://github.com/codefuse-ai/Awesome-Code-LLM</span></span></p></li><li><p data-vmark="1b80"><span class="no-auto-spacing">Graph+LLM前序研究:GALLa(ACL 2025)<span class="link-text-start-with-http">https://github.com/codefuse-ai/GALLa</span></span></p></li><li><p data-vmark="e1fe"><span class="no-auto-spacing">高效注意力架构:Rodimus(ICLR 2025)<span class="link-text-start-with-http">https://arxiv.org/abs/2410.06577</span><br></span></p></li><li><p data-vmark="58d3"><span class="no-auto-spacing">代码多任务微调框架:MFTCoder(KDD 2024)<span class="link-text-start-with-http">https://arxiv.org/abs/2311.02303</span></span></p></li></ul><p class="it-news-source-tip" data-vmark="2fbd"><span class="font-color-greytip">本文来自微信公众号:<a href="https://mp.weixin.qq.com/s/Y-vqZG2dQMOwvXTinDbT1Q" target="_blank">量子位(ID:QbitAI)</a>,作者:明敏</span></p>
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2025-10-28 01:29 , Processed in 0.032600 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表