CodeGraph大幅减少ClaudeCode和Cursor调用次数,快77%还省token


有人刚刚构建了一种方法,可以通过语义代码智能来超级增强 Claude Code、Cursor、Codex 和 OpenCode。工具调用减少 94%,探索速度提升 77%,100% 本地运行!

有人构建了一个预索引的知识图谱,它位于你的 AI 代理和你的代码之间。它只需一次调用就能回答以前需要 40 次调用才能回答的问题。

它叫 CodeGraph。在 GitHub 上有 8,459 个星标。

CodeGraph为代码仓库提前构建知识图谱,AI编程工具一次查询即可获取符号与调用关系,大幅减少工具调用次数,加速代码探索,全程本地运行免费使用。

CodeGraph让AI编程助手秒懂代码结构:工具调用减少94%,本地免费 | AI编程加速神器来了:代码图谱让Claude Code和Cursor告别无脑读文件,快77%还省token

有个哥们给AI编程助手装了个外挂

你每个月花20美金买Claude Pro,再花20美金买Cursor Pro,结果你的AI助手每次碰到代码仓库都像个无头苍蝇。它先grep搜一遍,再glob找一遍,再读一堆文件,把上个月刚干过的活重新干一遍。你的钱包在滴血,token在燃烧,而AI还在那傻乎乎地读同一个文件第三遍。

有个叫CodeGraph的工具解决了这个破事。它在GitHub上已经攒了8459颗星,MIT协议随便用,完全免费。它在你代码仓库里先建一张地图,把所有函数、类、调用关系都画出来。以后AI再问“这个系统怎么工作的”,一次查询就搞定,不用再翻箱倒柜四十多次。

官方测试数据很刺激:VS Code那4002个文件的项目,原本要调52次工具,现在3次搞定。探索时间从1分37秒缩到17秒,快77%。而且全程在你电脑上跑,代码不用传给任何人。

你只需要跑一个命令,CodeGraph就把整个项目索引完了。它能自动接入Claude Code、Cursor、Codex CLI和OpenCode,一个安装器全配置好。支持TypeScript、Python、Rust、Java、Swift、C++这些主流语言。

AI读代码像翻整栋图书馆

想象一下,你让一个人去图书馆找“登录功能的实现代码”。没有地图的人会怎么做?先跑遍所有书架看哪个架子上有“登录”两个字,然后抽出每本书翻目录,翻到疑似的地方再读正文。这就是没有CodeGraph时AI干的事。

每次你问一个新问题,AI都重新来一遍。它不记得上次读过的文件,因为每次对话对AI来说都是全新的一天。你付钱让它一遍又一遍地读同样的文件,就像你雇了个每小时收费的图书管理员,然后让他每天重新认识图书馆的布局。

CodeGraph换个玩法。它提前把整个图书馆变成一张地图:哪本书放在哪个书架,哪本书的哪个章节引用了另一本书的哪个段落,所有关系都画出来。AI再问问题,直接查地图就行。

“登录逻辑在哪?”
“在auth.py的login函数,它调用了validate_user,然后触发send_notification。”

一次回答,不用读任何文件。因为地图里已经标好了所有位置和路线。

索引过程把代码变成关系网

CodeGraph先扫描你项目里所有代码文件。它不是简单读文本,而是用Tree-sitter这个解析器把代码拆成抽象语法树。抽象语法树这名字听着吓人,其实就是把代码结构画成一棵树:函数是树干,函数里的if语句是树枝,return语句是树叶。

从这棵树里,CodeGraph提取所有符号。符号就是代码里有名字的东西:函数、类、变量、参数、模块。它还提取这些符号之间的关系:谁调用了谁,谁继承了谁,哪个模块导入了哪个模块。

所有这些信息存进SQLite数据库。SQLite就是个本地文件数据库,不用装服务器,你电脑上随便哪个程序都能读写。CodeGraph还开了全文检索功能,你想搜“login”这个单词,它能飞快找到。

最后一步是解析。这一步把散落的信息真正连起来。比如文件A里调用了sendEmail,但这个函数定义在文件B的EmailService类里。解析过程就把这个调用关系连上,让AI知道它们实际是一回事。

