蚂蚁CGM:不依赖Agent,用代码图重构AI软件工程的未来

温故智新AIGC实验室

蚂蚁集团推出的代码图模型(CGM)在权威基准SWE-Bench Lite上取得了44%的真实Bug修复率,超越所有开源模型并媲美闭源SOTA。其核心创新在于摒弃了复杂的Agent架构,转而通过直接建模代码图结构,赋予大模型仓库级代码理解力,预示着AI软件工程领域的新范式。

在人工智能浪潮席卷各行各业的当下,软件工程领域正经历一场深刻的变革。从最初的代码自动补全,到如今能够自主修复复杂Bug的AI软件工程师,我们正目睹着智能系统如何逐步承担起以往只有人类才能胜任的任务。然而,这场变革并非坦途。近期,蚂蚁集团全模态代码算法团队提出了一种名为**代码图模型(CGM)**的全新范式,在业界公认的软件工程基准SWE-Bench Lite上取得了令人瞩目的成就:其Bug修复率高达44%,不仅遥遥领先于所有开源模型,甚至能与基于昂贵闭源大模型和复杂Agent架构的领先系统相媲美1。这一突破性进展,不仅展示了开源AI在解决真实世界复杂问题上的巨大潜力,更重要的是,它挑战了当前AI软件工程的主流技术路径,为我们描绘了一个更加高效、可控且结构感知的未来。

从Agent到Agentless:范式转变的逻辑

长期以来,业界对于AI能否真正胜任“修Bug”这项复杂任务,一直持观望态度。毕竟,一个大型软件项目往往包含成千上万行代码,文件、函数、类之间交织着错综复杂的继承与调用关系。修复一个看似简单的Bug,可能需要理解整个“代码森林”的内部逻辑。普林斯顿大学推出的SWE-Bench基准测试,正是为了模拟这种真实世界的复杂性而生,其任务全部源于真实的GitHub项目,旨在衡量AI系统是否具备经验丰富的软件工程师所必需的综合能力1

为了应对SWE-Bench这类仓库级任务的挑战,当前业界主流的解决方案是采用大型语言模型(LLM)与Agent架构相结合的模式。这种方案的核心思想是将复杂任务拆解为一系列子任务,并通过多个Agent(智能体)的协作与调度来完成。例如,一个Agent可能负责代码切片,另一个负责语义检索,再由一个总控Agent协调它们生成最终的修改建议。然而,看似精巧的Agent架构在实际应用中却暴露出诸多“隐藏Bug”:

  • 误差累积与不可控性:任务拆解越细致,Agent节点越多,系统就越不可控。任何一个Agent的判断失误(如文件位置错判、无关代码召回),都可能导致后续流程的误差累积,最终影响修复质量。
  • 高昂的成本:Agent之间的频繁通信与计算,带来了显著的计算和时间成本,尤其是在面对大规模代码仓库时,效率问题更为突出。
  • 训练数据与系统复杂度的错位:SWE-Bench等评测数据集通常只提供端到端的“问题-修复”样本,却缺失Agent内部任务拆解与协作的精细路径信息。这意味着,尽管任务被精细化,但训练数据的粗粒度反而增加了模型学习的难度。
  • 大模型“线性读代码”的局限:传统的LLM通常将整个代码文件“铺平”为一长串Token进行处理,这忽视了代码本身固有的层次化和结构化特征。代码仓库本质上更像一张复杂的“图”,函数调用、类继承、模块依赖等关系构成了其核心逻辑。线性理解方式难以捕捉这些深层结构,导致模型在面对复杂上下文时理解能力受限。

正是基于对这些痛点的深刻洞察,蚂蚁集团另辟蹊径,提出了“Agentless”路线,试图在不依赖繁复Agent调度的前提下,让开源大模型也能高效完成仓库级代码任务。

代码图模型:深度理解与结构感知

