code-review-graph 完整指南:代码审查 token 省 65 倍
【免费下载链接】code-review-graphLocal-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.项目地址: https://gitcode.com/GitHub_Trending/co/code-review-graph
code-review-graph 是一个本地优先的代码图谱工具:用 Tree-sitter 把代码库解析成持久化结构图,再通过 MCP(一种让 AI 助手调用外部工具的标准协议)和命令行,只喂给 AI 助手最小必要上下文。官方基准里,读完整 flask 仓库要 14 万 token,从图里拿答案只要约 2 千。
AI 代码审查为什么费 token
让 AI 审查一次改动时,它的默认动作是"能读就读"——把可能相关、也可能不相关的文件统统塞进上下文。仓库越大,浪费越狠:token 烧得快、响应变慢,模型注意力还被无关代码稀释。
code-review-graph 的定位就是挡在 AI 前面的过滤器:先算清楚这次改动真正波及哪些文件,再让助手只读这些,其余一概不碰。
三步装完:三分钟跑起来
pip install code-review-graph code-review-graph install code-review-graph buildinstall会自动检测你机器上的 AI 工具(Cursor、Claude Code、Codex、Zed 等十几类),逐个写好 MCP 配置,重启编辑器即可;只想配某一个就加--platform cursor,想先看会改哪些文件就加--dry-run。build首次构建看仓库规模,约 3,000 个文件的仓库冷构建约 40 秒,几百文件的小项目 10 秒左右。
之后就不用管图了:开 watch 模式持续监听,或者靠各平台支持的 git 钩子,在文件保存和提交时自动增量更新。
它是怎么做到的:从源码到最小上下文
打个比方:出门前先有一张城市地图,某条路施工了,你只需要看那一带的替代路线,不用重画整张地图。
拆成三步看:
- 解析成图。parser 模块 用 Tree-sitter(一个能把源码快速变成语法树的增量解析器)提取每个文件里的函数、类、导入和调用点,边是调用、继承、测试覆盖这些关系。语言映射表
EXTENSION_TO_LANGUAGE加四张节点类型表驱动了 30 多种语言的解析——Python、TypeScript、Go、Rust、Java、C/C++ 都在内,连 Jupyter Notebook(.ipynb)也不落下。 - 存进 SQLite。节点和边落在本地
.code-review-graph/目录的 SQLite 文件里,不依赖云服务,数据不出机器。 - 沿边算影响范围。有文件变更时,系统从被改动的函数出发,沿依赖边做 BFS(广度优先搜索,一层层往外扩散),把受影响的调用方、依赖方和测试全部收进来——这就是"影响范围"。AI 拿到的只是这份最小文件集,而不是整个仓库。
增量这条路径值得单独说:incremental.py 先用git diff拿到变更文件,再靠图里现成的导入/调用边找出依赖方,而 SHA-256 哈希没变的文件直接跳过、不重新解析。所以"重新解析数"只跟你改了几个文件有关,跟依赖链有多长无关。
数据说话:65 倍削减怎么来的
数字来自自动评估跑在 6 个真实开源仓库、13 个提交上的结果,code-review-graph eval --all即可复现:
| 指标 | 数值 |
|---|---|
| token 削减中位数 | 约 65×(区间 36×–376×) |
| 影响精度 F1(精确率与召回率的调和平均) | 0.693 |
| 多跳检索任务均分 | 0.909(11 项任务) |
| 增量更新 | 约 3,000 文件仓库,空更新 1.4 s,改 2 个文件约 2.5 s |
两个数字要会读:
- 影响精度跑的是 graph-derived 模式,真值本身来自同一张图,属于"循环上界"。0.693 应理解为天花板,而不是"答对了 69%"。
- 系统预测偏多是刻意设计:最坏的一次是 10 个文件的改动被标出 33 个。设计取舍写得很直白——漏掉一个依赖,比让 AI 多读一个文件代价大得多。
能帮你解决哪些事
- 🔍合并前审查:
detect-changes(默认对比HEAD~1)把 diff 映射到受影响的函数、执行流和测试缺口,给出带风险评分的报告,--brief只留风险摘要。 - 架构瓶颈定位:枢纽节点工具找出连接数最多的"热点",桥梁节点按介数中心性找出"断了就断一片"的桥。
- 单次变更影响面:问一句"改这个文件会波及什么",图直接返回调用方、依赖方与测试清单。
- 跨仓库搜索:
register注册多个仓库后,跨仓库工具能一次搜全部。 - 新人熟悉架构:内置的 5 个 MCP 提示词模板(审查、架构、调试、入职、合并前检查)可以直接基于图结构生成上手材料。
上手前该知道的事
- 排除规则:在仓库根目录建
.code-review-graphignore,写generated/**、vendor/**这类模式。注意 git 仓库里只索引被跟踪的文件(git ls-files),gitignore 掉的内容本来就跳过;这个文件管的是"已跟踪但要排除",或 git 不可用的场景。 - 嵌入搜索怎么配:默认走 FTS5 关键词加混合检索;要语义向量嵌入,选本地 sentence-transformers、Google Gemini、MiniMax 或 OpenAI 兼容端点(vLLM、LocalAI 等)。OpenAI 兼容那类不用装额外依赖,设好
CRG_OPENAI_BASE_URL、CRG_OPENAI_API_KEY、CRG_OPENAI_MODEL三个环境变量,给embed_graph传provider="openai"就行。 - 模型别选预览版:带
-preview/-beta/-exp后缀的嵌入模型可能悄悄改维度或下线,一旦维度变了,所有节点都得重嵌。用 GA 稳定版。 - 环境:Python 3.10+;装了 uv 的话 MCP 配置会优先用
uvx,体验更顺。
它适合谁:大仓库 + AI 审查的组合
如果你的仓库不小、团队又靠 AI 做代码审查,或者经常要回答"改这里会波及什么",它值得直接进日常工具链——本地 SQLite,隐私上也省心。反过来,几十个文件的小项目、或者没在用任何支持 MCP 的 AI 编码工具时,收益就很有限,整库读一遍也不心疼。
收尾
code-review-graph 把 AI 代码审查从"整库重读"拉回"定点阅读",核心动作就三个:建图、增量追踪、只喂最小上下文。想验证它值不值,挑一个真实仓库跑一遍 install,看一次审查的 token 账单就明白了。
仓库内文档延伸阅读:README、使用手册、架构说明。项目采用 MIT 许可。
【免费下载链接】code-review-graphLocal-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.项目地址: https://gitcode.com/GitHub_Trending/co/code-review-graph
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考