索引完的项目,CodeGraph还会监听文件变化。你改了一行代码,它自动更新地图,不用你手动重新跑索引。

AI查询变成查字典不是翻箱子

没有CodeGraph时,AI在代码仓库里探索是这样的套路。你问“用户注册的流程是什么”。AI先启动一个Explore代理,这个代理用grep命令搜整个项目里所有带“register”的文件。grep跑完,返回二十个文件路径。

AI读第一个文件,里面可能只是个测试文件,跟注册没关系。再读第二个,是前端页面,有注册表单但没有后端逻辑。读到第五个,终于找到auth.js,里面有register函数。但register函数里调用了createUser和sendVerificationEmail,AI不知道这两个函数在哪。

AI再启动grep搜createUser,又返回一堆文件,再一个个读。等你问下一个问题“密码重置怎么实现”,AI完全忘了刚才读过的文件,重新开始grep。

这套流程跑下来,工具调用次数轻松上五十。每次调用都消耗token,因为你每次问问题都在触发这些操作。你付的钱里很大一部分是在付AI反复读文件的冤枉钱。

有了CodeGraph,AI查代码像查字典。你问“用户注册流程”,它直接查图数据库。数据库里存着register函数这个节点,以及它指向createUser和sendVerificationEmail的边。AI一次查询就拿到整个调用链。

它甚至不需要知道文件在哪,因为图里存的是符号和关系,文件路径只是符号的一个属性。AI问“谁调用了UserService”,图数据库直接返回所有调用者的符号名和位置,不用读任何一个文件全文。

官方基准测试里,Swift编译器项目有25874个文件和272898个节点。AI问一个架构问题,有CodeGraph时用了6次工具调用和35秒。没有时用了37次调用和2分8秒。差六倍的工具调用和四倍的时间。

路由识别让AI知道URL对应哪个函数

Web框架里有个麻烦事。你写Django时,urls.py里写path('login/', views.login),这个login函数实际处理的是/login这个网址请求。你写Express时,app.get('/login', loginHandler),loginHandler函数对应的是/login。

AI光看代码文本不知道这个关系。它看到loginHandler函数,以为就是个普通函数。但CodeGraph能识别框架路由。它内置了对Django、Express、Flask、Spring Boot这些常用框架的解析器。

解析器读到path('/login', views.login)这一行,就知道views.py里的login函数对应/login这个HTTP路径。它在图里创建两个节点:一个是路由路径/login,一个是函数login,然后画一条边连起来。

AI查“/login这个接口的代码在哪”,图数据库沿着这条边找到login函数。AI查“login函数对应什么URL”,同样能找到/login。

大型Web项目里接口成百上千个,没有路由识别,AI每次找接口都要读路由配置文件,然后找到对应的控制器文件,再读控制器文件找到具体函数。路由识别让AI一步到位。

受影响分析告诉你改一行代码会炸哪里

大型项目里你改了一行代码,可能引发连环爆炸。你修了个小bug,结果二十个测试用例全红了,因为你改的那个函数被八个模块调用,那八个模块又被其他模块调用。

CodeGraph的affected命令干这个事。你跑codegraph affected --files src/auth.py,它沿着调用图往下走,找出所有可能受影响的代码。它不是瞎猜,而是真的在图里走路径。

你改了一个工具函数,affected命令返回所有调用这个工具函数的函数。那些函数又被谁调用,继续往下走,直到没调用为止。最后列出一份名单:这十五个文件最好重新跑一下测试。

没有这个功能时,你只能相信AI说“应该没问题”,或者直接跑整个测试套件等半小时。大型项目里affected命令像地震波模拟器,告诉你震中在哪,哪些地区会有震感。

第一次索引需要耐心

CodeGraph不是没有代价。第一次索引大型项目需要时间。Swift编译器那两万多个文件,索引可能要几分钟到十几分钟。索引过程中CPU会吃满,因为Tree-sitter要解析每个文件的语法树,还要算各种引用关系。

如果你的环境没有安装better-sqlite3这个原生模块,CodeGraph会退回到WASM模式。WASM模式慢五到十倍,因为SQLite跑在浏览器沙盒环境里,不是直接跑在你电脑上。官方建议装better-sqlite3,性能好很多。

