13.3k star 的 code-review-graph:给 Claude Code 装上"代码地图",token 直降 6.8 倍

0 阅读8分钟

Hello,我是Niko。16年程序员老兵,专注分享 AI编程实战经验、宝藏工具资源、前沿技术动态。不玩套路,多讲干货。


最近翻 Claude Code 的 /insights 报告,看到一个让我有点心疼的数字:上个月光是"读代码"这一项,token 消耗占了将近一半。

写到一半 AI 卡住了,让它把相关文件再读一遍;让它修个 bug,它从 package.json 一路读到测试文件;问它"这个函数还有谁在调",它干脆把整个目录 grep 一遍。

每次都不多,加起来就是一笔不小的账单。

我一直觉得,AI 编程时代最大的成本浪费不是模型推理本身,而是上下文喂养方式太粗暴。把整个文件、整个目录硬塞给 AI,让模型自己从一堆无关代码里捞出真正相关的部分。这个成本既体现在 token 账单上,也体现在生成质量上:上下文越乱,模型越容易跑偏。

这周翻 GitHub Trending,发现一个叫 code-review-graph 的项目,13.3k star,专门解决这个问题。看完它的原理我有点兴奋,今天专门写一篇推荐。

它是什么

说白了就是给你的代码库预先建一张图,让 AI 不用每次都从头扫描。

它做的事情其实不复杂:

ChatGPT Image Apr 27, 2026, 11_12_24 PM.png

  • 用 Tree-sitter 把整个代码库解析成抽象语法树,识别出函数、类、导入、调用关系
  • 把这些结构化信息存成一张图(节点是函数/类,边是调用/继承/依赖),落地到本地 SQLite
  • 通过 MCP 协议把 28 个查询工具暴露给 Claude Code

Claude Code 要看代码时,不再是"打开文件全文读一遍",而是先问图:改动这个函数会影响到哪些地方?哪些测试会跑到?拿到一份精确的"必读清单"再去读文件。

作者给的对比数据相当直接:一个 27732 个文件的 Next.js monorepo,传统方式让 AI 做一次 review 要喂几千个文件;用了图谱之后,最终只需读 15 个真正相关的文件。

为什么值得推荐

1. 它解决的是 AI 编程"看不见的浪费"

很多人盯着模型选型、prompt 技巧,但忽略了一个事实:AI 读代码的方式还停留在 grep + 全文读取。Claude Code 自带的 grep 和 read 工具已经算优秀了,但本质上还是"先模糊匹配,再扩大范围"。代码库一大就开始失控。

code-review-graph 的思路是把"代码结构"这件事预计算+持久化。一次解析,多次复用。SQLite 里存的就是你这个项目的完整调用关系图,AI 每次查询都是 O(图遍历) 而不是 O(全量扫描)。

这种"预先建图"的思路,在 OSS Insight 最近发的 2026 Agent Memory 赛道分析 里被列为 5 大主流方向之一,专门服务于编程智能体的"代码记忆"分支。不是孤例,已经在形成共识。

2. Blast-Radius:让 AI 真正理解"改动的影响半径"

这个功能我看完之后觉得很有意思。

写代码时其实经常做一件事:改一行代码前,先在脑子里推演"这个函数还有谁在调?改了之后哪些测试会挂?"。资深工程师靠的是熟悉度,新人和 AI 都靠暴力搜索。

code-review-graph 把这件事做成了一个标准查询。给定一个文件或函数的改动,它沿着图的边逆向追溯,告诉你受影响的函数、文件、测试的完整集合,并附上一个风险评分。

对应到 AI 编程的场景:让 Claude Code 改一个底层函数,它不会再"我先打开 10 个相关文件看看吧",而是先问图,拿到精确的影响半径,然后只读这些文件。

从"全文喂养"换成"按需检索",差别就在这里。

3. 增量更新+多语言+持久化,工程化做得很扎实

我看了下它的工程细节,几个点让我觉得作者是认真的:

ChatGPT Image Apr 27, 2026, 11_12_46 PM.png

  • 23+ 语言支持:Python、TypeScript、Go、Rust、Java、Kotlin、Swift、Solidity 都覆盖了,连 Jupyter Notebook 都解析
  • 增量更新:只重新解析变更过的文件,2900 个文件的项目重建索引不到 2 秒,意味着可以挂在 git hook 上跑
  • 持久化到 SQLite:不是内存里临时跑一次,而是一份长期可查的资产
  • 可视化:内置 D3.js 力导向图,配合 Leiden 社区检测算法,能看出代码库的"知识团块"结构
  • 多种导出:GraphML、Neo4j Cypher、Obsidian vault、Markdown wiki 都支持,可以接进现有工具链

