code-graph-rag
将 Tree-sitter 解析出的多语言代码结构存入 Memgraph 知识图谱,用自然语言查询、理解并编辑代码的 RAG 工具。亮点:统一图 schema 覆盖 Python/TS/Rust 等 14 种语言,支持 AST 精确保修改写、死代码检测、数据流追踪,还能以 MCP Server 方式接入 Claude Code 等客户端。MIT 许可。
README
Code-Graph-RAG
Code-Graph-RAG 使用 Tree-sitter 解析多语言代码库,在 Memgraph 中构建其结构的知识图谱,并允许你用自然语言对代码进行查询、编辑和优化。它能够在一个统一的图模型(graph schema)下处理由多种语言混合组成的 monorepo。
最新动态 🔥
- Ruby 支持:Ruby 通过一个可插拔的 ast-grep 层加入图谱,该层使用单个 YAML 模式文件即可追加一种语言,无需手写解析器即可生成
Module、Function、Class节点以及 import 边。 - 结构化搜索与替换:使用 ast-grep 按 AST 模式查找并重写代码,作为 agent 工具暴露,让你能够跨整个代码库进行结构匹配与转换,而不再依赖文本或正则表达式。
- 数据流追踪:新增的
FLOWS_TO污点(taint)边跟踪值在赋值、函数调用和 I/O 汇聚点之间的流动,覆盖 C#、Java、C 和 Go。
完整历史记录见 NEWS.md。
功能简介
将 Code-Graph-RAG 指向一个仓库,它会读取所有源文件,提取函数、类、方法、模块以及它们之间的关联,并将结果存储为一张相互关联的图。图建立后,你可以:
- 用自然语言询问代码库相关问题,并获得基于真实结构、有依据的回答。
- 按名称或意图检索任何函数、类或方法的实际源代码。
- 通过 agent 基于 AST 进行外科手术式精准修补来编辑代码,任何改动前都有 diff 预览。
- 针对语言最佳实践或你自己的编码规范来优化代码。
- 通过从入口点沿调用边和引用边遍历,找出死代码。
- 使用 ast-grep 按 AST 模式进行结构化搜索和重写。
工作原理
系统包含两个组件:
- 多语言解析器。 基于 Tree-sitter 的解析器读取代码库,将函数、类、方法、模块及它们之间的关系导入 Memgraph,并使用一套与语言无关的 schema。
- RAG 系统(
codebase_rag/)。一个交互式 CLI,将自然语言转换为 Cypher 查询、检索匹配的代码,并驱动 AI 辅助的编辑与优化。
Source Code -> Tree-sitter Parser -> AST Analysis -> Memgraph Knowledge Graph
|
User Query -> AI Model (Cypher Gen) -> Cypher Query -> Graph Results -> Response
支持的语言
Python、TypeScript、TSX、JavaScript、Rust、Go、Java、C、C++、C#、PHP、Lua 和 Dart 均得到完整支持。Scala 正在开发中,Ruby 通过可插拔的 ast-grep 层获得结构化支持(模块、函数、类和导入)。每种语言的能力矩阵见 语言支持。
安装
cgr 发布在 PyPI 上。使用 treesitter-full(所有语言)和 semantic(向量搜索)附加组件进行全系统安装:
# with uv (recommended)
uv tool install "code-graph-rag[treesitter-full,semantic]"
# or with pipx
pipx install "code-graph-rag[treesitter-full,semantic]"
你还需要 Docker(用于 Memgraph)、cmake 和 ripgrep。完整的先决条件、源码安装和环境设置见 安装指南。
快速开始
# 启动打包好的 Memgraph + Qdrant 栈(无需 compose 文件)
cgr daemon up
# 将一个仓库解析到图中,然后查询
cgr start --repo-path /path/to/repo --update-graph
cgr start --repo-path /path/to/repo
每个需要索引的仓库重复第一条命令;图是共享的,同步一个项目不会影响其他项目。若要从空图重新开始,加上 --clean —— 它会删除共享图中的所有项目,而不仅仅是当前这一个,并且当其他项目将被销毁时会先请求确认。
快速入门 指南会在五分钟内带你完成解析、查询和导出。
MCP 服务器
Code-Graph-RAG 可作为一个 MCP 服务器运行,这样 Claude Code 和其他 MCP 客户端可以直接查询和编辑你的代码库。设置方法见 MCP Server 指南。
文档
入门
用户指南
架构
Python SDK
高级
企业服务
Code-Graph-RAG 是开源且免费使用的。对于需要更多支持的组织,我们提供全托管的云托管解决方案和本地部署:
- 云托管部署:托管云基础设施,涵盖图数据库和 AI agent 连接。零基础设施负担,我们负责扩展、更新和可用性,你的团队专注于开发。
- 本地与隔离网部署:将 Code-Graph-RAG 完全部署在你自己的环境中,包括隔离网络。为受监管行业和安全敏感型组织提供完全的数据主权。
我们还提供定制开发、集成咨询、技术支持合同和团队培训。
贡献
贡献指南请见 CONTRIBUTING.md。好的首个 PR 来自 TODO 问题清单。
支持
如有问题或疑问,请先查看 故障排查 指南,然后提交 issue。
许可证
MIT。见 LICENSE。