【code-graph-rag】将多语言代码库转化为知识图谱,用自然语言轻松查询与重构代码

这是一款将多语言代码库解析并构建为知识图谱的工具,它让开发者能够直接使用自然语言来查询、编辑和优化代码。它有效解决了在庞大或混合语言项目中,代码结构难以理解、跨文件追踪困难以及重构成本高昂的问题。

主要功能与特性

  • 自然语言问答:支持用日常语言对代码库提问,并基于真实的代码结构返回准确答案。
  • 精准代码检索:可以通过名称或意图,直接获取函数、类或方法的真实源代码。
  • 智能代码编辑:借助 AI 代理,基于抽象语法树(AST)进行精准的代码修改,并在应用前提供差异(diff)预览。
  • 代码优化建议:能够根据特定语言的最佳实践或自定义的编码标准来优化代码。
  • 死代码检测:通过追踪入口点的调用和引用关系,自动找出项目中未被使用的无用代码。
  • 结构化搜索与替换:利用 AST 模式在整个代码库中匹配和转换代码结构,摆脱传统的纯文本或正则表达式搜索。
  • 多语言与 Monorepo 支持:在统一的图谱模式下,支持 Python、TypeScript、Rust、Go、Java、C/C++ 等十多种主流语言,完美适配混合语言的单体仓库。
  • MCP 服务器集成:可作为 MCP 服务器运行,允许 Claude Code 等 AI 客户端直接查询和编辑代码库。

安装与快速上手

安装该工具推荐使用 uvpipx,并包含所有语言和向量搜索的扩展包:

# 使用 uv(推荐)
uv tool install "code-graph-rag[treesitter-full,semantic]"

# 或者使用 pipx
pipx install "code-graph-rag[treesitter-full,semantic]"

注:运行环境还需要提前安装 Docker(用于运行 Memgraph 数据库)、cmakeripgrep

快速启动与使用示例:

# 启动内置的 Memgraph 和 Qdrant 服务栈(无需 compose 文件)
cgr daemon up

# 解析指定仓库并构建图谱,然后进行查询
cgr start --repo-path /path/to/repo --update-graph
cgr start --repo-path /path/to/repo

提示:如果需要清空图谱重新开始,可以添加 --clean 参数,但这会删除共享图谱中的所有项目。

适用场景与目标用户

  • 适用场景:适合需要快速理解庞大且复杂的遗留代码库、进行跨语言 Monorepo 项目的代码重构、自动化清理无用代码,以及希望在 AI 编程助手(如 Claude Code)中深度集成代码库上下文的场景。
  • 目标用户:主要面向软件开发者、架构师以及需要维护大型代码库的技术团队。对于刚接手新项目的新手,或是需要全局把控代码质量的资深工程师,都能从中获得极大的效率提升。

总结

这款工具巧妙地将知识图谱与检索增强生成(RAG)技术结合,把复杂的代码结构变成了可以用日常语言直接对话的“活字典”,极大地降低了理解大型代码库的门槛。它不仅在代码查询上表现出色,在基于抽象语法树的精准编辑和死代码检测方面也展现了极高的实用价值,建议访问其主页获取更详细信息。

类似文章