核心问题: 你的编辑器收到的爆炸半径上下文是否真的覆盖了改动的风险面,还是仍然把无关文件一并塞了进去?
Evaluation snapshot
Verdict:
Try it if
Skip it if
15-minute evaluation checks
验证范围
测试环境: 仅完成文档与来源产物复核;尚未完成统一的 RepoDaily 运行测试。
已验证
- 已复核 Brief 记录的仓库文档、架构图、benchmark 展示、本地 SQLite 存储模式和 MCP/CLI 集成声明。
- 已确认项目方 benchmark 仍属于项目证据,RepoDaily 尚未复现。
未验证
- RepoDaily 尚未安装该工具,也未在共享试点仓库重建其图谱
- 跨语言 parser 覆盖、benchmark 可迁移性、stale index 恢复和 reviewer 结果仍未验证
RepoDaily 采用评分
RepoDaily 将该项目的采用分评为 94/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。
包含 6 个来源、覆盖 3 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。
检测到 6 个工作流步骤、5 个下一步动作,以及 5 个命令/安装信号。
趋势热度为 +356 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。
采纳风险标记为 low,并包含 8 条安全说明与 4 条跳过条件。
3 个机会视角、4 个替代方案,以及 4 个类型化模块支撑差异化判断。
文章中包含许可证来源或许可证表述。
文章正文和元数据中检测到 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 时会发出外联告警。
为什么现在变热
- 2026-07-18 发布的 v2.3.7 带来大幅语言与框架扩展(Terraform/OpenTofu、Ansible、VB.NET、SystemVerilog、Rust trait 修正、Java/Spring、PHP/Laravel、Julia、C#),对多语言仓库开发者直接相关。
- 一条 install 命令自动检测并配置 14+ 个 MCP 兼容平台,包括 Codex、Claude Code、CodeBuddy Code、Cursor、Windsurf、Zed、Continue、OpenCode、Antigravity、Gemini CLI、Qwen、Qoder、Kiro 与 GitHub Copilot。
- 持久化的 SQLite 图谱(.code-review-graph/graph.db)支持增量更新:README 图解显示一次 hook 或 watch 更新只重新解析 5 个文件,跳过 2,910 个。
- 安全姿态非常具体:参数化 SQL 占位符、_validate_repo_root() 路径穿越防护、_sanitize_name() 提示注入缓解、子进程调用不使用 shell=True、依赖带上界锁定、uv.lock 含 SHA256 哈希、D3.js 使用 SRI 加载。
- README 的基准看板显示在六个真实仓库上每个问题的 token 缩减中位数约为 82 倍,最高 528 倍,平均影响 F1 为 0.71。
解决什么问题
- AI 编码工具在 review 任务上会反复读取大段代码,token 与上下文窗口消耗随仓库规模而非随实际改动规模增长。
- 没有持久化结构图谱时,助手缺少可靠的爆炸半径信息,可能漏掉改动真正触及的依赖文件。
- 现有静态分析工具通常不通过 MCP 暴露结果,因此无法直接把上下文喂给开发者已经在用的助手。
- 跨语言仓库(Python、JavaScript、Java、Go、Rust、C#、PHP、Terraform、Ansible)需要理解每种语言 import 与调用语义的解析器才能构建有用的图谱。
工作原理
- 用 `pip install code-review-graph`(或 `pipx install code-review-graph`)安装,然后执行 `code-review-graph install` 自动检测并配置所有受支持的 AI 编码平台,写入 MCP 配置与平台原生 hook。
- 执行 `code-review-graph build`,由 Tree-sitter 多语言解析器(code_review_graph/parser.py)从仓库根目录抽取 class、function、import 与 call 节点。
- 解析器把抽取出的结构写入 .code-review-graph/graph.db 的 SQLite 数据库,由 code_review_graph/graph.py 管理,形成持久化的调用与 import 图谱。
- 当文件变更时,code_review_graph/incremental.py 计算 git diff、找到被改节点的依赖方,只重新解析受影响文件而非整个仓库。
- code_review_graph/tools/ 中的 MCP 工具实现把图谱查询——爆炸半径、风险评分、死代码、影响半径排序——通过 stdio 或绑定 localhost 的可流式 HTTP 暴露给已连接的 AI 助手。
- 助手向 MCP 工具查询最小受影响文件集与风险评分,只读取这些文件,并返回限定在实际改动面内的 review。
产品演示与界面预览




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