让 AI Code Review 只读它该读的:code-review-graph 用 31k Star 证明了”图谱”比”搜索”更值得
每次让 Claude Code 审查一个提交,它就要把半个代码库重新读一遍——对于 httpx(125 个文件)还好,但对 FastAPI(2,915 个文件)来说,那就是每次都在烧掉数千个毫无意义的 Token。代码库越大,浪费越严重。
tirth8205/code-review-graph 解决的就是这个问题:它用 Tree-sitter 把代码库解析成一张结构图,存在本地 SQLite 里,AI 编程工具通过 MCP 协议查询这张图,只读它真正需要的那几个文件。最新 v2.3.8,31,021 颗星。
它到底怎么工作的
三步走:
第一步:Tree-sitter 解析。Tree-sitter 是 GitHub 开源的增量解析库,把代码解析成 AST,不依赖语言特定的 LSP 服务,Python / TypeScript / Go / Rust / Java 等 12 种语言走同一条管道。
第二步:存成图。不是文件树,不是符号表,是关系图——函数 A 调用函数 B、类 C 继承类 D、模块 E 依赖模块 F。所有关系存在 .code-review-graph/ 目录下的 SQLite 文件里,完全本地,没有外部依赖,不上传任何代码。
第三步:MCP 暴露给 AI。code-review-graph 实现了一个 MCP Server,Claude Code、Cursor、Windsurf、Zed、Continue、OpenCode 等 15 个平台都可以直接查询这张图。code-review-graph install 一条命令自动检测你装了什么工具,写好对应配置,重启编辑器就行。
真实跑分数据
作者在生产级开源仓库上跑了真实基准测试,不是 PPT 数字:
| 仓库 | 规模 | 普通读法 Token | CRG 介入后 Token | Token 节省倍数 | 评审质量(10分) |
|---|---|---|---|---|---|
| httpx | 125 文件 | 12,507 | 458 | 26.2× | 9.0 vs 7.0 |
| FastAPI | 2,915 文件 | 5,495 | 871 | 8.1× | 8.5 vs 7.5 |
| Next.js | 27,732 文件 | 21,614 | 4,457 | 6.0× | 9.0 vs 7.0 |
在 Next.js 的 live coding 任务中,最高跑到了 49× 的 Token 节省——意味着 27,700+ 个文件被完全排除在外。
Headline 数字是 median 82×(6 个问题取中位),528× 是最好情况。README 里把这个区分写得很清楚,不拿峰值当平均值。
评审质量有提升:Token 减少不等于评审变水。在 httpx 上,有图辅助的评审质量得分 9.0,普通方式 7.0——因为 AI 读到的噪音少了,反而更准。
增量更新:不是每次都重读
这是 CRG 和 RAG 最本质的区别:图是预建好的,不是每次查的时候临时搜。
文件改动后,PostEdit / PostGit 钩子触发增量更新——只重新解析改了的文件及其依赖方,在 ~3,000 文件的项目上,两行代码改动可以在 2.5 秒内 完成增量索引,其中 ~1.4 秒是进程启动时间。hook 路径上可以做到真正无感。
适用边界:不是所有场景都值得用
适合的场景:
- 中大型代码库(数百到数千个文件)
- 频繁做 Code Review 的团队
- 经常需要回答”改了这里会影响什么”的工程师
- 在 monorepo 里工作的团队
不适合的场景:
- 小仓库(几十个文件)
- 单一文件改动
- 临时性 one-off 问题
作者在 FAQ 里明确说了:开销对这类场景不值当。这份诚实本身反而是信任加分项。
GitHub Action:CI 里也能跑风险评分
v2.3.6 引入的 GitHub Action 可以把同一套分析跑进 CI:在每个 PR 上自动发一条风险评分表,标注受影响函数、影响流程和测试缺口,支持配置 fail-on-risk 当合并门。图的构建和查询完全在 CI runner 本地跑,没有代码外传。
安装和上手
pip install code-review-graph
code-review-graph install
code-review-graph build
三步,然后问你的 AI 助手:”Build the code review graph for this project”,它就会自动通过 MCP 查询这张图。500 个文件的项目初始构建约 10 秒,之后增量更新完全无感。
需要 Python 3.10+。建议装 uv,MCP 配置会自动用 uvx 调用,速度更快。
下一步建议
- 今天就试:在你自己最大的那个项目里跑一遍
pip install code-review-graph && code-review-graph build,然后让 Claude Code / Cursor 做一次 Code Review,对比一下 Token 消耗面板 - 接入 CI:如果你在维护一个活跃的开源项目,把 GitHub Action 配进 PR 流程,让评审从”事后诸葛亮”变成”合并前风险门”
- 多语言项目:如果你有 Vue/React + TypeScript + Python 混写的全栈项目,CRG 是少数能统一处理这种跨语言图谱的工具之一,值得认真跑一遍 benchmark
链接:
评论区
登录后可评论。