VS Code + Codex + CodeGraph 使用文档
VS Code + Codex + CodeGraph 使用文档
- 1. 整体架构
- 2. CodeGraph 是什么
- 3. 安装 CodeGraph
- 4. 初始化项目图谱
- 5. CodeGraph 与 Codex MCP 配置
- 6. 如果 Codex 找不到 codegraph
- 7. 测试 CodeGraph MCP
- 8. 重启 VS Code / Codex
- 9. 验证 Codex 是否识别 CodeGraph
- 10. 补充 / 更新代码图谱
- 11. `index --force` 很慢是否正常
- 12. `database file is in use` 错误
- 13. 图谱没有包含所有模块
- 14. 检查 `.gitignore`
- 15. 嵌套 Git 仓库
- 16. 不建议随便删除 `.codegraph`
- 17. Nutz 项目推荐的 Codex 分析提示词
- 18. 推荐的 `AGENTS.md`
- 19. 日常使用建议
- 20. 推荐工作流
- 21. 常用命令速查
- 22. 最终目录结构示例
适用场景:已经安装并使用 VS Code + Codex 插件,希望通过 CodeGraph 将项目代码建立成代码知识图谱,并通过 MCP 提供给 Codex 使用。
本文以 Windows + PowerShell 为例。
本文默认已经具备:
- VS Code
- VS Code Codex 插件
- Codex 对话窗口
- Node.js / npm
VS Code 中的 Codex 已经可以使用 Codex Runtime,并通过
config.toml配置 MCP。
1. 整体架构
配置完成后,整体关系如下:
VS Code
│
└── Codex 插件
│
│ MCP
▼
CodeGraph
│
▼
.codegraph/codegraph.db
│
├── 文件
├── 类
├── 方法
├── 函数
├── Import
├── 调用关系
├── 依赖关系
└── 影响关系
Codex 不再只依赖普通文件搜索,而可以通过 CodeGraph 查询项目中的代码关系。
例如:
Nutz Module / @At
↓
业务方法
↓
Service
↓
Dao / NutDao
↓
Entity
↓
MySQL
对于 Spring Boot 项目,也可以分析:
Controller
↓
Service
↓
Mapper / Repository
↓
Entity
↓
MySQL
实际项目结构以 CodeGraph 的分析结果为准,不要强行套用某一种框架结构。
2. CodeGraph 是什么
CodeGraph 用于将代码库解析成可查询的代码知识图谱。
主要用于分析:
- 项目结构
- 类关系
- 方法关系
- 函数调用关系
- Import / Dependency
- 调用链
- 模块依赖
- 影响范围
- AI Coding Agent 上下文
通过 MCP 后,Codex 可以查询这些信息。
例如:
修改某个 Service
↓
查询调用关系
↓
找到调用它的 Module / Controller
↓
找到它调用的 Dao
↓
找到相关 Entity / 数据表
↓
分析修改影响范围
3. 安装 CodeGraph
3.1 使用 npm 安装
打开 VS Code Terminal / PowerShell:
npm install -g @colbymchenry/codegraph
安装完成后检查:
Get-Command codegraph
或者:
codegraph --help
如果能够正常显示帮助信息,说明安装成功。
3.2 查看版本
codegraph --version
如果当前版本不支持 --version,可以使用:
codegraph --help
确认 CLI 可以正常运行即可。
4. 初始化项目图谱
4.1 选择正确的项目根目录
这是最重要的一步。
应该在能够包含所有需要分析模块的项目根目录执行:
cd E:\DevOpsCode\mall-service
然后:
codegraph init
初始化完成后,一般会生成:
mall-service/
├── .codegraph/
│ ├── .gitignore
│ └── codegraph.db
├── ...
其中:
.codegraph/codegraph.db
就是 CodeGraph 的项目图谱数据库。
4.2 项目根目录选择原则
例如:
mall-service/
├── mall-service/
│ ├── module-a/
│ ├── module-b/
│ ├── module-c/
│ └── ...
└── other-project/
如果希望 CodeGraph 分析:
module-a
module-b
module-c
应该:
cd mall-service\mall-service
codegraph init
而不是进入:
module-a
单独初始化。
原则:
CodeGraph 的项目根目录应该尽量选择能够覆盖完整业务代码的根目录。
5. CodeGraph 与 Codex MCP 配置
5.1 找到 Codex 配置文件
Windows 下通常位于:
C:\Users\<用户名>\.codex\config.toml
例如:
C:\Users\Mayn\.codex\config.toml
Codex 的 VS Code 插件使用这个配置体系。
5.2 添加 CodeGraph MCP
在:
C:\Users\<用户名>\.codex\config.toml
中添加:
[mcp_servers.codegraph]
command = "codegraph"
args = ["serve", "--mcp"]
startup_timeout_sec = 120
如果已有:
[mcp_servers.node_repl]
...
不要删除原来的配置,只需要增加:
[mcp_servers.codegraph]
command = "codegraph"
args = ["serve", "--mcp"]
startup_timeout_sec = 120
最终类似:
[mcp_servers.node_repl]
args = []
command = '...'
startup_timeout_sec = 120
[mcp_servers.codegraph]
command = "codegraph"
args = ["serve", "--mcp"]
startup_timeout_sec = 120
6. 如果 Codex 找不到 codegraph
先执行:
Get-Command codegraph
如果能够得到类似:
CommandType Name
----------- ----
Application codegraph.cmd
说明 PowerShell 可以找到 CodeGraph。
如果 PowerShell 能找到,但是 Codex MCP 启动失败,可以使用绝对路径。
例如:
[mcp_servers.codegraph]
command = 'C:\Users\<用户名>\AppData\Roaming\npm\codegraph.cmd'
args = ["serve", "--mcp"]
startup_timeout_sec = 120
实际路径以:
Get-Command codegraph
返回的路径为准。
7. 测试 CodeGraph MCP
可以先在 PowerShell 测试:
codegraph serve --mcp
如果没有立即报错并保持运行,通常说明 MCP Server 可以正常启动。
使用:
Ctrl + C
停止测试。
然后让 Codex 通过 config.toml 自动启动 MCP。
8. 重启 VS Code / Codex
修改:
C:\Users\<用户名>\.codex\config.toml
之后,建议:
关闭 VS Code
↓
重新打开 VS Code
↓
重新打开项目
↓
打开 Codex
这样可以确保 Codex 重新读取 MCP 配置。
9. 验证 Codex 是否识别 CodeGraph
在 Codex 对话窗口输入:
请检查当前可用的 MCP 工具,并确认是否已经连接 CodeGraph。
如果 CodeGraph 配置正确,Codex 应该能够看到 CodeGraph 相关工具。
进一步测试:
请使用 CodeGraph 分析当前项目。
暂时不要修改代码。
请告诉我:
1. 当前项目有哪些主要模块?
2. 主要模块之间是什么关系?
3. 当前项目的主要类和方法调用关系是什么?
4. 找出一个核心业务的完整调用链。
5. 分析修改这个业务可能影响哪些模块。
要求优先使用 CodeGraph 的代码关系和影响分析能力。
10. 补充 / 更新代码图谱
项目代码发生变化后,可以使用:
codegraph sync
用于增量同步。
如果需要重新完整建立索引:
codegraph index --force
两者区别:
codegraph sync
↓
增量同步
↓
适合日常更新
codegraph index --force
↓
完整重新索引
↓
适合大量代码变化、初始化遗漏、图谱异常
11. index --force 很慢是否正常
正常。
完整索引需要:
扫描项目
↓
解析源码
↓
解析类 / 方法 / 函数
↓
建立调用关系
↓
建立依赖关系
↓
写入 codegraph.db
项目越大,耗时越长。
例如:
几百个源码文件
→ 几十秒~几分钟
1000~3000 个文件
→ 几分钟
大型项目
→ 十几分钟甚至更久
Windows 环境、大型 Java 老项目以及包含大量前端源码时可能更慢。
执行过程中不要因为暂时没有明显输出就立即 Ctrl + C。
12. database file is in use 错误
如果执行:
codegraph index --force
出现:
database file is in use
EPERM
Permission denied
codegraph.db
说明当前:
.codegraph/codegraph.db
正在被 CodeGraph MCP Server / daemon 使用。
处理方法:
方法一:关闭 VS Code
关闭 VS Code
↓
停止 Codex
↓
停止 CodeGraph MCP
↓
重新打开 PowerShell
↓
codegraph index --force
方法二:检查 CodeGraph 进程
Get-Process | Where-Object {
$_.ProcessName -match "codegraph"
} | Select-Object Id, ProcessName, Path
如果存在相关进程,可以停止:
Stop-Process -Id <PID> -Force
然后:
codegraph index --force
不要一遇到锁定就删除 .codegraph。
13. 图谱没有包含所有模块
如果发现某些模块没有被 CodeGraph 分析,首先检查项目根目录。
例如:
mall-service/
├── module-a/
├── module-b/
├── module-c/
└── .codegraph/
如果 module-a/b/c 都应该属于当前项目,那么应该在:
mall-service/
执行:
codegraph index --force
14. 检查 .gitignore
CodeGraph 可能受到项目忽略规则影响。
检查:
Get-Content .gitignore
重点查看是否忽略了需要分析的模块:
module-a/
module-b/
supplied-service/
supplied-h5/
如果模块被忽略,需要根据 CodeGraph 当前版本的配置机制调整包含规则,然后重新:
codegraph index --force
15. 嵌套 Git 仓库
有些项目结构是:
project/
├── .git/
├── module-a/
│ └── .git/
└── module-b/
└── .git/
也就是项目内部包含多个独立 Git 仓库。
这种情况下需要特别检查:
.gitignore- 子目录是否被父项目忽略
- CodeGraph 的 include / includeIgnored 配置
否则可能出现:
项目目录存在
↓
CodeGraph 初始化成功
↓
但是部分模块没有进入图谱
16. 不建议随便删除 .codegraph
.codegraph 中:
.codegraph/
└── codegraph.db
保存的是当前项目图谱。
正常情况下:
codegraph sync
或:
codegraph index --force
即可更新。
只有在图谱数据库损坏、初始化状态异常等情况下,才考虑删除并重新:
codegraph init
如果需要删除:
Remove-Item .codegraph -Recurse -Force
然后:
codegraph init
执行前建议先确认没有正在运行的 CodeGraph MCP Server。
17. Nutz 项目推荐的 Codex 分析提示词
对于 Nutz 项目,不要让 Codex 按 Spring Boot 的:
Controller → Service → Mapper
模式理解。
可以使用:
请使用 CodeGraph 分析当前 Nutz 项目,不要修改任何代码。
这是一个基于 Nutz Framework 的 Java 项目,请不要按照 Spring Boot 项目假设项目结构。
重点回答:
1. 当前项目有哪些主要业务模块?
- 按 package、目录和核心类进行归纳
- 区分后台管理、H5、公共模块、业务模块等
- 不要仅根据目录名称猜测,结合类之间的实际依赖关系分析
2. 当前项目的 Nutz 架构是什么?
重点分析:
- @IocBean
- @At
- @Ok
- @Fail
- Dao / NutDao
- Entity / POJO
- Service
- Module
- Action
- Ioc 配置
- 其他 Nutz 特有组件
3. 分析主要 HTTP 请求调用链。
不要使用 Controller → Service → Mapper 的 Spring Boot 模式。
按照实际项目关系分析:
HTTP 请求
↓
Nutz Module / @At
↓
Service / 业务类
↓
Dao / NutDao
↓
Entity / 数据库表
如果实际结构不同,以 CodeGraph 分析结果为准。
4. 找出当前项目核心业务模块,并列出:
- 入口类
- 核心业务类
- DAO
- Entity
- 数据库表
- 依赖的其他业务模块
5. 分析项目数据库访问关系:
- Dao / NutDao
- SQL
- Entity
- 数据库表
- 表之间关系
- 哪些业务类访问哪些表
6. 分析项目中的核心业务功能。
不要只搜索关键词。
请通过 CodeGraph 的:
- 类关系
- 方法调用关系
- 数据访问关系
- 依赖关系
- 影响分析
确定真实业务关系。
7. 找出指定业务的完整调用链。
例如:
用户请求
↓
Nutz Module / @At
↓
参数处理
↓
业务处理
↓
DAO
↓
数据库
如果存在:
- Excel / CSV 导入
- 异步处理
- 定时任务
- 消息队列
- Redis
- 消息通知
- 导入记录
也要纳入调用链。
8. 使用 CodeGraph 做影响分析:
如果修改某个核心业务逻辑:
- 哪些类会受到影响?
- 哪些方法会受到影响?
- 哪些入口会受到影响?
- 哪些数据库表会受到影响?
- 哪些其他业务模块可能受到影响?
重要要求:
- 优先使用 CodeGraph 的代码关系、调用图和影响分析能力。
- 不要只通过 grep、文件名搜索或关键词搜索判断业务关系。
- 不要假设项目使用 Spring Boot。
- 不要假设存在 Controller、Mapper、Repository。
- 不要修改任何代码。
- 如果 CodeGraph 无法确定某个关系,明确标记“无法从当前代码关系确定”,不要猜测。
- 尽可能给出对应的类、方法和文件路径。
18. 推荐的 AGENTS.md
可以在项目根目录创建:
AGENTS.md
推荐内容:
# Project Instructions
## 项目架构
这是一个基于 Nutz Framework 的 Java 项目。
不要按照 Spring Boot 项目假设项目结构。
重点关注:
- Nutz Module
- @At
- @IocBean
- Ioc 配置
- Dao / NutDao
- Entity
- Service
- SQL
- 定时任务
- 消息处理
- Redis
- 其他项目实际使用的基础设施
## CodeGraph
涉及以下任务时,优先使用 CodeGraph:
- 项目结构分析
- 复杂业务分析
- 调用链分析
- 影响范围分析
- 核心业务修改
- 数据访问关系分析
- 跨模块修改
分析时:
1. 优先查询 CodeGraph 中的类关系。
2. 查询方法调用关系。
3. 查询模块依赖关系。
4. 查询影响范围。
5. 根据实际代码关系判断项目架构。
6. 不要因为项目不是 Spring Boot 就强行套用 Spring Boot 架构。
## 修改代码
修改前先确认:
- 调用入口
- 核心业务类
- DAO
- Entity
- 数据库表
- 上下游调用关系
- 修改影响范围
如果发现代码引用了不存在的类、方法、组件或配置:
- 不要直接忽略。
- 继续检查其引用关系。
- 判断它是否属于当前业务实现。
- 如果确实缺失,并且当前任务要求完整实现,应补齐必要代码。
## 代码修改原则
- 只修改当前任务涉及的代码。
- 保持现有项目架构。
- 不要将 Nutz 项目改造成 Spring Boot 风格。
- 不要无关重构。
- 不要修改无关文件。
19. 日常使用建议
第一次建立项目
cd E:\项目根目录
codegraph init
日常代码变化
codegraph sync
怀疑图谱不完整
codegraph index --force
MCP 测试
codegraph serve --mcp
检查 CodeGraph CLI
codegraph --help
检查安装路径
Get-Command codegraph
20. 推荐工作流
以后使用 Codex 修改复杂业务,可以采用:
提出需求
↓
Codex 读取 AGENTS.md
↓
CodeGraph 查询项目结构
↓
查询相关类 / 方法
↓
查询调用链
↓
分析影响范围
↓
确定修改文件
↓
修改代码
↓
再次通过 CodeGraph 检查调用关系
对于复杂业务,例如:
积分导入
订单
售后
供应商
消息通知
权限
不要直接让 Codex:
“找到 xxx.java 然后修改”
而应该让它:
“先通过 CodeGraph 分析 xxx 业务的完整调用链和影响范围,再修改。”
这样可以显著降低 AI 只修改单个文件、漏掉上下游业务逻辑的概率。
21. 常用命令速查
| 操作 | 命令 |
|---|---|
| 查看帮助 | codegraph --help |
| 查看命令 | codegraph --help |
| 初始化项目 | codegraph init |
| 增量同步 | codegraph sync |
| 完整重建 | codegraph index --force |
| 启动 MCP | codegraph serve --mcp |
| 查找安装路径 | Get-Command codegraph |
| 查看版本 | codegraph --version |
| 检查进程 | Get-Process | Where-Object {$_.ProcessName -match "codegraph"} |
22. 最终目录结构示例
完整配置后:
mall-service/
│
├── AGENTS.md
│
├── .codegraph/
│ ├── .gitignore
│ └── codegraph.db
│
├── module-a/
├── module-b/
├── module-c/
│
├── pom.xml
└── README.md
整体关系:
VS Code
│
▼
Codex 插件
│
┌─────────┴─────────┐
│ │
▼ ▼
AGENTS.md CodeGraph
│ │
工作规则 MCP Server
│
▼
codegraph.db
│
┌──────────────┼──────────────┐
▼ ▼ ▼
类关系 调用关系 依赖关系
│ │ │
└──────────────┼──────────────┘
▼
Codex
│
▼
修改代码
核心原则:
AGENTS.md:告诉 Codex 应该怎么工作。CodeGraph:告诉 Codex 项目代码之间是什么关系。codegraph.db:保存当前项目的代码图谱。- MCP:负责让 Codex 能够查询 CodeGraph。
sync:日常增量更新。index --force:图谱不完整或需要彻底重建时使用。
更多推荐




所有评论(0)