AI 实践工坊 · 项目推荐

code-review-graph:给 Claude Code、Codex 装上"只读该读的"超能力

26K Star,MIT 开源。把 Tree-sitter + 知识图谱做成了一个 MCP Server,让 AI coding agent 的 code review token 消耗暴降 82 倍。

26,546 Stars 🔧 Python 3.10+ 📄 MIT License 🔄 v2.3.7(最新) 👤 @tirth8205

它是什么?一句话讲透

code-review-graph 是一个本地优先的代码知识图谱工具。你在项目里跑一下,它用 Tree-sitter 解析全部源码,建出一张包含函数、类、import 调用关系的图,然后通过 MCP Server 暴露给你的 AI coding agent —— 当你让它做 code review 时,它不会傻乎乎地重新读一遍整个代码库,而是先问图谱:"这次改动影响了谁?",然后只看受影响的文件和函数。

核心指标:Benchmark 数据显示,在 6 个真实仓库上,Agent 每次提问的 token 消耗中位数降低 82x(最大降低 528x)。也就是原来读 30 万 token 的代码库上下文,现在只要约 3,600 token。

它解决什么问题?

你有没有遇到过这种情况:让 Claude Code 或 Codex 审查一个 PR,结果它打开文件一看——好家伙,直接把全仓库几十万个 token 的源码一股脑塞给 LLM?这不仅烧钱,而且慢,而且经常因为 context window 不够直接翻车。

大部分 coding agent 做 review 的逻辑是:拉 diff → 读 diff 涉及的文件 → 为了理解引用关系再读相关文件 → 循环直到够用。这个循环在大型 monorepo 里简直是 token 吞噬兽。

code-review-graph 的做法是一劳永逸:在项目初始化阶段就建好完整的关系图谱,之后每次 review 都查图谱找 blast radius。相当于给你的 AI agent 配了个"局部地图",它永远只需要看它需要看的那一页。

技术原理拆解

1. Tree-sitter 解析 + AST 建图

安装后运行 code-review-graph build,它遍历项目中所有受控文件(git-tracked),用 Tree-sitter 的 parser surface 逐个解析。当前支持 30+ 种语言,包括 Python、JS/TS、Go、Rust、Java、C/C++、Ruby、Kotlin、Swift、PHP(含 Laravel)、Solidity 等,还覆盖了 Jupyter notebook (.ipynb)。

每张图包含两类元素:

2. Blast Radius 分析

当你让 AI 做 review 时,MCP Server 会接收文件变更列表,然后通过图的边反向追踪——哪些函数调用了被改的函数?哪些文件 import 了被改的模块?哪些测试覆盖了受影响的代码?这个过程叫 "blast radius"。

它会同时给出一个风险评分:每个受影响的函数都会根据它在调用链上的位置获得不同的风险等级,帮你判断要不要重点看。

3. 增量更新 < 2 秒

这不是每次都全量重建。启用 watch mode 或 Git hooks 后,文件保存或 commit 时只会重新解析变更文件,然后通过 SHA-256 hash 找到依赖它的少数几个文件,只重绘这些局部。作者实测:一个 2,900 文件的仓库重新索引不到 2 秒。

4. MCP Server 集成

它把自己包装成一个标准 MCP Server,通过 pip install 后的 code-review-graph install 命令自动配置。支持的平台包括:

Codex、Claude Code、CodeBuddy、Cursor、Windsurf、Zed、Continue、OpenCode、Antigravity、Gemini CLI、Qwen Code、Kiro、Qoder、GitHub Copilot

也就是说,不管你用哪个 AI coding tool,它都能插进去。

5. GitHub Action 集成

CI 里也能跑——同一个图谱分析逻辑以 composite action 的形式暴露出来,每次 PR 推送时在 CI runner 本地建图分析,然后直接在 PR 上评论风险分数。不需要把代码发到任何外部服务,完全本地优先。

上手体验

安装过程异常丝滑,三步搞定:

