📌 项目地址tirth8205/code-review-graph | ⭐ 17,654 颗星 | 🔧 Python | 📜 MIT

问题:AI 助手不知道代码结构

我用 AI 做代码审查时发现一个很坑的事:改了一个函数的返回值类型,助手把整个仓库几百个文件都读了一遍,然后建议修改一个完全无关的模块。这不是模型能力不行,是 AI 工具根本不知道这段代码依赖哪些、被哪些依赖。它只能看到文件路径和文本内容,不知道函数调用链、类继承关系、哪些测试覆盖了变更。

结果就是每次审查消耗几十万 token,模型被大量无关信息干扰,给出各种跑偏的修改。如果你的团队重度依赖 AI 审查,这点尤其明显。

有个开源项目专门解决这个问题:code-review-graph,GitHub 上 17654 星。它用 Tree-sitter 把代码解析成结构图,只把真正受影响的文件传给 AI 助手。不是不读,是只读该读的。

这个工具怎么挑出“该读的”文件

工具把代码库解析成抽象语法树(AST),然后存成一张有向图。图中节点是函数、类、import 声明,边是调用、继承、测试覆盖关系。注意,它只存结构,不存代码原文。

当文件被修改后,工具从修改点出发,沿着调用边、继承边、测试依赖边遍历,找出所有可能受影响的文件——官方术语叫“blast radius”(爆破半径)。AI 助手在读取代码时,只会看到这个半径内的文件,不是整个仓库。

输出是通过 MCP(Model Context Protocol)传给 AI 工具的。code-review-graph 作为 MCP server,提供代码图查询能力。你不需要手动指定上下文,它自动增量更新。

安装和第一次运行

需要 Python 3.10+。如果装了 uv,配置会更好(MCP 配置自动用 uvx 运行),但没装也能用。

pip install code-review-graph                     # 或者 pipx install code-review-graph
code-review-graph install          # 自动检测并配置 AI 工具
code-review-graph build            # 解析代码库构建图

install 命令会检测你当前使用的 AI 工具(支持 Codex, Cursor, Claude Code, Gemini CLI, Kiro, GitHub Copilot for VS Code, GitHub Copilot CLI, CodeBuddy Code),并为每个工具写入正确的 MCP 配置。如果你只想配置某一个平台,比如只给 Cursor 用:

code-review-graph install --platform cursor

配置完成后重启编辑器就能用。build 命令第一次构建可能慢一点,一个 500 文件的项目大概 10 秒。之后 watch 模式可以自动增量更新,不需要每次都全量重新构建。

如果你要移除 CRG,原样提供了卸载命令:

code-review-graph uninstall --dry-run    # 预览所有操作,不写入
code-review-graph uninstall              # 预览、确认后执行
code-review-graph uninstall --yes        # 直接执行
code-review-graph uninstall --all-repos  # 清除所有注册仓库
code-review-graph uninstall --keep-data  # 移除集成但保留图数据

我实际用下来的感觉

我在一个大概 3000 文件的 Python + TypeScript monorepo 上试了。没用之前,AI 审查一次变更经常读 350+ 文件,回复里频繁出现对无关模块的修改建议。用了 code-review-graph 后,每次传给助手的文件数降到 30–40 个,模型回复基本锁定在修改范围内。token 我算不出具体省了多少,但更明显的变化是助手几乎不再给出跟变更无关的修改——你不会看到它建议改一个毫不相干的模块。

我也在一个 200 文件的 Go 服务上试了。全量读取也就 200 个文件,用了这个工具每次传 20–30 个文件,提升有但比较微乎其微。我觉得 50 个文件以下的项目没必要折腾。

什么项目值得试

看官方文档和我的体验:

  • 仓库文件超过 200 个
  • 大型 monorepo(多个子系统放一起)
  • 团队重度依赖 AI 做代码审查,每月 token 花费明显

如果项目小于 50 文件,跳过。pip install 和配配置的时间不如直接全量读省事。

我知道的限制(基于 README)

  • 不处理配置文件。图只针对代码结构(函数、类、import),不会去解析 package.jsonpyproject.toml 里的依赖声明。如果你改了 dependencies 字段,工具帮不上忙。
  • 支持语言取决于 Tree-sitter 的 parser。主流语言(Python, JavaScript/TypeScript, Go, Rust, Java, C/C++ 等)都有,但小众语言可能不支持。
  • 需要 Python 3.10+,跨平台(Linux/macOS 都支持,没提 Windows 限制但 Tree-sitter 本身跨平台)。

另外,README 提供了 GitHub Action 集成思路,可以在 CI/CD 里为每个 PR 自动构建图,让 AI 在 PR 审查时就理解变更范围。我还没在 CI 里试,但逻辑可行。

总结

如果你的项目足够大、AI 审查 token 消耗让你心疼,这个工具值得花十分钟配置。它解决的问题很具体:让 AI 助手只读该读的代码,不读无关的。安装简单,没有花哨功能,但实用。

这篇文章对你有帮助吗?

发表回复