Cell 数据目录

wesgine Cell 的物理存储目录结构与文件布局。


目录推导

Cell 数据目录由引擎从 (DataDir, CellID) 推导:

{DataDir}/cells/{CellID}/

推导逻辑在 internal/cell/boot.go::cellDir,不由 CellSpec 声明。


目录结构

{DataDir}/
├── hypervisor.db          # Hypervisor 级 Cell 注册表
├── secrets/
│   └── spec.key           # AES-256-GCM 封套密钥(0600)
├── logs/
│   └── wesgine-stderr.log # 崩溃日志(fd 2 dup2)
└── cells/
    └── {CellID}/
        ├── .cell.lock     # 进程排他锁(flock)
        ├── meta.db        # 元数据层
        ├── state.db       # 运行时状态层
        ├── sessions.db    # 会话层
        ├── skills/        # Tier C 技能包
        ├── knowledge/     # 知识库文件
        ├── workspace/     # 持久产出
        │   └── {actor}/   # 按 Actor 隔离
        ├── .scratch/      # 临时计算(Run 结束后 GC)
        └── .plans/        # Plan artifact

三层数据库

数据库内容损坏影响
meta.dbCell 元数据、Agent 配置元数据丢失
state.db运行时状态、Traces、Observe观测数据丢失
sessions.db会话历史、消息、记忆会话丢失

单层损坏不扩散(INV-RESIL-03)。


进程排他锁

.cell.lock 使用 flock 确保同一 Cell 同一时刻只有一个写入者。

INV-RESIL-04:同一 Cell 同一时刻只有一个写入者

workspace 目录

持久化的文件产出按 Actor 隔离:

workspace/
├── alice/     # Alice 的产出文件
└── bob/       # Bob 的产出文件

物理在 Cell 目录下,满足 AX-1 隔离 + Export 可移植(INV-IO-04)。


.scratch 目录

临时计算域,Run 结束后由引擎 GC(INV-IO-06):

os.RemoveAll(scratchDir) // Run 结束时

数据目录约束

约束说明
无 CellSpec.Storage路径由引擎推导,曾有此字段已删除
不含 cell_id 列表内无 cell_id,物理隔离替代逻辑隔离
Export 包含 workspace默认包含,SkipWorkspace: true 可排除
Export 不含 .scratch永不包含

各产品的 DataDir

产品DataDir说明
wesclaw 桌面~/.local/share/wesclaw/XDG 规范
wescode~/Library/Application Support/wescode/macOS
wescraft~/Library/Application Support/wescraft/macOS
teleclaw配置指定服务端部署

相关文档