AI Agent 代码记忆方案对比:CodeGraph、Serena、RepoMap 与 AGENTS.md
发布于 2026-06-04 20:09
AI Agent 代码记忆方案对比:CodeGraph、Serena、RepoMap 与 AGENTS.md
一、为什么需要专门的代码记忆方案
传统 AI Agent 做代码开发时,靠的是"临时探索"——每次需要理解代码时,用 grep、glob、Read 工具扫描文件。这种方式有三个问题:
- 费 Token:每次探索都消耗大量 token,在大型项目中尤其明显
- 慢:文件 I/O 多,响应延迟高
- 不精确:grep 只能做文本匹配,不理解语义关系(调用链、继承、接口实现)
专门的代码记忆方案通过预构建索引解决这些问题,让 Agent 能快速、精确地理解代码结构。
二、主流方案对比
1. CodeGraph(MCP 模式)
项目地址:github.com/colbymchenry/codegraph
类型:本地优先的代码知识图谱,通过 MCP Server 提供服务
支持 Agent:Claude Code、Cursor、Codex CLI、opencode、Hermes Agent、Gemini CLI、Antigravity IDE、Kiro
工作原理:
- 用 tree-sitter 解析源代码生成 AST
- 提取符号(函数、类、方法)和关系(调用、导入、继承、实现)
- 存入本地 SQLite 数据库,支持 FTS5 全文搜索
- 通过 MCP Server 暴露查询工具给 Agent
- 文件监听自动同步,保持索引实时更新
核心工具:
codegraph_explore:一次调用返回入口点、相关符号和代码片段codegraph_search:按名称搜索符号codegraph_callers:查找谁调用了某个函数codegraph_callees:查找某个函数调用了谁codegraph_impact:分析修改某个符号的影响范围codegraph_node:获取单个符号的完整源码
Benchmark 数据(7 个真实项目,Claude Opus 4.8):
- 平均节省 16% 成本
- 减少 47% token 消耗
- 提速 22%
- 减少 58% 工具调用
支持语言:20+ 种,包括 TypeScript、Python、Go、Rust、Java、C#、Swift、Kotlin 等
框架感知:支持 Django、Flask、FastAPI、Express、NestJS、Gin、Spring、Rails 等 14 种 Web 框架的路由到 Handler 映射
优势:
- 100% 本地运行,数据不上云
- 自动同步,索引实时更新
- 支持跨语言调用链(Swift ↔ ObjC、React Native Bridge)
- 零配置,安装即用
- 支持 Hermes Agent
劣势:
- 需要安装 CLI 和配置 MCP Server
- 首次索引大型项目需要时间
- 对非标准代码结构(如大量宏、代码生成)支持有限
2. Serena(MCP 模式)
项目地址:github.com/serena-ai/serena
类型:开源的语义代码分析 MCP Server
支持 Agent:任何支持 MCP 的 Agent(Claude Code、Cursor、Hermes Agent 等)
工作原理:
- 基于 tree-sitter 和 LSP(Language Server Protocol)做语义分析
- 构建符号级别的代码图谱
- 通过 MCP 工具暴露查询能力
- 支持符号级别的精确操作(重命名、查找引用等)
核心能力:
- 符号查找和导航
- 引用查找(谁调用了这个函数)
- 类型推断和跳转
- 代码补全上下文构建
- 多语言 LSP 集成
优势:
- 开源免费
- 基于 LSP,语义理解更精确
- 支持符号级别的操作(不只是查询)
- 活跃开发中
劣势:
- 依赖 LSP Server,需要为每种语言安装对应的 LSP
- 配置相对复杂
- 对大型项目的索引性能不如 CodeGraph
- 不支持框架级别的路由映射
3. RepoMap(上下文压缩模式)
类型:代码库地图生成工具,为 Agent 提供精简的代码概览
代表实现:Aider 的 repomap、Cursor 的 codebase indexing
工作原理:
- 扫描项目文件结构
- 提取关键符号(类、函数、接口)的签名
- 生成精简的"代码地图"文本
- 作为上下文注入 Agent 的 prompt
核心思想:不是构建完整的知识图谱,而是生成一份"目录 + 签名"的精简索引,让 Agent 快速知道"有什么"和"在哪里"。
优势:
- 实现简单,不需要额外服务
- 不依赖 MCP,任何 Agent 都能用
- 生成的文本可以直接放入 AGENTS.md 或 CLAUDE.md
- 对小型项目足够用
劣势:
- 信息密度低,缺少调用关系
- 不支持动态查询
- 大型项目需要手动维护
- 无法回答"这个函数被谁调用"这类问题
4. AGENTS.md / CLAUDE.md(文档模式)
类型:纯文本的项目说明文件
支持 Agent:所有主流 Agent(Claude Code、Cursor、Hermes Agent、GitHub Copilot)
工作原理:
- 在项目根目录创建 AGENTS.md 或 CLAUDE.md
- 手动编写项目结构、关键约定、调用链路等信息
- Agent 启动时自动读取,作为系统提示的一部分
优势:
- 零依赖,任何 Agent 都支持
- 完全可控,精确描述关键信息
- 可以包含业务逻辑、团队规范等非代码信息
- 版本控制友好
劣势:
- 手动编写和维护
- 无法自动更新
- 信息量受限于 token 预算
- 不包含动态查询能力
5. RAG + Embedding(向量检索模式)
类型:将代码分块后做向量化存储,通过语义相似度检索
代表工具:Cursor 的 codebase indexing、GitHub Copilot Chat、Continue
工作原理:
- 将代码文件分块(通常按函数或类)
- 用 Embedding 模型生成向量
- 存入向量数据库
- 查询时用语义相似度找相关代码片段
优势:
- 支持自然语言查询("用户认证是怎么实现的")
- 能发现隐式关联(语义相似但无直接调用关系的代码)
- 对模糊查询效果好
劣势:
- 无法精确回答调用链问题
- 向量检索结果可能不完整
- 需要 Embedding API(可能付费)
- 对大型项目的分块策略敏感
三、方案对比总表
| 维度 | CodeGraph | Serena | RepoMap | AGENTS.md | RAG+Embedding |
|---|---|---|---|---|---|
| 类型 | 知识图谱 + MCP | 语义分析 + MCP | 代码地图 | 文档 | 向量检索 |
| 安装复杂度 | 低(一键安装) | 中(需 LSP) | 低 | 最低 | 中 |
| 运行方式 | MCP Server | MCP Server | 静态文件 | 静态文件 | API/本地 |
| 调用链查询 | ✓ 精确 | ✓ 精确 | ✗ | 手动写 | ✗ 不精确 |
| 影响分析 | ✓ | ✓ | ✗ | ✗ | ✗ |
| 自然语言查询 | ✗ | ✗ | ✗ | ✗ | ✓ |
| 自动同步 | ✓ 文件监听 | ✗ 需手动 | ✗ 需手动 | ✗ 需手动 | ✗ 需手动 |
| 跨语言支持 | ✓ 20+ 语言 | ✓ 依赖 LSP | ✓ | ✓ | ✓ |
| 框架感知 | ✓ 14 种框架 | ✗ | ✗ | 手动写 | ✗ |
| 离线可用 | ✓ 100% 本地 | ✓ 100% 本地 | ✓ | ✓ | ✗ 需要 API |
| Token 效率 | 高(预索引) | 高(预索引) | 中 | 高(精简) | 中(需检索) |
| 维护成本 | 低(自动) | 中 | 高(手动) | 高(手动) | 中 |
| 适合项目规模 | 中大型 | 中大型 | 小型 | 所有 | 中大型 |
四、选型建议
小型项目(< 50 文件)
推荐:AGENTS.md
项目小,直接写文档就够了。维护成本低,任何 Agent 都能用。
## 核心模块
- controller/blog.go:博客控制器
- model/blog.go:博客数据模型
- service/blog.go:博客业务逻辑
## 调用链
创建文章:controller.Create → service.Create → model.Insert
中型项目(50-500 文件)
推荐:CodeGraph + AGENTS.md 组合
CodeGraph 处理结构查询,AGENTS.md 补充业务知识。
# 安装 CodeGraph
curl -fsSL https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.sh | sh
codegraph install
codegraph init -i
AGENTS.md 中记录 CodeGraph 的使用方式:
## 代码查询
项目已配置 CodeGraph MCP,可以直接查询:
- 调用链:codegraph_callers / codegraph_callees
- 影响分析:codegraph_impact
- 代码探索:codegraph_explore
大型项目(> 500 文件)
推荐:CodeGraph + RAG + AGENTS.md 三层组合
- CodeGraph:精确的结构查询(调用链、影响分析)
- RAG:模糊的语义查询("用户认证是怎么实现的")
- AGENTS.md:业务知识和团队规范
团队协作场景
推荐:AGENTS.md + Skill 文档
多人协作时,文档比工具更重要。确保:
- AGENTS.md 在项目根目录,版本控制
- docs/skills/ 下有详细的开发规范
- 踩坑经验及时记录到 Skill 的 references 中
五、CodeGraph 在 Hermes Agent 中的配置
CodeGraph 官方支持 Hermes Agent,配置步骤:
# 1. 安装 CodeGraph CLI
curl -fsSL https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.sh | sh
# 2. 配置 MCP Server(自动检测 Hermes Agent)
codegraph install
# 3. 初始化项目
cd /path/to/your-project
codegraph init -i
# 4. 重启 Hermes Agent 使 MCP 生效
配置完成后,Hermes Agent 会自动获得以下 MCP 工具:
codegraph_explore:探索代码结构codegraph_search:搜索符号codegraph_callers:查找调用者codegraph_callees:查找被调用者codegraph_impact:影响分析
六、总结
没有银弹。不同方案解决不同层面的问题:
- CodeGraph / Serena:解决"代码结构是什么"的问题,精确、高效
- RAG + Embedding:解决"相关代码在哪里"的问题,灵活、模糊
- AGENTS.md / Skill:解决"业务逻辑和规范是什么"的问题,可控、稳定
最佳实践是组合使用:用 CodeGraph 处理结构查询,用 AGENTS.md 记录业务知识,用 Skill 沉淀团队规范。三层配合,才能让 AI Agent 真正"懂"你的项目。
← 返回博客列表