代码导航
wescode 的代码知识图谱(CKG)为大型代码库提供结构化导航能力,帮助你快速理解和定位代码。
CKG 代码知识图谱
什么是 CKG
CKG(Code Knowledge Graph)是 wescode 的核心差异化能力:
- 不是 RAG:不是简单的向量相似度检索
- 是知识图谱:理解代码的结构关系(调用、实现、依赖)
- 基于 tree-sitter:精准的语法解析
- SQLite FTS5:全文搜索索引
CKG 索引内容
| 元素 | 说明 |
|---|---|
| 函数/方法 | 签名、文档、所在文件和行号 |
| 类型/结构体 | 字段、方法集 |
| 接口 | 方法签名 |
| 调用关系 | A 调用 B、B 的调用者 |
| 实现关系 | 哪些类型实现了哪些接口 |
| 包依赖 | 包之间的导入关系 |
索引状态
在状态栏查看 CKG 索引进度:
- 索引中:显示进度百分比
- 索引完成:自动隐藏
调用图
查看调用关系
在项目概览面板中查看交互式调用图(D3 可视化):
- 调用者:谁调用了这个函数
- 被调用者:这个函数调用了谁
- 调用链:多级调用关系
Hover 信息
鼠标悬停在符号上查看 CKG 信息:
- 函数签名和文档
- 调用者数量
- 实现数量
- 所在包和文件
CodeLens
编辑器顶部显示 CKG 信息:
3 references | 2 callers | implements Handler
func (s *UserService) CreateUser(ctx context.Context, req CreateReq) error {
符号搜索
全局符号搜索
多种搜索方式:
| 方式 | 操作 | 说明 |
|---|---|---|
| 快速搜索 | Cmd+T | 按符号名搜索 |
| 文件搜索 | Cmd+P | 按文件名搜索 |
| 文本搜索 | Cmd+Shift+F | 全文内容搜索 |
| AI 搜索 | 在 Chat 中提问 | 语义搜索 |
AI 驱动搜索
在 Chat 中用自然语言搜索:
"处理用户登录的代码在哪里"
"数据库连接池的配置在哪个文件"
"有没有实现 HTTP 中间件的代码"
AI 通过 CKG 理解语义进行搜索,不只是关键词匹配。
跳转导航
Go to Definition
Cmd+Click 或 F12 跳转到定义:
- 函数定义
- 类型定义
- 变量声明
- 接口声明
Go to References
Shift+F12 查看所有引用:
- 函数调用点
- 类型使用处
- 变量读写处
Go to Implementation
Cmd+F12 跳转到接口实现:
- 列出所有实现类型
- 直接跳转到实现方法
项目概览
三区域布局
项目概览页面(Activity Bar 中的图标):
- 项目统计:文件数、函数数、类型数
- 模块关系:包之间的依赖图
- 调用图:D3 交互式调用图
影响分析
AI 分析代码变更的影响范围:
"修改 UserRepository 的 FindByID 方法会影响哪些代码"
AI 通过 CKG 返回:
- 直接调用者:UserService.GetUser, UserService.UpdateUser
- 间接调用者:UserHandler.HandleGetUser, ...
- 影响的测试:TestUserService_GetUser, ...
文件浏览
智能文件树
左侧文件树增强功能:
- 文件类型图标
- 修改状态标记
- 最近打开排序
面包屑导航
编辑器顶部面包屑:
- 文件路径
- 类型/函数层级
- 点击跳转
使用技巧
大代码库导航
面对不熟悉的大项目:
- 先看
README.md和项目结构 - 在 Chat 中提问 "项目的整体架构是什么"
- 使用项目概览查看模块关系
- 从入口文件开始,沿调用链深入
找到关键代码
"找到所有处理支付的代码"
"项目的入口函数在哪里"
"数据库迁移文件在哪个目录"
注意事项
- CKG 索引需要一定时间(首次打开项目时)
- 大型项目索引完成后导航更准确
- 索引会自动增量更新
- 索引数据存储在 workspace Cell 的
index/目录