别再让 Claude/Codex 反复扫仓库了:这个工具让 AI 先看代码地图
你用 AI 改代码时,最烧 token 的地方往往不是“写代码”。
而是它在改之前,不知道该看哪里。
你只是改了一个接口,它可能先读 middleware、models、config、utils;你只是让它 review 一个 PR,它可能把同目录下很多无关文件都扫一遍。
小项目还好。
大项目、monorepo、老系统里,这个问题会迅速失控。
最近我查了一个 GitHub 项目:code-review-graph。
网上不少介绍都把它叫做“省 token 工具”,但我觉得这个说法还不够准确。
它更像是:给 AI 编程助手装一张本地代码地图。
它会先用 Tree-sitter 解析你的仓库,把函数、类、import、调用关系、继承关系、测试关系抽出来,存到本地 SQLite 图数据库里。之后 Claude Code、Cursor、Codex、Copilot 等 MCP 客户端就可以先查图谱,再决定读哪些文件。
也就是说,AI 不再一上来就“全仓盲读”。
而是先问:
这个函数被谁调用?
这个文件改了会影响哪些模块?
相关测试在哪里?
哪些调用链在风险半径内?
这次变更大概能省多少上下文?
这才是它真正有意思的地方。
AI 写代码最浪费 token 的地方,终于有人下手了
传统 AI Review 的上下文获取方式很粗暴:
看到 diff。
猜相关文件。
读一堆源码。
再开始分析。
听起来没毛病。
但真实情况经常很蠢。
你让 AI 看一个接口改动,它可能把整个目录翻一遍;你让它判断一个函数有没有副作用,它可能先读一堆配置、工具类、测试 fixture。它不是懒,它甚至太勤奋了。
问题是,勤奋不等于有效。
code-review-graph 换了一个顺序:
先建图。
改代码后查影响半径。
只把必要的函数、调用方、测试、风险摘要交给 AI。
再让 AI 读取最小必要文件。
官方和第三方文章给出的数字口径不完全一样:早期文章常提到 6.8x、8.2x、最高 49x;当前 PyPI/README 里又给出了按“整仓问答 vs 图查询”测得的 38x 到 528x。
这里不要把数字当成绝对承诺,它们测的是不同场景。
但方向是明确的:越大的仓库,越复杂的依赖,越容易省。
不对,准确说,不只是省。
是少读噪音。
这个区别很关键。
因为长上下文并不等于高质量上下文。你塞给 AI 一堆无关文件,它不仅更贵,还更容易被带偏。
最值得注意的是:改代码后图谱会更新
这点比“安装一次建图”更重要。
因为代码图谱如果不更新,就会变成过期地图。AI 查到旧调用链,反而可能误导判断。
code-review-graph 的做法是增量更新。
第一次完整解析仓库:
code-review-graph build
只重新解析变更过的文件:
code-review-graph update
如果你安装时同意注入 graph instructions,并且 hooks 已经写进 .claude/settings.json 或对应客户端配置里,图谱会在文件变化后自动更新。
所以日常使用里,不一定需要你手动开 watch。
watch / daemon 更适合那些没有 hooks、或者想后台盯多个仓库的场景。
官方还区分了两个很实用的命令。
只读当前变更,基于现有图谱输出风险面板和 token savings:
code-review-graph detect-changes --brief
先刷新变更文件进图谱,再输出同样的分析面板:
code-review-graph update --brief
简单理解:
日常开发:detect-changes --brief 就够。
刚 rebase、大改一轮、怀疑图谱过期:用 update --brief。
长期使用:确保 hooks 和 graph instructions 已经写进 agent 配置。
这就把 AI 改代码的工作流变成了:
改一小步。
刷新图谱。
查影响半径。
让 AI 只读必要上下文。
再决定下一步改哪里。
这比“让 AI 自己到处 grep”靠谱得多。
而且很现实。
因为我们平时用 AI 改代码,最怕的不是它不会写某个函数,而是它不知道哪里不能碰。
怎么上手?别漏掉初始化
当前 PyPI 最新版是 2.3.5,发布于 2026 年 5 月 25 日。
安装只是第一步:
pip install code-review-graph
真正关键的是初始化。
有些教程会直接写 install,但你实际跑的时候会看到类似 code-review-graph init / code-review-graph install 这一类初始化流程。它做的不是单纯装包,而是把 MCP server 配到你的 AI 工具里。
比如一次初始化可能会自动检查并配置:Codex、Claude Code、Cursor、Zed、Continue、OpenCode、Antigravity、Qwen Code、Kiro。
它还会生成或修改这些东西:
.mcp.json/ 各客户端 MCP 配置.claude/skills里的 code-review-graph skill.claude/settings.jsonhooks- git pre-commit hook
.cursorrules、.windsurfrules、Kiro steering 等规则文件.gitignore里的.code-review-graph/
这一步很容易被忽略。
但它恰恰决定了 Claude Code / Codex 后面会不会“优先查图谱”。
因为初始化末尾会询问:要不要把 graph instructions 注入到这些规则文件里。你同意之后,AI 客户端拿到的不只是一个 MCP 工具,而是一条明确工作习惯:探索代码、review diff、判断影响范围时,先用 code-review-graph,再去读文件。
这才是这个工具真正进入日常工作流的地方。
初始化完成后,再构建知识图谱:
code-review-graph build
如果只想配置某个工具:
code-review-graph install --platform codex
code-review-graph install --platform cursor
code-review-graph install --platform claude-code
code-review-graph install --platform copilot
常用命令也不复杂:
code-review-graph status
code-review-graph update
code-review-graph visualize
code-review-graph wiki
code-review-graph detect-changes --brief
code-review-graph serve
AI 客户端里也有 slash commands:
/code-review-graph:build-graph
/code-review-graph:review-delta
/code-review-graph:review-pr
如果你只是想试一下,我建议从最小闭环开始:
pip install code-review-graph
code-review-graph init
code-review-graph build
code-review-graph detect-changes --brief
如果你当前版本没有 init,就用:
code-review-graph install
重点不是命令名字。
重点是确认三件事:MCP server 已配置、graph instructions 已写入 agent 规则、图谱已经 build。
这三件事缺一个,效果都会打折。
先别急着把它塞进所有流程。
跑通一次 review delta,看看它给出的影响半径、相关测试、风险提示是不是靠谱。
靠谱,再把它留在日常 agent 配置里。
否则就容易变成工具收集癖。
嗯,开发者都懂。
推荐使用姿势
如果你已经跑过 code-review-graph init,并同意把 graph instructions 写入 agent 规则,其实不需要每次都写复杂提示词。
你正常说:
帮我改这个 bug。
或者:
review 一下这个 PR。
再或者:
看看这个函数改动会影响哪里。
Claude Code / Codex / Cursor 理论上就会先走图谱:
- 探索代码:先用
semantic_search_nodes或query_graph - 看影响范围:先用
get_impact_radius - 做 code review:先用
detect_changes+get_review_context - 查调用关系:用
query_graph的callers_of/callees_of/imports_of/tests_for - 看架构:用
get_architecture_overview+list_communities
只有图谱覆盖不到时,才 fallback 到 Grep / Glob / Read。
所以这个工具最舒服的地方不是“你多记几个命令”。
而是初始化之后,它会把 AI 的默认工作习惯改掉:
先查地图,再读源码。
这件事特别重要。
过去我们经常只看 AI 最终交出来的代码 diff,但不看它前面到底读了哪些上下文。结果就是:它可能基于错误范围做了一个看似正确的修复。
更糟的是,你还不知道它错在哪。
有了图谱之后,至少 AI 会先按规则审一遍“地图”。
地图覆盖不到,再回到传统读文件。
别让它闭着眼开车。
它适合什么项目?
适合:
- monorepo
- 中大型后端项目
- 多人维护的历史项目
- 经常用 AI Review PR 的团队
- 经常修改公共函数、基础组件、接口层的项目
- 想控制 Claude/Codex/Cursor token 成本的人
不太适合:
- 几十个文件的小项目
- 单文件脚本
- 动态调用、反射、插件系统特别多的项目
- 不愿维护图谱 freshness 的团队
第三方文章也反复提到一个限制:它是静态结构图,不等于运行时真相。动态路由、配置驱动、跨服务调用、反射、运行时注入,可能超出图谱能力。
所以它不是测试替代品,也不是人工 Review 替代品。
它的定位应该是:AI 编程助手的上下文路由器。
这个定位挺准。
它不负责替你判断所有业务逻辑,也不负责证明代码一定没问题。它负责在 AI 开始读代码之前,先告诉它:你大概率应该从哪里读起。
像导航。
导航不替你开车。
但没有导航,你在陌生城市里开车,真的很容易绕到崩溃。
结论
AI 编程下一阶段,不是单纯让模型更长上下文。
长上下文当然有用,但长上下文也会带来更高成本、更低信噪比。
更聪明的方式是:先把代码库结构化,再让 AI 按图索引。
code-review-graph 做的正是这件事:
本地建图。
增量更新。
查影响半径。
输出最小上下文。
让 AI 少读无关代码,多看真正有风险的地方。
真正省 token 的,不是少问 AI 几句话。
而是别再让它一遍遍读不该读的文件。
如果你已经在用 Claude Code、Codex、Cursor 改大仓库,我建议你至少试一次。
不是为了追新工具。
是为了看看:你每天烧掉的 token 里,到底有多少是在给 AI 的迷路买单。
参考来源
- GitHub/README:https://github.com/tirth8205/code-review-graph
- PyPI 2.3.5:https://pypi.org/project/code-review-graph/
- 官网:https://code-review-graph.com/
- Innovatrix 技术拆解:https://www.innovatrixinfotech.com/blog/code-review-graph-claude-code-token-usage-reduction
- Starlog 分析:https://starlog.is/articles/data-knowledge/tirth8205-code-review-graph
- Technolati 教程:https://www.technolati.com/code-review-graph-add-local-project-context-to-claude-code/
- Kami 中文介绍:https://kami.ee/archives/code-review-graph-claude-code-context-map-guide
标题备选
- AI 写代码最浪费 token 的地方,终于有人下手了
- 别再让 Claude/Codex 反复扫仓库了:这个工具让 AI 先看代码地图
- 大仓库用 AI 改代码,真正省钱的是这一步
- 让 AI 少读 90% 无关代码:code-review-graph 为什么突然火了?