30 KiB
code-review-graph 功能文档
停止燃烧 token,让 AI 审查真正的代码。
code-review-graph 是一个本地优先的代码审查引擎:以 Tree-sitter 知识图谱为底座, 为 AI 编程助手提供精准的代码上下文与结构化的审查工作流——从 diff 影响面分析、 客观量化评分、并行深读覆盖度门禁,到最终的双格式审查报告,全流程只读、可审计。
- 当前版本:v2.5.1(本地定制版)
- 语言要求:Python 3.10+
- 运行形态:本地源码部署(venv / uv),MCP stdio 服务接入 AI 编程工具
- 数据形态:图谱存储于仓库本地
.code-review-graph/(SQLite),零遥测,源码不出本机
目录
1. 工具概述
AI 编程工具执行代码审查时,往往反复扫描大量文件造成严重 token 浪费,且缺乏统一的 审查方法论与量化标准。code-review-graph 的解决方式是:
- 使用 Tree-sitter 将仓库解析为知识图谱:节点(函数/类/导入/测试)+ 边(调用/继承/测试覆盖)
- 审查时通过图谱查询计算需要读取的最小文件集合(Blast-radius 分析)
- 在图谱之上提供三套开箱即用的审查工作流(diff 统一审查 / 全项目审查 / 单功能审查)
- 用客观指标评分(SQL 风险、异常分支覆盖、冗余率等)替代"凭感觉审完"
- 用并行深读管线 + 覆盖度门禁保证"审过了"不是由感觉决定,而是有数据支撑
- 最终产出自包含的中文 HTML + Markdown 双格式审查报告
核心特性一览:
| 特性 | 说明 |
|---|---|
| 本地优先 | 图谱存本机 SQLite,无需外部数据库;云端 embedding 为显式可选 |
| 增量更新 | 只重解析变更文件(SHA-256 比对),后续更新秒级完成 |
| 零遥测 | 不向任何外部服务发送源码 |
| 多语言 | 40+ 编程语言,支持自定义语言扩展 |
| 三种审查入口 | unified-review(diff)/ project-review(全项目)/ project-review(单功能) |
| 客观量化 | 5 项 Layer-2 指标 + good/warn/fail 分级,blocker 一票否决 |
| 覆盖度门禁 | 文件数口径 + 行覆盖 + 语义单元三件套,双目标(全库 ≥85% 且高风险 ≥95%) |
| 双格式报告 | 自包含中文 HTML(浏览器直开)+ Markdown(入库/PR 复用),全程只读不改代码 |
2. 核心原理
2.1 架构管线
仓库 → Tree-sitter 解析 → SQLite 图谱 → Blast-radius 分析 → 最小审查集
↓
detect_changes 风险评分 → score_review 客观指标
↓
deep_read 并行深读 → coverage 门禁 → dedupe 合并
↓
generate_report(HTML + Markdown)
2.2 从代码到图谱
code-review-graph build 用 Tree-sitter 把源码解析为 AST,提取:
- 节点:函数、类、导入语句、测试函数等代码实体
- 边:调用关系、继承关系、测试覆盖关系等结构联系
图谱把「代码长什么样」升级为「代码之间有什么关系」,这是后续一切审查能力的底座。
解析完成后图谱存储在仓库本地 .code-review-graph/graph.db。
2.3 Blast-radius(爆炸半径)分析
文件发生变更时,图谱追踪所有可能受影响的调用方、依赖方与测试:
- 变更波及面(谁调用了它、谁依赖它、哪些测试覆盖它)
- AI 只读取受影响文件而非扫描整个项目,token 消耗显著下降
2.4 增量更新
每次保存文件或 git commit 时计算变更文件的 SHA-256 哈希,只重新解析变化的文件, 再按图谱关系局部更新相关节点。配合 watch 模式 / 平台 hooks / crg-daemon 守护进程, 图谱始终贴近当前代码状态,不需要"用一次就过期"的全量重建。
3. 代码审查工作流
3.1 三种审查入口对比
| 维度 | unified-review(diff 审查) | project-review(全项目) | project-review(单功能) |
|---|---|---|---|
| 审查对象 | git diff(默认 HEAD~1..HEAD) |
图谱内全部源文件 | 目标功能/模块相关文件 + 影响面 |
| 触发指令 | "审查"、"检查代码"、"review" | "对项目代码进行全面审查"、"全面审查"、"整个项目" | "审查支付功能的代码"、"审查 auth 模块" |
| 入口 | /code-review-graph-unified-review |
/code-review-graph-project-review |
/code-review-graph-project-review |
| 核心工具 | detect_changes + score_review |
score_review(all_files=True) + 深读管线 |
semantic_search + get_impact_radius + score_review |
| 典型场景 | 合并前检查本次改动 | 代码质量体检、架构审计、发布前全面体检 | 上线前审查某个功能 |
三者共享同一套评分/去重/报告工具,流程结构一致: 图谱上下文 → 客观评分 → 链路分解 → 去重 → 人工裁决 → 报告,区别仅在范围获取方式。
3.2 unified-review:三层统一审查(diff)
触发 → 范围/档位判定 → [图谱上下文] → Layer 1 八分类 + CRITICAL 检查 → [score_review 量化]
→ [specialist 并行派发] → [dedupe 合并去重] → 人工裁决(只读)→ 验收门禁 → [HTML + Markdown 报告] → 持久化
| 步骤 | 内容 |
|---|---|
| Step 0 范围/档位 | 读 .code-review.yaml 确定 tier(fast / standard / strict);检测语言/框架加载对应 checklist;判定 change/file/service/chain 级范围 |
| Step 1 图谱上下文 | build_or_update_graph → get_review_context(blast radius + 源码片段)→ detect_changes(风险分 + 测试缺口 + 受影响流) |
| Step 2 Layer 1 链路分解 | 八分类逐类检查(接口/业务/数据/工具/错误处理/安全/性能/可观测性),叠加 CRITICAL 五类(SQL 数据安全、竞态并发、LLM 信任边界、Shell 注入、枚举完整性) |
| Step 3 Layer 2 量化评分 | score_review_tool 计算 5 项客观指标;需求覆盖/逻辑对齐等由 LLM 判断(llm_judged 标注,无需求文档时 0.5× 降权) |
| Step 4 specialist 派发 | diff ≥ 50 行时并行派发 testing/maintainability/security/performance/data-migration/api-contract 子代理;security 与 data-migration 为保险型永不 gate |
| Step 5 合并去重 | dedupe_findings_tool 按 path:line:category 指纹合并、多源确认置信 +1、计算 PR 质量分、抑制历史已跳过项 |
| Step 6 人工裁决 | 只读。每条 finding 带 severity + 置信度 + file:line + 修复建议,按 severity 批量呈现;blocker 不可批量跳过 |
| Step 7 验收门禁 | 任一 🔴 blocker → verdict ❌ FAIL;分类 Ready / Needs Fix / Unusable |
| Step 8 报告 | generate_report_tool(默认 format="both")产出中文报告 |
| Step 9 持久化 | 记录审查结果供后续去重抑制,不可用时静默跳过 |
3.3 project-review:全项目深读管线
全项目审查的关键难题是覆盖度不能靠感觉。主上下文无法逐文件深读数百个文件, 必须走并行子代理深读流水线:
a. deep_read_plan_tool(target_coverage=85)
→ 按风险权重贪心选出待深读文件并分组
b. 按组并行派发 explore 子代理,每个子代理完整深读该组全部文件,
逐文件返回 read_ranges / semantic_units / findings[](每条 finding 必须带 file:line 证据)
c. 三件套质量门禁(coverage_tool gate="both+line"):
① 单元完整性:semantic_units 与图谱单元一一对应
② 行覆盖:union(read_ranges) / 真实行数 ≥ 95%
③ 防伪抽验:主代理抽样回读比对,防子代理假读
d. line_gap ∪ unit_gap 非空 → 补轮重读直至清空,禁止静默降级
e. 未达标 → 按 priority_deep_read_files 补一轮,循环至达标
f. 报告生成后 save_coverage_index_tool 写跨轮覆盖索引(file + SHA + ranges),
下轮审查 include_prior=True 自动复用未变更文件,实现增量累积
覆盖度双口径门禁:
- 全库覆盖 = 已深读文件数 / 全部源文件数(目标 ≥85%)
- 高风险覆盖 = 已深读高风险文件数 / 信号点名文件数(目标 ≥95%)
target_reached=false→ 报告顶部标 🔴 覆盖不足;覆盖率结果完整透传进报告## 覆盖度区块
其余步骤(架构全景 → 高风险定位 → score_review(all_files=True) → 八分类 + CRITICAL →
dedupe → 人工裁决 → 报告)与 unified-review 同构。
单功能(feature)流程则先用 semantic_search_nodes(query=target) 定位代码,
再 query_graph(children_of) 聚合文件、get_impact_radius 扩影响面,
之后聚焦这些文件走同一套评分与裁决流程。
3.4 报告成果物
每次审查默认产出两份中文报告(generate_report_tool format="both"):
code-review-report.html— 自包含单文件(内联样式、零外部依赖),浏览器直接打开。 含结论(PASS/FAIL)、PR 质量分、客观指标表、问题清单(severity + 置信度 + 位置 + 修复建议)、 覆盖度区块、人工审查清单code-review-report.md— Markdown 版,便于 git 提交、PR 描述、内部文档复用
format="html" / format="markdown" 可单独产出;output_path 指定输出基础路径
(推荐归档到 docs/reviews/{name}-review-{YYYY-MM-DD-HHMMSS},避免同名覆盖且便于追溯)。
报告均为只读产物:审查本身不修改任何代码,所有修复决定由人工确认后执行。
4. MCP 工具(37 个)
图谱构建完成后,AI 助手通过 MCP 自动使用以下工具(共 37 个,按类分组)。
4.1 图谱核心与上下文(12)
| 工具 | 描述 |
|---|---|
build_or_update_graph_tool |
构建或增量更新图谱 |
run_postprocess_tool |
重跑流检测、社区检测与 FTS 索引 |
get_minimal_context_tool |
超紧凑上下文(~100 token),任何任务的第一个调用 |
get_impact_radius_tool |
变更文件的爆炸半径分析 |
get_review_context_tool |
token 优化的审查上下文 + 结构摘要 + 源码片段 |
detect_changes_tool |
风险评分的变更影响分析:diff 映射到受影响函数/流/测试缺口,产出风险分与优先审查建议 |
query_graph_tool |
关系模式查询:callers_of / callees_of / imports_of / tests_for / inheritors_of 等 |
traverse_graph_tool |
从任意节点 BFS/DFS 探索,带深度与 token 预算 |
semantic_search_nodes_tool |
向量语义搜索代码实体(需先 embed),无向量时回退 FTS 关键词匹配 |
embed_graph_tool |
为全部图节点计算向量 embedding(local/openai/google/minimax/voyage) |
list_graph_stats_tool |
图谱规模与健康状况统计 |
find_large_functions_tool |
查找超过行数阈值的函数/类/文件(巨型文件审计) |
4.2 执行流与社区架构(11)
| 工具 | 描述 |
|---|---|
list_flows_tool |
按关键度排序列出执行流(从入口点追踪的调用链) |
get_flow_tool |
查看单个执行流的完整调用路径 |
get_affected_flows_tool |
查找受变更文件影响的用户级执行路径 |
list_communities_tool |
列出 Leiden 算法聚类出的代码社区 |
get_community_tool |
查看单个社区详情(规模/内聚度/成员) |
get_architecture_overview_tool |
从社区结构生成架构总览与耦合警告 |
get_hub_nodes_tool |
找出连接最多的节点(架构热点,改动爆炸半径大) |
get_bridge_nodes_tool |
通过介数中心性找出架构瓶颈(桥接节点) |
get_knowledge_gaps_tool |
识别孤立节点、未测试热点、薄弱社区等结构弱点 |
get_surprising_connections_tool |
检测意外耦合:跨社区/跨语言/外围到 Hub 的边 |
get_suggested_questions_tool |
从图谱分析自动生成审查问题(桥/hub/惊喜耦合驱动) |
4.3 审查分析与报告(8)
| 工具 | 描述 |
|---|---|
score_review_tool |
客观 Layer-2 指标:SQL 风险、异常分支覆盖、冗余率、高风险密度、漏洞启发式五项,带 good/warn/fail 分级与证据;支持 all_files=True 全量评分;llm_judged 字段列出需 LLM 补判项 |
dedupe_findings_tool |
Finding 合并去重:按 path:line:category 指纹合并、多源置信 +1(上限 10)、低置信移附录、抑制历史已跳过项、计算 PR 质量分 max(0, 10 - (critical×2 + informational×0.5)) |
generate_report_tool |
报告生成:渲染为自包含中文 HTML 与 Markdown(默认双格式),自动渲染结论/指标表/问题清单/覆盖度区块 |
refactor_tool |
重命名预览、框架感知死代码检测、社区驱动重构建议 |
apply_refactor_tool |
应用此前预览过的重构(精确字符串替换) |
generate_wiki_tool |
从社区结构生成 markdown wiki(.code-review-graph/wiki/) |
get_wiki_page_tool |
获取特定 wiki 页面 |
get_docs_section_tool |
获取内置 LLM 优化文档的指定章节(usage/review-pr/troubleshooting 等) |
4.4 深读管线、覆盖度与多仓(6)
| 工具 | 描述 |
|---|---|
deep_read_plan_tool |
生成按风险权重贪心分组的深读计划(groups + planned_files + estimated_batches),支持增量排除上轮已读文件 |
coverage_tool |
覆盖度三件套门禁:文件数口径 + 行覆盖 + 语义单元覆盖三重计算;gate="both+line" 时四项 AND 判定;返回缺口文件与补读优先级队列;include_prior=True 合并跨轮索引实现增量 |
save_coverage_index_tool |
持久化深读名单到 .code-review-graph/coverage-index.json(file + per-file SHA + ranges),供下轮审查增量复用 |
community_health_tool |
检查 nodes.community_id 归属健康度,归属率 <90% 时提示先 postprocess 再算覆盖度,防止失真 |
list_repos_tool |
列出多仓注册表中已注册仓库 |
cross_repo_search_tool |
跨所有已注册仓库搜索代码实体,按仓内 rank 交错返回 |
5. MCP Prompts(7 个)
MCP 协议层的 7 个预构建工作流模板,支持 MCP prompts 的客户端将其呈现为 "/" 可调用命令。
全部强制 token 效率模式:先调 get_minimal_context,默认 detail_level="minimal"。
| "/" 可调用命令 | 功能 | 参数 |
|---|---|---|
/review_changes |
提交前审查:detect_changes + 受影响执行流 + 测试缺口 |
base="HEAD~1" |
/architecture_map |
架构文档:社区、执行流、Mermaid 图 + 耦合警告 | 无 |
/debug_issue |
引导式调试:语义搜索 + 调用链追踪 + 执行流定位根因 | description="" |
/onboard_developer |
新成员入职指南:统计、架构、关键执行流 | 无 |
/pre_merge_check |
合并前就绪检查:风险评分、测试缺口、死代码 | base="HEAD~1" |
/unified_review |
三层统一审查(只读):图谱上下文 → 客观评分 → 人工裁决 → 去重 → 双格式报告。任何 blocker 判 FAIL | base="HEAD~1"、tier="standard"(fast/standard/strict) |
/project_review |
项目级审查(非 diff):全项目或单功能,由用户自然语言指令决定范围,只读 | scope="whole-project"、target="" |
6. CLI 命令参考
6.1 安装与部署
code-review-graph install # 自动检测并配置所有支持的 AI 平台(MCP/hooks/skills/规则注入)
code-review-graph install --platform <name> # 仅配置单个平台
code-review-graph install --dry-run # 预览动作不写入
code-review-graph init # install 别名
code-review-graph uninstall --dry-run # 对称卸载预览(只移除本工具拥有的组件)
code-review-graph uninstall --keep-data # 移除集成但保留图谱数据库
code-review-graph uninstall --all-repos # 同时清理所有已注册仓库
支持平台:Codex、Claude Code、CodeBuddy Code、Cursor、Windsurf、Zed、Continue、 OpenCode、Antigravity、Gemini CLI、Qwen、Qoder、Kiro、GitHub Copilot(含 CLI)。
6.2 图谱构建与维护
code-review-graph build # 全量解析整个代码库
code-review-graph build --skip-flows # 跳过流检测
code-review-graph build --skip-postprocess # 跳过后处理(流/社区/FTS)
code-review-graph update # 增量更新(仅变更文件)
code-review-graph update --base <ref> # 指定 git diff 基线
code-review-graph update --brief # 刷新后打印 Token Savings 面板
code-review-graph update --verify # 用 tiktoken 交叉校验 token 估算
code-review-graph postprocess # 重跑后处理
code-review-graph postprocess --no-flows # 跳过流检测
code-review-graph postprocess --no-communities# 跳过社区检测
code-review-graph postprocess --no-fts # 跳过 FTS 重建
code-review-graph watch # 监听文件变更自动增量更新
code-review-graph status [--json] # 图谱统计
code-review-graph forget <path> [--dry-run] # 从图谱移除已解析文件(免全量重建)
code-review-graph embed --provider local # 计算 embedding(--model all-MiniLM-L6-v2)
通用参数:绝大多数命令支持 --repo <root> 显式指定仓库根(默认自动探测);
--data-dir 可覆盖图谱数据目录。
6.3 分析与审查
code-review-graph detect-changes --brief # 风险面板 + token 节省估算(只读)
code-review-graph detect-changes --base <ref> # 指定 diff 基线(默认 HEAD~1)
code-review-graph detect-changes --churn # 风险评分加入变更频率因子
code-review-graph impact --files <path>... # 变更爆炸半径(--depth/--max-results/--base)
code-review-graph query <pattern> <target> # 图谱关系查询(callers_of/callees_of/imports_of 等)
code-review-graph search <query> [--kind] # FTS/语义混合搜索图谱实体
code-review-graph dead-code [--kind] [--file-pattern] [--json] # 死代码检测
code-review-graph large-functions --min-lines 150 [--path] [--kind] # 巨型函数/文件审计
code-review-graph refactor rename --old-name X --new-name Y # 重命名预览
code-review-graph refactor dead_code|suggest # 死代码/重构建议
6.4 结构浏览
code-review-graph flows [--limit 50] [--kind] [--sort] # 执行流列表
code-review-graph flow --id 3 [--source] # 单个执行流详情(可含源码片段)
code-review-graph communities [--min-size] [--sort] # 社区列表
code-review-graph community --id 71 [--members] # 单个社区详情
code-review-graph architecture [--detail-level minimal|standard] # 架构总览
code-review-graph visualize [--format json|graphml|svg|obsidian|cypher] [--serve]
code-review-graph wiki [--force] # 从社区生成 markdown wiki
6.5 多仓与服务
code-review-graph register <path> [--alias] # 注册仓库到多仓注册表
code-review-graph unregister <path_or_alias> # 移除注册
code-review-graph repos # 列出已注册仓库
code-review-graph eval [--benchmark ...] [--all] [--report] # 评估基准
code-review-graph serve # 启动 MCP stdio 服务
code-review-graph serve --repo <root> # 指定仓库根
code-review-graph serve --http --host 127.0.0.1 --port 5555 # Streamable HTTP 模式
code-review-graph serve --tools t1,t2 # 仅暴露部分 MCP 工具(token 受限环境)
code-review-graph serve --auto-watch # 服务期间自动增量更新
code-review-graph mcp # serve 别名
6.6 多仓守护进程(crg-daemon)
编辑器不支持 hooks 或希望后台保持多仓图谱新鲜时使用,随主程序一并安装:
crg-daemon add ~/project-a --alias proj-a # 注册监听(写 ~/.code-review-graph/watch.toml)
crg-daemon start # 后台启动,每 30s 健康检查并重启死掉的 watcher
crg-daemon status # 查看守护进程与各仓库 watcher 状态
crg-daemon logs --repo proj-a --follow # 追踪某仓库日志
crg-daemon stop # 停止守护进程与全部 watcher
也支持 code-review-graph daemon start|stop|restart|status|logs|add|remove。
7. opencode 本机集成现状
本机采用源码部署方式:工具代码位于 D:\code-review-graph\code-review-graph-main,
venv 内的可执行文件被 MCP 配置以绝对路径引用。
7.1 MCP 配置(两处)
// D:\AuraSpace\.mcp.json(项目级)
{
"mcpServers": {
"code-review-graph": {
"command": "D:\\code-review-graph\\code-review-graph-main\\.venv\\Scripts\\code-review-graph.exe",
"args": ["serve", "--repo", "D:\\AuraSpace"],
"cwd": "D:\\AuraSpace",
"type": "stdio"
}
}
}
// %USERPROFILE%\.config\opencode\opencode.json(全局级,节选)
{
"mcp": {
"code-review-graph": {
"type": "local",
"command": [
"D:\\code-review-graph\\code-review-graph-main\\.venv\\Scripts\\code-review-graph.exe",
"serve", "--repo", "D:\\AuraSpace"
],
"timeout": 600000,
"env": { "CRG_REPO_ROOT": "D:\\AuraSpace" }
}
}
}
7.2 已安装的 skills(%USERPROFILE%\.config\opencode\skills\,9 个)
| Skill | 功能 |
|---|---|
build-graph |
构建/重建代码图谱 |
explore-codebase |
图谱结构探索导航 |
debug-issue |
图谱引导式调试 |
refactor-safely |
依赖分析驱动的安全重构 |
review-changes |
变更审查(change detection + impact) |
review-delta |
自上次提交以来的增量审查 |
review-pr |
PR/分支完整审查 |
unified-review |
三层统一审查:CRG 图谱上下文 + ai-code-review 评分方法论 + gstack-review 流程 |
project-review |
项目级审查(全项目/单功能):并行深读管线 + 三件套覆盖度门禁 + 双格式报告 |
其中 project-review 附带 PowerShell 校验脚本(verify-report / verify-line-coverage /
verify-spot-check.ps1)与 Python 聚合脚本(aggregate_deep_read.py),
skill 文档内引用了绝对路径,迁移机器时需同步修改。
7.3 已安装的斜杠命令(command\,5 个)
| 命令 | 功能 |
|---|---|
/code-review-graph-build-graph |
构建/更新图谱 |
/code-review-graph-unified-review |
diff 三层统一审查(只读) |
/code-review-graph-project-review |
项目级审查:全项目或单功能(只读) |
/code-review-graph-review-pr |
PR/branch diff 审查 |
/code-review-graph-review-delta |
自上次提交以来的变更审查 |
7.4 本地部署步骤(新机器/重建环境)
# 前置:Python 3.10+ 与 uv
cd D:\code-review-graph\code-review-graph-main
uv sync # 按 uv.lock 重建 .venv(国内网络先设 UV_INDEX_URL 镜像)
.\.venv\Scripts\code-review-graph.exe --version # 应输出 2.5.x
配置 opencode.json(全局 MCP 注册)
文件位于 %USERPROFILE%\.config\opencode\opencode.json,将 code-review-graph 段加入 mcp 对象
(若已有 plugin、playwright 等其他配置项则保留不动):
"code-review-graph": {
"type": "local",
"command": [
"D:\\code-review-graph\\code-review-graph-main\\.venv\\Scripts\\code-review-graph.exe",
"serve", "--repo", "D:\\AuraSpace"
],
"timeout": 600000,
"env": { "CRG_REPO_ROOT": "D:\\AuraSpace" }
}
按新机器实际修改 3 处:command[0] 的 exe 绝对路径、--repo 的仓库根、env.CRG_REPO_ROOT。
项目级 .mcp.json(可选)参考 §7.1。
然后核对 §7.1 的 .mcp.json 与本节 opencode.json 中的绝对路径与新机一致,
复制 7.2/7.3 的 skills 与 commands,重启 opencode 即生效。
使用前提:先构建图谱(首次
code-review-graph build或/code-review-graph-build-graph), 否则图谱工具返回not_ready。
8. 配置与环境变量
8.1 排除路径(.code-review-graphignore)
在仓库根目录创建 .code-review-graphignore 排除已跟踪文件的索引:
generated/**
*.generated.ts
vendor/**
node_modules/**
git 仓库中默认只索引被跟踪文件(
git ls-files),gitignore 文件自动跳过。.code-review-graphignore用于排除已跟踪文件或 git 不可用的场景。
8.2 可选依赖组
pip install "code-review-graph[embeddings]" # 本地向量 embedding(sentence-transformers)
pip install "code-review-graph[google-embeddings]" # Google Gemini embeddings
pip install "code-review-graph[communities]" # 社区检测(igraph)
pip install "code-review-graph[enrichment]" # Python 调用解析富化(Jedi)
pip install "code-review-graph[eval]" # 评估基准
pip install "code-review-graph[wiki]" # Wiki 生成 + LLM 摘要(ollama)
pip install "code-review-graph[all]" # 全部可选依赖
源码部署时对应 uv sync --extra <name> 或在 venv 内 pip install -e .[<name>]。
8.3 环境变量
| 变量 | 描述 | 默认 |
|---|---|---|
CRG_REPO_ROOT |
显式指定仓库根(opencode 全局配置中使用) | - |
CRG_DATA_DIR |
覆盖图谱数据库与生成产物的目录 | - |
CRG_GIT_TIMEOUT |
Git 操作超时(秒) | 30 |
CRG_TOOLS |
serve 时暴露的 MCP 工具允许列表(逗号分隔) | - |
CRG_TOOL_TIMEOUT |
有界 MCP 工具的可选超时(秒,0 禁用) |
0 |
CRG_MAX_IMPACT_NODES |
影响分析中最多包含的节点数 | 500 |
CRG_MAX_IMPACT_DEPTH |
爆炸半径分析搜索深度 | 2 |
CRG_MAX_BFS_DEPTH |
图谱遍历最大深度 | 15 |
CRG_MAX_SEARCH_RESULTS |
搜索结果数上限 | 20 |
CRG_MAX_CHANGED_FUNCS |
单次变更报告分析的最大变更函数数 | 500 |
CRG_MAX_TRANSITIVE_FRONTIER |
传递调用方/被调用方展开的最大前沿大小 | 50 |
CRG_RECURSE_SUBMODULES |
设为 1/true/yes 时包含 git 子模块文件 |
- |
CRG_SERIAL_PARSE |
设为 1 禁用并行解析(调试用) |
- |
NO_COLOR |
设置后禁用终端 ANSI 颜色 | - |
Embedding 相关(可选功能,全部默认关闭):
| 变量 | 描述 | 默认 |
|---|---|---|
CRG_EMBEDDING_MODEL |
本地 embedding 默认模型 | all-MiniLM-L6-v2 |
GOOGLE_API_KEY |
Google Gemini embedding 的 API key | - |
MINIMAX_API_KEY |
MiniMax embedding 的 API key | - |
VOYAGE_API_KEY / CRG_VOYAGE_* |
Voyage embedding 密钥与模型/维度/批大小等参数 | voyage-code-3 |
CRG_OPENAI_BASE_URL / CRG_OPENAI_API_KEY / CRG_OPENAI_MODEL |
OpenAI 兼容端点(真实 OpenAI、Azure、new-api、LiteLLM、vLLM、LocalAI 等) | - |
CRG_ACCEPT_CLOUD_EMBEDDINGS |
显式确认后抑制云端 embedding 出口警告 | - |
CRG_ALLOW_REMOTE_CODE |
允许需要 trust_remote_code=True 的 HuggingFace 模型 |
0 |
隐私说明:embedding 只处理标识符、签名、结构上下文与首段 docstring 摘要, 不传输函数体;例行构建默认不刷新 embedding,刷新需显式传 provider + model。
8.4 语言覆盖
解析器覆盖函数、类、导入、调用点、继承与测试检测:
- Web:JavaScript / TypeScript / TSX、PHP、Ruby、Vue/Svelte SFC、Astro、Blade
- 后端:Python、Go、Java、C/C++、C#、VB.NET、Kotlin、Scala、Elixir、R
- 系统:Rust、Zig、Objective-C、Nix、Shell、Verilog/SystemVerilog、SQL
- 移动:Swift、Kotlin、Objective-C
- 脚本:Perl / Perl XS、Lua/Luau、PowerShell、Julia、ReScript、GDScript
- 配置/结构:Terraform/OpenTofu(
.tf)、Ansible playbook/role/task、Solidity、Dart - 笔记本:Jupyter / Databricks(
.ipynb)
通用 YAML 不视为源码。PHP 项目额外获得 Composer PSR-4 解析、Blade 引用与 Laravel Route/Eloquent 语义边(基于证据门控)。
8.5 自定义语言(无需改代码)
在仓库 .code-review-graph/languages.toml 将扩展名映射到 tree_sitter_language_pack
中任意已捆绑语法,并声明函数/类/导入/调用的 tree-sitter 节点类型:
[languages.erlang]
extensions = [".erl"]
grammar = "erlang"
function_node_types = ["function_clause"]
class_node_types = ["record_decl"]
import_node_types = ["import_attribute"]
call_node_types = ["call"]
通用 tree-sitter 遍历器即可完成提取;内置语言永远不会被覆盖。
详见本仓库 docs/CUSTOM_LANGUAGES.md。
- 如何验证工具正常工作?
code-review-graph status、detect-changes --brief, 或在 MCP 客户端中查看 code-review-graph 服务是否列出工具。 - 图谱何时需要重建? 日常由 watch/hooks/crg-daemon 自动增量维护;仅在切换分支大范围
变更、怀疑图谱过期或升级版本后建议全量
build。 - 审查会修改我的代码吗? 不会。三种审查工作流全程只读,报告落盘于
docs/reviews/(或指定的output_path),修复决定始终由人工执行。 - MCP 报 not_ready? 该仓库尚未构建图谱,先运行一次
build。