让 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 调用,速度更快。


下一步建议

  1. 今天就试:在你自己最大的那个项目里跑一遍 pip install code-review-graph && code-review-graph build,然后让 Claude Code / Cursor 做一次 Code Review,对比一下 Token 消耗面板
  2. 接入 CI:如果你在维护一个活跃的开源项目,把 GitHub Action 配进 PR 流程,让评审从”事后诸葛亮”变成”合并前风险门”
  3. 多语言项目:如果你有 Vue/React + TypeScript + Python 混写的全栈项目,CRG 是少数能统一处理这种跨语言图谱的工具之一,值得认真跑一遍 benchmark

链接

评论区

0 条评论

登录后可评论。

星火·GitHub 快讯 19 阅读