Code Review Graph 本地优先代码智能图谱:用 Tree-sitter AST 构建结构图,让编码助手只读该读的代码
发布时间:2026/10/4 14:42:06 锦皓数字建站

1. 当编码助手把 95 万 tokens 全塞进上下文问题就来了Code Review Graph 是一个本地优先的代码智能图谱工具它用 Tree-sitter AST 把整个仓库解析成有向属性图再通过 MCP 协议暴露给编码助手让 AI 只读该读的代码。它适合谁适合那些用 Claude Code、Cursor、Copilot 处理中大型仓库、被 token 账单和上下文窗口反复折磨的开发者。我第一次在 3000 文件的 Next.js 项目里跑完整源码统计时数字是 95 万 tokens——这还没算上模型来回推理的消耗。传统编码助手的工作方式很粗暴要么全文读取要么随机 grep。全文读取直接撞上下文窗口上限随机 grep 又经常漏掉关键调用链。一个 PR 只改了 3 个文件AI 却可能读 50 多个不相关文件来理解上下文读得越多噪声越大审查质量反而下降。Code Review Graph 的思路完全不同它不试图让模型更聪明而是让模型读得更精准。核心机制是把代码库解析成图。节点代表函数、类、导入、测试边代表 CALLS、IMPORTS、INHERITS、TESTED_BY、DEPENDS_ON 等关系全部存进本地 SQLite。当 AI 需要审查某个变更时从变更节点出发做 BFS 影响分析只收集直接调用者和依赖者格式化成 2000 到 3500 tokens 的紧凑上下文。实测在 FastAPI 仓库上原始 951071 tokens 被压缩到 2169 tokens缩减 528 倍在 code-review-graph 自身仓库上是 93 倍。图查询返回的 token 量几乎不随项目规模增长这是它最值钱的地方。除了 token 缩减它还有几个让我愿意长期留在工具链里的特性。增量更新基于 SHA-256 哈希检测变更文件2900 文件的项目增量更新不到 2 秒不需要重建整个图谱。30 个 MCP 工具覆盖审查上下文、影响分析、图查询、语义搜索、架构发现、社区检测、重构预览、死代码检测。Leiden 社区检测能自动发现模块边界识别 hub 节点和 bridge 节点。FTS5 加向量混合搜索把准确率从 0.545 拉到 0.909。GitHub Action 集成让 PR 提交时在 CI runner 本地构建图谱、发布风险评分评论源码不出本地。这篇文章会带你从零走完整个落地流程安装 Code Review Graph、构建图谱、配置 MCP 接入编码助手、通过统一 Key/API 通道完成调用验证最后排查几个我踩过的真实报错。全程本地优先不需要把源码发到任何外部服务。2. TaoToken 前置准备统一 Key 与 API 通道Code Review Graph 本身是本地工具图谱构建和查询都在你机器上完成不依赖任何云端服务。但它的 MCP 工具最终要服务于编码助手而编码助手需要调用大模型 API 才能工作。这里就出现了一个现实问题Claude Code、Cursor、Codex、Windsurf 各自要配不同的 Key 和 Base URL管理起来很碎。我的做法是用 TaoToken 作为统一通道一个 Key 打通多个编码助手省去反复切换配置的麻烦。TaoToken 在这里的角色是统一 Key/API 通道。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点是 https://taotoken.net/api 。你需要在控制台创建一个 API Key然后把它填进各个编码助手的配置里。注意 API 地址不要加 UTM 参数直接用 https://taotoken.net/api 就行。具体操作路径打开控制台 https://taotoken.net/console 在 API Keys 页面点创建复制生成的 Key。这个 Key 后面会用在 Claude Code 的 settings.json、Codex 的 auth.json、Cline 的 MCP 配置里。如果你还没决定用哪个模型可以先去模型对话页面 https://taotoken.net/model 试一下响应速度和输出质量确认没问题再写进配置。为什么要在 Code Review Graph 的场景里提这个因为图谱工具的价值在于让编码助手读得更少但编码助手本身还是要发请求给模型。如果每次换助手都要重新配 Key调试成本会吃掉图谱带来的效率收益。统一通道的意义是把模型接入这件事从变量变成常量你只需要专注调图谱和 MCP 配置。有一点要提前说清楚TaoToken 不是替代编辑器或编码助手的工具它只负责 API 通道。Code Review Graph 负责图谱编码助手负责交互TaoToken 负责把请求送到模型。三者职责分明不要混在一起理解。如果你打算长期跑编码 Agent 或做批量代码审查可以看一下 Coding Plan https://taotoken.net/coding-plan 它更适合高频调用场景。只是偶尔验证一下图谱效果的话按量付费的 API Key 就够了。接入文档在 https://taotoken.net/doc 里面有各助手的配置示例遇到不确定的字段可以去对照。3. 可复制配置图谱构建与 MCP 接入这一节是全文最核心的部分所有配置都可以直接复制。先装 Code Review Graph再构建图谱最后配 MCP。安装用 pippip install code-review-graph code-review-graph installinstall命令会自动检测你机器上装了哪些编码助手并尝试写入 MCP 配置。但自动检测不一定覆盖所有情况我建议手动确认一遍。进入你的项目目录构建图谱cd your-project code-review-graph build构建完成后图谱存在.code-review-graph/graph.dbSQLite WAL 模式支持并发读取。第一次构建大仓库可能要几分钟之后增量更新就快了。接下来是 MCP 配置。Claude Code 的配置写在项目根目录的.mcp.json或用户级配置里{ mcpServers: { code-review-graph: { command: uvx, args: [code-review-graph, serve] } } }如果你用 ClineMCP 配置在 Cline 的设置面板里格式类似{ mcpServers: { code-review-graph: { command: uvx, args: [code-review-graph, serve], env: { CRG_DB_PATH: /absolute/path/to/your-project/.code-review-graph/graph.db } } } }注意CRG_DB_PATH要用绝对路径相对路径在不同工作目录下会找不到图谱。这是我踩过的坑之一。然后是编码助手本身的模型接入配置。Claude Code 的settings.json{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-your-taotoken-key } }Codex 的auth.json在~/.codex/目录下{ OPENAI_BASE_URL: https://taotoken.net/api, OPENAI_API_KEY: sk-your-taotoken-key }Cline 的配置在 VS Code 设置里填 Base URL 和 API KeyModel ID 根据你选的模型填。这里三件套必须齐全Base URL 是https://taotoken.net/apiKey 是控制台生成的Model ID 要和你在模型对话页面确认的一致。缺任何一个都会报 401 或 model not found。如果你用 CC Switch 管理多个助手配置把上面这些字段对应填进去就行。CC Switch 的好处是可以在不同项目间快速切换 Key 和模型不用手动改文件。配置完成后重启编码助手让它重新加载 MCP 服务器。你可以在助手里问一句列出可用的 MCP 工具如果能看到 code-review-graph 相关的工具列表说明接入成功。4. 验证请求从图谱查询到成功结果配置写完不代表能用必须验证。我习惯分三步验证先确认图谱存在再确认 MCP 工具可调用最后确认模型请求能通。第一步检查图谱文件ls -lh .code-review-graph/graph.db应该能看到一个几 MB 到几十 MB 的 db 文件。如果文件不存在或大小为 0说明构建失败回去看构建日志。第二步直接用命令行测试图谱查询。Code Review Graph 提供了 CLI 查询接口code-review-graph query callers_of --symbol handleSubmit这条命令会返回所有调用handleSubmit的节点。如果返回空列表可能是符号名不对或者图谱没包含这个文件。你可以先用code-review-graph query search --keyword handleSubmit确认符号存在。第三步在编码助手里触发一次真实请求。比如在 Claude Code 里输入用 code-review-graph 分析 src/api/user.ts 里 updateUser 函数的影响范围助手应该会调用 MCP 工具返回调用者和受影响的测试列表。如果这一步成功你会看到类似这样的输出影响分析结果 - 直接调用者src/api/admin.ts:45, src/handlers/profile.ts:112 - 受影响测试tests/api/user.test.ts:78 - 依赖模块src/db/userRepo.ts同时如果你开了 token 节约面板v2.3.5终端会显示本应消耗 X tokens / 实际使用 Y tokens / 节省 Z%。我实测在一个中型项目上单次审查从 12 万 tokens 降到 2800 tokens节省 97%。第四步验证模型请求确实走了 TaoToken 通道。你可以在控制台的用量页面看到请求记录确认 Base URL 和 Key 生效。如果用量页面没有记录说明请求没走通回去检查ANTHROPIC_BASE_URL或OPENAI_BASE_URL是否写对。验证通过后你就可以在日常编码中依赖图谱了。我的习惯是每次开新任务前先让助手跑一次影响分析确认改动半径再动手写代码。这样 AI 读的上下文少我 review 的负担也轻。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节列几个我真实遇到过的报错以及对应的排查路径。这些报错在 MCP 加统一 Key 的组合里出现频率很高。401 Unauthorized。最常见的原因是 Key 没填对或者 Base URL 写成了带 UTM 的地址。检查ANTHROPIC_API_KEY或OPENAI_API_KEY是否以sk-开头Base URL 是否是https://taotoken.net/api而不是带?utm_source的完整链接。另一个可能是 Key 被禁用或额度耗尽去控制台确认状态。local proxy failed。这个报错通常出现在 MCP 服务器启动阶段。原因是uvx找不到code-review-graph包或者 Python 版本低于 3.10。先跑python --version确认版本再跑uvx code-review-graph --version确认包能拉起。如果uvx本身没装用pip install uv补上。还有一种情况是CRG_DB_PATH指向了不存在的路径MCP 服务器启动时读不到图谱就报这个错。reading choices 相关报错。这个一般出现在模型返回格式不符合预期时编码助手解析响应失败。根因往往是 Model ID 填错了比如填了一个不支持 tool calling 的模型或者模型名拼写有误。去模型对话页面确认可用的 Model ID填进配置。如果用的是 Claude Code确认ANTHROPIC_MODEL字段和实际模型一致。OAuth 报错。如果你在 Codex 或 Claude Code 里看到 OAuth 相关提示说明助手在尝试走官方登录流程而不是用你配的 API Key。检查配置里是否同时存在 OAuth token 和 API Key两者冲突时助手可能优先走 OAuth。清掉 OAuth 缓存只保留 API Key 配置。Codex 的auth.json里不要留tokens字段只留OPENAI_BASE_URL和OPENAI_API_KEY。图谱查询返回空结果。不是报错但很常见。原因通常是图谱没包含目标文件或者符号名大小写不匹配。先跑code-review-graph build --force重建图谱再用search命令确认符号存在。如果项目用了 monorepo 结构确认构建时的工作目录是仓库根目录不是子包目录。增量更新不生效。检查.code-review-graph/目录是否有写权限以及文件监听是否被系统限制。Linux 下inotify有文件数上限大仓库可能需要调fs.inotify.max_user_watches。如果不想调系统参数可以手动跑code-review-graph update触发增量更新。排查顺序建议从外到内先确认 Key 和 Base URL再确认 MCP 服务器能启动再确认图谱文件存在最后确认模型 ID 正确。大部分问题在前两步就能定位。6. 把图谱接进日常编码流从验证到长期使用验证通过之后真正决定这套方案价值的是你怎么把它接进日常流程。我自己的做法是三个固定动作。第一个动作是开任务前跑影响分析。不管是用 Claude Code 还是 Cursor先让助手调用impact_analysis工具输入你要改的函数或文件拿到调用者和受影响测试列表。这一步花不到 10 秒但能避免 AI 读一堆无关文件。实测下来一个改动半径 3 个文件的 PR影响分析返回的上下文只有 2000 多 tokens而全文读取要 8 万 tokens 起步。第二个动作是 PR 提交时走 GitHub Action。Code Review Graph 提供了现成的 Action在 CI runner 本地构建图谱、发布风险评分评论。配置写在.github/workflows/下- uses: tirth8205/code-review-graphv2.3.7 with: github-token: ${{ secrets.GITHUB_TOKEN }}这个 Action 的好处是源码不出本地满足企业安全要求。风险评分会直接评论在 PR 上reviewer 一眼能看到改动影响范围。第三个动作是定期跑架构发现。Leiden 社区检测能自动发现模块边界识别 hub 节点和 bridge 节点。我一般每两周跑一次看看有没有意外的跨模块依赖。这个功能需要可选依赖igraph装一下就行pip install igraph code-review-graph analyze --community长期使用下来最大的收益不是 token 省钱而是 AI 审查质量变稳了。读得少噪声就少模型更容易聚焦在真正的变更影响上。基准测试里图谱上下文评分 8.8完整源码评分 7.2这个差距在真实项目里能感觉到。如果你还没开始建议先在一个中等规模仓库上试。装好之后跑一次 build配好 MCP做一次影响分析验证。确认链路通了再推到日常流程里。遇到报错就回第 5 节对照排查大部分问题都有现成解法。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。