不靠Agent,4步修复真Bug!蚂蚁CGM登顶SWE-Bench开源榜
moboyou 2025-07-03 00:20 15 浏览
机器之心报道
编辑:吴昕
Agentless+开源模型,也能高质量完成仓库级代码修复任务,效果媲美业界 SOTA 。
一、Agentless 、44% 与 NO.1
说到 AI 写代码的实力,大家最关心的还是一个问题:能不能真修 bug ?
首个全自动 AI 软件工程师 Devin 一出场就引爆了技术圈,其江湖地位也在权威基准 SWE-Bench 上被进一步坐实——
独立解决了 13.86% 的问题,远远甩开 GPT-4 仅有的 1.7% ,Claude2 也不过 4.8% 。
没过多久,Genie 又在同一测试中直接将得分拉升至 30.08% ,曾一度登顶全球最强 AI 程序员。
SWE-Bench 为何能赢得工业界、学术界和创业团队广泛关注?因为,它够真实。
这套由普林斯顿大学提出的测试集,任务全部来自真实的 GitHub 项目——
问题要么是开发者在生产环境中遇到的 bug ,要么是功能开发中的典型需求,难度大、上下文复杂,最大程度地还原了程序员在真实开发中的工作状态。
换句话说,能在 SWE-Bench 上拿高分的模型,必须具备一个经验丰富软件工程师的复杂技能和经验,而这些恰恰是传统代码生成 benchmark 中很难覆盖的。
考虑到 SWE-Bench 难度太高,团队也提出了稍微简单些的子集 SWE-Bench Lite ,即便如此,难度仍旧很高。
现有业界 SOTA 全部基于闭源模型,排行榜上的主力选手也大多是「豪华组合」:
闭源大模型(如 GPT-4o、Claude3.5 )+ Agent 架构(如 SWE-Agent ),靠大体量和复杂调度系统「堆」出来能力。
近日,蚂蚁集团另辟蹊径,给出一个完全不同的新解法:代码图模型 CGM( Code Graph Model ),基于开源模型实现了能与闭源媲美的性能——
在 SWE-BenchLite 公开排行榜上,CGM 能成功解决 44% 的问题,秒杀所有开源模型,位列第一;开源系统排名第六。
秒杀所有开源模型,位列第一
开源系统排名第六。
SWE-BenchLite测试平台上的结果
具体而言,此次开源的 CGM 在 SWE-Bench 上实现了三项突破——
首先,打破闭源垄断。首次使用开源的千问大模型,就能做到媲美 SOTA 的性能,并同步开放训练用的代码图数据。
其次,摒弃了复杂 Agent 架构,仅用 4 步轻量级 GraphRAG 流程,即可完成高效问题定位与修复。
第三,首创性地让大模型能直接读懂仓库级的代码图结构,链接了代码和图两个模态,让模型充分理解仓库级上下文。
目前,CGM 已正式开源,模型、代码、数据集均可在 HuggingFace 与 GitHub 获取:
- 论文:
- https://arxiv.org/abs/2505.16901
- 模型:
- https://huggingface.co/codefuse-ai/CodeFuse-CGM-72B
- 代码:
- https://github.com/codefuse-ai/CodeFuse-CGM
- 数据:
- https://huggingface.co/datasets/codefuse-ai/CodeGraph
事实上,CGM 的战绩从来不输强敌。
早在 2024 年 10 月,它就以 35.67% 的问题解决率拿下 SWE-Bench Lite 开源榜首;
两个月后再度登顶,解决率升至 41.67% 。
而这次最新版本再次刷新纪录,解决率来到 44%,实现了对开源赛道的「连续三杀」。
二、LLM+Agent 架构?看起来很美
写代码,可以说是 AI 大模型的「天赋技能」。ChatGPT 大火后,各种 AI 代码助手加速融入程序员的日常工作。
2023 年 9 月,蚂蚁推出 AI 代码助手 CodeFuse ,称要支持整个软件开发生命周期,涵盖设计、需求、编码、测试、部署、运维等关键阶段。
经过两年发展, CodeFuse 已逐步构建起较为完整的生态体系,其中,用于处理仓库级别任务的 CGM( Code Graph Model )成为关键支点之一。
现实开发中,真正考验代码模型的不是写几个函数,而是像 Issue 修复、代码审查这类仓库级任务。一个大型项目动辄成千上万行代码,上千个文件、成百上千个函数,类与模块之间继承、调用关系错综复杂——动一行,可能牵一片。看似只改一个函数,实则要理清一整片森林。
为了解决这类复杂任务,当前业内主流路径是基于 LLM Agent 架构。
例如,用户问「如何增加删除按钮」、「密码验证逻辑在哪个函数中」,系统会自动调度多个 Agent 各司其职,同时对仓库内的代码进行切片、embedding 计算、语义检索等操作,最终召回相关代码并生成响应或修改建议。
但这种方案,除了模型的可获取性受限,在真实场景中却暴露出不少「隐藏 bug 」。
首先,软件开发任务往往比较复杂。
「如何添加一个删除按钮」这一看似简单的需求,背后包含多个 agent(「节点」)。节点越多,越不可控。任何一个出错(例如错判了文件位置、召回了无关代码)都会影响后续流程,造成误差积累。
而且,agent 越多,执行路径越长,通信与计算成本也水涨船高。
其次,训练数据跟不上系统复杂度。
像 SWE-bench 这样的评测数据集,虽然真实、权威,但提供的是端到端的样本——只标注了起点(问题)和终点(修复),中间 agent 们「怎么拆解任务、怎么协作」的路径信息往往缺失。
换句话说,任务精细化了,但数据却仍是粗粒度的,训练难度反而上升。
再者,语言模型「线性读代码」的方式本身就存在局限。
传统做法通常把整个文件「铺平」为一长串 token ,忽略了代码天然的结构性。而代码仓库本质上更像一张图——函数之间调用、类之间继承、模块之间依赖,结构复杂但规律明确。
想让大模型真正具备仓库级别的理解力,一个可行的技术路径就是把结构直接喂进去。
三、「结构感知」的 Agentless 路线
是否可以在不依赖 agent 的情况下,使用开源大模型高效完成仓库级代码任务?蚂蚁全模态代码算法团队找到了答案,提出 CGM( Code Graph Model )架构——
不依赖繁复的 agent 调度,而是首创将代码仓库图结构作为模态输入,直接融入大模型中,一举捕获函数调用、模块依赖、类继承等复杂关系。
这相当于给大模型戴上一副「工程眼镜」,让原本隐而不显的代码实体(文件、类、函数、变量等)的各种关系,立刻清晰可见。
而这一能力的实现,离不开三个关键突破。
1、多粒度代码图谱建模,捕捉结构信息
CGM 会将代码仓库建模为图数据结构。为捕捉仓库图结构信息,团队首先利用程序分析技术将整个代码仓库转换为对应代码图(如图1)。代码图中的节点类型和边类型如下:
- 节点类型:涵盖 7 类代码实体( REPO / PACKAGE / FILE / TEXTFILE/ CLASS / FUNCTION / ATTRIBUTE )
- 边类型:包含 5 种依赖关系( contains / calls / imports / extends /implements )
图1仓库代码图
在代码图中,contains 边捕捉了代码实体之间的层次依赖,其余边类型则捕捉了代码实体之间的语义依赖。在构建代码图时,也包含对复杂依赖的处理。
- 继承:支持解析多重继承(基于 CHA 算法)。
- 调用:保守解析动态调用,确保语义依赖完整。
这一建模方式目前已支持 Python 和 Java 。
通过建模,原本零散的代码会被组织成一个有结构、有方向的网络。CGM 能像程序员第一次阅读陌生仓库时那样,迅速在脑海中生成一张「代码依赖图谱」,看清谁调用谁、谁影响谁。
2、两阶段训练,结构-语义双模态对齐
有了图结构,接下来就要教会 LLM「读懂」它:不仅理解单个节点的语义,还能在图结构上进行高效推理,从而实现结构和语义的深度融合。
首先,用 CodeT5+ 编码每个节点的语义信息,并通过适配器将其映射到大模型输入空间,确保大模型能读懂节点文本内容(语义对齐);
其次,将图的邻接矩阵转化为一个图感知注意力掩码( Graph-awareAttentionMask ),替换掉 LLM 中处理节点 token 时的标准因果注意力掩码。
这一改动巧妙地模拟了图神经网络中的「消息传递」机制,让注意力计算只关注图中相邻节点之间信息流动,从而让 LLM 能够直接感知和利用代码的结构依赖关系。
训练过程包括预训练与微调两阶段,分别夯实「理解力」与「泛化能力」:
- 子图重构预训练,是根据输入子图重构源代码,建立从代码图到 LLM 语义带格式的空间的映射,夯实结构与语义融合基础;
- 噪声增强微调,此阶段使用真实的 GitHub 问题-修复补丁数据对 CGM 进行微调。为了提升模型的鲁棒性,团队特意在提示中引入了 10% 的噪声输入。例如,提示中可能包含一个实际上无需修改的不相关文件,或者遗漏至少一个本应被修改的关键文件。在训练中引入这种受控的噪声有助于模型更好地泛化到实际输入信息不完整或包含干扰的场景。
3、GraphRAG 框架:R4 链路高效生成补丁
为了把能力用起来,团队还设计了轻量化的 GraphRAG 框架。
相比于现有的 Agentless 框架,GraphRAG 进一步将核心模块数量从 10 个精简到 4 个关键模块——
改写器( Rewriter )、检索器( Retriever )、重排器( Reranker )和生成器( Reader )。
模块之间顺序执行、高效协同,还原程序员日常修 bug 的思维路径与操作链路,在真实场景中高效、准确地定位问题并生成修复补丁。
当然,对于有 SWE 需求的企业而言,CGM 的吸引力远不止榜单成绩。
在保障核心数据安全可控的同时,CGM 为企业带来了更大的自由度——
不仅规避了隐私泄露风险,也免去了持续支付高昂 API 费用的负担。企业可以基于自身业务需求,对模型进行深度定制和优化部署。
像 DeepSeek-V3 这样的开源高性能大模型已成为不少私有化部署的首选,CGM 架构也会吸引有上述需求企业的注意力。
正如 OpenAI CEO SamAltman 所言:「2025 年底前,软件工程将发生翻天覆地的变化。」CGM,无疑是这场变革中,掷地有声的一步。
如果你对蚂蚁全模态代码算法团队早期提出的代码大模型与代码图研究感兴趣,欢迎进一步阅读:
- 最全代码大模型综述(TMLR):
https://github.com/codefuse-ai/Awesome-Code-LLM
- 代码图模型早期研究GALLa(ACL 2025):
https://github.com/codefuse-ai/GALLa
- 多任务代码微调框架MFTCoder(KDD 2024):
https://github.com/codefuse-ai/MFTCoder
- 高效注意力架构Rodimus*(ICLR 2024):
https://github.com/codefuse-ai/rodimus
相关推荐
- Excel技巧:SHEETSNA函数一键提取所有工作表名称批量生产目录
-
首先介绍一下此函数:SHEETSNAME函数用于获取工作表的名称,有三个可选参数。语法:=SHEETSNAME([参照区域],[结果方向],[工作表范围])(参照区域,可选。给出参照,只返回参照单元格...
- Excel HOUR函数:“小时”提取器_excel+hour函数提取器怎么用
-
一、函数概述HOUR函数是Excel中用于提取时间值小时部分的日期时间函数,返回0(12:00AM)到23(11:00PM)之间的整数。该函数在时间数据分析、考勤统计、日程安排等场景中应用广泛。语...
- Filter+Search信息管理不再难|多条件|模糊查找|Excel函数应用
-
原创版权所有介绍一个信息管理系统,要求可以实现:多条件、模糊查找,手动输入的内容能去空格。先看效果,如下图动画演示这样的一个效果要怎样实现呢?本文所用函数有Filter和Search。先用filter...
- FILTER函数介绍及经典用法12:FILTER+切片器的应用
-
EXCEL函数技巧:FILTER经典用法12。FILTER+切片器制作筛选按钮。FILTER的函数的经典用法12是用FILTER的函数和切片器制作一个筛选按钮。像左边的原始数据,右边想要制作一...
- office办公应用网站推荐_office办公软件大全
-
以下是针对Office办公应用(Word/Excel/PPT等)的免费学习网站推荐,涵盖官方教程、综合平台及垂直领域资源,适合不同学习需求:一、官方权威资源1.微软Office官方培训...
- WPS/Excel职场办公最常用的60个函数大全(含卡片),效率翻倍!
-
办公最常用的60个函数大全:从入门到精通,效率翻倍!在职场中,WPS/Excel几乎是每个人都离不开的工具,而函数则是其灵魂。掌握常用的函数,不仅能大幅提升工作效率,还能让你在数据处理、报表分析、自动...
- 收藏|查找神器Xlookup全集|一篇就够|Excel函数|图解教程
-
原创版权所有全程图解,方便阅读,内容比较多,请先收藏!Xlookup是Vlookup的升级函数,解决了Vlookup的所有缺点,可以完全取代Vlookup,学完本文后你将可以应对所有的查找难题,内容...
- 批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数
-
批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数在电商运营、物流对账等工作中,经常需要统计快递“揽收到签收”的耗时——比如判断某快递公司是否符合“3天内送达”的服务承...
- Excel函数公式教程(490个实例详解)
-
Excel函数公式教程(490个实例详解)管理层的财务人员为什么那么厉害?就是因为他们精通excel技能!财务人员在日常工作中,经常会用到Excel财务函数公式,比如财务报表分析、工资核算、库存管理等...
- Excel(WPS表格)Tocol函数应用技巧案例解读,建议收藏备用!
-
工作中,经常需要从多个单元格区域中提取唯一值,如体育赛事报名信息中提取唯一的参赛者信息等,此时如果复制粘贴然后去重,效率就会很低。如果能合理利用Tocol函数,将会极大地提高工作效率。一、功能及语法结...
- Excel中的SCAN函数公式,把计算过程理清,你就会了
-
Excel新版本里面,除了出现非常好用的xlookup,Filter公式之外,还更新一批自定义函数,可以像写代码一样写公式其中SCAN函数公式,也非常强大,它是一个循环函数,今天来了解这个函数公式的计...
- Excel(WPS表格)中多列去重就用Tocol+Unique组合函数,简单高效
-
在数据的分析和处理中,“去重”一直是绕不开的话题,如果单列去重,可以使用Unique函数完成,如果多列去重,如下图:从数据信息中可以看到,每位参赛者参加了多项运动,如果想知道去重后的参赛者有多少人,该...
- Excel(WPS表格)函数Groupby,聚合统计,快速提高效率!
-
在前期的内容中,我们讲了很多的统计函数,如Sum系列、Average系列、Count系列、Rank系列等等……但如果用一个函数实现类似数据透视表的功能,就必须用Groupby函数,按指定字段进行聚合汇...
- Excel新版本,IFS函数公式,太强大了!
-
我们举一个工作实例,现在需要计算业务员的奖励数据,右边是公司的奖励标准:在新版本的函数公式出来之前,我们需要使用IF函数公式来解决1、IF函数公式IF函数公式由三个参数组成,IF(判断条件,对的时候返...
- Excel不用函数公式数据透视表,1秒完成多列项目汇总统计
-
如何将这里的多组数据进行汇总统计?每组数据当中一列是不同菜品,另一列就是该菜品的销售数量。如何进行汇总统计得到所有的菜品销售数量的求和、技术、平均、最大、最小值等数据?不用函数公式和数据透视表,一秒就...
- 一周热门
- 最近发表
-
- Excel技巧:SHEETSNA函数一键提取所有工作表名称批量生产目录
- Excel HOUR函数:“小时”提取器_excel+hour函数提取器怎么用
- Filter+Search信息管理不再难|多条件|模糊查找|Excel函数应用
- FILTER函数介绍及经典用法12:FILTER+切片器的应用
- office办公应用网站推荐_office办公软件大全
- WPS/Excel职场办公最常用的60个函数大全(含卡片),效率翻倍!
- 收藏|查找神器Xlookup全集|一篇就够|Excel函数|图解教程
- 批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数
- Excel函数公式教程(490个实例详解)
- Excel(WPS表格)Tocol函数应用技巧案例解读,建议收藏备用!
- 标签列表
-
- 外键约束 oracle (36)
- oracle的row number (32)
- 唯一索引 oracle (34)
- oracle in 表变量 (28)
- oracle导出dmp导出 (28)
- 多线程的创建方式 (29)
- 多线程 python (30)
- java多线程并发处理 (32)
- 宏程序代码一览表 (35)
- c++需要学多久 (25)
- css class选择器用法 (25)
- css样式引入 (30)
- css教程文字移动 (33)
- php简单源码 (36)
- php个人中心源码 (25)
- php小说爬取源码 (23)
- 云电脑app源码 (22)
- html画折线图 (24)
- docker好玩的应用 (28)
- linux有没有pe工具 (34)
- 可以上传视频的网站源码 (25)
- 随机函数如何生成小数点数字 (31)
- 随机函数excel公式总和不变30个数据随机 (33)
- 所有excel函数公式大全讲解 (22)
- 有动图演示excel函数公式大全讲解 (32)
