Install
openclaw skills install self-update-zero-downtime零停机升级 OpenClaw:查 release notes → 主公确认 → 旁路备份 → npm install → 重启 + 回滚兜底
openclaw skills install self-update-zero-downtime零停机升级 OpenClaw。适用于以下指令:
查 release notes → 主公确认无 breaking change →
旁路备份(安全锚点)→ npm install -g(不用本地 build)→
更新 systemd 版本号 → 重启 + 健康检查 →
失败则从备份回滚 / 成功则自动清理
特点:
Restart=always 自动恢复| 项目 | 说明 |
|---|---|
| 操作系统 | Linux(WSL2 亦可) |
| Node.js | ≥ 22 |
| npm | 任意(需要能访问 npm registry) |
| service 管理 | systemd user 模式(非必需,无 systemd 仅替换代码) |
| 磁盘空间 | 至少 2G 可用 |
| 网络 | 能访问 registry.npmjs.org 和 api.github.com |
npm install -g 全局安装的(不是 git checkout / 手动构建)systemctl --user 权限npm config get prefix 返回用户可写的目录)脚本会探测安装方式,以下情况会中止并提示:
| 情况 | 检测方式 | 处理 |
|---|---|---|
| npm global install(推荐) | 代码目录含 package.json,无 .git | ✅ 正常升级 |
| git checkout | 代码目录含 .git | ❌ 中止,提示用 openclaw update |
| 运行目录 ≠ npm global 目录 | systemd ExecStart vs npm root -g 不一致 | ❌ 中止,需先统一 |
| npm prefix 不可写 | npm config get prefix 返回不可写路径 | ❌ 中止,提示配置用户级 prefix |
| 运行目录无 package.json | 目录不存在或为空架子 | ❌ 中止 |
npm config set prefix "$HOME/.npm-global"
# 确保 $HOME/.npm-global/bin 在 PATH 中
# 然后把 openclaw binary 链接过去:
ln -sf "$HOME/.npm-global/lib/node_modules/openclaw/openclaw.mjs" "$HOME/.npm-global/bin/openclaw"
# 更新 systemd unit 中的 PATH 后重启服务
systemctl --user show <service> -p ExecStart 反推实际运行的代码目录npm root -g 获取 npm global 安装目录完整 cp -r 运行目录到 {运行目录}-fallback。
npm install -g openclaw@latest → 验证版本 → 检查入口文件(dist/*.js 或 openclaw.mjs)→ 如需同步到非一致的运行目录。
更新 unit 文件 OPENCLAW_SERVICE_VERSION。
systemctl --user restart → 最长等 60s。
| 机制 | 说明 |
|---|---|
| 旁路备份 | cp -r 运行目录到 {目录}-fallback |
| 自动回滚 | 健康检查失败后从 fallback 恢复 + 重启旧版 |
| systemd 兜底 | Restart=always + StartLimitBurst=5 |
| 日志落盘 | 所有输出写日志文件 |
| 人工确认 | 必须展示 release notes,主公确认后再执行 |
| 兼容性校验 | 检测 git checkout / 目录不一致 / prefix 不可写,提前中止 |
部分版本可能改动了认证机制。如果升级后 WebChat 提示密码错误:
~/.openclaw/openclaw.json 中的 gateway password 配置systemctl --user status openclaw-gateway
journalctl --user -u openclaw-gateway -n 50
rm -rf $(npm root -g)/openclaw
cp -r $(npm root -g)/openclaw-fallback $(npm root -g)/openclaw
systemctl --user restart openclaw-gateway
clawhub install self-update-zero-downtime