code-review-graph:用代码智能图与 MCP,让 AI 代码审查平均省下 65 倍 token
2026/9/19 5:06:24 网站建设 项目流程

code-review-graph:用代码智能图与 MCP,让 AI 代码审查平均省下 65 倍 token

【免费下载链接】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 代码审查助手审一个 PR 时,习惯先重读半个代码库,上下文全是 token 开销。code-review-graph 的做法是把代码库先解析成持久化的代码智能图:Tree-sitter 解析出结构,存入 SQLite,再通过 MCP 只把回答问题所需的最小上下文交给 AI。在 flask 代码库上,全量读取需要 143,594 个 token,一次图回答只要 2,196 个,约省 65 倍。

三分钟跑起来:从安装到第一次图回答

pip install code-review-graph # 或 pipx install code-review-graph install # 自动检测你的 AI 编码工具并写入 MCP 配置 code-review-graph build # 把整个代码库解析成图

这就是最短路径。install会自动检测你在用哪些 AI 编码工具(Codex、Claude Code、Cursor、Windsurf、Zed、Gemini CLI、Copilot 等 16 个平台),为每个平台写入 MCP 服务条目、钩子和规则文件指令;只配一个平台就加--platform cursor,用--dry-run可预览要写哪些文件。要求 Python ≥ 3.10,CLI 入口启动时会强制校验;uv 是可选的——uvx在 PATH 上时 MCP 配置优先用它,否则回退到直接调用code-review-graph命令。对使用者意味着:无论你用哪个编辑器或 CLI 助手,一条 install 全部配好,重启编辑器后对助手说 "Build the code review graph for this project" 即可。500 个文件的项目大约 10 秒出图,3,000 文件规模的冷构建实测约 40 秒;之后靠钩子和 watch 模式保持图是新鲜的。

它凭什么省下 65 倍 token:从影响范围分析到代码图增量更新

先看官方数字,全部来自针对 6 个真实开源仓库(fastapi、flask、gin、httpx、express、code-review-graph 自身)的自动评估运行器,合计 13 个提交,可用code-review-graph eval复现。docs/REPRODUCING.md 记录了完整步骤:所有配置固定上游 SHA,社区检测用固定随机种子,两次运行在不同机器上应得到相同数值。

  • token 削减:每仓库 5 个自然语言问题,削减中位数约65×,范围36×–376×(fastapi 为 948,793 → 2,653);
  • 影响精度:graph-derived 基准下 F1 平均0.693——该基准的真值来自同一张图,是循环上界,应视为上限而非"100% 召回";
  • 多跳检索:11 个两跳任务(先混合搜索找锚点节点,再沿图遍历一跳)平均得分0.909

机制是一条三步流水线:

  1. 解析:Tree-sitter 把每个文件解析为 AST,提取成节点(函数、类、导入)与边(调用、继承、测试覆盖),存入.code-review-graph/里的 SQLite 数据库。覆盖 Python、JS/TS/TSX、Go、Rust、Java、C/C++、C# 等 30 余种语言,外加 Jupyter/Databricks Notebook。
  2. 影响范围分析(Blast Radius):文件变更后,图从变更文件出发沿调用/导入边做 BFS 展开(默认 2 层),找出所有可能受影响的调用方、依赖方与测试,算出 AI 应当读取的最小文件集。AI 不再扫描整个项目,只读这些文件。
  3. 最小返回:MCP 工具只返回这个切片。在本项目自己的仓库上,208,821 个源码 token 收敛到每次提问约 3,190 个。

图还必须保持新鲜,否则审查结论会悄悄过期。增量更新逻辑在 incremental.py:钩子或 watch 模式触发git diff找出变更文件,再用图里的导入/调用边定位全部依赖方,但只重新解析 SHA-256 哈希确实变化的文件——哈希没变的依赖方直接跳过。在 django(约 2,900 个文件)上实测:改动 2 个文件在钩子路径上约 2.5 秒完成重索引(其中约 1.4 秒是进程启动开销),空更新只需 1.4 秒。并行解析 worker 数由CRG_PARSE_WORKERS环境变量控制(默认取 CPU 核数与 8 的较小值),CRG_PARSE_EXECUTOR可显式指定process/thread执行器。对使用者意味着:边写代码边审查时,图始终与最新代码同步,结论不会基于旧结构。

按场景找功能:审查、体检、重构、搜索、导出

日常审查

  • detect-changes把 diff 映射到受影响的函数、执行流与测试缺口并给风险评分,--brief只打风险摘要 + Token Savings 面板,--base默认HEAD~1
  • 斜杠命令:build-graph建图、review-delta审上次提交以来的变更、review-pr完整 PR 审查。
  • get_review_context返回 token 优化审查上下文:max_files默认 25,源码片段共享 800 行预算。

