CellSpec 字段可变性
wesgine CellSpec 的字段通过 struct tag 标记可变性级别。
三种可变性标记
type CellCoreSpec struct {
Timezone string `wesgine:"immutable"` // 创建后不可更改
Locale string `wesgine:"mutable"` // 运行时可修改
// ...
}
| 标记 | 含义 | UpdateSpec 行为 |
|---|---|---|
immutable | 创建后永不可改 | 传入值与原值不同 → 报错 |
mutable | 随时可改 | 直接覆盖 |
restricted | 有条件可改 | 需额外校验(如 Compliance 降级) |
不可变字段
创建 Cell 时确定,此后不可变更:
- ID:Cell 唯一标识
- Timezone:时区
变更这些字段意味着改变 Cell 的身份,应该创建新 Cell 而非修改。
可变字段
运行时可通过 SpecPatch 修改:
- Locale
- Governance(GovernMode、DenyPaths、NetworkPolicy)
- Quotas
- AllowedModels
- ProviderStrategy
- PrivateProviders
- LogicalModelGroups
- Compliance
受限字段
修改需要额外校验或条件:
- Compliance 从严格降到宽松可能需要管理员确认
- 某些治理字段在 locked 模式下不允许降级
热更新与冷更新
| 更新方式 | 效果 | 示例 |
|---|---|---|
| 热更新 | 立即生效,无需重启 | Governance、Quotas |
| 冷更新 | 需要重启 Cell 才生效 | 外设配置(Channels、MCPs) |
SpecPatch 只做热更新。需要冷更新的字段通过 Restart 操作。
API 端点
PATCH /admin/cells/{id} # 管理端更新 SpecPatch
PUT /cells/{id}/config/governance # Cell 端更新治理策略
PUT /cells/{id}/config/cycle-detect # Cell 端更新循环检测
相关文档
- CellSpec 概览 →
cell-spec-overview.md - CellSpec 补丁 →
cell-spec-patch.md - 紧急覆盖 →
emergency-override.md