乐于分享
好东西不私藏

这个工具让AI写代码时少花70%冤枉钱

这个工具让AI写代码时少花70%冤枉钱

用Claude Code、Cursor这类AI编程助手的同学,可能都有个感受:它们干活挺猛,但烧token也猛。

尤其遇到大项目,AI跟没头苍蝇似的到处翻文件——grep扫一遍,glob找一遍,找不到再读一遍。一圈下来,几十次工具调用打底,钱哗哗的。

CodeGraph就是来解决问题的。

给AI配一个代码知识图谱,它想问什么直接查,不用再满世界乱翻。实测结果:平均省35%的费用,减少70%的工具调用。

项目完全开源,MIT协议,100%本地运行,不上传任何代码。


装起来有多简单?

不用装Node.js,一条命令搞定:

macOS / Linux

curl -fsSL https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.sh | sh

Windows (PowerShell)

irm https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.ps1 | iex

如果机器上已经有Node,也可以走npm:

npx @colbymchenry/codegraph        # 零安装运行# 或者全局装npm i -g @colbymchenry/codegraph

装完跑一下安装向导,它会自动检测你机器上的Claude Code、Cursor、Codex CLI、opencode、Hermes Agent,问你要给哪个配好MCP服务。一路选就行,配置文件自动写好。

然后进你的项目目录:

cd your-projectcodegraph init -i

重启AI助手,完事。


到底能省多少?

作者拿7个真实开源项目测了一遍。每个项目跑4次,问同一个架构问题,对比有无CodeGraph的结果。

代码库
语言·规模
费用
token
耗时
工具调用
VS Code
TypeScript · 约1万文件
省35%
少73%
快41%
少72%
Excalidraw
TypeScript · 约600文件
省47%
少73%
快60%
少86%
Django
Python · 约2700文件
省34%
少64%
快59%
少81%
Tokio
Rust · 约700文件
省52%
少81%
快63%
少89%
OkHttp
Java · 约640文件
省17%
少41%
快36%
少64%
Gin
Go · 约150文件
省22%
少23%
快34%
少19%
Alamofire
Swift · 约100文件
省38%
少59%
快51%
少77%

平均:35%更便宜,59%更少token,49%更快,70%更少工具调用。

注意看Gin那个小项目(150个文件),native搜索本来就够快,所以差距不大。但上了规模,优势立刻拉开——大项目里AI几乎不需要读文件,直接查索引就能回答。


它能干什么?

智能上下文构建给AI一个任务描述,一次调用返回相关的入口点、关联符号和代码片段。AI不用再派一堆探索子agent到处挖。

全文本搜索内置FTS5全文索引,整个代码库按名字搜符号,毫秒级。

影响分析改一个函数之前,先查清楚谁调用了它,它调用了谁,改了会影响多大范围。

实时同步文件监听走操作系统原生事件(FSEvents / inotify / ReadDirectoryChangesW),代码一保存,图谱自动更新。不用配。

支持19+种语言TypeScript、JavaScript、Python、Go、Rust、Java、C#、PHP、Ruby、C、C++、Swift、Kotlin、Dart、Lua、Luau、Svelte、Liquid、Pascal/Delphi

框架感知的路由能认出Django、Flask、FastAPI、Express、NestJS、Laravel、Rails、Spring、Gin等14种框架的路由定义,把URL模式和handler函数关联起来。查一个controller的调用者,能直接看到是哪个URL在绑它。

100%本地数据不出机器,不用API key,没有外部服务。底层就是个SQLite库。


完整命令参考

安装与配置

命令
说明
curl ... | sh
 (macOS/Linux)
一键安装脚本
irm ... | iex
 (Windows)
一键安装脚本
npx @colbymchenry/codegraph
临时运行(不安装)
npm i -g @colbymchenry/codegraph
全局安装(npm版)
codegraph
 或 codegraph install
交互式安装向导
codegraph install --yes
非交互安装(自动检测agent)
codegraph install --target=cursor,claude --yes
指定安装到哪些agent
codegraph install --location=local
仅当前项目生效
codegraph install --print-config codex
打印配置内容,不写入文件

项目初始化与索引

命令
说明
codegraph init [path]
在项目中初始化(加-i同时索引)
codegraph uninit [path]
移除项目中的CodeGraph
codegraph index [path]
全量索引(--force强制重建)
codegraph sync [path]
增量同步更新
codegraph status [path]
查看索引统计信息

查询与分析

命令
说明
codegraph query <搜索词>
搜索符号(支持--kind--limit--json
codegraph files [path]
显示索引的文件结构(--format--filter--max-depth
codegraph context "任务描述"
为AI构建上下文(--format--max-nodes
codegraph affected <文件...>
找出受改动影响的测试文件

affected 常用用法

# 直接指定文件codegraph affected src/utils.ts src/api.ts# 从git diff获取文件列表git diff --name-only | codegraph affected --stdin# 只输出文件路径(适合脚本)codegraph affected src/auth.ts --quiet# 自定义测试文件匹配模式codegraph affected src/auth.ts --filter "e2e/*"# JSON格式输出codegraph affected src/auth.ts --json

MCP服务(供AI调用)

命令
说明
codegraph serve --mcp
启动MCP服务器

库方式调用(Node.js)

import CodeGraph from'@colbymchenry/codegraph';const cg = await CodeGraph.init('/path/to/project');await cg.indexAll({ onProgress(p) =>console.log(p) });const results = cg.searchNodes('UserService');const callers = cg.getCallers(results[0].node.id);const context = await cg.buildContext('fix login bug', { maxNodes20 });const impact = cg.getImpactRadius(results[0].node.id, 2);cg.watch();   // 开启自动同步cg.close();

工作原理

树状语法树(tree-sitter)解析源码,抽取出函数、类、方法这些节点,以及调用、继承、导入这些边。存进本地的SQLite数据库,开FTS5全文索引。

MCP服务器跑起来后,监听文件变动。改了代码,等两秒安静下来就增量更新图谱。

AI通过MCP工具查询时,直接从数据库拿结果,不用再扫硬盘。

MCP工具列表(AI可用的接口):

工具名
用途
codegraph_search
按名字查找符号
codegraph_context
为任务构建代码上下文
codegraph_callers
找谁调用了这个函数
codegraph_callees
找这个函数调用了谁
codegraph_impact
分析改动一个符号的影响范围
codegraph_node
获取某个符号的详细信息(可带源码)
codegraph_files
获取索引的文件结构
codegraph_status
检查索引健康状态

常见坑

"CodeGraph not initialized"忘了在项目目录跑codegraph init

索引慢检查.gitignore,确保node_modules、dist这类目录被排除在外。

MCP连不上确认项目已经初始化过,检查MCP配置里的路径对不对,试试手动跑codegraph serve --mcp看报错。

missing symbols等几秒让自动同步完成,或者手动跑codegraph sync。确认文件语言在支持列表里,且没有被.gitignore挡掉。

数据库被锁(database is locked)新版已经内置node:sqlite并开启WAL模式,读写不互斥。如果还遇到:

  • 旧版本请重装(0.9以上)
  • 检查codegraph status看Journal模式是不是wal,如果不是(比如在WSL2的/mnt下),把项目移到本地磁盘。

最后说两句

CodeGraph的作者之前搞过类似的项目,这次直接打包了Node运行时,不用你自己配环境。安装脚本自动检测系统,下载对应的二进制。本质上把知识图谱做成了AI助手的“外挂缓存”——查过的不用再查,该知道的提前知道。

项目地址:https://github.com/colbymchenry/codegraph

觉得有用可以点个Star。