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
OnStartedCell 启动后回调
PostRunFnRun 结束后回调
ProviderLiveKeyFn实时密钥获取

这些字段必须在 GetOrCreate 之前绑定。


运行时修改

通过 SpecPatch 修改可变字段:

PATCH /admin/cells/{id}
Body: SpecPatch { ... }

热更新(无需重启)与冷更新(需要重启)取决于具体字段。


相关文档