别再让 Claude/Codex 反复扫仓库了:这个工具让 AI 先看代码地图

别再让 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.json hooks
  • 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_nodesquery_graph
  • 看影响范围:先用 get_impact_radius
  • 做 code review:先用 detect_changes + get_review_context
  • 查调用关系:用 query_graphcallers_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 的迷路买单。

参考来源


标题备选

  1. AI 写代码最浪费 token 的地方,终于有人下手了
  2. 别再让 Claude/Codex 反复扫仓库了:这个工具让 AI 先看代码地图
  3. 大仓库用 AI 改代码,真正省钱的是这一步
  4. 让 AI 少读 90% 无关代码:code-review-graph 为什么突然火了?