Code-Graph-RAG Skill:让 AI Agent 在大型代码库里「看图说话」的 RAG 神器

Code-Graph-RAG Skill:让 AI Agent 在大型代码库里「看图说话」的 RAG 神器

Code-Graph-RAG 是一款专为大型代码库设计的知识图谱增强检索工具,通过 Tree-sitter 解析多语言代码库,构建代码结构知识图谱存入 Memgraph,支持自然语言查询、编辑和优化。区别于传统基于文本块的 RAG,它以代码实体(函数、类、方法、模块)及其关系为核心节点,能够精准回答「这个函数被谁调用」「这个模块依赖哪些服务」这类结构化问题。今天 GitHub Trending 实时热榜上位,今日新增 59 stars,总 star 数 2,738(截至 2026-08-09),增长势头强劲。

核心功能与设计原则

Code-Graph-RAG 的设计围绕一个核心洞察:代码库不是一堆文本文件,而是一张由函数调用、模块依赖、数据流向编织而成的图。传统 RAG 把代码切成块喂给 LLM,丢失了结构信息;Code-Graph-RAG 则保留完整的代码结构,让 LLM 真正「理解」代码在做什么。

主要能力包括:

  • 多语言解析:支持 Python、TypeScript、JavaScript、Rust、Go、Java、C、C++、C#、PHP、Lua、Dart 等主流语言,通过 Tree-sitter 构建统一语言无关的图谱 schema
  • 自然语言查询:用自然语言问代码问题,AI 生成 Cypher 查询语句,从图中检索答案并附上真实源码
  • 结构化代码编辑:通过 AST 级别的 surgical patching 做精准代码修改,修改前有 diff 预览
  • 死代码检测:从入口点沿调用链和引用边遍历,找出孤立代码
  • AST 模式搜索替换:用 ast-grep 以抽象语法树模式做跨文件搜索和批量替换
  • 数据流追踪:FLOWS_TO 污点边跟踪值在赋值、函数调用和 I/O 之间的传播,覆盖 C#、Java、C、Go
  • MCP Server:作为 MCP 服务器运行,Claude Code 等 MCP 客户端可直接查询和编辑代码库

认可度

  • GitHub Stars:2,738(截至 2026-08-09)
  • 今日新增 stars:59,GitHub Trending 实时上榜
  • Forks:470
  • 支持 12+ 主流编程语言,覆盖大型 monorepo 常见语言栈
  • 作为 MCP Server 接入,天然兼容 Claude Code 等主流 AI 编码 Agent

链接

GitHub:https://github.com/vitali87/code-graph-rag

原作者

vitali87(GitHub 个人开发者),专注于代码分析和 AI 辅助开发工具领域。项目采用 Python 构建,依赖 Memgraph(图数据库)+ Qdrant(向量检索)+ Tree-sitter(代码解析)。

详细介绍

Code-Graph-RAG 的工作流程分为两个阶段:解析入库查询交互

解析阶段,CLI 调用 Tree-sitter 解析代码库的 AST,提取函数、类、方法、模块及它们之间的关系(调用、导入、继承等),存入 Memgraph 图数据库。这张图是多语言统一的——无论 Python 的函数还是 Rust 的结构体,都被映射到同一套节点和边 schema。

查询阶段,用户用自然语言提问(如「查找所有涉及用户认证的模块」),系统先用 LLM 将问题转为 Cypher 图查询语句,执行查询后返回匹配的源码片段,并可进一步触发 AI 编辑或优化。整个过程无需理解图的内部结构,对用户来说就是一个能「读懂代码」的 CLI 工具。

它还支持 MCP 协议,可以作为 MCP Server 被 Claude Code 等 Agent 直接调用。这意味着 Agent 可以在不离开对话界面的情况下,直接查询项目代码结构、追踪数据流、定位死代码。

主要特点

  • 结构感知:基于代码 AST 而非文本块做检索,保留函数/类/模块的语义关系,答案更精准
  • 多语言统一图谱:12+ 语言共用同一 schema,monorepo 混语言项目也能一张图搞定
  • 自然语言查询:无需写 Cypher,说人话就能从代码库里挖出答案
  • MCP 原生:开箱即接 Claude Code 等主流 Agent,开发工作流无缝嵌入
  • 代码编辑一体化:查询→定位→编辑→diff 预览,一条链完成,不需要切换工具

使用方法

安装依赖:

# 需要 Docker(Memgraph)、cmake、ripgrep
uv tool install "code-graph-rag[treesitter-full,semantic]"
# 或
pipx install "code-graph-rag[treesitter-full,semantic]"

启动图数据库:

cgr daemon up

解析代码库并开始查询:

# 首次解析(更新图谱)
cgr start --repo-path /path/to/repo --update-graph

# 已有图谱,直接查询
cgr start --repo-path /path/to/repo

# 用自然语言提问
cgr query "Which module handles user authentication?"

MCP Server 接入(以 Claude Code 为例):

# 参照文档配置 MCP Server
cgr mcp install   # 输出 MCP server 配置
# 将配置加入 Claude Code 的 MCP 设置文件

使用场景与目标用户

适用场景:
– 大型 monorepo 代码库理解和维护(尤其是多语言混合项目)
– AI 编码 Agent 的代码上下文增强(避免 LLM「瞎猜」代码结构)
– 代码审查时快速定位某功能的所有相关模块
– 死代码清理和代码库健康度审计
– 团队新人 onboarding,快速理解项目结构

目标用户:
– AI 辅助开发者(用 Claude Code / Cursor 等 Agent 工具)
– 大型代码库维护者
– 团队 tech lead 需要快速掌握新项目结构
– DevRel 工程师做代码库文档自动化

输入与输出案例

案例 1:查找数据流

输入:"追踪用户登录流程中,数据从请求到数据库的完整路径"
输出:
  → 定位到 auth/login.py 的 authenticate_user() 函数
  → 该函数调用 user_service.get_user_by_email()
  → get_user_by_email() 执行 SQL: SELECT * FROM users WHERE email=?
  → 完整路径: request → authenticate_user() → get_user_by_email() → DB query

案例 2:死代码检测

输入:"找出没有被任何入口调用的内部函数"
输出:
  → walkman_internal_cleanup() 在 utils/walkman.py 中定义
  → 全库搜索结果:0 个调用方
  → 标记为 dead code,建议 review 后删除

GitHub: https://github.com/vitali87/code-graph-rag

评论区

0 条评论

登录后可评论。

Skill超级捕获手 15 阅读