RepoDaily · 2026-07-19 · Infrastructure / Runtime

code-review-graph:一个本地优先的 SQLite 代码图谱,通过 MCP 把每次改动的爆炸半径精确喂给 AI 编码工具

#6 Infrastructure / Runtime Python +356 tirth8205/code-review-graph 打开仓库

用 Tree-sitter 解析、SQLite 存储、MCP 暴露精准上下文,让 AI 助手在 review 时只读取真正相关的文件。v2.3.7 新增 Terraform、Ansible、VB.NET 与 SystemVerilog 支持。

项目类型Infrastructure / Runtime
最适合在中大型仓库上使用 MCP 兼容 AI 编码工具(Claude Code、Cursor、Codex、Gemini CLI、Continue)并希望控制 review 时 token 消耗的开发者。
风险等级纯本地使用风险低;启用云端 embedding 时为中等。
评估时间30–60 分钟:pip 安装后执行 `code-review-graph install` 与 `code-review-graph build`,然后在已连接 MCP 的编辑器里跑一次 review。

核心问题: 你的编辑器收到的爆炸半径上下文是否真的覆盖了改动的风险面,还是仍然把无关文件一并塞了进去?

Evaluation snapshot

Verdict:

Try it if

Skip it if

15-minute evaluation checks

验证范围

证据等级: L1最近复核: 2026-07-20产品模式: open_source

测试环境: 仅完成文档与来源产物复核;尚未完成统一的 RepoDaily 运行测试。

已验证

  • 已复核 Brief 记录的仓库文档、架构图、benchmark 展示、本地 SQLite 存储模式和 MCP/CLI 集成声明。
  • 已确认项目方 benchmark 仍属于项目证据,RepoDaily 尚未复现。

未验证

  • RepoDaily 尚未安装该工具,也未在共享试点仓库重建其图谱
  • 跨语言 parser 覆盖、benchmark 可迁移性、stale index 恢复和 reviewer 结果仍未验证
94/100

RepoDaily 采用评分

RepoDaily 将该项目的采用分评为 94/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。

基于 RepoDaily 来源和采用说明的方向性评分,不是基准测试。风险: 低
100证据质量

包含 6 个来源、覆盖 3 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。

100可安装/可试用性

检测到 6 个工作流步骤、5 个下一步动作,以及 5 个命令/安装信号。

70维护可信度

趋势热度为 +356 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。

100生产准备度

采纳风险标记为 low,并包含 8 条安全说明与 4 条跳过条件。

100差异化

3 个机会视角、4 个替代方案,以及 4 个类型化模块支撑差异化判断。

82许可证清晰度

文章中包含许可证来源或许可证表述。

90Agent / AI 适配度

文章正文和元数据中检测到 7 个 AI/Agent 相关信号。

项目概览

code-review-graph 是一个本地优先的代码智能层:用 Tree-sitter 解析仓库、把调用与 import 关系存入本地 SQLite 数据库(.code-review-graph/graph.db),再通过 Model Context Protocol(MCP)工具把图谱暴露给 AI 编码工具。目标是让 Claude Code、Cursor、Codex、Gemini CLI、Continue、Windsurf、Zed 等助手在 review 时只读取真正受改动影响的文件,而不是每次都重读大段代码。

项目以 Python 3.10+ 包的形式发布在 PyPI,采用 MIT 许可证(Copyright 2026 Tirth Kanani)。一条 `code-review-graph install` 命令会自动检测本地装了哪些 AI 编码工具,为每个工具写入正确的 MCP 配置、在受支持的平台上安装原生 hook 或 skill,并把图谱相关指令注入平台规则。随后 `code-review-graph build` 会把代码库解析进持久化的 SQLite 图谱。

