OpenClaw 网关 npm ci、package-lock.json、可复现安装与租用云端 Mac 上的干净重建纪律(2026-05-09)
2026 年的社区 issue 流反复呈现同一种故障模式:网关停留在仍持有文件句柄的状态下,操作员却执行 npm install -g openclaw@latest,留下半重命名的目录树、缺失的插件运行时依赖,以及饿死 Telegram 长轮询的重启循环。 在香港、日本、韩国、新加坡与美国交付自动化的 MacLogin 租户应把网关视作与其他生产二进制同级:提交锁文件、用 npm ci 语义驱动安装、先停 launchd,并在模块解析缓存说谎时演练双重重启缓解。 这份 2026 年 5 月运维手册固化决策矩阵、停止顺序、九步 CI、可观测性检查与 FAQ,让 OpenClaw 在 Apple Silicon 租约上保持可预测。
可与 同伴依赖漂移与干净重建、Doctor 诊断手册 及 macOS 应用与 CLI 交接 对照阅读。专题:OpenClaw 专题索引。另见 帮助 与 定价。
即便 OpenClaw 看似「CLI 极简」,锁文件仍然重要
网关为传输层、插件与模型适配器打包传递依赖。若没有固定的依赖图,两台 semver 范围相同的机器也可能在 registry 发布后悄然分叉——这正是可复现 CI 要消灭的噩梦。
package-lock.json;应通过受控升级与代码评审重新生成。npm ci 对比 npm install(决策矩阵)
| 命令 | 网关上何时使用 | 若跳过会怎样 |
|---|---|---|
npm ci | CI 镜像、全新工作区、重建流水线 | 确定性安装;锁与 package 不一致时快速失败 |
npm install | 有意改动锁文件的探索式升级 | 若未重新提交,日本与美国节点之间漂移 |
npm install --package-lock-only | 准备在不执行脚本的 PR 中更新锁 | 仍需评审传递依赖跳动 |
将 Node.js 与 npm 与网关版本一并固定
在 CMDB 记录三元组 (node -v, npm -v, openclaw --version)。使用 Volta、asdf 或 MacPorts 钉版本,并与 OpenClaw 专题 中的 Node 版本指引对齐,使 CI 与租用 mini 运行相同引擎。
NODE_OPTIONS 与插件路径,重启即可继承钉死的工具链。触碰 npm 全局路径前先停 launchd
launchctl bootout gui/$UID/ai.openclaw.gateway(按你的 plist 调整标签)。- 通过
pgrep -fl openclaw确认没有残留node子进程。 - 至此才运行 npm 变更。
doctor 报告局部目录树时的干净重建流程
遵循同伴漂移文章的精神:删除 node_modules,用 npm ci 重装,重跑 openclaw doctor,并把 stdout 打进支持包。全局安装则镜像社区变通:重装前先移除损坏的 prefix 路径。
网关升级的九步 CI 运维手册
- 快照当前 plist、校验和与健康 JSON。
- 分支在 Git 中用语义版本标签管理锁文件更新。
- 构建使用
npm ci的临时 CI macOS runner。 - 测试 doctor、合成 webhook 与模型 ping。
- 暂存带不可变版本的构件到对象存储。
- 停止生产网关(按 launchd 政策)。
- 安装来自暂存构件(不要用漂浮的 latest)。
- 引导若健康抖动则执行两次(双重重启缓解)。
- 发布发行说明与回滚 tarball 位置。
针对陈旧模块解析的双重重启缓解
健康检查通过但运行时仍引用旧哈希时,短暂休眠后立即第二次执行 launchctl kickstart -k。记录症状,以免后继工程师把它误判为 TLS 或代理故障。
交叉链接:同伴依赖漂移文章对比本篇锁文件文章
漂移指南聚焦引爆依赖图;本文聚焦锁住依赖图。两者并用:日常构建上锁,上游发布冲突同伴而需要应急重建时再打开漂移文章。
跨区域网关推广的构件缓存
香港与美西租户在同一小时升级时,从公共 registry 拉两份相同 tarball 容易触发限速与抖动。把不可变构件提升到自有对象存储桶(S3 兼容、Artifactory 或 GitHub Release 资源),让每台租约按内容寻址 URL 拉取。在变更工单记录 SHA256,并与 package-lock.json 的 git SHA 并列,便于审计证明日本与新加坡节点执行了相同字节。
| 区域 | 建议缓存 | 回退 |
|---|---|---|
| HK / SG | 亚太桶副本 | 安装并发限制为每分钟 2 次 |
| JP / KR | 东京邻近边缘缓存 | 倾向夜间窗口安装 |
| US | 美东主 + 西岸镜像 | tarball 已缓存时使用 npm ci --prefer-offline |
npm ci 前校验签名——2026 年的供应链事件让校验和纪律不再是可选项。常见问题
还能用 install.sh 吗? 把脚本 curl 视为一次性引导——任何重复场景都应过渡到已提交的锁。
气隙安装怎么办? 用 npm pack 产物打包供应商 tarball,在 npm ci --offline 前校验 SHA256。
哪里租隔离网关? 对照 定价,把日本池与美国池拆开以隔离嘈杂升级。
Dependabot 应自动合并 OpenClaw 升级吗? 仅当 CI 已门禁 doctor、webhook echo 与插件图——否则仍以每周人工评审为佳。
OpenClaw 专题、帮助与区域容量
把锁文件政策发布在 OpenClaw 专题 的内部版块,让每个区域继承相同的停止顺序清单。首尔团队若需要与新加坡不同的插件集合,应拆分租约而不是在同一锁图上硬拗。