工具介绍
CodeGraph【https://github.com/colbymchenry/codegraph】 是一个本地优先的代码智能工具,它的核心目标是让 AI 编程助手(如 Claude Code、Cursor)能快速、精准地找到所需代码,而不是在文件海洋里低效搜索。
工作原理:它通过tree-sitter解析代码的抽象语法树(AST),提前将函数、类、调用关系、导入关系等结构化信息抽取出来,构建成一个知识图谱。
核心能力:AI Agent 可以直接向 CodeGraph 提问,瞬间得到答案。
callers/callees:查询某个函数的调用者和被调用者。impact:分析修改某个符号(如函数、类)的影响范围。context:针对一个具体任务(如“修复登录问题”),生成相关的代码上下文。
主要优势:
- 效率极高:实测数据显示,使用 CodeGraph 后,AI Agent 的工具调用次数平均减少 71%,Token 消耗降低 57%,速度提升 46%。
- 100% 本地运行:无需网络,没有 API Key 费用,数据完全私有。
- 即改即用:支持自动同步,代码变更后图谱会自动更新,无需手动重建。
Nodejs 安装
安装命令
npm i -g @colbymchenry/codegraph // 或 npx @colbymchenry/codegraph安装配置
选择 AI 开发工具?按需选择
是否添加到 path?选择是
应用全部的项目还是当前项目?按需选择
是否允许CodeGraph 的命令自动运行?是
是否分享匿名使用数据?当功能开启时,CodeGraph 会收集与软件运行状况相关的技术信息,不包括任何源代码、文件内容或个人身份信息。是否开启根据自己的隐私习惯
是否允许在“如何/在哪里/追踪”这类提示词中默认的启动“前置代码图”的功能,从而自动注入结构化的背景信息? 选是
安装完成
基本使用
项目初始化
进入你的项目根目录,执行以下命令构建知识图谱:
cd your-project codegraph initcodegraph init会创建.codegraph/目录并一次性完成整个代码库的索引。索引会自动遵循.gitignore规则,node_modules等目录不会被纳入图谱。
提示:初始化完成后,重启你的 AI 编程助手(如 Claude Code、Cursor),MCP 服务器会自动加载。
核心命令速查
命令 | 作用 |
| 运行交互式安装器,连接 AI 助手 |
| 从所有 AI 助手中移除 CodeGraph |
| 在项目中初始化并构建索引 |
| 从项目中移除 CodeGraph |
| 强制全量重建索引 |
| 增量更新索引(通常自动执行) |
| 查看当前索引的统计信息 |
| 按名称搜索符号 |
| 为 AI 构建任务相关的代码上下文 |
| 查找谁调用了某个函数 |
| 查找某个函数调用了谁 |
| 分析修改某个符号的影响范围 |
| 查找受改动影响的测试文件 |
| 手动启动 MCP 服务器 |
与 AI 助手配合使用
当你与 AI 编程助手(Claude Code、Cursor 等)对话时,可以这样使用 CodeGraph 的能力:
第一步:让 AI 加载 CodeGraph 指令
“阅读 CodeGraph 的指令,这样你就知道如何使用它”第二步:验证连接
“请验证 CodeGraph 是否已连接并且索引可用”之后,AI 助手会自动调用 CodeGraph 提供的工具来回答你的问题。
常用提问示例
场景 | 提问示例 |
代码搜索 | “查找处理用户认证的代码在哪里” |
依赖分析 | “哪些代码依赖于 类?” |
调用链追踪 | “追踪从 HTTP 请求到数据库的完整执行路径” |
架构概览 | “给我一个这个项目的架构概览” |
影响分析 | “如果我修改了认证模块,会破坏哪些功能?” |
上下文收集 | “收集我添加一个新的支付提供商所需的所有信息” |
注意事项
对于全栈工程师,一个项目都习惯于将前后端项目在同一个文件夹中打开
my-project/ <-- 这是你的大文件夹 ├── backend/ <-- Spring Boot 项目根目录 └── frontend/ <-- Vue 项目根目录如果直接在大文件夹根目录执行codegraph init不是一个好的做法
- 索引混乱,互相干扰:CodeGraph 会把整个目录(包括前后端代码)视为一个巨大的项目来解析。这可能导致它错误地认为前端的某个函数调用了后端的某个同名函数,产生大量“虚假的调用关系”,污染索引数据,让 AI 助手产生误判。
- 管理不便,牵一发动全身:两个项目会共用一个索引目录(
.codegraph/)和配置文件。当你只想重新索引后端时,却需要连带前端一起处理,增加了管理的复杂性。 - 配置复杂,难以精准排除:为了不让索引混乱,你需要通过复杂的
ignore规则来手动排除对方项目的代码,不仅繁琐,而且容易出错。
官方推荐的做法是在每个子项目的根目录下,分别进行初始化。这样每个项目都有自己独立的、纯净的代码图谱。你可以按以下步骤操作:
分别为前后端项目建立索引
假设你的大文件夹结构如下:
my-project/ <-- 这是你的大文件夹 ├── backend/ <-- Spring Boot 项目根目录 └── frontend/ <-- Vue 项目根目录那么,你需要分别进入这两个子目录执行初始化:
cd my-project/backend codegraph init cd ../frontend codegraph init初始化后,当你通过 AI 助手(如 Claude Code)提问时,它能够智能处理。
- 如果你在问后端相关的问题(如 “
UserService的调用者是谁?”),AI 会自动查询backend项目的图谱。 - 如果你明确提到了另一个项目(如 “前端登录页调用了后端的哪个接口?”),AI 也能通过
projectPath参数,精确地跨项目查询。