Cell 导出与导入

wesgine Cell 的可移植快照:导出、导入、数据范围与约束。


Cell 三位一体

Cell 同时是三件事:

身份说明
Runtime Instance运行时实例
Tenant Unit租户隔离单元
Portable Snapshot可移植快照

导出/导入是 Portable Snapshot 这一面的实现。


导出 API

HTTP

GET /admin/cells/{id}/export → tar.gz 流

SDK

reader, err := hyp.Cells().Export(ctx, cellID)
// reader 是 tar.gz 流

导出内容

包含不包含
meta.db.scratch/
sessions.db.cell.lock
state.db临时计算文件
skills/
knowledge/
workspace/(默认)

排除 workspace

hyp.Cells().Export(ctx, cellID, ExportOpts{
    SkipWorkspace: true,  // 不含 workspace/
})

导入 API

HTTP

POST /admin/cells/import → tar.gz body(?overwrite=1)

SDK

newCellID, err := hyp.Cells().Import(ctx, reader, ImportOpts{
    Overwrite: true,  // 覆盖同 ID Cell
})

导入行为

正常导入

覆盖导入


CellPortableSpec

CellSpec 的 CellPortableSpec 子结构控制导出/导入行为:

type CellPortableSpec struct {
    // 导出/导入时的行为配置
}

数据完整性

INV-LINE-01

导入时使用 internal/infra/lineio 读取,不用 bufio.Scanner。

避免 64KB 以上行被截断导致数据丢失。

三层 DB 完整性

导出前对每个 DB 做 VACUUM INTO(SQLiteBackup),保证原子一致性快照。

导入后验证 PRAGMA quick_check。


安全约束

DenyPaths 不随导出

CellSpec.DenyPaths 是路径边界声明,导出的 Cell 在新环境需要重新配置。

HostPaths 不包含

HostPaths 中的文件属于宿主环境,不是 Cell 的一部分。


典型用途

场景操作
备份定期 Export → 存储到对象存储
迁移Export → 传输 → Import 到新集群
复制Export → Import with 新 ID
模板Export 标准配置的 Cell → 批量 Import

相关文档