code-review-graph:智能代码审查利器,令牌减少中位数达 82 倍!

📅 2026/7/18 9:23:01
code-review-graph:智能代码审查利器,令牌减少中位数达 82 倍!
code-review-graph停止消耗令牌开启智能代码审查AI 编码工具在审查任务中往往需要反复阅读大量代码库。code-review-graph 解决了这一问题。它使用 Tree-sitter 构建代码的结构映射增量跟踪代码变更并通过 MCP 为 AI 助手提供精确的上下文使其仅读取关键内容。快速开始使用以下命令可快速开始pip install code-review-graph# 或者pipx install code-review-graphcode-review-graph install# 自动检测并配置所有支持的平台code-review-graph build# 解析你的代码库一条命令即可完成所有设置。install 命令会检测你使用的 AI 编码工具为每个工具编写正确的 MCP 配置在支持的平台上安装原生钩子/技能并将支持图的指令注入平台规则。它会自动检测你是通过 uvx 还是 pip/pipx 进行安装并生成正确的配置。安装完成后请重启编辑器/工具。若要针对特定平台进行配置可使用 code-review-graph install --platform platform 命令。需要 Python 3.10 及以上版本。为获得最佳体验建议安装 uv。若要从 Git 或 SVN 项目中移除 CRG可使用对称的卸载命令。之后打开项目向 AI 助手提问“为这个项目构建代码审查图”。对于一个包含 500 个文件的项目初始构建大约需要 10 秒。之后监视模式和支持的钩子可以自动更新图。工作原理代码仓库会使用 Tree-sitter 解析为抽象语法树AST存储为节点函数、类、导入和边调用、继承、测试覆盖的图结构。在审查时通过查询该图来计算 AI 助手需要读取的最小文件集。影响范围分析文件发生更改时图会追踪所有可能受影响的调用者、依赖项和测试即更改的“影响范围”。AI 助手只需读取这些文件无需扫描整个项目。增量更新小于 2 秒启用钩子或监视模式后文件保存和支持的提交钩子会触发增量更新。图会对更改的文件进行差异比较通过 SHA-256 哈希检查找到其依赖项并仅重新解析发生更改的部分。一个包含 2900 个文件的项目重新索引的时间不到 2 秒。解决单仓库问题大型单仓库中令牌浪费问题最为严重。该图能够过滤掉无关信息在审查上下文中排除 27700 多个文件实际仅需读取约 15 个文件。广泛的语言支持 Jupyter 笔记本解析器支持涵盖多种语言和 Jupyter 笔记本在可用的情况下使用 Tree-sitter必要时采用针对性的回退方案。对于 PHP 项目还会进行仓库范围内的 Composer PSR-4 解析、Blade 模板引用以及 Laravel 路由/模型语义边分析。添加自定义语言无需分叉仓库可在 .code-review-graph/ 目录下创建 languages.toml 文件添加自定义语言。CI 中的风险评分 PR 审查GitHub Action相同的分析可以作为复合 GitHub Action 运行保持本地优先每次拉取请求时发布固定评论可选的 fail-on-risk 输入可将审查变为合并门控。基准测试关键指标显示在 6 个仓库中每个问题的令牌减少中位数约为 82 倍全语料库基线与图查询对比。经常引用的 528 倍是最大值来自单个最佳情况的仓库fastapi并非典型结果。令牌效率每个问题的令牌减少中位数约为 82 倍范围 38 倍 - 528 倍。自 v2.3.4 版本起审查和影响工具会附带上下文节省估计v2.3.5 版本中 CLI 会显示“令牌节省”面板。影响准确性与图派生的真实数据相比平均 F1 分数为 0.71。影响范围分析在所有 13 次评估提交中能恢复真实数据中的每个文件但这应视为上限。构建性能展示了不同仓库的文件数、节点数、边数、流程检测时间和搜索延迟。局限性和已知问题影响“召回率 1.0”是图派生且循环的。小单文件更改时图上下文可能会超过朴素的文件读取。搜索质量MRR 0.35排名需要改进。流程检测召回率 33%JavaScript 和 Go 的流程检测需要改进。精确率与召回率的权衡影响分析有意采用保守策略会存在一些误报。功能特性code-review-graph 具有增量更新、广泛的语言和笔记本支持、框架感知的 PHP 解析等多种功能特性。使用方法提供了斜杠命令、CLI 参考等使用方法还介绍了令牌节省面板和多仓库守护进程的使用。30 个 MCP 工具图构建完成后AI 助手会自动使用 30 个 MCP 工具还提供了 5 个工作流模板。配置可通过 .code-review-graphignore 文件排除某些路径不进行索引还介绍了可选依赖组和环境变量的配置。