32,681
stars
+100+119+753
2,973
forks
–
watchers
–
prs
–
issues
–
releases
–
discussions
README
code-review-graph
本地代码知识图谱,通过 MCP 为 AI 编码工具提供精准的审查上下文。
English |
简体中文 |
日本語 |
한국어 |
हिन्दी
使用说明 ·
命令 ·
常见问题 ·
故障排查 ·
GitHub Action ·
复现基准测试 ·
路线图
AI 编码工具为了审查一次改动,常常要重新读取代码库的大部分内容。code-review-graph 用 Tree-sitter 构建代码的结构图,增量保持更新,并通过 MCP 提供紧凑的上下文,让助手只读取改动涉及的文件。
---
快速开始
bash
pip install code-review-graph or: pipx install code-review-graph
code-review-graph install detect installed AI coding tools and configure each one
code-review-graph build parse the codebase
install 会检测你安装了哪些 AI 编码工具,为每个工具写入一条 MCP 服务器配置,在平台支持的地方安装钩子和技能,并把图谱说明加入平台的规则文件。在 Poetry 或 uv 项目环境中,MCP 配置使用 poetry run 或 uv run;当 PATH 上有 uvx 时使用 uvx code-review-graph serve;否则使用当前的 Python 解释器。安装后请重启编辑器或工具。
只配置一个平台时,给 --platform 传入 codex、claude-code、cursor、windsurf、zed、continue、opencode、antigravity、gemini-cli、qwen、kiro、qoder、copilot、copilot-cli、codebuddy 或 hermes 之一:
bash
code-review-graph install --platform cursor
code-review-graph install --platform codebuddy
配置文件的位置列在 docs/USAGE.md 中。需要 Python 3.10+。
uninstall 会从 Git 或 SVN 工作树中移除 CRG 自己写入的文件和配置项,不动其他 MCP 服务器、钩子、技能和 JSONC 注释。在工作树内的任意位置运行即可。共享配置文件采用原子替换,写入失败时原文件保持完整。
bash
code-review-graph uninstall --dry-run preview only
code-review-graph uninstall preview, confirm, apply
code-review-graph uninstall --yes apply without prompting
code-review-graph uninstall --all-repos also clean every registered repository
code-review-graph uninstall --keep-data remove integrations, keep graph databases
code-review-graph uninstall --keep-user-configs --repo . this project only
然后打开项目,对助手说:
Build the code review graph for this project
构建时间随仓库规模增长;一个约 3,000 个文件的仓库冷构建约需 40 秒(实测)。之后由钩子和 watch 模式保持图谱更新。如果部分文件解析失败,结果状态为 partial 并在摘要中列出这些文件;CLI 还会在 stderr 上打印一行 Warning:,这些文件保留原有的图谱记录。
工作原理
仓库通过 Tree-sitter 解析为 AST,并以节点(函数、类、导入)和边(调用、继承、测试覆盖)的形式存为图谱。审查时查询图谱,得到助手需要读取的最小文件集合。
影响半径分析
文件变更时,图谱会追踪所有可能受影响的调用者、依赖方和测试。助手读取这些文件,而不是扫描整个项目。
增量更新
钩子、pre-commit 钩子和 watch 模式都会触发增量更新。更新时对变更文件做 diff,沿图谱的导入边和调用边找出依赖方,并只重新解析 SHA-256 哈希发生变化的文件。在一个约 3,000 个文件的项目(django)上,修改两个文件后沿钩子路径重新索引约需 2.5 秒,其中约 1.4 秒是进程启动;空更新只花这段启动时间。参见增量更新延迟。
整个代码库,还是有的放矢的回答?
图谱不会把整个语料喂给模型,而是返回按问题裁剪的切片。在 2026-08-02 对本仓库 84bde354 的快照中,208,821 个源码 token 变成每个问题约 3,190 个 token。此后仓库增长了很多,所以今天这两个数字都更大。
语言覆盖与笔记本
解析器提取函数、类、导入、调用点、继承和测试:有语法的地方用 Tree-sitter,其他地方用有针对性的回退解析。支持范围:Python、JavaScript/TypeScript/TSX、Go、Rust、Java、C/C++、C、VB.NET、Ruby、Kotlin、Swift、PHP、Scala、Solidity、Dart、R、Perl、Lua/Luau、Objective-C、shell 脚本、Elixir、Zig、PowerShell、Julia、ReScript、GDScript、Nix、Verilog/SystemVerilog、SQL、Terraform/OpenTofu(.tf;其他 .hcl 文件只生成文件节点)、Ansible YAML(playbook、role、task)、Spring Boot 应用配置(application.properties、application.yml、application.yaml 及其 application- 变体;只记录键名和值的类型,绝不记录值)、Vue/Svelte 单文件组件、Astro 文件(用 TypeScript 语法解析)、Jupyter 和 Databricks 笔记本(.ipynb),以及 Perl XS 文件(.xs)。其他 YAML 和其他 .properties 文件不