Cell 结构
Cell 是 wesgine 的核心运行时实例,一个 Cell = 一个完整、独立、可移植的 AI Agent 运行时。
CellSpec 声明
创建或更新 Cell 时传入:
| 类别 | 包含字段 |
|---|---|
| 元数据 | ID(不可变) / Timezone(不可变) / Locale / Compliance |
| 治理 | Governance / EnginePaths / RedactorRules |
| 存储 | 无字段——路径由引擎从 (DataDir, ID) 推出 |
| 外设 | Channels / Email / MCPs / Cron / HITL / HeadlessBrowser / Playwright / Desktop / STT / Plugins |
| Provider | ProviderStrategy / PrivateProviders / AllowedModels / LogicalModelGroups |
| 调度 | Quotas / CycleDetect / FaultPolicyOverride / SkillPolicy / InboxCap / Roles |
| SDK Hooks | QualityGate / EditPatrol / HostEnvironment / AppIdentity 等 |
| 可移植 | CellPortableSpec(Export/Import 打包行为) |
运行时状态
Cell.Start 后自动建立:
| 类别 | 内容 |
|---|---|
| 温度状态 | Hot / Warm / Cool / Cold |
| BC 实例 | Cognitive / Context / Execution / Memory / Knowledge / Coordination + TaskMemory |
| 应用实例 | Agents 多实例 / Skills (Tier C) / TaskMemory |
| 文件 I/O | workspace/{actor}/ (持久) + .scratch/{runID}/ (临时) |
| 进程 | Supervisor goroutine + Inbox + EventBus |
| 观测 | Metrics(push) / Traces(state.db) / Evidence(hash chain) |
| 入口 | cell.Runtime().Run(ctx, AppRunRequest{...}) |
Agent 是次级隔离
- 共享 Cell 物理资源
- 独立认知配置(prompt / tool ACL / model)
agent://X/*命名空间隔离cell://*共享
25 个 Handle
Cell 对外暴露 25 个业务 Handle:
Runtime / Agents / Memory / Sessions / Knowledge / TaskMemory /
Skills / Tools / HITL / Learn / Channels / Email / MCPs / Cron /
HeadlessBrowser / Playwright / Desktop / Workspace /
Policy / Quotas / Tokens /
Observe / Providers / Config / Events
每个 Handle 是一组语义内聚的操作接口。
物理文件布局
cells/{cellID}/
├── meta.db # Cell 元数据(Layer: CellMeta)
├── sessions.db # 会话与消息(Layer: CellSessions)
├── state.db # 运行时状态(Layer: CellState)
├── skills/ # Tier C 技能包
├── knowledge/ # 知识库文件
├── workspace/ # 产物文件
│ └── {actor}/ # 按 Actor 分目录
├── .scratch/ # 临时计算域(Run 结束后 GC)
└── .cell.lock # 进程排他锁(INV-RESIL-04)
三层 SQLite
| 层 | 文件 | 内容 |
|---|---|---|
| Meta | meta.db | Cell 元数据、Agent 配置 |
| Sessions | sessions.db | 会话、消息、记忆 |
| State | state.db | 运行追踪、Token 用量、证据链 |
单 Layer 损坏不扩散(INV-RESIL-03)。
Cell 入口
// SDK
cell, err := hyp.Cells().GetOrCreate(ctx, spec)
events, err := cell.Runtime().Run(ctx, AppRunRequest{...})
// HTTP
POST /cells/{cellID}/run → SSE 流式 Run
POST /cells/{cellID}/chat → 同步 Chat