CellSpec 参考
CellSpec 是创建/更新 Cell 时传入的声明式配置,定义 Cell 的完整行为。
结构分层
CellSpec 使用 struct embedding 分层(cellspec.go):
CellSpec {
ID // 不可变
CellCoreSpec // 核心配置
CellAdapterSpec // 外设配置
CellSchedulingSpec // 调度配置
CellPortableSpec // 可移植配置
}
Go 嵌入保持向后兼容:spec.Timezone 等价 spec.CellCoreSpec.Timezone。
字段可变性
字段带 wesgine:"immutable|mutable|restricted" tag:
| Tag | 含义 |
|---|---|
immutable | 创建后不可修改 |
mutable | 可随时修改 |
restricted | 受限修改 |
核心配置(CellCoreSpec)
| 字段 | 说明 | 可变性 |
|---|---|---|
| Timezone | 时区 | immutable |
| Locale | 语言区域 | mutable |
| Compliance | 合规类别 | mutable |
| Governance | 治理模式 | mutable |
| EnginePaths | 引擎路径 | mutable |
| RedactorRules | 脱敏规则 | mutable |
外设配置(CellAdapterSpec)
| 字段 | 说明 |
|---|---|
| Channels | IM 渠道 |
| 邮箱账号 | |
| MCPs | MCP Server |
| Cron | 定时任务(种子声明) |
| HITL | 人机交互配置 |
| HeadlessBrowser | 无头浏览器 |
| Playwright | 用户浏览器自动化 |
| Desktop | 桌面自动化 |
| STT | 语音转写 |
| Plugins | 插件 |
Provider 配置
| 字段 | 说明 |
|---|---|
| ProviderStrategy | 路由策略(四选一) |
| PrivateProviders | Cell 私有 Provider |
| AllowedModels | 允许的模型列表 |
| LogicalModelGroups | 逻辑模型组 |
| DisallowActorProvider | 禁止 Actor Provider |
调度配置(CellSchedulingSpec)
| 字段 | 说明 |
|---|---|
| Quotas | 计算/存储/外设配额 |
| CycleDetect | 循环检测配置 |
| FaultPolicyOverride | 故障策略覆盖 |
| SkillPolicy | 技能策略 |
| InboxCap | 收件箱容量 |
| Roles | 角色定义 |
SDK Hooks(json:"-")
这些字段不序列化,必须在 GetOrCreate 前绑定:
| 字段 | 说明 |
|---|---|
| QualityGate | 质量门控回调 |
| EditPatrol | 编辑巡检回调 |
| HostEnvironment | 宿主环境信息 |
| AppIdentity | 应用身份 |
| FileSegmenter | 文件分段器 |
| EditMatchFallback | 编辑匹配回退 |
| ToolExecutorHooks | 工具执行钩子 |
| OnStarted | 启动回调 |
| PostRunFn | Run 后回调 |
| ProviderLiveKeyFn | 实时密钥获取 |
存储
CellSpec 没有 Storage 字段:
- 路径由引擎从
(DataDir, ID)推出 - 三层 SQLite
- 表内无 cell_id / owner_id
- 曾有
CellSpec.Storage字段,已删除(ADR-390)
安全默认
- 未声明 Governance →
DefaultGovernance()→ModeOpen - 未声明 Provider → 需要显式声明或自动推导
ProviderLiveKeyFn缺失 +wes:/org:→ fail-loud(INV-CELL-08)