OpenCode + CodeGraph:让 AI 代理不再浪费 Token 猜代码
为 OpenCode 配置 CodeGraph MCP,用预构建的知识图谱替代 grep+Read 探索,实测降低 35% 成本、减少 57% Token 消耗
用 OpenCode 写代码时,AI 代理面对一个大代码库最常见的行为是什么?疯狂 grep、glob、Read。
它要先找到相关文件,再读进去,再找调用关系,再读另一个文件……每一步都在消耗 Token。对于”这个函数怎么工作的?“这类结构化问题,传统方式的探索路径往往需要几十次工具调用,而其中大部分花在了定位文件上,而不是理解代码。
CodeGraph 改变了这个模式:它预先用 tree-sitter 解析整个代码库,构建一个包含所有符号、调用关系、依赖结构的本地知识图谱,存储在 SQLite 数据库中。AI 代理不需要再扫描文件,直接查图就能拿到答案——通常零次文件读取。
在 7 个真实开源项目上的基准测试(Claude Code,median of 4 runs):
| 指标 | 平均提升 |
|---|---|
| 成本降低 | 35% |
| Token 减少 | 57% |
| 速度提升 | 46% |
| 工具调用减少 | 71% |
部分项目的极端对比:
| 项目 | 语言 | 文件数 | Token 减少 | 工具调用 |
|---|---|---|---|---|
| VS Code | TypeScript | ~10k | 78% | 85% |
| Excalidraw | TypeScript | ~640 | 90% | 96% |
| Tokio | Rust | ~790 | 86% | 92% |
代码库越大,收益越明显。 在大型项目中,AI 代理可以通过几次 CodeGraph 查询直接拿到答案,而不需要像没有索引时那样展开十几个 grep/Read 探索。
- 100% 本地运行 — 数据不离开你的机器,无 API 密钥,无外部服务
- 确定性提取 — 基于 AST 解析,不是 LLM 摘要,结果准确可靠
- 自动同步 — 文件变更后自动增量更新索引,无需手动干预
- MCP 协议 — 与 OpenCode 等 AI 助手无缝集成
npx @colbymchenry/codegraph安装程序会自动检测已安装的 AI 助手(包括 OpenCode),写入 MCP 配置和指令文件。
如果自动安装未检测到 OpenCode,可以手动添加配置。
配置文件位置:
- Windows:
%APPDATA%/opencode/opencode.jsonc或opencode.json - Linux/macOS:
~/.config/opencode/opencode.jsonc或opencode.json
OpenCode 会优先使用 opencode.jsonc,如果已存在 opencode.json 则继续使用它。
添加以下内容到配置文件:
{ "$schema": "https://opencode.ai/config.json", "mcp": { "codegraph": { "type": "local", "command": ["codegraph", "serve", "--mcp"], "enabled": true } }}cd your-projectcodegraph init -i这会创建 .codegraph/ 目录并索引项目代码。
OpenCode 会自动调用 CodeGraph 的 MCP 工具:
| 问题 | 工具 |
|---|---|
| ”X 函数在哪里定义?“ | codegraph_search |
| ”谁调用了这个函数?“ | codegraph_callers |
| ”这个函数调用了什么?“ | codegraph_callees |
| ”X 是如何到达 Y 的?“ | codegraph_trace |
| ”改了这个会影响到哪些代码?“ | codegraph_impact |
| ”给我看 Y 的源代码” | codegraph_node |
| ”我需要处理 XX 功能,相关代码有哪些?“ | codegraph_context |
codegraph status # 查看索引状态codegraph sync # 增量更新索引codegraph query xxx # 搜索符号codegraph callers xxx # 查找调用者codegraph callees xxx # 查找被调用者Q: 提示 “not initialized”
A: 运行 codegraph init -i
Q: 符号找不到
A: 等待几秒自动同步,或手动运行 codegraph sync