多账号与 Profile
wesclaw 支持通过多 Cell(Profile)隔离不同的使用场景。
什么是 Profile
Profile 是独立的 AI 工作环境,每个 Profile 对应一个 wesgine Cell:
- 独立的会话历史
- 独立的记忆数据
- 独立的技能配置
- 独立的 Provider 配置
- 独立的 Agent 列表
默认行为
单 Cell 模式(PROD-1)
当前默认单 Cell 模式:
- 所有数据在
mainCell 中 - 前端不感知 Cell 概念
- 切换账号 = Go 进程重启
登录凭证共享
tc_session(登录凭证)不按 Profile 分隔:
- 跨 Profile 共享登录状态
- 一次登录,所有 Profile 可用
多 Profile 能力
使用场景
| Profile | 用途 |
|---|---|
| 工作 | 公司项目助手 |
| 私人 | 个人事务处理 |
| 学习 | 学习和研究 |
数据隔离
切换 Profile 后:
| 数据类别 | 隔离方式 |
|---|---|
| 会话列表 | 按 cell_id 过滤 |
| 技能配置 | per-Cell 物理隔离 |
| Provider | per-Cell 独立配置 |
| Agent 列表 | per-Cell 独立 |
| 记忆 | per-Cell 物理隔离 |
引擎数据
引擎层数据(wes_* 表)存储在各 Cell 独立的数据库中:
$WESCLAW_DATA_DIR/cells/{cellID}/
meta.db ← 元数据
sessions.db ← 会话
state.db ← 运行时状态
应用数据
应用层数据(tc_* 表)在共享数据库中通过 cell_id 列隔离:
$WESCLAW_DATA_DIR/db/wesclaw.db
tc_conversations WHERE cell_id = ?
tc_agents WHERE cell_id = ?
tc_skills WHERE cell_id = ?
账号切换
当前实现
切换账号 = Go 后端进程重启:
- 前端触发切换
- Go 后端进程退出
- Electron 重启 Go 后端
- 新 boot 使用新的 Cell
用户体验
- 切换时短暂不可用
- 切换后数据完全独立
- 无数据交叉泄漏
注意事项
- 当前默认单 Cell,多 Profile 是可选能力
- Profile 间数据完全隔离
- 登录凭证跨 Profile 共享
- 切换 Profile 需要短暂重启
- 每个 Profile 可以有不同的 Provider 配置