摘要:半年时间冲到了 35.4K Star、2.2K Fork,被 7 个主流 Coding Agent(Claude Code、Cursor、Codex CLI、opencode、Gemini CLI、Antigravity IDE、Kiro、Hermes Agent)原生支持。 ~25% 更便宜 · ~62% 更少工具调用 · 100% 本地
我第一眼以为又是哪个"AI 加速器"的营销话术,结果点进 Benchmark 表才发现——它用 Claude Opus 4.8 在 7 个真实开源仓库(VS Code、Django、Tokio、Excalidraw、OkHttp、Gin、Alamofire)跑了 4 轮中位数对比,每个数字都有出处:
仓库语言成本Token时间工具调用VS CodeTS · ~10k 文件便宜 33%少 70%快 27%少 80%DjangoPython · ~3k便宜 23%少 70%快 28%少 77%TokioRust · ~790便宜 35%少 70%快 37%少 79%ExcalidrawTS · ~640便宜 27%少 61%快 26%少 70%OkHttpJava · ~645便宜 11%少 48%快 26%少 70%GinGo · ~110便宜 15%少 35%快 9%少 47%AlamofireSwift · ~110便宜 28%少 46%快 7%少 13% 最猛的一条:VS Code 这种 10k 文件的怪物级仓库,问"扩展宿主怎么和主进程通信",用了 CodeGraph 之后 Agent 全程零文件读取,4 次工具调用直接出答案;不用的话要 21 次,多花 50% 的钱。 如果用了 CodeGraph,你会在 Claude Code 的工具调用列表里看到 mcp__codegraph__codegraph_context 这种调用——而不是一堆 grep 和 Read。
当所有人都还在卷"更大的模型 + 更长的上下文",CodeGraph 反其道而行之:先给代码库建一张本地索引,让 Agent 别再 grep 了。
2026 年 1 月,一个叫 colbymchenry/codegraph 的仓库悄悄上线。半年时间冲到了 35.4K Star、2.2K Fork,被 7 个主流 Coding Agent(Claude Code、Cursor、Codex CLI、opencode、Gemini CLI、Antigravity IDE、Kiro、Hermes Agent)原生支持。
colbymchenry/codegraph
它没有花哨的口号,README 第一屏只放了一行数字:
~25% 更便宜 · ~62% 更少工具调用 · 100% 本地
最猛的一条:VS Code 这种 10k 文件的怪物级仓库,问"扩展宿主怎么和主进程通信",用了 CodeGraph 之后 Agent 全程零文件读取,4 次工具调用直接出答案;不用的话要 21 次,多花 50% 的钱。
这篇文章会把它拆透:
要理解 CodeGraph 为什么能砍 70% 的 Token,得先看看不用它的时候,一个 Agent 是怎么"理解代码"的。
你在 Claude Code 里问一句:"Django 的 ORM 是怎么从 QuerySet 走到 SQL 执行的?" Claude 会:
glob
*queryset*.py
grep
Read
整个过程 Django 仓库消耗 13 次工具调用、141 万 Token、$0.62。90% 的预算花在了"找到要读的文件",而不是"回答问题"。
CodeGraph 的洞察很直接:
代码结构本身是静态的,每次都让模型现 grep 一遍是巨大浪费。把它预先解析成图谱存好,Agent 直接查图就行。
实现上没什么魔法:
.codegraph/codegraph.db
关键设计在第 4 步:MCP 的 initialize 响应里直接把使用指南塞给 Agent,不需要往你的 CLAUDE.md / AGENTS.md / GEMINI.md 写一个字。Agent 一连上就知道:"这个项目有 CodeGraph,结构性问题直接调工具,别再 grep 了。"
initialize
CLAUDE.md
AGENTS.md
GEMINI.md
这就是为什么前面那张 Benchmark 表里,"With CodeGraph" 这一列文件读取次数大多是 0——不是被禁掉了,是 Agent 自己判断没必要读。
这是整篇文章最值得收藏的部分。我把官方表格按"使用频率 + 适用场景"重新排了一遍。
codegraph_context
codegraph_explore
codegraph_trace
注意:context 和 explore 会返回大量源码,官方强烈建议主会话不要直接调,而是 spawn 一个 Explore 子 Agent 调用——否则你主会话的上下文窗口会被代码塞爆。
context
explore
codegraph_search
codegraph_callers
codegraph_callees
codegraph_impact
codegraph_node
codegraph_files
ls
codegraph_status
普通的 callers/callees 只能跳一跳,遇到 React 重新渲染、回调、interface→impl 这种动态派发,grep 直接断链。codegraph_trace 的差异化点在:
callers
callees
from
to
setState
render
我自己实测过:Django 仓库问 "QuerySet 怎么走到 execute_sql",传统 grep 需要至少 4 跳手动追,trace 一次出答案。
它不是单纯的 search。一次 codegraph_context("修复用户登录 bug") 会同时返回:
codegraph_context("修复用户登录 bug")
这是 Token 节省的核心来源——一次工具调用顶传统模式下的 5-8 次 grep+read。
# macOS / Linux curl -fsSL https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.sh | sh # Windows irm https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.ps1 | iex # 或者用 npm npx @colbymchenry/codegraph
CodeGraph 自带 Node 运行时,所以你机器上有没有装 Node 都不影响。安装器是交互式的,会自动检测你装了哪些 Agent,然后问你:
cd your-project codegraph init -i
init 创建 .codegraph/ 目录,-i 顺带把初始索引也建了。
init
.codegraph/
-i
跑完之后项目根目录会多出来:
.codegraph/ └── codegraph.db # SQLite 知识图谱
就这样,零配置。 没有 config 文件要写,没有语言要勾选,扩展名识别全自动。node_modules、dist、.venv、Pods 这些目录自动跳过,1MB 以上的文件自动忽略。
node_modules
dist
.venv
Pods
随便问你的 Agent 一个结构性问题,比如 "解释下这个项目的入口流程"。如果用了 CodeGraph,你会在 Claude Code 的工具调用列表里看到 mcp__codegraph__codegraph_context 这种调用——而不是一堆 grep 和 Read。
mcp__codegraph__codegraph_context
主会话只能直接调轻量工具:search / callers / callees / impact / node。
search
impact
node
重的探索工具(context / explore / trace)必须 spawn 一个 Explore 子 Agent 去调。原因:这俩工具返回的源码量可能是几千行,直接在主会话调会瞬间填满你的上下文窗口,后续根本没法继续工作。
trace
Claude Code 的官方安装器会自动把这条规则写进 CLAUDE.md。别手贱删掉它。
任何改一个被多处引用的函数前,先问 Agent:
"用 codegraph_impact 看一下改 UserService.authenticate 会影响哪些代码,depth=2"
UserService.authenticate
它会返回完整的影响树。我用这个套路在一个老项目里救过一次——本来准备改个 "看起来很独立"的工具函数,结果 impact 显示 17 个地方在用,其中 3 处是定时任务。
codegraph affected
这个命令被严重低估了。它的作用是:根据改动的源文件,反向推导出哪些测试文件受影响。
#!/usr/bin/env bash AFFECTED=$(git diff --name-only HEAD | codegraph affected --stdin --quiet) if [ -n "$AFFECTED" ]; then npx vitest run $AFFECTED fi
放到 pre-commit hook 或 CI 里,只跑相关测试,大型仓库 CI 时间能砍掉 70% 以上。它走的是依赖图传递闭包,比基于路径的"猜测式"测试选择准得多。
如果你做的是 React Native 或混合 iOS 项目,CodeGraph 是少数能跨语言连边的工具:
@objc
NativeModules.X.fn(...)
RCT_EXPORT_METHOD
@ReactMethod
trace 和 impact 能跨这些边走通,传统的 LSP 和 grep 全断链。
CodeGraph 的文件 watcher 是 2 秒 debounce。在这 2 秒内,如果你 Agent 查的某个文件正好刚改过没同步,工具返回里会自动加一个 ⚠️ banner,告诉 Agent "这个文件还没同步,请直接 Read"。
我见过不少人因为不信 banner,每次都让 Agent 跑 codegraph sync 兜底——完全没必要。Agent 会读 banner,会自己 Read 文件,整个机制是闭环的。
codegraph sync
代码图谱 MCP 这条赛道并不只有 CodeGraph,我把主流选手放一张表:
CodeGraph —— 轻量、零配置、专治"探索税"。最适合"我只想让 Agent 答得更快、更便宜"的工程师。
Serena —— 基于 LSP,能改代码。如果你需要 Agent 不仅理解还能精确编辑(重命名、提取函数等),Serena 更合适,但配置更重。
CodeGraphContext —— 图数据库派。优势是能跑复杂的图查询("找出所有调用链超过 5 跳且涉及外部库的函数"),但要装 Neo4j,重型团队适用。
code-graph-rag-mcp —— embedding 派。叠加了向量语义搜索,"找认证相关代码"这种模糊查询更准,但要嵌入服务,对 token 预算的优化没那么极致。
不冲突,可以共存。我自己的配置是 CodeGraph + Serena 双开——CodeGraph 负责"读懂",Serena 负责"动手"。
数据库就在 .codegraph/codegraph.db,没有任何 API key、没有外部服务调用。公司代码可以放心用。
watcher 不是每次改文件都全量重建,是基于 (size, mtime) + content hash 做差分。一个 10k 文件的仓库,单次小改动同步时间在毫秒级。
(size, mtime) + content hash
很多人担心 Agent 并发查询会撞锁。CodeGraph 用的是 Node 22.5+ 内置的 node:sqlite + WAL 模式,读永远不会被写阻塞。除非你把 .codegraph/ 放在网络盘或 WSL2 /mnt 上(WAL 启不起来),否则不会遇到 locked 错误。
node:sqlite
/mnt
最新版本对 explore 做了"per-symbol adaptive sizing"——大项目自动收缩单次返回的源码量,避免一次撑爆。这也是 Opus 4.8 重新跑分时数据更好看的原因之一。
回头看 2025 的 AI Coding 工具,大部分还在卷"更聪明的 Prompt"、"更复杂的 Agent 编排"。CodeGraph 代表了另一种思路:
与其指望模型变得更聪明,不如把它要查的东西提前算好。
这其实就是经典的计算机科学解法——索引、缓存、预计算。当你的 Agent 在一个 10k 文件的项目里反复 grep 同一组符号关系时,真正缺的不是更大的上下文窗口,是一张图。
CodeGraph 把这件事做成了零配置、零云依赖、跨 8 个主流 Agent 通用的本地服务。35K Star 一夜起飞,不是因为它玄学,是因为它把账单实实在在砍掉了 25-35%——这是任何长期用 Claude Opus 写代码的人都能立刻感知到的差距。
如果你已经在用 Claude Code / Cursor / Codex 之类的 Agent,建议今晚就装上跑一下。命令再贴一次:
npx @colbymchenry/codegraph cd your-project && codegraph init -i
跑完拿个真实仓库随便问一句架构题,对比下"没装前"和"装上后"的 Token 数——你大概率会立刻把它加进默认工作流。
项目地址:github.com/colbymchenr… 官方文档:colbymchenry.github.io/codegraph/
本文所有 Benchmark 数据来自项目 README,基于 Claude Opus 4.8(2026-05-29)在 7 个开源仓库的 4 轮中位数对比,可在原始 repo 复现。
暂无回复,快来抢沙发吧!
本次需消耗银元:
100
当前账户余额: 0 银元
我第一眼以为又是哪个"AI 加速器"的营销话术,结果点进 Benchmark 表才发现——它用 Claude Opus 4.8 在 7 个真实开源仓库(VS Code、Django、Tokio、Excalidraw、OkHttp、Gin、Alamofire)跑了 4 轮中位数对比,每个数字都有出处:
仓库语言成本Token时间工具调用VS CodeTS · ~10k 文件便宜 33%少 70%快 27%少 80%DjangoPython · ~3k便宜 23%少 70%快 28%少 77%TokioRust · ~790便宜 35%少 70%快 37%少 79%ExcalidrawTS · ~640便宜 27%少 61%快 26%少 70%OkHttpJava · ~645便宜 11%少 48%快 26%少 70%GinGo · ~110便宜 15%少 35%快 9%少 47%AlamofireSwift · ~110便宜 28%少 46%快 7%少 13% 最猛的一条:VS Code 这种 10k 文件的怪物级仓库,问"扩展宿主怎么和主进程通信",用了 CodeGraph 之后 Agent 全程零文件读取,4 次工具调用直接出答案;不用的话要 21 次,多花 50% 的钱。 如果用了 CodeGraph,你会在 Claude Code 的工具调用列表里看到 mcp__codegraph__codegraph_context 这种调用——而不是一堆 grep 和 Read。
35K Star 一夜爆火:CodeGraph 把 AI 编码 Agent 的 Token 砍掉 57%,工具调用减少 62%
一、写在前面:一个把 Claude Code 账单砍半的开源项目
2026 年 1 月,一个叫
colbymchenry/codegraph的仓库悄悄上线。半年时间冲到了 35.4K Star、2.2K Fork,被 7 个主流 Coding Agent(Claude Code、Cursor、Codex CLI、opencode、Gemini CLI、Antigravity IDE、Kiro、Hermes Agent)原生支持。它没有花哨的口号,README 第一屏只放了一行数字:
我第一眼以为又是哪个"AI 加速器"的营销话术,结果点进 Benchmark 表才发现——它用 Claude Opus 4.8 在 7 个真实开源仓库(VS Code、Django、Tokio、Excalidraw、OkHttp、Gin、Alamofire)跑了 4 轮中位数对比,每个数字都有出处:
最猛的一条:VS Code 这种 10k 文件的怪物级仓库,问"扩展宿主怎么和主进程通信",用了 CodeGraph 之后 Agent 全程零文件读取,4 次工具调用直接出答案;不用的话要 21 次,多花 50% 的钱。
这篇文章会把它拆透:
二、它在解决什么?AI Agent 的"探索税"
要理解 CodeGraph 为什么能砍 70% 的 Token,得先看看不用它的时候,一个 Agent 是怎么"理解代码"的。
你在 Claude Code 里问一句:"Django 的 ORM 是怎么从 QuerySet 走到 SQL 执行的?" Claude 会:
glob找*queryset*.py;grep搜 "execute_sql";Read一遍(每个文件几千行);整个过程 Django 仓库消耗 13 次工具调用、141 万 Token、$0.62。90% 的预算花在了"找到要读的文件",而不是"回答问题"。
CodeGraph 的洞察很直接:
实现上没什么魔法:
.codegraph/codegraph.db,带全文索引;关键设计在第 4 步:MCP 的
initialize响应里直接把使用指南塞给 Agent,不需要往你的CLAUDE.md/AGENTS.md/GEMINI.md写一个字。Agent 一连上就知道:"这个项目有 CodeGraph,结构性问题直接调工具,别再 grep 了。"这就是为什么前面那张 Benchmark 表里,"With CodeGraph" 这一列文件读取次数大多是 0——不是被禁掉了,是 Agent 自己判断没必要读。
三、9 个 MCP 工具:每个都讲清楚什么时候用
这是整篇文章最值得收藏的部分。我把官方表格按"使用频率 + 适用场景"重新排了一遍。
🔥 探索类(最常用,但要交给 Explore 子 Agent)
codegraph_contextcodegraph_explorecodegraph_trace注意:
context和explore会返回大量源码,官方强烈建议主会话不要直接调,而是 spawn 一个 Explore 子 Agent 调用——否则你主会话的上下文窗口会被代码塞爆。🎯 关系类(轻量,主会话可以直接调)
codegraph_searchcodegraph_callerscodegraph_calleescodegraph_impactcodegraph_nodecodegraph_filesls更准(只列被索引的)codegraph_status重点解剖:
codegraph_trace—— 它真的不一样普通的
callers/callees只能跳一跳,遇到 React 重新渲染、回调、interface→impl 这种动态派发,grep 直接断链。codegraph_trace的差异化点在:from到to每一跳的函数体都内联返回;setState→ 触发 reconciler → 调用对应render这种链路,tree-sitter 看不到的边它能补上;我自己实测过:Django 仓库问 "QuerySet 怎么走到 execute_sql",传统 grep 需要至少 4 跳手动追,trace 一次出答案。
重点解剖:
codegraph_context为什么是"瑞士军刀"它不是单纯的 search。一次
codegraph_context("修复用户登录 bug")会同时返回:这是 Token 节省的核心来源——一次工具调用顶传统模式下的 5-8 次 grep+read。
四、30 秒上手:完整安装流程
Step 1 - 一行命令装
# macOS / Linux curl -fsSL https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.sh | sh # Windows irm https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.ps1 | iex # 或者用 npm npx @colbymchenry/codegraphCodeGraph 自带 Node 运行时,所以你机器上有没有装 Node 都不影响。安装器是交互式的,会自动检测你装了哪些 Agent,然后问你:
Step 2 - 重启 Agent,初始化项目
cd your-project codegraph init -iinit创建.codegraph/目录,-i顺带把初始索引也建了。跑完之后项目根目录会多出来:
.codegraph/ └── codegraph.db # SQLite 知识图谱就这样,零配置。 没有 config 文件要写,没有语言要勾选,扩展名识别全自动。
node_modules、dist、.venv、Pods这些目录自动跳过,1MB 以上的文件自动忽略。Step 3 - 验证
随便问你的 Agent 一个结构性问题,比如 "解释下这个项目的入口流程"。如果用了 CodeGraph,你会在 Claude Code 的工具调用列表里看到
mcp__codegraph__codegraph_context这种调用——而不是一堆 grep 和 Read。五、最佳实战攻略:5 个我亲测有效的套路
套路 1:主会话和 Explore Agent 分工——这是最重要的一条
主会话只能直接调轻量工具:
search/callers/callees/impact/node。重的探索工具(
context/explore/trace)必须 spawn 一个 Explore 子 Agent 去调。原因:这俩工具返回的源码量可能是几千行,直接在主会话调会瞬间填满你的上下文窗口,后续根本没法继续工作。Claude Code 的官方安装器会自动把这条规则写进
CLAUDE.md。别手贱删掉它。套路 2:重构前先跑
codegraph_impact任何改一个被多处引用的函数前,先问 Agent:
它会返回完整的影响树。我用这个套路在一个老项目里救过一次——本来准备改个 "看起来很独立"的工具函数,结果 impact 显示 17 个地方在用,其中 3 处是定时任务。
套路 3:CI 加速利器
codegraph affected这个命令被严重低估了。它的作用是:根据改动的源文件,反向推导出哪些测试文件受影响。
#!/usr/bin/env bash AFFECTED=$(git diff --name-only HEAD | codegraph affected --stdin --quiet) if [ -n "$AFFECTED" ]; then npx vitest run $AFFECTED fi放到 pre-commit hook 或 CI 里,只跑相关测试,大型仓库 CI 时间能砍掉 70% 以上。它走的是依赖图传递闭包,比基于路径的"猜测式"测试选择准得多。
套路 4:跨语言项目特别能打——iOS / RN / Expo
如果你做的是 React Native 或混合 iOS 项目,CodeGraph 是少数能跨语言连边的工具:
@objc自动桥接NativeModules.X.fn(...)↔ ObjCRCT_EXPORT_METHOD/ Java@ReactMethodtrace和impact能跨这些边走通,传统的 LSP 和 grep 全断链。套路 5:相信 staleness banner,别多疑
CodeGraph 的文件 watcher 是 2 秒 debounce。在这 2 秒内,如果你 Agent 查的某个文件正好刚改过没同步,工具返回里会自动加一个 ⚠️ banner,告诉 Agent "这个文件还没同步,请直接 Read"。
我见过不少人因为不信 banner,每次都让 Agent 跑
codegraph sync兜底——完全没必要。Agent 会读 banner,会自己 Read 文件,整个机制是闭环的。六、和同类项目的对比:什么时候该用哪个?
代码图谱 MCP 这条赛道并不只有 CodeGraph,我把主流选手放一张表:
codegraph_trace跨动态派发三句话讲清楚每个的"性格"
CodeGraph —— 轻量、零配置、专治"探索税"。最适合"我只想让 Agent 答得更快、更便宜"的工程师。
Serena —— 基于 LSP,能改代码。如果你需要 Agent 不仅理解还能精确编辑(重命名、提取函数等),Serena 更合适,但配置更重。
CodeGraphContext —— 图数据库派。优势是能跑复杂的图查询("找出所有调用链超过 5 跳且涉及外部库的函数"),但要装 Neo4j,重型团队适用。
code-graph-rag-mcp —— embedding 派。叠加了向量语义搜索,"找认证相关代码"这种模糊查询更准,但要嵌入服务,对 token 预算的优化没那么极致。
选型决策
不冲突,可以共存。我自己的配置是 CodeGraph + Serena 双开——CodeGraph 负责"读懂",Serena 负责"动手"。
七、几个值得注意的细节
1. 它真的 100% 本地
数据库就在
.codegraph/codegraph.db,没有任何 API key、没有外部服务调用。公司代码可以放心用。2. 增量同步比你想的智能
watcher 不是每次改文件都全量重建,是基于
(size, mtime) + content hash做差分。一个 10k 文件的仓库,单次小改动同步时间在毫秒级。3. WAL 模式下数据库不会锁
很多人担心 Agent 并发查询会撞锁。CodeGraph 用的是 Node 22.5+ 内置的
node:sqlite+ WAL 模式,读永远不会被写阻塞。除非你把.codegraph/放在网络盘或 WSL2/mnt上(WAL 启不起来),否则不会遇到 locked 错误。4.
codegraph_explore有自适应预算最新版本对 explore 做了"per-symbol adaptive sizing"——大项目自动收缩单次返回的源码量,避免一次撑爆。这也是 Opus 4.8 重新跑分时数据更好看的原因之一。
八、写在最后:这是 AI Coding 的"基础设施转向"
回头看 2025 的 AI Coding 工具,大部分还在卷"更聪明的 Prompt"、"更复杂的 Agent 编排"。CodeGraph 代表了另一种思路:
这其实就是经典的计算机科学解法——索引、缓存、预计算。当你的 Agent 在一个 10k 文件的项目里反复 grep 同一组符号关系时,真正缺的不是更大的上下文窗口,是一张图。
CodeGraph 把这件事做成了零配置、零云依赖、跨 8 个主流 Agent 通用的本地服务。35K Star 一夜起飞,不是因为它玄学,是因为它把账单实实在在砍掉了 25-35%——这是任何长期用 Claude Opus 写代码的人都能立刻感知到的差距。
如果你已经在用 Claude Code / Cursor / Codex 之类的 Agent,建议今晚就装上跑一下。命令再贴一次:
npx @colbymchenry/codegraph cd your-project && codegraph init -i跑完拿个真实仓库随便问一句架构题,对比下"没装前"和"装上后"的 Token 数——你大概率会立刻把它加进默认工作流。
项目地址:github.com/colbymchenr… 官方文档:colbymchenry.github.io/codegraph/