索引完之后的日常使用就快了。文件改动时自动同步只处理变动的文件,不用重新索引整个项目。

小型项目或者临时Demo不太适合用CodeGraph。你写个几百行的脚本,索引时间比AI回答问题的时间还长。给自行车装航空母舰雷达,效果很喜剧。但项目超过一万行代码,或者你经常在大型仓库里用AI助手,CodeGraph的收益就很明显。

支持的编程语言超过十九种

官方列出的支持语言挺全。TypeScript和JavaScript肯定支持,毕竟CodeGraph本身用TypeScript写的。Python、Go、Rust、Java、C#这些后端主流语言都在列表里。PHP、Ruby、Swift、Kotlin也支持,还有C++、Scala、Haskell这些。

每种语言用对应的Tree-sitter解析器。Tree-sitter是GitHub开源的一个解析器生成工具,特点就是快,还能容忍语法错误。你的代码即使没写完或者有bug,Tree-sitter也能解析出大致结构。

C++和Rust这些复杂语言解析相对慢一些,但信息密度高。一个C++头文件可能定义一堆模板类和模板函数,解析出来的符号数量比同等行数的JavaScript多几倍。

安装配置就一行命令

安装CodeGraph用npx就行。npx是Node.js自带的命令,不用全局安装任何东西。跑npx @colbymchenry/codegraph,它会下载最新版本然后运行。

第一次运行会让你选择安装到哪些AI工具里。选项有Claude Code、Cursor、Codex CLI、OpenCode。选完之后它会自动配置这些工具,让它们优先用CodeGraph查询。不用你手动改配置文件。

进到你的项目目录,跑codegraph init -i。这个命令会扫描项目文件,问你要索引哪些目录。你可以排除node_modules、dist、build这些生成的文件,只索引源码目录。

索引过程在命令行里显示进度条。跑完之后codegraph status看状态,能看到一共索引了多少符号、多少调用关系、数据库文件多大。

日常维护就两个命令。codegraph sync手动触发同步,codegraph query加上符号名查具体信息。比如codegraph query UserService,它会显示UserService这个类的定义位置、方法列表、被谁调用。

codegraph context最常用。你把这个命令的输出直接贴给AI,比如codegraph context "修复登录超时bug",它会从图里找出跟登录超时相关的所有符号和调用链,整理成一段文本。你把这段文本复制给Claude Code或Cursor,AI不用自己探索就直接知道上下文。

省钱逻辑很直白

你付给AI工具的钱分成三部分:

  1. 固定订阅费每月20美金,这部分不管你用不用都得付。
  2. 按量付费的token消耗,这部分跟使用量挂钩。
  3. 还有隐形成本,就是AI反复探索代码浪费的时间和token。

CodeGraph砍的是第三部分。它让AI不用反复读文件,每次探索少调几十次工具。

每次工具调用背后都有token消耗,因为工具调用的输入输出都要算进上下文里。

官方数据是94%的工具调用减少。你以前每月花在探索上的token成本如果是10美金,现在大概0.6美金。省下来的钱买杯咖啡还行。

关键是它免费。MIT协议,代码全开源,你可以自己改。跑在你自己的电脑上,索引文件存在本地,没有云服务,没有用量限制。

适合你的项目就试试

如果你在用Claude Code写TypeScript后端,项目超过一万行代码,CodeGraph几乎肯定能帮你省时间。如果你是Cursor的重度用户,经常在大型代码库里跳来跳去,CodeGraph能让Cursor的响应速度明显变快。

如果你维护的是几十万行代码的遗产项目,里面的调用关系连人都搞不清楚,CodeGraph的affected命令特别有用。改完代码跑一下受影响分析,比手动猜哪些测试要跑靠谱得多。

如果你只写几百行的Python脚本,或者做临时Demo,或者项目就五个文件,没必要折腾。索引的时间比你手动给AI指路的时间还长。

试试也不亏。跑npx @colbymchenry/codegraph,在你项目里跑codegraph init -i,然后正常用你的AI工具。感觉快了就用下去,感觉没区别就当尝鲜。反正免费,不用白不用。