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

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

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

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

CodeGraph就是来解决问题的。image.png

给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-project
codegraph 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', { maxNodes: 20 });
const impact = cg.getImpactRadius(results[0].node.id, 2);

cg.watch();   // 开启自动同步
cg.close();

工作原理

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

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。

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值