Code-Graph-RAG:用知识图谱让你的 Monorepo 秒变 AI 可读

当项目代码库越来越庞大,横跨多种语言时,就算是经验丰富的开发者也要花不少时间在理解代码结构上。如果能像问 ChatGPT 一样直接问你的代码库问题,还能让它精准地找到对应的函数、类、调用关系,甚至帮你改写优化——这就是 Code-Graph-RAG 要解决的问题。

Code-Graph-RAG

项目简介

Code-Graph-RAG 是一个多语言代码库知识图谱 + RAG(检索增强生成)系统。它使用 Tree-sitter 解析你的代码库,构建一张包含函数、类、方法、模块及它们之间关系的结构化知识图谱,存储到 Memgraph 图数据库中,然后让你用自然语言来查询、理解和编辑代码。

项目在 GitHub 上已获得 3500+ Stars,今日新增 680+ Stars,采用 MIT 开源协议。

核心功能

  • 多语言代码解析:完整支持 Python、TypeScript、JavaScript、Rust、Go、Java、C、C++、C#、PHP、Lua、Dart 等 13+ 种语言,Ruby 通过插件层支持
  • 自然语言查询:用普通话向代码库提问,AI 自动生成 Cypher 图查询语句,精准定位目标代码
  • AST 级别代码编辑:基于 Tree-sitter 的精确修补,修改前提供 diff 预览,告别粗糙的文本替换
  • 代码优化:自动检测代码并给出语言最佳实践级别的优化建议
  • 死代码检测:从入口点开始遍历调用和引用边,找出未被使用的代码
  • 结构性搜索替换:结合 ast-grep 按 AST 模式匹配和批量改写,跨整个代码库操作
  • 数据流追踪:新增 FLOWS_TO 污点边跟踪变量赋值、函数调用和 I/O 接收点的数据流向,覆盖 10 种语言
  • MCP 服务器:可作为 Model Context Protocol 服务器运行,让 Claude Code 等 AI 编程助手直接查询你的代码库
  • 向量语义搜索:集成 Qdrant 向量数据库,实现语义级别的代码搜索

技术架构

整个系统由两大组件构成:

  1. 多语言解析器:Tree-sitter 驱动,读取源代码 → AST 分析 → 提取结构化信息 → 写入 Memgraph 图数据库。所有语言统一映射到同一套图 Schema。
  2. RAG 系统:交互式 CLI,用户输入自然语言 → AI 模型生成 Cypher 查询 → 图数据库返回精准结果 → 驱动代码编辑和优化。

数据流示意图:

源码 → Tree-sitter 解析器 → AST 分析 → Memgraph 知识图谱
                                          ↓
用户提问 → AI 模型(Cypher 生成)→ Cypher 查询 → 图谱结果 → 响应

快速上手

安装

通过 PyPI 安装,推荐使用 uv:

uv tool install "code-graph-rag[treesitter-full,semantic]"

前置要求:Docker(用于运行 Memgraph)、cmake、ripgrep。

启动服务

# 启动 Memgraph + Qdrant 服务栈
cgr daemon up

# 解析仓库到图数据库,然后进入交互查询
cgr start --repo-path /path/to/your/repo --update-graph

# 后续只需
cgr start --repo-path /path/to/your/repo

多个项目可以共享同一个图数据库,解析一个项目不会影响其他已索引的项目。

作为 MCP 服务器运行

配置 Claude Code 或支持 MCP 的客户端,让你的 AI 编程助手直接查询代码库:

# 配置 MCP 客户端指向 cgr mcp-server

详细配置见项目文档中的 MCP Server 指南。

适用场景

  • 大型 Monorepo 管理:包含多种语言的多模块项目,快速理解整体结构和模块间依赖
  • 新人 Onboarding:新成员接手陌生代码库,用自然语言提问就能快速定位关键代码
  • 代码审查辅助:理解改动的影响范围,追踪数据流路径
  • 技术债务清理:自动检测死代码和过时实现
  • AI 编程增强:作为 MCP 服务器接入 Claude Code 等工具,让 AI 助手真正理解你的代码库结构
  • 代码迁移/重构:通过 AST 级别的结构性搜索替换,安全高效地批量改写代码

总结

Code-Graph-RAG 将知识图谱与 RAG 结合,解决了传统代码库 AI 助手的核心痛点:AI 需要真正理解代码结构,而不只是做文本匹配。通过 Tree-sitter 精确解析 + 图数据库存储 + 自然语言查询,它让开发者能够像对话一样与代码库交互。

开源地址:https://github.com/vitali87/code-graph-rag

官方文档:https://code-graph-rag.com

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享