不是 demo 级项目,是冲着生产用的方向设计的。

4. 不挑工具:除了 Claude Code,还自动配 12 家

code-review-graph install 这一条命令会自动检测并配置:Claude Code、Codex、Cursor、Windsurf、Zed、Continue、OpenCode、Antigravity、Qwen、Qoder、Kiro。

即使你不用 Claude Code,这套图谱也能直接接到其他工具上。一份图谱、多端复用,这种思路在 Skill / MCP 生态里越来越常见。

它和 Claude Code 自带工具的差别在哪

这是我最关心的问题。Claude Code 本身已经有 grep、read、glob 这套文件检索工具,加上 Auto Mode 的判断能力,为什么还要再加一层?

我对比了一下,差异主要在三个维度:

维度Claude Code 原生code-review-graph
检索方式文本/正则匹配结构化图谱遍历
上下文成本每次重新探索,需要多轮 read一次预解析,O(查询)级
影响分析无(需 AI 自己推理)直接给出 blast radius
跨文件理解受限于一次性读入的文件数全局图谱,无视文件边界
持久性单 session 内有效跨 session、跨工具复用

简单说:原生工具适合"探索式"场景,code-review-graph 更适合"精确改动"场景。改一行核心代码的影响分析、大型 monorepo 的代码评审、跨模块重构,这几个场景下图谱的价值最大。

反过来说,写一个全新的工具脚本、临时改个文档、调一个独立的小函数,上图谱反而是杀鸡用牛刀。

怎么上手

三条命令,最小可用:

pip install code-review-graph
code-review-graph install      # 自动配置 Claude Code 等工具
code-review-graph build         # 在你的项目根目录构建图谱

build 完成后,Claude Code 会自动通过 MCP 调用图谱。你可以试试这种问法:

  • "改这个函数会影响哪些测试?"
  • "这个模块和支付逻辑有哪些耦合?"
  • "找出项目里被调用最多但没有测试覆盖的函数"

这些问题在原生 grep 时代基本没法回答,或者答案不可靠。有了图谱之后,AI 是基于结构化数据回答的,不再是"猜"。

如果是中大型项目(500 文件以上),第一次 build 大约花 10 秒。之后挂上文件保存或 git 提交的钩子,增量更新 2 秒以内。

不足和提醒

按惯例说几个我看完资料后判断的局限点,避免读者带着完美预期去试:

1. 小项目收益有限。 几十个文件的项目,AI 直接全读也花不了多少 token,上图谱反而增加复杂度。社区里已经有讨论说"single-file changes in small packages"几乎看不到节省。

2. 图谱质量受限于解析器。 Tree-sitter 对静态语言(Go、Rust、Java)的解析很扎实,但 Python 这类高动态语言的运行时调用关系(反射、装饰器、metaclass)图谱抓不全。改这类代码时,图谱给的影响半径可能漏掉东西。

3. 增加了一层基础设施。 SQLite 文件、watcher 进程、MCP 配置,多一层就多一个可能出问题的环节。生产项目用之前建议先在小项目上跑一周熟悉一下。

4. 6.8 倍这个数字是平均值。 实际节省幅度跟你的项目规模、任务类型强相关。代码评审场景节省最明显,日常单文件编辑节省幅度小很多。别拿 49 倍这个上限值做预期管理。

5. 已经有了改进版分支。 社区里有个叫 better-code-review-graph 的 fork,在搜索精度、调用关系解析、嵌入向量后端上做了增强。如果你对原版的某些细节不满意,可以看看这个分支。

一句话总结

如果你在用 Claude Code 或其他 AI Coding 工具搞中大型项目,又被 token 账单和上下文混乱困扰,code-review-graph 值得花一个下午装上试试。它把"代码结构"这个隐性资产变成 AI 可以直接查询的图,省的不只是 token,还有 AI 跑偏后的返工成本。

我自己的判断是,这类"为 AI 准备的代码资产"会越来越多。模型能力卷到这个程度后,差距其实在上下文怎么喂这一层,code-review-graph 算是这个方向上比较成熟的一个尝试。


Niko-白色版.png

资源链接: