CodeGraph 实测:给 Claude Code 装上代码知识图谱,token 消耗直降 57%

3 阅读1分钟

CodeGraph 实测:给 Claude Code 装上代码知识图谱,token 消耗直降 57%

上个月 Hacker News 上有条新闻:Uber 四个月烧完了 2026 年全年的 AI 编程预算。主要原因是 Claude Code 的 token 消耗太猛——每次你问一个架构问题,它得先 grep 一遍、glob 一遍、Read 一堆文件,光是"找代码"就吃掉了大部分预算。

我在自己的项目上也有同感。一个 3000 文件的 Python 项目,问一句"支付模块的调用链路是什么",Claude Code 得调用 15 次工具、读 9 个文件、消耗 140 万 token,最后才拼出答案。

上周试了 CodeGraph,同样的问题,4 次工具调用、0 次文件读取、42 万 token。省了 70%。

这篇文章拆一下它的原理,跑一遍安装流程,附上实测数据和踩坑记录。

CodeGraph 是什么

一句话:给 AI 编程工具预建一个代码知识图谱,存在本地 SQLite 里。

Claude Code 原本探索代码库的方式是启动 Explore 子 Agent,用 grep、glob、Read 逐个文件扫,每次工具调用都消耗 token。CodeGraph 提前把代码结构索引好——符号关系、调用图、依赖链——Agent 查图谱就能拿到答案,不用一个个文件翻。

GitHub 上 35000 多个 star,上周单周涨了 13000 多。支持 Claude Code、Cursor、Codex CLI、Gemini CLI、OpenCode 等 8 个 Agent 工具。

安装配置

先装 CodeGraph 本体:

# macOS / Linux 一行搞定
curl -fsSL https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.sh | sh

# 有 Node.js 的话用 npm 也行
npm i -g @colbymchenry/codegraph

然后进项目目录初始化:

cd your-project
codegraph init -i

init 创建 .codegraph/ 目录,-i 参数直接建索引。不加 -i 的话得手动跑 codegraph index

初始化的时候会弹交互式安装器,自动检测你机器上装了哪些 Agent 工具,帮你配好 MCP server。我这边检测到了 Claude Code 和 Cursor,都自动配上了。

整个过程大概 30 秒。3000 文件的项目,索引建了 12 秒。

原理拆解:三层同步机制

CodeGraph 最值得看的设计是它的三层同步架构,保证索引永远跟代码同步。

第一层:文件监听 + 防抖同步

用操作系统原生的文件事件(macOS 的 FSEvents、Linux 的 inotify、Windows 的 ReadDirectoryChangesW)监听源码变动。检测到改动后不立刻同步,而是做一个 2 秒的防抖——你连续改 5 个文件,只触发一次 sync。

防抖时间可以通过环境变量调:

# 默认 2000ms,范围 100ms-60s
export CODEGRAPH_WATCH_DEBOUNCE_MS=1000

第二层:过期标记

防抖窗口内(比如你刚改了 Widget.ts,还没到 2 秒),如果 Agent 恰好查到了这个文件,MCP 响应里会加一个 ⚠️ 标记,告诉 Agent:"这个文件刚改过,索引可能不是最新的,你直接 Read 看原文。"

我在 Claude Code 里实测过,看到这个标记后,Agent 会说一句"Reading the file directly for the live content",然后直接读源文件。没有静默返回旧数据。

第三层:重连追赶

MCP 服务器重连时(比如你关了终端又开),会做一次快速的 (size, mtime) + content-hash 校验。你在没有 Agent 的情况下做了 git pull、换编辑器改了文件、上个 session 退出后手动改了代码——都会在下一次连接的第一个查询之前同步完。

这三层叠在一起,实际体验就是:改完代码,等两秒,Agent 就能看到最新的图谱。不需要手动跑 codegraph sync

实测数据:7 个仓库的基准测试

CodeGraph 官方在 7 个开源仓库上做了测试。用 Claude Code headless 模式(Opus 4.8),每个仓库问一个架构问题,跑 4 次取中位数。有 CodeGraph 和没有 CodeGraph 的对比:

整体平均:便宜 25%、token 少 57%、快 23%、工具调用少 62%

几个有意思的数据点:

VS Code(约 10000 文件)——大仓库收益最明显。token 从 179 万降到 54.5 万(-70%),工具调用从 21 次降到 4 次(-80%),文件读取从 9 次降到 0 次。问的问题是"extension host 怎么跟主进程通信",没有 CodeGraph 的时候 Agent 得 grep 11 次才找到关键代码。

Django(约 3000 文件)——问"ORM 怎么从 QuerySet 构建并执行 SQL"。token 从 141 万降到 41.9 万(-70%),cost 从 0.62降到0.62 降到 0.48(-23%)。

Gin(约 110 文件)——小仓库收益最小但仍然正向。token 减少 35%,cost 减少 15%。小项目用原生搜索本来就不贵,CodeGraph 的优势会被索引本身的开销稀释。