架构体检

  • Leiden 算法做代码社区检测(默认种子固定为 42,可用CRG_LEIDEN_SEED覆盖),get_architecture_overviewdetail_level="minimal"可把典型 600KB 的输出压到 5KB 以下。
  • 枢纽/桥梁节点检测:按最大连接数与介数中心性找架构瓶颈;"意外连接"评分标记跨社区、跨语言、边缘到枢纽的耦合。
  • 知识缺口分析:孤立节点、未测试热点、薄弱社区。

重构与死代码

  • 重构预览覆盖重命名与死代码检测;应用时只做精确字符串替换(无正则、无 eval),并校验所有编辑路径都在仓库根内,预览 10 分钟过期。
  • 大函数检测:找出超过行数阈值的函数/类。

语义搜索与嵌入

  • 混合搜索:FTS5 关键词(BM25)+ 向量相似度结合,semantic_search_nodes同时支持按标识符查和自然语言提问。
  • 嵌入是可选能力:本地 sentence-transformers(默认模型all-MiniLM-L6-v2)或云端端点,见"按需增强"。

导出与可视化

  • visualize支持html(D3 力导向交互图,带搜索与社区图例)、graphml(Gephi/yEd)、cypher(Neo4j)、obsidiansvg
  • wiki从社区结构生成 Markdown wiki;forget <path>无需完整重建即可把文件从图中移除。

命令与 MCP 工具速查:记住 8 条命令和 5 个工具就够

最常用的 CLI(完整参考见 docs/COMMANDS.md):

code-review-graph install # 自动检测并配置所有平台 code-review-graph build # 全量建图(可选 --skip-flows、--data-dir) code-review-graph update --brief # 增量更新 + 风险摘要与节省面板 code-review-graph status # 图统计信息 code-review-graph detect-changes # 带风险评分的变更影响分析(--base 默认 HEAD~1) code-review-graph watch # 文件变更时自动更新图 code-review-graph visualize # 生成交互式 HTML 图 code-review-graph serve # 启动 MCP 服务器(stdio;--http 走 localhost:5555)

全部 30 个 MCP 工具都在 main.py 中以@mcp.tool()注册,建图之后 AI 助手会自己调用。高频的五个:

工具何时用
get_minimal_context超紧凑上下文(约 100 token),助手优先调用它
get_impact_radius变更文件的影响范围(默认 2 层深度展开)
detect_changesdiff → 受影响函数/流/测试缺口 + 风险评分
query_graph16 种查询模式:callers_of、callees_of、tests_for、inheritors_of 等
semantic_search_nodes按名称或自然语言语义做混合搜索

其余的 flows、communities、hubs、wiki、refactor 等不必逐记;serve --tools a,b,c(或CRG_TOOLS环境变量)可以只暴露你要的那几个。

按需增强:只装你用得到的可选依赖组

核心图存储是本地 SQLite,不需要任何外部服务。可选依赖组与 pyproject 中的[project.optional-dependencies]一一对应:

  • [embeddings]本地向量嵌入(sentence-transformers,默认all-MiniLM-L6-v2CRG_EMBEDDING_MODEL可换模型)
  • [google-embeddings]Google Gemini 嵌入(需GOOGLE_API_KEY
  • [communities]igraph 社区检测
  • [enrichment]Jedi 增强的 Python 调用解析
  • [eval]基准测试报告(matplotlib)
  • [wiki]Ollama LLM 摘要
  • [all]以上全部

OpenAI 兼容端点(官方 OpenAI、Azure,或自建网关 vLLM/LocalAI 等)无需额外安装,设好环境变量即可:

export CRG_OPENAI_BASE_URL=http://127.0.0.1:3000/v1 export CRG_OPENAI_API_KEY=sk-... export CRG_OPENAI_MODEL=text-embedding-3-small # 可选:CRG_OPENAI_DIMENSION 固定维度、CRG_OPENAI_BATCH_SIZE 调低批量

然后给embed_graphprovider="openai"。base URL 指向 localhost 时会自动跳过云端出口警告。

⚠️ 模型选择:避免使用带-preview/-beta/-exp的模型 ID——预览模型可能更换权重(维度变化会迫使全部节点重新嵌入)或被无预警弃用。推荐稳定 GA 模型:text-embedding-3-small/largeQwen/Qwen3-Embedding-8B(vLLM/LocalAI 自托管)、gemini-embedding-001

参与项目:从 clone 到第一次 pytest

git clone https://gitcode.com/GitHub_Trending/co/code-review-graph cd code-review-graph python3 -m venv .venv && source .venv/bin/activate pip install -e ".[dev]" pytest

测试套件在tests/目录,覆盖解析器、图、增量更新、社区检测、嵌入与 CLI;tests/fixtures/下提供 40 余种语言/框架的样例文件,验证新解析路径时直接复用。要加新语言:在code_review_graph/parser.pyEXTENSION_TO_LANGUAGE里补扩展名映射,并同步_CLASS_TYPES_FUNCTION_TYPES_IMPORT_TYPES_CALL_TYPES四张节点类型表,附上测试 fixture 提交 PR。项目采用 MIT 许可证,放心 fork 与二次开发。

下一步,去你的目标仓库里跑一次build,然后问它第一个问题。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询