节点前置检查
先消「环境漂移」:多节点上 macOS 大版本、补丁或运行时 minor 不一致,会让同一技能出现难复现差异。
- 系统与时间:大版本对齐;NTP 开启,skew 数秒内(令牌/签名敏感)。
- 身份与网络:固定
NODE_ID、队列与安装根路径;端口与密钥策略见凭据最小权限。 - 基线:同一剧本安装 OpenClaw 主程序版本,避免主程序与技能包版本组合失控。
模板与密钥注入
仓库只保留 env.template(可按角色拆分),列变量与安全默认值;密钥仅经流水线或本机密钥目录注入,不进 Git。
- 拓扑:
QUEUE_URL、API_BASE等全局一致,host/port 用清单覆盖。 - 开关:功能 flag 与技能版本同学评审,忌半开。
- 占位:如
WEBHOOK_SECRET=<保险库>,渲染后非空再启动。
常见错:整块
.env rsync 到各节点,把本机路径与令牌带跑。应模板与注入分离。
技能包锁定与校验
用 skills.lock / manifest.json 记录每技能精确版本与 SHA256;节点同步后先校验哈希,失败拒启 Worker,避免静默漂移。配合队列同步与多节点协作,统一任务语义与实现版本。
- CI 校验清单 schema;发布打 tag 附带清单快照。
- 启动前
verify-skills:同步 → 哈希 → 通过再 reload。 - 监控打
skill_bundle_rev标签便于对比。
若团队用 Git 子模块拉技能,务必锁 commit 而非仅分支名,否则「同分支不同提交」会在多节点上悄悄分叉。
灰度与回滚
先 canary:升级清单与模板,跑冒烟(版本接口 + 低风险技能),看队列与错误率,再 25%→50%→100% 滚动。保留旧技能目录与 env 快照,回滚时改软链或 LaunchAgent 指向即可。
- 批次间留一轮高峰观察;每批核对
skill_bundle_rev与探活。 - 超阈或 canary 失败:先停新任务,再回滚 env 与技能目录。
日志对齐与排错
结构化日志固定带 node_id、skill_version、config_revision、correlation_id,便于集中检索跨机路径。
- 「技能未找到」:清单是否漏机、软链空目录、rsync 排除误伤。
- 哈希失败:CDN 缓存、构建与运行架构不一致(固定构建环境)。
- 变量未生效:LaunchAgent 未 reload、守护进程环境与 shell 分离、渲染覆盖顺序错。
验收清单
变更关闭前建议由值班与发布负责人双签:避免「线上看似正常、实则半套新技能」的灰度残留。
- 全节点 manifest 一致,抽检哈希匹配。
- 模板与生产 env diff 已审,无明文密钥误入。
- 监控:错误率、队列深度、P99 无回归;预发做过回滚演练。
步骤清单(HowTo)
- 模板变量:评审模板 → 渲染
.env→ 非空校验 → reload。 - 技能包版本文件:改
skills.lock→ CI 校验 → 节点verify-skills。 - 滚动发布/校验:canary → 分批探活与日志抽样 → 全量回归任务。