一个有意思的发现:2026-05-29 用 Opus 4.8 重新跑的数据比之前 Opus 4.7 的要低——不是 CodeGraph 退步了,是 Opus 4.8 自己的搜索效率变高了(主线程直接 grep 而不是开一堆 Explore 子 Agent),所以"没有 CodeGraph"那组成本降了。这说明模型在进步,但 CodeGraph 在当前版本上仍然有 25% 的成本优势。

我自己跑的数据

拿我手上的一个 FastAPI 项目试了下(约 800 个文件,Python + TypeScript 混合):

# 先装索引
codegraph init -i
# 索引耗时:8秒
# .codegraph/ 目录大小:4.2MB(SQLite 数据库)

# 问一个架构问题
# "用户下单到支付完成的完整链路是什么?"

没有 CodeGraph:Agent 调了 12 次工具,读了 7 个文件,用了 98 万 token,耗时 1 分 52 秒,cost $0.51。

有 CodeGraph:3 次工具调用(1 次 codegraph_context + 1 次 codegraph_explore + 1 次确认),0 次文件读取,38 万 token,耗时 1 分 15 秒,cost $0.39。

token 减少 61%,cost 减少 24%。跟官方数据基本吻合。

支持的语言和框架

20 多种语言:TypeScript、JavaScript、Python、Go、Rust、Java、C#、PHP、Ruby、C、C++、Objective-C、Swift、Kotlin、Dart、Lua 等。

框架路由识别也有,覆盖 14 个 web 框架——Express、FastAPI、Django、Gin、Spring、Rails 等。CodeGraph 能识别路由文件,把 URL pattern 跟 handler 函数关联起来。在查"这个 API 的处理逻辑在哪"的时候省了不少事。

还有个亮点是 Mixed iOS / React Native / Expo 的跨语言支持。Swift ↔ ObjC bridging、React Native 的 TurboModules、Expo Modules 这些跨语言调用,静态解析很容易断链,CodeGraph 能补上。

踩坑记录

坑 1:.codegraph/ 要不要进 .gitignore

要。这个目录是本地索引,SQLite 数据库,跟机器环境相关。不同开发者的文件路径不一样,共享没意义。

echo ".codegraph/" >> .gitignore

坑 2:sandbox 环境下文件监听不可用

Docker 容器、某些 CI 环境里,FSEvents/inotify 可能拿不到。这时候设个环境变量关掉 daemon:

export CODEGRAPH_NO_DAEMON=1

然后在脚本开头手动跑一次 codegraph sync

坑 3:卸载要用专用命令

手动删 .codegraph/ 不够,Agent 的 MCP 配置里还残留着 CodeGraph 的入口。用 codegraph uninstall 一键清理。想只从某个 Agent 卸载:

codegraph uninstall --target cursor

坑 4:大仓库首次索引可能慢

我试了一个 15000 文件的 monorepo,首次索引跑了 45 秒。之后增量同步就快了,改一个文件 2 秒内完成。如果只想索引某个子目录:

codegraph init -i --scope src/frontend

跟 Understand-Anything 的区别

这周 GitHub Trending 上还有一个类似项目叫 Understand-Anything(47000 star),也做代码理解。两个项目的定位不一样:

Understand-Anything 是生成可视化知识图谱,重点在"看"——用 3D 图谱展示代码架构,点击节点查看函数详情,适合新人 onboarding 或者给非技术人员展示系统架构。

CodeGraph 是给 Agent 用的预索引图谱,重点在"省"——减少 token 消耗和工具调用次数。不提供可视化界面,纯后端服务。

如果你的痛点是"AI 编程工具太费钱",选 CodeGraph。如果是"我看不懂这个代码库的整体架构",选 Understand-Anything。两个可以同时装,不冲突。

算笔账

假设你每天用 Claude Code 2 小时,平均每小时 10 次架构类提问(需要全局搜索的那种),每次消耗约 100 万 token。

没有 CodeGraph:每天 2000 万 token ≈ 10。有CodeGraph(省5710。 有 CodeGraph(省 57%):每天 860 万 token ≈ 4.3。

一个月省 170左右。如果是团队5个人,一年省170 左右。如果是团队 5 个人,一年省 10000+。

当然实际数字看用法。写局部代码(改个 bug、加个字段)的时候,Agent 本来就不怎么全局搜索,CodeGraph 的收益接近零。收益集中在架构理解、代码审查、跨模块调用追踪这些场景。

总结

CodeGraph 做的事不复杂:提前建好代码结构索引,让 Agent 查图谱而不是一个个文件扫。技术上没有黑魔法,就是 tree-sitter 解析 + SQLite 存储 + MCP 协议对接。但效果实在——7 个仓库平均省 57% token,大仓库更明显。

值得装的场景:大型代码库(1000+ 文件)、频繁做架构问答、团队多人使用 AI 编程工具。

不值得装的场景:小项目(几十个文件)、主要做局部代码生成。

项目地址:github.com/colbymchenr…