CellSpec 迁移指南

SpecPatch 的使用方法、字段可变性约束、热更新行为、Compliance 变更影响和降级态 secret 保护。


CellSpec 字段可变性

CellSpec 字段通过 wesgine:"immutable|mutable|restricted" tag 标注可变性。

immutable 字段(创建后不可变)

字段说明
IDCell 标识符
Timezone时区

修改 immutable 字段 → 需要删除并重新创建 Cell。

mutable 字段(可通过 SpecPatch 热更新)

字段说明
Locale语言区域
Governance治理策略
Quotas配额
ProviderStrategyProvider 策略
AllowedModels允许的模型
DenyPaths禁止访问路径

restricted 字段(需要特定条件)

某些字段的变更需要 Cell Stop 后重新 Start 才能生效。


使用 SpecPatch

SDK 方式

err := hyp.Cells().UpdateSpec(ctx, "dept-legal", wesgine.SpecPatch{
    Governance: &newGovernance,
    Quotas:     &newQuotas,
})

HTTP 方式

PATCH /admin/cells/{id}
Content-Type: application/json

{
  "governance": {
    "mode": "locked",
    "deny_paths": ["/etc/secrets"],
    "network_policy": "internal_only"
  },
  "quotas": {
    "max_concurrent_runs": 5
  }
}

Compliance 变更的影响范围

Compliance 只决定什么

决定示例
RedactorRules自动脱敏规则
GuardrailsRequired是否需要 guardrails

Compliance 不决定什么

不决定由谁管理
DenyPathspreset 注入 + 显式 CellSpec.DenyPaths
GovernModepreset 映射 + 可独立覆盖

INV-GOV-COMPLIANCE-02:UpdateSpec(Compliance:) 热切只 swap RedactorRules,不增删 DenyPaths。创建时用 preset 注入的 DenyPaths 在降级/升级后保持稳定。

预设映射

预设ModeNetworkPolicyRedactor
StandardPreset()openallow无
RegulatedPreset()lockedinternal_only按场景
ReadonlyPreset()lockeddeny无

治理策略热更新

PUT /cells/{cellID}/config/governance
Content-Type: application/json

{
  "mode": "locked",
  "deny_paths": ["/credentials", "/var/secrets"],
  "network_policy": "internal_only"
}

Governance 变更立即生效,无需重启 Cell。


降级态 Secret 保护(INV-PERSIST-07)

当 spec.key 丢失时,引擎降级挂载 Cell,记录 degradedSecrets 台账。

写入保护

降级态下的写入被三扇门保护:

门行为
persistCellSpec拒绝,除非本次写入填回所有台账点名的字段
Cells().Create纯 INSERT,够不到已存在的行
convergePersistedSpec原样保留 SealedOriginals
写入请求 → 检查 degradedSecrets[spec.ID]
  ↓ 台账有记录
  检查本次写入是否把每个点名字段带非空值填回
  ↓ 未填回
  返回 ErrDegradedSecretOverwrite (409)

恢复流程

  1. 恢复 {DataDir}/secrets/spec.key
  2. 通过 API 重新配置 Provider(带非空 API Key)
  3. 写入成功 → 台账自动清除

关键:写成功后必须重算台账——漏了这步,重填凭据后下一次不相干的编辑仍被拒。


Cell 重启

POST /admin/cells/{id}/restart

重启会重新执行 Cell Boot(含 schema 迁移、Seed 播种等),但保留所有持久化数据。


故障重置

POST /admin/cells/{id}/reset-faults

重置 Cell 的故障计数器,恢复正常调度。


常见迁移场景

场景操作
升级治理等级PATCH /admin/cells/{id} 更新 Governance
调整配额PATCH /admin/cells/{id} 更新 Quotas
切换 Provider 策略PATCH /admin/cells/{id} 更新 ProviderStrategy
改时区删除 Cell + 重新创建(immutable)
恢复丢失密钥恢复 spec.key + 重新配置 Provider

相关文档