# 第一步:装 pip install code-review-graph # 或者用 uv:uvx code-review-graph # 第二步:自动配置所有你有的 AI coding 平台 code-review-graph install # 第三步:扫描你的项目 code-review-graph build # 然后你可以开 watch mode 实现实时同步 code-review-graph watch # 可选:可视化图谱 code-review-graph visualize open .code-review-graph/graph.html

装完以后,随便打开一个 project 跟 Claude Code 说一句话:

"Build the code review graph for this project"

它就会自动调 MCP 工具来建图和 review。后续做 review 时,Agent 会自动调用 get_review_contextdetect_changes 等工具,而不是盲目读取文件。

一个实际使用场景

# 在 Claude Code / Codex / Cursor 里直接说: "Review my recent changes with risk scoring" # 它会调用 code-review-graph 的 MCP tools,返回: # - 受影响的函数列表(带风险评分) # - 调用链分析 # - 测试覆盖缺口 # - context_savings 元数据:告诉你省了多少 token

竞品对比

code-review-graph ContextPlus 传统的 Agent review
核心技术 Tree-sitter + 知识图谱 + Leiden 聚类 RAG + Tree-sitter AST + Spectral Clustering 全文搜索 / 语义检索
Context 缩减 中位数 82x(38x~528x) 无明确 benchmark 数据 基本不缩减,全量读取
增量更新 ✅ 基于 hash diff,<2s ❌ 主要靠 RAG 重算 N/A
Blast Radius ✅ 调用链追踪 + 风险评分 部分
CI 集成 ✅ GitHub Action(评论 PR)
自定义语言 ✅ languages.toml 零代码扩展 N/A
开源协议 MIT ✅
Star 26,546 ⭐ 1,961 N/A

坑和局限性

注意几个已知问题:
  • Search Quality (MRR 0.35):关键字搜索在图谱里的排名还不够精准,有些 queries 可能返回空结果(比如 Express 的项目因为 module pattern 命名方式导致搜不到)
  • Flow Detection 召回率仅 33%:框架和约定入口的模式识别在 Python 和 PHP/Laravel 上最强,但 JavaScript 和 Go 还需要改进
  • 小改动有 overhead:如果只有一个文件做了 trivial 修改,图谱的结构元数据本身可能比直接读文件还耗 token
  • Impact Recall = 1.0 是游戏规则的产物:ground truth 是从同一张图导出的,本质是 circular upper bound,不是真正的 recall 指标

不过这些问题都在 roadmap 上,作者已经比较诚实地标注了限制,而且在持续迭代(从 v2.3.5 到 v2.3.7 只隔了一两周)。

对我(Coding Agent 用户)的影响

如果你是 MCP 用户:装上这个之后,你在任何支持 MCP 的工具里做 code review,Agent 都会自动通过 MCP 工具查到 "这个改动只影响 5 个文件",而不是自己猜。这直接省掉了 95% 以上的无用上下文加载。
如果你在 CI 里跑 review:GitHub Action 那一套可以直接加到你的 pipeline 里,每个 PR 自动评论风险评分和测试覆盖缺口,相当于给 CI 装了一个懂代码结构的审查员。
如果你在做 Agentic DevOps:多仓库关联 + wiki 自动生成 + 架构概览这些特性,特别适合大规模 monorepo 或多仓协作的场景。

总结

code-review-graph 是今年最值得关注的 AI coding 基础设施之一。它没有试图重新造一个 coding agent,而是做了一个 Agent 最需要的东西——减少 Agent 要读的内容。这在 token 越来越贵的时代,是一个刚需。

它的设计哲学很清晰:一次建图,长期受益;增量更新,几乎无感;本地优先,零外部依赖。而且 MIT 开源,随便用。

🔖 Tree-sitter 🔖 MCP Server 🔖 Knowledge Graph 🔖 Code Review 🔖 Blast Radius 🔖 GitHub Action 🔖 Incremental Build 🔖 Local-first