v2.3.7 于 2026-07-18 发布,是一次维护者对账型发布,打包了自 v2.3.6 以来合并的已验证工作。它大幅扩展了语言覆盖(Terraform/OpenTofu、Ansible、VB.NET、扩展的 SystemVerilog、修正的 Rust trait 身份、Java/Spring 建模、PHP/Laravel、Julia、C# 继承边)、十个聚焦的图谱命令、有界 enrichment、死代码分析、加权影响半径排序、MCP 响应附带图谱出处,以及最终的 CodeQL 安全修复。发布说明明确表示没有破坏性变更。

该项目的安全模型在同类工具中记录得异常清晰。README 与 SECURITY.md 指出,code-review-graph 在正常的图谱与 review 流程中不发起任何网络调用,只读取经过校验的仓库根目录内的源文件,所有数据都存在本地 SQLite 中。可选的云端 embedding 需要显式配置 OpenAI 兼容、Google Gemini 或 MiniMax 提供方,并且在未设置 CRG_ACCEPT_CLOUD_EMBEDDINGS=1 时会发出外联告警。

解决什么问题

  • AI 编码工具在 review 任务上会反复读取大段代码,token 与上下文窗口消耗随仓库规模而非随实际改动规模增长。
  • 没有持久化结构图谱时,助手缺少可靠的爆炸半径信息,可能漏掉改动真正触及的依赖文件。
  • 现有静态分析工具通常不通过 MCP 暴露结果,因此无法直接把上下文喂给开发者已经在用的助手。
  • 跨语言仓库(Python、JavaScript、Java、Go、Rust、C#、PHP、Terraform、Ansible)需要理解每种语言 import 与调用语义的解析器才能构建有用的图谱。

工作原理

  1. 用 `pip install code-review-graph`(或 `pipx install code-review-graph`)安装,然后执行 `code-review-graph install` 自动检测并配置所有受支持的 AI 编码平台,写入 MCP 配置与平台原生 hook。
  2. 执行 `code-review-graph build`,由 Tree-sitter 多语言解析器(code_review_graph/parser.py)从仓库根目录抽取 class、function、import 与 call 节点。
  3. 解析器把抽取出的结构写入 .code-review-graph/graph.db 的 SQLite 数据库,由 code_review_graph/graph.py 管理,形成持久化的调用与 import 图谱。
  4. 当文件变更时,code_review_graph/incremental.py 计算 git diff、找到被改节点的依赖方,只重新解析受影响文件而非整个仓库。
  5. code_review_graph/tools/ 中的 MCP 工具实现把图谱查询——爆炸半径、风险评分、死代码、影响半径排序——通过 stdio 或绑定 localhost 的可流式 HTTP 暴露给已连接的 AI 助手。
  6. 助手向 MCP 工具查询最小受影响文件集与风险评分,只读取这些文件,并返回限定在实际改动面内的 review。

产品演示与界面预览

Benchmarks across 6 real repositories: ~82x median per-question token reduction (528x max), 0.71 average impact F1 against graph-derived ground truth
Diagram5 Benchmark Board — README 的基准看板量化了六个真实仓库的 token 缩减幅度,让读者直观感受图谱带来的上下文节省。 README.md image
Architecture pipeline: Repository to Tree-sitter Parser to SQLite Graph to Blast Radius to Minimal Review Set
Diagram2 Architecture Pipeline — 架构流水线图明确了从仓库到最小 review 集合的链路,展示 Tree-sitter 解析与 SQLite 存储在其中的位置。 README.md image
Incremental update flow: supported hook or watch update triggers diff, finds dependents, re-parses only 5 files while 2,910 are skipped
Diagram4 Incremental Update — 增量更新图显示一次改动只触发 5 个文件重新解析、2,910 个文件被跳过,体现持久化图谱的价值。 README.md image
How your AI assistant uses the graph: User asks for review, AI checks MCP tools, graph returns blast radius and risk scores, AI reads only what matters
Diagram7 MCP Integration Flow — MCP 集成流程图说明 AI 助手如何向图谱工具查询爆炸半径与风险评分,而不是读取整个仓库。 README.md image

架构解读:各模块如何组合

  • code_review_graph/parser.py —— Tree-sitter 多语言解析器;EXTENSION_TO_LANGUAGE 映射加上 _CLASS_TYPES、_FUNCTION_TYPES、_IMPORT_TYPES、_CALL_TYPES 节点类型注册表。
  • code_review_graph/graph.py —— SQLite 图谱存储;按 SECURITY.md,所有查询都使用参数化 '?' 占位符。
  • code_review_graph/tools/ —— 暴露给已连接助手的 MCP 工具实现。
  • code_review_graph/incremental.py —— 用于增量更新的 git diff 与文件监听逻辑。
  • code_review_graph/embeddings.py —— 向量 embedding 支持;按 v2.3.7 更新日志,按提供方与模型范围的刷新默认关闭,并拒绝静默的提供方/模型/端点迁移。
  • code_review_graph/visualization.py —— D3.js HTML 生成器;D3.js v7 从 d3js.org 加载并带 SRI 校验。
  • code_review_graph/cli.py 与 code_review_graph/main.py —— 分别为 CLI 入口与 MCP server 入口。

命令面

  • `pip install code-review-graph` —— 从 PyPI 安装。
  • `code-review-graph install` —— 自动检测并配置所有受支持的 AI 编码平台。
  • `code-review-graph install --platform codex` —— 只配置 Codex;同样的模式适用于 cursor、claude-code、gemini-cli 等。
  • `code-review-graph build` —— 把代码库解析进 SQLite 图谱。
  • `code-review-graph uninstall` —— 从运行中的平台规格派生的安全对称清理(v2.3.7 通过 PR #482 新增)。
  • `code-review-graph embed` —— 手动 embedding;同时清理已删除或重命名节点的孤儿向量。
  • v2.3.7 新增十个聚焦的图谱命令、quiet 与 JSON 输出、有界 enrichment 与死代码分析(PR #95、#340、#341)。

集成面:MCP 与平台支持

  • 按 SECURITY.md 的威胁面描述,通过 stdio 或绑定 localhost 的可流式 HTTP 兼容 MCP。
  • 按 README 图解,自动检测的平台包括 Codex、Claude Code、CodeBuddy Code、Cursor、Windsurf、Zed、Continue、OpenCode、Antigravity、Gemini CLI、Qwen、Qoder、Kiro 与 GitHub Copilot。
  • v2.3.7 使用 CodeBuddy Code 官方共享项目契约新增其 MCP 配置与项目 skill(PR #633)。
  • MCP 响应现在附带图谱出处(v2.3.7 的 PR #646)。
  • 自定义语言只需放入 .code-review-graph/languages.toml,把扩展名与节点类型映射到 tree-sitter-language-pack 中的任意语法即可。

维护风险

  • 按 SECURITY.md,仅 2.3.x 版本会获得安全修复;低于 2.3 的版本不受支持。
  • CI 在每个 PR 上运行 Bandit,代码质量用 Ruff,类型检查用 mypy;Bandit 豁免在 pyproject.toml 中逐项记录理由。
  • 测试覆盖率门槛为 65%:`uv run pytest --cov=code_review_graph --cov-report=term-missing --cov-fail-under=65`。
  • 依赖带上界锁定,uv.lock 带 SHA256 哈希。
  • v2.3.7 明确排除四个客户端校验草案,表明维护者对进入发布的内容有主动把关。

谁适合关注

适合关注

  • 你在多语言仓库(Python、JavaScript、Java、Go、Rust、C#、PHP、Terraform、Ansible)里用 MCP 兼容编辑器做 review,并希望控制 token 使用。
  • 你的仓库足够大,助手在单次 review 请求里常常重读数百个文件。
  • 你需要把爆炸半径与死代码信息直接喂给 Claude Code、Cursor、Codex 或 Gemini CLI,而不依赖独立看板。
  • 你想要一个在正常图谱与 review 流程中不发起网络调用的纯本地工具。

可以先跳过

  • 你的仓库足够小,可以手动把相关文件贴给助手。
  • 你的编辑器或助手不支持 MCP,也不打算迁移。
  • 你需要带团队看板与 RBAC 的托管型/SaaS 代码智能平台。
  • 你需要的是 MISRA、DO-178C、CERT 等静态分析认证,而不是用于上下文缩减的图谱。

风险与注意事项

默认纯本地、MIT 许可、单命令安装、SQLite 存储,并带有文档化的安全缓解。只有在启用云端 embedding 时风险才升至中等。

  • 正常的图谱与 review 流程不发起任何网络调用;所有数据都存在本地 SQLite 数据库 .code-review-graph/graph.db。
  • 可选的云端 embedding 需要显式配置,并在未设置 CRG_ACCEPT_CLOUD_EMBEDDINGS=1 时发出外联告警。
  • 仅 2.3.x 版本会获得安全修复;旧版本用户必须升级。
  • 新增内置语言需要改 parser.py 的节点类型注册表并加 fixture 测试,可能劝退没有 Tree-sitter 经验的贡献者。
  • SQL 注入:所有查询使用参数化 '?' 占位符。
  • 路径穿越:_validate_repo_root() 要求存在 .git、.svn 或 .code-review-graph 目录。
  • 提示注入:_sanitize_name() 去除控制字符并把名称截断到 256 字符。
  • 可视化 XSS:escH() 转义 HTML 实体,JSON 输出中的 </script> 被转义。
  • 子进程注入:不使用 shell=True;所有 git 命令使用列表参数。
  • 供应链:依赖带上界锁定;uv.lock 带 SHA256 哈希。
  • CDN 篡改:D3.js 使用 SRI 哈希加载。
  • API Key 泄露:云端 embedding 凭据只从环境或配置加载,从不硬编码。

替代方案比较

方案适用场景代价
aider
你想要一个终端优先的 AI 结对编程工具,直接编辑文件,而不是一个给现有编辑器喂数据的上下文图谱。免费、开源(Apache-2.0);自带 API key。
Continue
你想要一个自带代码库索引与检索的开源 IDE 扩展,而不是独立的 MCP 图谱层。免费、开源(Apache-2.0);云端功能另计。
Sourcegraph Cody
你需要跨大量仓库的企业级代码搜索与代码智能,并有托管基础设施。有免费层;企业版为商业付费。
Tree-sitter 本体
你只需要结构化解析,愿意自己搭建上下文层。免费、开源(MIT)。

这个趋势说明了什么

面向专门流程的 MCP 工具集成

code-review-graph 通过 MCP 工具暴露爆炸半径、风险评分与死代码分析。有自定义 review 清单(安全门、合规门、架构治理门)的团队可以在 SQLite 图谱之上构建额外的 MCP 工具,而无需改动解析器。

阅读 code_review_graph/tools/ 中的现有 MCP 工具实现,确认新工具要复用的查询面。

通过 languages.toml 支持自定义语言

放入 .code-review-graph/languages.toml,把扩展名与节点类型映射到 tree-sitter-language-pack 中的任意语法即可新增语言支持,无需上游贡献。有内部 DSL 或小众语言的团队可以自助完成。

参照 CONTRIBUTING.md 中提到的 docs/CUSTOM_LANGUAGES.md,并在 tests/fixtures/ 下放一个小 fixture 文件测试。

在图谱之上叠加 embedding 语义检索

v2.3.7 在 build、update、postprocess 与 watch 路径上新增按提供方与模型范围的 embedding 刷新,默认关闭且 fail-soft。希望在结构爆炸半径之外加语义搜索的团队,可以启用本地 sentence-transformers embedding 而不强制云端外联。

在代表性仓库上运行 `code-review-graph embed`,确认更新日志描述的本地模型下载路径与 fail-soft 行为。

下一步建议

安装、构建并实测一次真实 review

在你自己的仓库上验证 token 缩减效果,而不是只依赖 README 的基准数据。

  1. 执行 `pip install code-review-graph`(或 `pipx install code-review-graph`)。
  2. 执行 `code-review-graph install`,确认编辑器写入了 MCP 配置。
  3. 执行 `code-review-graph build`,确认生成了 .code-review-graph/graph.db。
  4. 在已连接 MCP 的编辑器里打开一个小改动,请求 review,记录助手读取的文件。
  5. 把文件数与 token 使用量与安装前的同改动基线 review 对比。

RepoDaily 判断

code-review-graph 是一个聚焦、文档清晰的本地优先层,把仓库变成 SQLite 结构图谱,并通过 MCP 把精准爆炸半径上下文暴露给兼容的 AI 编码工具。v2.3.7 发布、具体的安全缓解以及广泛的平台自动检测,使其成为希望在不采用托管代码智能平台的前提下控制 review token 消耗的开发者的实用之选。

信息来源

Feedback

这页是否帮助你做出决定?

匿名反馈只用于判断内容是否真正有用。

报告过期或缺失的证据