ai, 软件工程,

一分钟读论文:《CGM:让AI像程序员一样理解整个代码库》

Unbug By Unbug Follow Feb 26, 2026 · 1 min read
Share this

一分钟读论文:CGM让AI像程序员一样理解整个代码库

📝 论文概览

论文标题:Code Graph Model (CGM)

作者:蚂蚁集团研究团队

会议:NeurIPS 2025


🎯 核心问题

想象一下,你面对一个拥有数千个文件、数百万行代码的大型项目,要修复一个bug。你需要:理解问题、找到相关文件、梳理函数调用关系、修改代码。这对经验丰富的程序员来说都是挑战,更别说AI了。

但现在,来自蚂蚁集团的研究团队在NeurIPS 2025上发表的Code Graph Model(CGM),让开源AI也能像资深程序员一样,处理这种仓库级别的软件工程任务。


🔬 核心技术

什么是代码图?

把代码库想象成一张地图:

  • 节点:文件、函数、类
  • :它们之间的关系——谁调用了谁、谁继承了谁、谁导入了谁

比如,文件A里的函数X调用了文件B里的函数Y,那么X和Y之间就有一条”调用关系”的边。

通过这种方式,整个代码库的结构就被清晰地表示出来了。

R4链:四个步骤解决问题

CGM采用了一个叫R4链的框架,由四个组件组成,就像一个流水线:

问题 → Rewriter(重写)→ Retriever(检索)→ Reranker(重排)→ Reader(生成)→ 代码补丁

第一步:Rewriter - 理解问题,提取关键信息

就像程序员拿到bug报告后,先会搞清楚:问题在哪里?涉及哪些文件?

Rewriter分两个阶段工作:

  1. 提取器:分析问题描述,找出相关的文件、类或函数
  2. 推理器:基于问题,生成搜索查询,找出可能需要修改的代码

比如问题是”用户登录时出现空指针异常”,Rewriter可能会找出:

  • 相关文件:auth.py, user.py
  • 相关函数:login(), validate_user()
  • 关键词:”空指针”、”登录”、”用户验证”

第二步:Retriever - 找到相关的代码子图

有了关键词,Retriever就去代码图里找相关的部分。

它不是只找单个文件,而是:

  1. 找到锚点节点(比如login()函数)
  2. 从锚点出发,扩展成一个连通的子图(包含调用login()的、被login()调用的所有相关函数和文件)
  3. 把这个子图序列化成JSON格式

这样,AI就能看到完整的上下文,而不是孤立的代码片段。

第三步:Reranker - 找出最相关的文件

Retriever可能会找出很多相关文件,但不是每个都同等重要。Reranker的任务就是给它们打分。

评分很有意思,是1-5分:

  • 1分:几乎肯定无关
  • 2分:可能间接相关,但修改它解决不了问题
  • 3分:有一定相关性,可能间接交互
  • 4分:可能相关,包含直接交互的代码
  • 5分:很可能是根本原因,修改它应该能直接解决问题

通过这种方式,AI能把注意力集中在最关键的文件上。

第四步:Reader - 生成代码补丁

最后一步,Reader根据前面的信息,生成最终的代码补丁。

这也是CGM最创新的地方:它不只是把代码图当作文本喂给AI,而是让AI真正”理解”图的结构

具体来说:

  • 语义集成:把节点的文本内容转换成token,输入给LLM
  • 结构集成:把代码图的结构信息集成到LLM的注意力机制中

这样,LLM在生成代码时,会知道:”这个函数调用了那个函数,那个函数又继承自这个类,所以修改这里时要考虑那里的影响。”


📊 核心发现

1️⃣ 开源模型的新标杆

CGM在SWE-bench Lite基准测试上的表现让人眼前一亮:

  • 解决率:43.00% —— 开源权重模型第1名
  • 在所有系统方法中排名第8
  • 超过之前最佳开源模型12.33%

而且更新版本还在提升:

  • CGM-72B-V1.1:41.67%
  • CGM-72B-V1.2:44.00%

在更大的SWE-bench Verified基准测试中,CGM同样在开源权重模型中排名第1。

2️⃣ CGM的三大创新

1. 无需Agent,简单有效

之前的方案往往依赖复杂的Agent系统——多个AI角色相互配合,虽然强大但不可预测。CGM证明:不需要那么复杂,只要让模型理解代码结构,开源模型也能做得很好。

2. 真正理解代码图

CGM不是把代码图当作文本丢给模型,而是通过图感知注意力机制,让模型直接理解图的结构。这就像给模型配上了一副”代码架构眼镜”。

3. 完整开源

CGM把代码、模型、数据全部开源了:

  • GitHub:https://github.com/codefuse-ai/CodeFuse-CGM
  • 模型:https://huggingface.co/codefuse-ai/CodeFuse-CGM-72B

这意味着任何人都可以用它、改进它。


📈 数据亮点

指标 数值
SWE-bench Lite 解决率 43.00%
开源权重模型排名 第1名
所有系统方法排名 第8名
相比之前最佳开源模型提升 +12.33%
支持语言 Python、Java
模型版本更新 V1.1 → V1.2(+2.33%)

💡 一句话总结

复杂的软件工程任务,不一定需要闭源模型和复杂的Agent系统。开源模型通过巧妙的设计,也能达到优秀的效果。

CGM就像一个开源的”AI架构师”,虽然还不完美,但它已经展示了巨大的潜力。


🎓 研究意义

这篇论文的意义不仅在于它的性能,更在于它证明了:

  • 小公司不用依赖昂贵的闭源服务
  • 代码隐私可以得到更好的保护
  • 整个社区可以一起改进模型

🛠️ 给开发者的建议

  1. 试试CGM:完整开源,可以直接用在你的项目中
  2. 理解代码结构很重要:不要只看单个函数,要理解整个项目的架构
  3. 图结构是关键:代码图能帮助AI更好地理解代码库
  4. R4链框架值得借鉴:重写→检索→重排→生成,这个流程很清晰
  5. 关注开源进展:未来可能会看到更多开源模型在软件工程领域大放异彩

论文链接:https://arxiv.org/abs/2505.16901

Releated