项目知识库
wescode 支持将项目中的文档、规范和参考资料索引为知识库,让 AI 在对话中检索和引用。
什么是项目知识库
核心理念
项目知识库(Knowledge Base)将项目中已有的文档资料转化为 AI 可检索的知识:
- 不是文件上传:不复制文件到别的地方
- 是原地索引:在工作区内直接索引和检索
- 语义搜索:不只是关键词匹配
- Agent 绑定:可以指定哪些 Agent 能访问哪些知识
与 CKG 的区别
| 维度 | CKG 代码图谱 | 项目知识库 |
|---|---|---|
| 索引对象 | 源代码文件 | 文档、规范、笔记 |
| 理解方式 | 语法结构(tree-sitter) | 语义内容(分块+向量) |
| 关系 | 调用图、类型关系 | 语义相似度 |
| 用途 | 代码导航、影响分析 | 知识检索、规范引用 |
文档类型
支持的文档
| 类型 | 说明 |
|---|---|
| Markdown | 设计文档、README、CHANGELOG |
| 纯文本 | 配置说明、部署指南 |
| 技术规范、API 文档 | |
| 代码注释 | 自动提取的文档注释 |
DocSync 原地索引
wescode 使用 DocSync 机制索引文档:
工作区中的文档文件
↓
扫描和发现(文件类型匹配)
↓
分块(按段落/章节切分)
↓
索引(FTS5 全文 + 语义向量)
↓
可通过 AI 检索
关键特性:文档留在原位,不做任何复制或移动。
使用方式
自动索引
打开工作区后,wescode 自动扫描和索引以下文件:
*.md文件README*CHANGELOG*docs/目录下的文件AGENTS.md/CLAUDE.md
手动添加
通过对话添加更多文档源:
"把 design/ 目录下的所有文档加入知识库"
"索引 api-spec.yaml"
AgenticRAG 检索
AI 在需要时主动检索知识库:
用户:"我们的 API 版本策略是什么?"
AI 行为:
1. 搜索知识库中关于 API 版本的内容
2. 找到 design/api-versioning.md
3. 引用具体段落回答
数据源管理
查看数据源
在知识库界面查看已索引的数据源:
- 数据源列表
- 每个源的文件数量
- 索引状态
数据源操作
| 操作 | 说明 |
|---|---|
| 添加 | 添加新的文档目录或文件 |
| 删除 | 移除数据源(不删原文件) |
| 重建索引 | 强制重新索引 |
文件管理
文件状态
| 状态 | 说明 |
|---|---|
| Ready | 已索引,可检索 |
| Processing | 正在索引中 |
| Quarantined | 被隔离(含安全敏感内容) |
文件操作
- 查看文件详情和索引统计
- 查看文件的分块内容
- 删除单个文件的索引
- 重建单个文件的索引
- 绑定到特定 Agent
Agent 绑定
将知识文件绑定到特定 Agent:
"把 security-policy.md 绑定给 security-reviewer Agent"
效果:
- security-reviewer Agent 搜索时优先搜索这些文件
- 其他 Agent 也能搜索到,但不优先
搜索能力
语义搜索
知识库搜索支持语义理解:
搜索:"如何处理用户认证过期"
结果:匹配关于 JWT 刷新、session 超时、token 续期的段落
(不只是包含"认证过期"四个字的段落)
文件内搜索
在特定知识文件内搜索:
"在 architecture.md 中查找关于缓存策略的内容"
与工作区隔离
per-Cell 知识库
由于 1 工作区 = 1 Cell:
- 每个工作区有独立的知识库
- 切换工作区时知识库跟着切换
- 不同项目的文档不会混在一起
知识库数据位置
~/Library/Application Support/wescode/
cells/ws-{hash}/
knowledge/ ← 知识库索引数据
最佳实践
组织项目文档
推荐的文档组织方式:
project/
├── docs/
│ ├── architecture.md ← 架构设计
│ ├── api-guide.md ← API 使用指南
│ ├── deployment.md ← 部署说明
│ └── troubleshooting.md ← 故障排查
├── AGENTS.md ← AI 协作指南
├── README.md ← 项目说明
└── CHANGELOG.md ← 变更记录
编写 AI 友好的文档
- 使用清晰的标题层级
- 每个段落聚焦一个主题
- 使用列表和表格组织结构化信息
- 包含代码示例
- 避免过长的段落
注意事项
- 知识库索引存储在本地 Cell 中
- 大文件会被自动分块索引
- 含私钥材料的文件会被 per-chunk 过滤(不是整文件隔离)
- 索引会随文件变化自动增量更新
- 知识库不适合存储频繁变化的数据(用数据库代替)
- 删除知识库索引不会删除原始文件