gateway.remote 悄悄指向旧端口。本文先列出五类可复现的升级事故签名,再给官方 CLI openclaw update 与全局 npm 安装的对照表,接着把 stable、beta、dev 的停机面写清,然后给出 dry-run 检查项与最小冒烟,最后以六步 Runbook把新加坡、日本、韩国、香港、美国东部与美国西部的维护窗口与 Gateway 重启绑在一起,让你把争议从体感迁到阈值
OpenClaw 生产升级最常见的五类事故签名
与首次安装不同,升级是在已有状态目录、已有 launchd 单元、已有渠道 token 与可能自定义的 gateway 块之上叠加新版本。任何一步假设「默认路径没变」都会在第三周以诡异方式反噬:例如全局 npm 把可执行文件指到新位置,而旧 plist 仍调用旧路径;或包管理器把依赖树 bump 到不兼容次版本,但你的技能清单仍锁在旧接口。2026 年在多地区裸金属云 Mac 上,这类问题与区域无关,却常被误报成「该区线路不稳」,因为表现是 WebSocket 偶断与工具尾延迟,而不是显式崩溃。
下面五条签名不是为了制造焦虑,而是为了在变更评审里快速对齐语言:当你能稳定复现其中任意两条,就应把「是否冻结通道与补全回滚脚本」写进风险登记册,而不是继续堆「再重启一次试试」。若你们已经在用 Docker 与 install.sh 双轨交付,可把站内对照文章当作并行阅读;本篇刻意把镜头拉近到通道选择与 CLI 升级路径。
channels 显示已连接但回复随机变慢:典型是 Gateway 进程已换版本而插件 ABI 或工作目录未同步,或 remote 仍指向旧端口导致偶发握手失败。
升级后 which openclaw 与 plist 中的绝对路径不一致:典型是 npm 全局前缀或 Homebrew 链接顺序变化,守护进程仍拉起旧二进制。
doctor 报一堆新告警但上周还没有:可能是默认安全策略或沙盒默认值随 minor 版本收紧,需要按发布说明逐项对照而不是一键忽略。
夜间自动升级后早高峰出现密集 18789 相关报错:典型是端口绑定或 OPENCLAW_GATEWAY_PORT 与多实例策略冲突,热重载无法覆盖必须重启的路径。
CI 与交互机同时升级导致配置分叉:一条线走了包管理器自动 bump,另一条线 pin 在旧版,最终出现「同一仓库两套行为」的不可审计状态。
识别签名之后,下一步是把「允许自动化的边界」写进 Runbook:例如生产 Gateway 仅允许 stable 且必须双人复核 dry-run 输出;beta 只能在日租试跑机上打开;dev 禁止写进任何对客渠道的配置。没有这条纪律时,openclaw update 再好用也只是把风险按钮做得更大。
与 Gateway 热重载相关的「哪些键可不停机生效」仍建议回到站内专题文章对照,因为升级事件常常与 reload 边界叠加:你以为只是小版本,实际上触发了必须重启的 bind 或 token 校验路径。把升级与 reload 两套决策表放在同一 wiki 页面,能显著减少值班时的翻找时间。
官方 CLI update 与全局 npm:谁改路径、谁改通道
工程上不存在「永远正确」的升级入口,只存在「你们能否解释每一次变更来自哪条供应链」。官方 CLI 路径通常对新手最友好,因为它倾向于把依赖与可执行布局收敛到可预期目录;全局 npm 或系统包管理器则更容易与机器上其他 Node 工具链耦合,升级一次可能顺带 bump 数十个传递依赖。下表用粗粒度列帮助你在十分钟内对齐「我们到底缺哪一层治理」。
| 维度 | 官方 CLI openclaw update | 全局 npm / 系统包 |
|---|---|---|
| 可执行路径稳定性 | 相对集中,适合与 plist 固定绝对路径绑定 | 前缀变化风险更高,需要升级后复核 plist |
| 通道切换成本 | 通常与发布渠道文档一致,便于审计 | dist-tag 与 lock 文件需团队自行纪律化 |
| 回滚可操作性 | 配合 pin 与备份点较直观 | 需明确 npm install -g [email protected] 与缓存清理顺序 |
| 多实例隔离 | 仍需自行拆分 OPENCLAW_HOME 与端口 | 同样需拆分,且更易被全局 bump 波及 |
| 适合团队画像 | 要小步快跑、变更可叙述的运维 | 已有成熟 Node 治理与私有 registry 镜像的团队 |
通道不是「越新越好」,而是「你能承受多宽的停机面与多快的 pin 回滚」。
stable 应默认绑定到对客渠道与生产 Gateway:可接受停机面定义为「可在五到十五分钟内完成 pin 回滚并恢复握手」。beta 适合预生产或日租样本机:允许在白天窗口内暴露新诊断输出,但必须禁止与生产同目录。dev 只适合隔离实验:任何写入对客配置的行为都应视为流程事故。把三条写进变更模板后,评审会少掉一半「我觉得可以试试 nightly」的口头升级。
若你在多地区云 Mac 上混用不同通道,还要额外记录「哪台机器是哪一个通道的单一事实来源」,否则排障时会把 beta 行为误当成区域问题。与裸金属 7×24 常驻折中的关键是维护窗口:把 bump 放在成员低活跃且无人重任务的时段,并在窗口前后各抓一份 openclaw doctor 输出存档。
dry-run 检查项与升级后最小冒烟:channels 与 doctor 怎么才算过线
dry-run 的价值不在于「有没有报错」,而在于输出里是否出现了你尚未理解的版本跳变与路径改写。生产化团队会把 dry-run 输出当作差分:新增依赖、可执行文件位置、默认配置键、弃用警告四类必须有人认领。升级后的最小冒烟则应覆盖「控制面」与「数据面」各至少一条:例如一次 channels 健康探测与一次轻量工具调用,而不是只盯着聊天窗口里有没有新欢迎语。
当 Gateway 与远端 CLI 分体部署时,还要把 gateway.remote 与 TLS 终端是否仍匹配写进冒烟清单;否则你会遇到「本地 doctor 全绿、远端渠道间歇失败」的分叉状态。热重载能解决的键与必须重启的键不要混在同一验收表里,可把站内 Gateway 热重载一文当作附录。
openclaw update --dry-run openclaw doctor openclaw channels probe openclaw gateway status
最后一行是否适用取决于你们的 plist 标识与多实例策略;要点是不要用「重启整台云 Mac」代替定向 kickstart,否则你会在日志里丢失升级前后的对照窗口。若使用 systemd 或容器侧车,同理替换为等价的服务重启单元。
提示:把 dry-run 输出与 doctor 输出按日期归档到只读对象存储或工单附件,事故复盘时比口头回忆可靠三个数量级。
六步 Runbook:从变更单到 pin 回滚可执行
冻结通道与目标版本:在变更单写明 stable 或 beta 及精确版本号,禁止口头「升到最新」。
备份配置与状态目录:打包 openclaw.json、plist、环境导出与技能清单锁文件到时间戳目录。
在日租或预生产机 dry-run:核对输出差分并记录风险项,未认领项不得上线。
进入维护窗口执行升级:先停重任务队列再 bump,避免浏览器自动化与升级 IO 叠加。
跑最小冒烟并抓日志窗口:channels 与 doctor 全过线后再恢复对客流量。
冻结回滚命令:写明 npm dist-tag 或 pin 版本与 kickstart 顺序,值班无需临场发明路径。
三条可写进值班手册的水位线与云 Mac 维护窗口口径
通道漂移联防:若生产与预生产的 openclaw --version 差超过一个 minor 且无变更单,应立即 pin 对齐或补单,禁止 silent drift。
冒烟失败回退时钟:维护窗口内冒烟任一步失败,十五分钟内必须执行已写好的 pin 回滚,超时则升级视为失败事件并冻结通道。
重任务错峰:升级前后各三十分钟禁止调度浏览器自动化与巨型构建,避免 Swap 与包管理器 IO 争用掩盖握手问题。
注意:上述阈值为工程沟通口径,不构成对具体云厂商 SLA 的承诺;跨区链路仍以你们实测为准。
仅依赖「出问题再全员重启」时,通道漂移与路径分叉会合成不可审计的生产状态,团队只能用反复重装来吸收成本。相对地,把 openclaw update、dry-run、pin 回滚与维护窗口写进同一套 Runbook,并在新加坡、日本、韩国、香港、美国东部与美国西部用日租或周租先跑样本,再决定是否把 stable 锁到月节奏,更符合短中期自动化项目的现金流与风险节奏。MESHLAUNCH 的 Mac Mini 云端租赁通常是更优解:它让你们可以在真实裸金属与真实链路上演练升级与回滚,而不是把风险堆在「生产唯一一台机」上临场发挥。
生产路径至少要在对等环境跑一次 dry-run 并留档。Gateway 热重载与多实例边界可对照 Gateway 热重载与多实例;下单与规格见 价格页。
对客与 7×24 默认 stable;需要新特性样本再上 beta 机;dev 仅隔离实验。Docker 与 install.sh 路径取舍见 双轨对照指南。
先比对 gateway 块与环境变量是否被包管理器覆盖,再核对端口与 plist。远程接入说明见 帮助中心。