CellSpec 总览
wesgine 的 CellSpec 是 Cell 的声明式配置——创建或更新 Cell 时传入的完整规格。
结构分层
CellSpec 使用 Go struct embedding 分层:
CellSpec {
ID // 不可变标识
CellCoreSpec // 核心配置(时区、地区、合规)
CellAdapterSpec // 外设配置(渠道、邮件、MCP、Cron)
CellSchedulingSpec // 调度配置(配额、循环检测、故障策略)
CellPortableSpec // 可移植配置(导出/导入行为)
}
嵌入保持向后兼容:spec.Timezone 等价于 spec.CellCoreSpec.Timezone。
字段 mutability 标记
每个字段带 wesgine:"immutable|mutable|restricted" tag:
| 标记 | 含义 |
|---|---|
immutable | 创建后不可变(ID、Timezone) |
mutable | 随时可改 |
restricted | 需要特定条件才能改 |
四大分区
CellCoreSpec
元数据与治理:ID、Timezone、Locale、Compliance、Governance、DenyPaths、EnginePaths、RedactorRules。
CellAdapterSpec
外设声明:Channels、Email、MCPs、Cron、HITL、HeadlessBrowser、Playwright、Desktop、STT、Plugins。
CellSchedulingSpec
运行调度:Quotas、CycleDetect、FaultPolicyOverride、SkillPolicy、InboxCap、Roles、ProviderStrategy、PrivateProviders、AllowedModels、LogicalModelGroups、DisallowActorProvider。
CellPortableSpec
导出/导入:控制快照包含的内容范围。
SDK Hook 字段(json:"-")
不持久化的进程级 Hook:
| 字段 | 用途 |
|---|---|
| QualityGate | 编辑质量门控 |
| EditPatrol | 编辑巡查 |
| HostEnvironment | 宿主环境注入 |
| AppIdentity | 应用身份标识 |
| FileSegmenter | 文件分段器 |
| EditMatchFallback | 编辑匹配回退 |
| ToolExecutorHooks | 工具执行 Hook |
| OnStarted | Cell 启动后回调 |
| PostRunFn | Run 结束后回调 |
| ProviderLiveKeyFn | 实时密钥获取 |
这些字段必须在 GetOrCreate 之前绑定。
运行时修改
通过 SpecPatch 修改可变字段:
PATCH /admin/cells/{id}
Body: SpecPatch { ... }
热更新(无需重启)与冷更新(需要重启)取决于具体字段。
相关文档
- CellSpec 核心字段 →
cellspec-core.md - CellSpec 治理配置 →
cellspec-governance.md - CellSpec 调度配置 →
cellspec-scheduling.md - CellSpec 外设配置 →
cellspec-adapters.md - CellSpec Hook 字段 →
cellspec-hooks.md - CellSpec Provider 配置 →
cellspec-provider.md - CellSpec 可移植配置 →
cellspec-portable.md