百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

不靠Agent,4步修复真Bug!蚂蚁CGM登顶SWE-Bench开源榜

moboyou 2025-07-03 00:20 4 浏览

机器之心报道

编辑:吴昕

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



相关推荐

黄道十二宫杀手密码51年后被破解,来自两位程序员和数学家合作

杨净边策发自凹非寺量子位报道|公众号QbitAI黄道十二宫杀手(ZodiacKiller)可能是世界上最知名的高智商连环杀手,52年来从未被抓获。他的事迹已被改编成了多部好莱坞电影。△...

深入剖析MediaCodec解码器的基本原理及使用「建议新手收藏」

一,MediaCodec工作原理MediaCodec类Android提供的用于访问低层多媒体编/解码器接口,它是Android低层多媒体架构的一部分,通常与MediaExtractor、MediaMu...

Retrofit WebService 实践

前言作为Android开发,平时和后端聊得最多的除了喝酒就是接口。常用语:Restful和WebService,前者现在聊得多,后者以前聊得多。默认含义分别为:Restful:HTTP协议...

建议收藏!175部4K UHD版本经典高分电影洗版参考目录(2015之前)

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:1L789近两年很多经典高分老电影陆续开始重制成4KUHD版本,虽然我早已将这些电影的BD蓝光版收入,但纠结一番后还是花了不少时间将其全部...

2 个月的面试亲身经历告诉大家,如何进入 BAT 等大厂?

这篇文章主要是从项目来讲的,所以,从以下几个方面展开。怎么介绍项目?怎么介绍项目难点与亮点?你负责的模块?怎么让面试官满意?怎么介绍项目?我在刚刚开始面试的时候,也遇到了这个问题,也是我第一个思考的问...

详解Android官推Kotlin-First的图片加载库

前言Coil是一个非常年轻的图片加载库,在2020年10月22日才发布了1.0.0版本,但却受到了Android官方的推广,在AndroidDevelopersBackst...

webview 渲染机制:硬件加速方式渲染的Android Web

webview渲染是什么?webview渲染是用于展现web页面的控件;webview可以内嵌在移动端,实现前端的混合式开发,大多数混合式开发框架都是基于webview模式进行二次开发的w...

因为我对Handler的了解,居然直接给我加了5K

1Handler是什么?android提供的线程切换工具类。主要的作用是通过handler实现从子线程切换回主线程进行ui刷新操作。1.1为什么Handler能实现线程切换?在创建Handler的...

「经典总结」一个View,从无到有会走的三个流程,你知道吗?

前言一个View,从无到有会走三个流程,也就是老生常谈的measure,layout,draw三流程我们都知道Android视图是由一层一层构成的层级结构,直白点说,就是父View包含子View而子V...

这些垃圾代码是谁写的?哦,原来小丑竟是我自己

程序员是最喜欢自嘲、自黑的群体之一,比如他们常常称自己是“码农”、“程序猿”,再比如他们的工作明明是写代码、修Bug,也有人调侃说:“明明我们是修代码、写Bug!”本文整理了一些程序员“修代码、写...

手把手教你爬取天堂网1920*1080大图片(批量下载)——理论篇

/1前言/平时我们要下载图片,要要一个一个点击下载是不是觉得很麻烦?那有没有更加简便的方法呢?答案是肯定的,这里我们以天堂网为例,批量下载天堂网的图片。/2项目准备工作/首先我们第一步我们要安装...

音视频开发需要你懂得 ffmpeg 开源库的编码原理

引言音视频开发需要你懂得音视频中一些基本概念,针对编解码而言,我们必须提前懂得编解码器的一些特性,码流的结构,码流中一些重要信息如sps,pps,vps,startcode以及基本的工作原理,...

「8年老 Android 开发」最全最新 Android 面试题系列全家桶(带答案)

下面跟大家分享的这些面试题都是互联网大厂真实流出的面试内容,每个问题都附带完整详细的答案,不像网上的那些资料三教九流有的甚至还没答案,这些面试题我也是经过日积月累才整理出来的精品资料。这些面试题主要是...

手把手教你爬取天堂网1920*1080大图片(批量下载)——实战篇

/1前言/上篇文章手把手教你爬取天堂网1920*1080大图片(批量下载)——理论篇我们谈及了天堂网站图片抓取的理论,这篇文章将针对上篇文章的未尽事宜进行完善,完成图片的批量抓取。/2图片网址解...

PHP 8.1.9 更新发布

CLI:修复了内置服务器通过PHP_CLI_server_WORKERS环境变量的潜在溢出。修正了GH-8952(不再可能有意关闭std句柄)。Core:修复了GH-8923的错误(Windows上的...