它是什么?一句话讲透
code-review-graph 是一个本地优先的代码知识图谱工具。你在项目里跑一下,它用 Tree-sitter 解析全部源码,建出一张包含函数、类、import 调用关系的图,然后通过 MCP Server 暴露给你的 AI coding agent —— 当你让它做 code review 时,它不会傻乎乎地重新读一遍整个代码库,而是先问图谱:"这次改动影响了谁?",然后只看受影响的文件和函数。
它解决什么问题?
你有没有遇到过这种情况:让 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)。
每张图包含两类元素:
- Nodes(节点):Files、Classes、Functions/Methods、Types、Tests
- Edges(边):CALLS、IMPORTS_FROM、INHERITS、IMPLEMENTS、CONTAINS、TESTED_BY、DEPENDS_ON
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 上评论风险分数。不需要把代码发到任何外部服务,完全本地优先。
上手体验
安装过程异常丝滑,三步搞定:
装完以后,随便打开一个 project 跟 Claude Code 说一句话:
它就会自动调 MCP 工具来建图和 review。后续做 review 时,Agent 会自动调用 get_review_context 和 detect_changes 等工具,而不是盲目读取文件。
一个实际使用场景
竞品对比
| 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 用户)的影响
总结
code-review-graph 是今年最值得关注的 AI coding 基础设施之一。它没有试图重新造一个 coding agent,而是做了一个 Agent 最需要的东西——减少 Agent 要读的内容。这在 token 越来越贵的时代,是一个刚需。
它的设计哲学很清晰:一次建图,长期受益;增量更新,几乎无感;本地优先,零外部依赖。而且 MIT 开源,随便用。