Install
openclaw skills install @luffertlu/pub-self-upgrade零停机升级 OpenClaw:查 release notes → 主公确认 → 旁路备份 → npm install → 重启 + 回滚兜底
openclaw skills install @luffertlu/pub-self-upgrade零停机升级 OpenClaw。适用于以下指令:
查 release notes → 主公确认无 breaking change →
旁路备份(安全锚点)→ npm install -g(不用本地 build)→
修正 systemd Node 路径 → 更新 systemd 版本号 → 重启 + 健康检查 →
失败则从备份回滚 / 成功则自动清理
特点:
Restart=always 自动恢复| 项目 | 说明 |
|---|---|
| 操作系统 | Linux(WSL2 亦可) |
| Node.js | 至少一个版本满足新版 openclaw 的 engines.node 要求 |
| npm | 任意(但需要能访问 npm registry) |
| service 管理 | systemd user 模式 |
| 磁盘空间 | 至少 2G 可用 |
| 网络 | 能访问 registry.npmjs.org 和 api.github.com |
npm install -g 全局安装的openclaw-gateway.service)$HOME/.npm-global/systemctl --user 权限从 GitHub API 获取目标版本的 release notes
展示给主公:
询问主公:
新版本 vX.Y.Z 的 release notes 如上。 是否有 breaking changes 需要你手动操作?(密码重认证等) 现在升级还是等你有空?
如果主公说"现在升"且无大问题 → 执行阶段 2
如果主公说"稍后"/"晚上升" → 设置 cron 任务定时执行(isolated agentTurn)
如果有 breaking change 需要主公先处理 → 中止,告知需要处理的内容
运行升级脚本(全自主、无交互)。
升级脚本内容(scripts/upgrade-openclaw.sh):
⚠️ 脚本较长,建议直接查看文件:
~/.openclaw/workspace/scripts/upgrade-openclaw.sh
核心步骤:
engines.node,检查 systemd 当前使用的 Node 是否满足要求which -a node 及各常见安装路径寻找可用版本cp -r openclaw → openclaw-fallbackDescription=OpenClaw Gateway (vX.Y.Z) 和 OPENCLAW_SERVICE_VERSION= 两种格式读取日志最后几行,向主公汇报:
| 机制 | 说明 |
|---|---|
| Node 兼容性预检 | npm pack 下载包 → 解析 engines.node → 检查 which -a node 中各版本 → 无兼容版本则中止 |
| systemd Node 路径自动修正 | 检测 unit 中 ExecStart 的 node 路径,不满足要求时自动切换到兼容版本 |
| 旁路备份 | cp -r openclaw → openclaw-fallback,完整安全锚点 |
| 自动回滚 | 健康检查失败后从 fallback 恢复 + 恢复旧 Node 路径 + 重启旧版 |
| systemd 兜底 | Restart=always + StartLimitBurst=5 |
| 日志落盘 | 所有输出写日志文件,不依赖终端 |
| 人工确认 | 必须先展示 release notes,主公确认后再执行 |
| 定时执行 | 通过 cron 支持指定时间自动升级 |
脚本会自动检测并提示:
❌ 系统中找不到满足 >=22.22.3 <23 || >=24.15.0 <25 || >=25.9.0 的 Node.js 版本!
❌ 当前 node 版本: v22.22.1
❌ 请先升级 Node.js 后再尝试升级
升级 Node 后重试即可。
旧脚本写死 /usr/bin/node,v2 开始会自动检测 unit 中的路径并修正。如果系统中有多个版本的 Node(如 /usr/bin/node v22.22.1 和 /usr/local/bin/node v25.9.0),脚本会优先选择满足引擎要求的版本。
部分版本可能改动了认证机制。如果升级后 WebChat 提示密码错误:
~/.openclaw/openclaw.json 中的 gateway password 配置systemctl --user status openclaw-gateway
journalctl --user -u openclaw-gateway -n 50
rm -rf ~/.npm-global/lib/node_modules/openclaw
cp -r ~/.npm-global/lib/node_modules/openclaw-fallback ~/.npm-global/lib/node_modules/openclaw
systemctl --user restart openclaw-gateway
~/.openclaw/workspace/scripts/upgrade-openclaw.shnpm pack → 读取 engines.node → 检查 which -a node 各版本Description=OpenClaw Gateway (vX.Y.Z) 和 OPENCLAW_SERVICE_VERSION=