CGM的核心在于首创性地将代码仓库的图结构直接作为一种模态输入,融入到大模型中1。这相当于为大模型提供了一副“工程眼镜”,使其能够直接“看到”代码实体(文件、类、函数、变量等)之间复杂的逻辑关系。实现这一创新能力,离不开以下三个关键突破:

  1. 多粒度代码图谱建模,捕捉结构信息: CGM首先利用程序分析技术,将整个代码仓库建模为一张多粒度的图数据结构。这张图包含了7类节点(REPOPACKAGEFILETEXTFILECLASSFUNCTIONATTRIBUTE)和5种边类型(containscallsimportsextendsimplements1。这些节点和边共同捕捉了代码实体之间的层次依赖和语义依赖。例如,contains边描述了代码的包含关系,而calls边则描绘了函数之间的调用流。值得一提的是,CGM在构建代码图时,特别针对多重继承和动态调用等复杂情况进行了保守解析,以确保语义依赖的完整性。通过这种建模,原本散乱的代码被组织成一个有结构、有方向的网络,使CGM能够像经验丰富的程序员那样,迅速在大脑中形成一张“代码依赖图谱”,清晰地看到谁调用了谁,谁影响了谁。

  2. 两阶段训练,结构-语义双模态对齐: 仅仅构建出代码图是不够的,关键在于如何让大型语言模型真正“读懂”并利用这些图结构信息。CGM通过一种巧妙的两阶段训练策略,实现了结构与语义的深度融合:

    • 语义对齐:首先,利用像CodeT5+这样的模型对每个代码节点的语义信息进行编码,并通过一个适配器将其映射到大模型的输入空间,确保大模型能够理解节点文本内容的语义。
    • 结构感知:更具创新性的是,CGM将代码图的邻接矩阵转化为一个图感知注意力掩码(Graph-aware Attention Mask),并用它替换了LLM中处理节点Token时的标准因果注意力掩码1。这一改动精妙地模拟了图神经网络中的“消息传递”机制,使得注意力计算只关注图中相邻节点之间的信息流动,从而让LLM能够直接感知和利用代码的结构依赖关系,实现了真正意义上的“图到文本”的模态融合。
    • 两阶段训练:训练过程包括预训练和微调两个阶段。预训练阶段通过子图重构任务,建立从代码图到LLM语义空间的映射,夯实结构与语义融合的基础。微调阶段则使用真实的GitHub问题-修复补丁数据对CGM进行优化,并通过引入10%的噪声输入(例如,提示中包含无关文件或遗漏关键文件),显著提升了模型的鲁棒性和泛化能力1
  3. GraphRAG框架:R4链路高效生成补丁: 为了将CGM的强大能力付诸实践,蚂蚁团队还设计了一个轻量级的GraphRAG框架。相比于现有Agentless框架中常见的十几个模块,GraphRAG将核心模块数量精简到仅有四个关键部分:改写器(Rewriter)检索器(Retriever)重排器(Reranker)生成器(Reader)1。这四个模块顺序执行、高效协同,模拟了程序员日常修Bug的思维路径:首先根据问题改写查询,然后检索相关代码,接着对检索结果进行重排优化,最后生成最终的修复补丁。这种精简而高效的设计,确保了CGM在真实场景中能够快速、准确地定位问题并生成修复方案。

重新定义AI软件工程的边界

CGM的出现,不仅是SWE-Bench排行榜上数字的刷新,更深层次地,它代表着AI软件工程发展方向的一次重要探索。其“Agentless”和“结构感知”的理念,对行业产生了多重影响:

首先,它打破了闭源模型的垄断,证明了开源模型(如千问大模型)通过精巧的架构创新和数据融合,同样能够达到甚至超越闭源SOTA的性能。这对于构建更加开放、普惠的AI生态系统至关重要,尤其在AI能力日益集中的背景下,开源模型的突破为开发者和企业提供了更多选择和自由度1

其次,对于企业而言,CGM提供了极具吸引力的价值主张。它不仅规避了闭源模型带来的隐私泄露风险,使得企业能够在保障核心数据安全可控的前提下,拥抱先进的AI能力;同时也免去了持续支付高昂API费用的负担,为企业带来了显著的成本效益。企业可以基于CGM的开源模型、代码和数据集,进行深度定制和优化部署,使其更好地适应自身业务需求,尤其对于寻求私有化部署解决方案的企业,CGM的吸引力不言而喻1

最后,CGM的成功再次印证了代码作为一种独特模态的复杂性,以及结构化理解对于AI软件工程师能力提升的关键作用。正如OpenAI CEO Sam Altman所言,“2025年底前,软件工程将发生翻天覆地的变化。”1 CGM无疑是这场变革中掷地有声的一步。它预示着未来的AI软件开发工具将不再是简单的代码生成器,而是能够真正理解代码逻辑、上下文和结构,甚至能够像人类工程师一样进行复杂推理的智能伙伴。这不仅会极大地提升开发效率,降低Bug率,更可能改变软件开发的组织方式和人才需求,促使工程师将更多精力投入到高层次的系统设计和创新上,而非繁琐的调试和维护。

CGM的开源,无疑是蚂蚁集团在推动AI与软件工程深度融合方面迈出的重要一步。它不仅为全球开发者社区贡献了一个强大的工具,也为我们理解和构建下一代智能软件系统提供了宝贵的思路。随着代码图模型技术的不断成熟和应用拓展,我们有理由相信,AI将在软件工程领域扮演越来越核心的角色,最终塑造出我们前所未见的创新图景。

引用


  1. 蚂蚁集团 · 不靠Agent,4步修复真Bug,蚂蚁CGM登顶SWE-Bench开源榜 · 机器之心(2025/6/27)· 检索日期2025/6/27 ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