如果你负责生产环境里的 OpenClaw Gateway,真正的痛点往往不是「会不会跑 openclaw update」,而是通道(stable / beta / dev)是否与变更窗口一致、自动更新会不会在事故当晚悄悄重启、以及 npm 钉版本与 git 回滚谁先谁后。本文给出:① 七条会让「回滚」背锅的隐性假设;② 一张「安装面 × 更新入口 × 回滚手段」对照表;③ 六步顺序敏感 Runbook(备份 → 通道确认 → 更新 → 可选 OPENCLAW_NO_AUTO_UPDATE 闸门 → 重启与探针 → doctor);④ 何时必须回到 split brain 分叉篇 做 gateway install --force。Docker 路径另见 compose 生产升级,观测基线见 健康日志与回滚。
下列心智陷阱会把正常的编排问题误判成「OpenClaw 质量差」——排障前建议逐条划掉。
把 openclaw update 当成「只改包、不动服务」:实际执行面仍取决于当前安装源与单元里绑定的二进制路径;若只更新全局前缀而未刷新 launchd/systemd 封装,会后患无穷。
生产默认定位于 beta/dev 通道却要求 SLA:预览通道适合实验台;写入变更单的默认应是 stable 与可复核的版本号。
回滚时先改一大坨 openclaw.json 再降二进制:更安全的顺序通常是先把执行面钉回已知良好版本,再决定是否需要配置迁移;否则容易制造「低版本二进制 + 高新版本 schema」的混合态。
以为设置 OPENCLAW_NO_AUTO_UPDATE 就替代了沟通:它只是闸门工具,仍需公告变更窗口、值联系人手顺与回滚条目(语义以当期官方文档为准)。
git 回滚不做干净工作区校验:git checkout <tag> 前后应核对子模块、锁文件与本地补丁;否则「以为回到 tag」但依赖仍漂移。
把 Docker 升级手册硬套到裸机 npm:镜像 tag、卷与入口脚本链条不同;compose 场景优先读 Docker 篇,不要混用命令顺序。
升级后不跑 doctor 就切回全流量:至少完成一次 channels status --probe 与 cron list 对照,再解除维护公告。
若上述第七条已做仍看到「配置戳新、进程旧」类守卫报错,请优先切换到 split brain 篇完成 PATH 与 gateway install --force 轴线,再回到本文讨论通道与钉版本。
把「我在用什么安装」说清楚,回滚才不会走错脚本:
| 安装面 | 典型更新入口 | 回滚主手段 | 第一站延伸阅读 |
|---|---|---|---|
| npm 全局包 | openclaw update / npm install -g … | 钉 @scope/[email protected] + 重装服务封装 | split brain |
| git 源码树 | git pull / 官方构建脚本 | git checkout 至 tag + 重建 | 本文 §3 顺序;必要时 docker 分离 |
| 安装器脚本 | 供应商 CLI / curl 脚本 | 重新执行钉版本脚本或离线包 | 保留校验和与变更单附件 |
| Docker / compose | 拉取新镜像 tag | 镜像 tag 回落 + 卷快照策略 | compose 生产升级 |
黄金顺序:(1) 备份证据与配置 → (2) 钉住二进制身份 → (3) 再讨论 JSON 是否需要顺迁。
远程拓扑下别忘了核对 gateway.mode 与 URL;细节仍归 远程模式篇。
下列步骤顺序敏感;若中途发现 CLI 与 systemd 用户服务版本不一致,暂停并跳转 split brain 篇。
取证与备份:导出 openclaw --version、gateway status、关键环境变量片段(脱敏),备份 openclaw.json 或挂载卷快照。
确认通道:对照官方文档声明的 stable / beta / dev 语义;生产默认走 stable,变更单写明目标版本号。
执行更新:优先使用文档推荐的 openclaw update(或等价路径);若只能 npm install -g,随后必须验证服务单元是否仍指向正确前缀。
事故窗口闸门(可选):在维护冻结或钉版本期间,按文档为 systemd/launchd 或 shell 引入 OPENCLAW_NO_AUTO_UPDATE,防止后台自动升级打乱排障;解除前写在变更单。
冷重启与探针:openclaw gateway restart → channels status --probe;异常端口/内存仍走 not ready 分流。
doctor 与观测对齐:openclaw doctor;对照 健康日志篇 的保留窗口做一轮日志抽检,再解除维护。
openclaw --version openclaw update openclaw gateway restart openclaw doctor openclaw channels status --probe # npm 钉版本示例(包名以文档为准) # npm install -g @your-scope/[email protected]
提示:若 doctor 仍提示二进制分叉或拒绝破坏性 gateway 动作,请转到 split brain 恢复清单,不要仅在本文层面反复 npm install。
OPENCLAW_NO_AUTO_UPDATE 与变更窗口自动更新的意义是降低掉队风险,但在事故响应、合规审计或跨团队钉版本时,你可能需要暂时关闭后台拉包。此类需求通常通过 OPENCLAW_NO_AUTO_UPDATE 一类环境变量表达——精确语义、默认值与注入位置(用户服务单元 vs shell profile vs 容器 env)必须以当期官方文档为准,本文只强调运维纪律。
注意:闸门不是永久策略;长期禁用自动更新会把团队推向「手工漂移」。请在变更单记录开启原因、关闭条件、责任人,并在关闭后补一轮完整回归。
与「允许旧二进制写 service」类破坏性 OPENCLAW_* 变量不同:闸门侧重暂停自动升级节奏;若已发生 split brain,仍应优先执行对齐 PATH 与服务封装。
便于审计拷贝的硬指标:
openclaw --version 输出一致,且与变更单目标版本匹配。git rev-parse HEAD 与 tag;npm 回滚附精确 semver;compose 回滚附镜像 digest(见 Docker 篇)。channels 探针 + 一轮 cron 周期通过,再关闭事故公告。共享笔记本或家用 Mac 常受睡眠与系统更新扰动;若你希望 Gateway 与自动化管道像 VPS 一样可预期,又需要 Apple Silicon 与图形会话能力,独占云端 Mac通常是比反复本地升级更稳的承载面。NodeMini 提供可 SSH 的租赁节点与清晰计费;详见 租赁价格说明 与 帮助中心。OpenClaw 系列建议阅读顺序:观测 → cron → 远程模式 → split brain → 本文(通道与回滚) → 专栏筛选。
前者通常跟随官方推荐的编排与通道语义;后者只更新全局前缀下的包文件。不会自动修复仍指向旧路径的 launchd/systemd 单元——这正是 split brain 篇的核心场景,必要时需 gateway install --force。
事故窗口、审计冻结或必须钉死补丁版本时;变量注入方式与默认值以官方文档为准。解除闸门后务必跑 doctor 与 channels 探针,并参考 观测篇 复核日志策略。
优先走 compose 生产升级:镜像 tag / digest、卷与启动顺序才是主矛盾;裸机 npm 或 git 的手顺与之并行阅读,不要混用命令链。