工作区隔离

wescode 的数据隔离模型:1 个工作区 = 1 个 Cell。每个 VS Code 工作区拥有独立的 CKG 索引、记忆、技能、知识库——切换工作区就是切换完整的 AI 上下文。

1 Workspace = 1 Cell 映射模型

为什么工作区是天然的隔离边界

VS Code 的每个窗口绑定一个工作区(文件夹或 .code-workspace)。开发者在不同项目之间切换时,期望的就是"前端项目的 lint 规则不会影响后端项目"这种隔离。

wescode 将这种直觉延伸到 AI 能力:

数据隔离级别说明
CKG 索引物理隔离每个工作区独立的代码知识图谱
知识库物理隔离每个工作区独立的文档索引
记忆物理隔离学到的偏好跟工作区走
技能物理隔离安装的技能跟工作区走
会话历史物理隔离对话记录跟工作区走
CSE 约束物理隔离发现的约束跟工作区走
登录状态共享跨工作区复用同一个账号

Cell ID 映射

Cell ID 由工作区路径确定性派生:

/Users/you/projects/backend → ws-a1b2c3d4
/Users/you/projects/frontend → ws-e5f6g7h8

映射使用 sha256(canonicalize(root))[:4],保证:

多窗口架构

VS Code 支持同时打开多个窗口。wescode 的架构:

Window A (frontend/)  ──→  Go Process A (ws-e5f6g7h8)
Window B (backend/)   ──→  Go Process B (ws-a1b2c3d4)
Window C (frontend/)  ──→  Go Process A (共享,同一工作区)

关键规则:

无工作区 = 无 AI

如果你没有打开文件夹(直接打开单个文件),wescode 进入 Config Mode:

这是有意为之:AI 编程需要项目上下文,没有工作区就没有有意义的上下文。

数据目录

所有数据在一个根目录下:

~/Library/Application Support/wescode/   # macOS
~/.local/share/wescode/                  # Linux

├── hypervisor.db          # Cell 注册表
├── cells/
│   ├── ws-a1b2c3d4/       # backend 工作区
│   │   ├── meta.db
│   │   ├── sessions.db    # 会话与记忆
│   │   ├── state.db       # 运行时状态
│   │   ├── index/         # CKG 索引
│   │   ├── knowledge/     # 知识库
│   │   └── skills/        # 安装的技能
│   └── ws-e5f6g7h8/       # frontend 工作区
│       └── ...
├── db/
│   └── wescode_auth.db    # 登录状态(跨工作区共享)
└── logs/
    └── wescode.log

切换的体验

切换工作区时,你会感受到:

这一切是自动的——你打开文件夹的那一刻就完成了。

下一步