如何把 AI 代码审查的 token 消耗降 95%:code-review-graph 代码知识图谱完整指南 如何把 AI 代码审查的 token 消耗降 95%code-review-graph 代码知识图谱完整指南【免费下载链接】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 助手一次小改动让它审查它往往会把半个仓库重新读一遍。flask 整个语料库约 143,594 个 token而 code-review-graph 的图查询只需 2,196 个——省掉 98% 以上。这个项目是一个本地优先local-first的代码知识图谱用 Tree-sitter一种把任意语言代码解析成语法树的引擎给整个仓库画出结构地图再通过 MCPModel Context Protocol让 AI 工具调用外部能力的事实标准协议和 CLI 把最小必要上下文喂给 AI代码审查从此只读该读的文件。为什么需要它先算一笔账。不用这类工具时每次审查的隐性成本有三块token 账单助手倾向于全量重读仓库越大烧得越多FastAPI 单个仓库的源码就有约 95 万 token上下文窗口挤占无关代码混进来真正该看的 diff 反而被稀释多跳问题失答「这个函数还有谁在调用测试覆盖了吗」这类问题靠 grep 要反复试而图里一次查询就有答案。它的一句话定位把代码库变成一张可增量维护的 SQLite 图让 AI 助手从漫灌式读取切换到按需取用。第一次跑起来三条命令接入pip install code-review-graph # pipx 亦可 code-review-graph install code-review-graph buildpip install装包要求 Python 3.10install自动探测你装了哪些 AI 编码工具Codex、Claude Code、Cursor、Windsurf、Gemini CLI、Kiro、Qoder 等 15 平台逐一写入 MCP 服务器配置、注入钩子和规则文件全程可加--dry-run预览用--platform cursor可以只配一个build解析整个仓库建图约 3,000 个文件的冷构建实测约 40 秒。配完重启你的编辑器然后对助手说一句Build the code review graph for this project之后图会由 git 钩子和 watch 模式持续保鲜你基本不用再管它。幕后发生了什么代码是怎么变成图的把整个过程想象成给代码库拍一张 X 光片 。第一步拍片。解析器 用 Tree-sitter 把每个文件拆成语法树抽出四类节点——函数、类、导入、调用点——以及它们之间的关系边谁调用谁、谁继承谁、哪个测试测哪段代码。35 种以上语言 Jupyter 笔记本都在覆盖范围内个别场景用专用回退解析器兜底。第二步存档。节点和边落进仓库里的一个 SQLite 文件.code-review-graph/graph.db没有外部数据库、没有云服务图数据跟仓库走。第三步回答。审查时 AI 不读源码而是查图沿边从变更点向外做广度优先遍历默认深度 2 层把可能受影响的文件、函数和测试一次性圈出来这就是所谓的影响半径blast radius分析。实现见 incremental.py 与 main.py 中的get_impact_radius。第四步保鲜。你改了文件钩子或 watch 模式触发增量更新先git diff找变更再沿图上的导入/调用边找出依赖方最后只对 SHA-256 哈希真正变化的文件重新解析。在约 3,000 个文件的仓库上改两个文件后重新索引约 2.5 秒其中约 1.4 秒是进程启动开销。能力地图这张图还能干什么变更审查核心场景影响半径分析一次改动波及哪些函数、类和文件一次调用全给出风险评分变更分析detect-changes把 diff 映射到受影响的函数、执行流和测试缺口附风险等级执行流追踪从入口点拉出调用链并按关键度排序回答哪些业务路径被这次改动碰到。结构洞察帮你看代码的组织方式社区检测用 Leiden 算法一种图聚类算法把强关联代码聚成社区超大社区自动递归拆分枢纽/桥梁检测找出连接最多的热点节点和介数中心性瓶颈即架构承重墙知识缺口分析标记孤立节点、没测试的热点、稀薄社区意外连接评分跨社区、跨语言的你不该这么耦合警告。检索与遍历混合搜索FTS5 关键词BM25 可选向量嵌入先找锚点节点带预算的图遍历从任意节点 BFS/DFS深度和 token 上限都可配16 种查询模式callers_of、tests_for、inheritors_of直到 Spring 的endpoints_for、consumers_of。产出与集成多格式导出GraphMLGephi/yEd、Neo4j Cypher、Obsidian 库、SVG、交互 HTML 可视化D3.js 力导向图多仓库管理注册多个仓库、跨仓库搜索crg-daemon守护进程同时盯住多个仓库CI 集成GitHub Action 在 PR 上发常驻的风险评分评论可选fail-on-risk门禁。对 AI 助手而言上面这些都以 MCP 工具的形式暴露。挑几个最常用的工具什么时候用它get_minimal_context_tool开局先调它约 100 token 拿到全局最小摘要get_impact_radius_tool拿到变更文件清单后圈定波及面query_graph_tool问谁调用 X / X 的测试在哪这类单点结构问题semantic_search_nodes_tool只有自然语言描述、不知道符号名时找入口traverse_graph_tool从某节点自由游走带 token 预算防止跑飞detect_changes_tool提交前出风险评分审查报告get_review_context_tool要带源码片段的完整审查上下文时get_architecture_overview_tool需要全局架构认知时detail_levelminimal能把 600KB 压到 5KB 内进阶配置与隐藏能力1. 排除不想索引的路径。在仓库根目录放一个.code-review-graphignore写法同 gitignoregenerated/** *.generated.ts vendor/**注意git 仓库本来就只索引被跟踪文件这个文件主要用于排除已被跟踪的生成代码或 git 不可用的环境。2. 按需装可选依赖。核心功能零外部服务嵌入、社区检测、基准都是可选组pip install code-review-graph[embeddings] # 本地向量嵌入 pip install code-review-graph[communities] # Leiden 社区检测 pip install code-review-graph[all] # 全都要3. 嵌入 provider 自由切换。除本地 sentence-transformers 外OpenAI 兼容端点官方 OpenAI、Azure、vLLM、LocalAI 等零额外安装只需环境变量export CRG_OPENAI_BASE_URLhttp://127.0.0.1:3000/v1 export CRG_OPENAI_API_KEYsk-... export CRG_OPENAI_MODELtext-embedding-3-smallbase URL 指向 localhost 时自动跳过云端出网警告。另有两个实用环境变量CRG_PARSE_WORKERS控制并行解析 worker 数默认取 CPU 核数与 8 的较小值CRG_LEIDEN_SEED固定社区检测随机种子默认 42保证基准可复现。4. 验证省 token 的数字。面板里的节省值基于chars / 4估算装tiktoken后用--verify可与 OpenAIcl100k_base分词器对照——官方校准显示 222 个样本文件上总偏差在 0.5% 以内。5. 给 MCP 服务器瘦身。serve --tools a,b,c或CRG_TOOLS环境变量可以白名单式地只暴露部分工具减少助手的选择面。踩坑、限制与不适用场景README 里轻描淡写、实际会碰到的几件事 ⚠️小仓库别上。几百文件以下助手直接读往往更省正式的token_efficiency基准甚至对小型单文件提交报出小于 1 的比率——图响应里的影响边和片段比 diff 本身还大。召回 100%要打折看。影响分析基准的平均 F1 是 0.693平均精确率只有 0.546召回 1.0 是循环论证的上限基准答案来自同一张图。且过预测是刻意设计漏掉一个会坏的依赖比多读一个文件代价大得多。最坏案例里 flask 一次 10 文件变更被标出 33 个。动态语言是弱项。调用解析是 AST 级启发式而非编译器级动态分发、元编程产生的边只有INFERRED置信度单符号精确跳转LSP 仍然更强。执行流检测偏科。入口点检测在 Python 和 PHP/Laravel 上最可靠JavaScript 和 Go 的整体召回约 33%别对这两个语言的受影响流过度信任。关键词排序是已知短板MRR 约 0.35纯概念性问题哪里讨论了限流RAG 式检索反而更合适图检索的强项是两跳结构问题多跳检索基准 11 题平均 0.909唯一失手的是找不到共享标识符的get_dependant。环境类故障有固定解法pip/pipx拉不到 hatchling 多半是终端网络问题可用scripts/diagnose_pypi_connectivity.py诊断Windows 上 Claude Code 配置不要用cmd /c包装直接指向.exe并设PYTHONUTF81。细节见 故障排查。结语一句话记住它代码审查的 token 战争里赢家不是读得更多的模型而是读得最准的图——install一次配好build一次成图之后每次审查都只花千位数的 token。深入资料仓库内相对路径使用手册与平台配置docs/USAGE.md完整 CLI 命令参考docs/COMMANDS.md与其他工具的对比、何时不用它docs/FAQ.md全部基准数字与复现步骤docs/REPRODUCING.md架构设计与数据库模式docs/architecture.md、docs/schema.md自定义语言扩展docs/CUSTOM_LANGUAGES.md基准评估运行器源码code_review_graph/eval/【免费下载链接】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),仅供参考