OpenClaw Gateway Rescue v2.1
外部看门狗 + 自动恢复系统。通过 systemd(Linux)或 LaunchAgent(macOS)管理 Gateway 进程,3次启动失败后自动从备份恢复。
核心特性(v2.1 新增):
- 🔧 自动恢复机制:3次启动失败后自动解压最新备份并重启网关
- 🛡️ 恢复脚本独立存放:
/usr/local/bin/openclaw-gateway-restore.sh,不受 git/upgrade 影响 - 💾 备份管理:最多保留 2 个备份,支持手动和升级前触发
- 📊 恢复日志:
$OPENCLAW_DIR/gateway-rescue/restore.log
支持平台:
- Linux — systemd service(含 OnFailure 恢复 service)
- macOS — launchctl LaunchAgent(含计数恢复 wrapper)
安装时自动检测平台,无需手动选择。
用法
所有操作通过 exec 执行 bash 调用脚本:
安装(一键部署)
bash ~/.openclaw/workspace/skills/gateway-rescue/scripts/install.sh
自动检测平台、OPENCLAW_DIR、openclaw 二进制。安装后:
- Linux: 部署 gateway service + restore service + 恢复脚本
- macOS: 部署 LaunchAgent + 恢复 wrapper + 恢复脚本
- 自动创建首次备份
卸载
bash ~/.openclaw/workspace/skills/gateway-rescue/scripts/uninstall.sh
停止服务、移除 unit/plist、删除恢复脚本。不删除日志和备份。
查看状态
bash ~/.openclaw/workspace/skills/gateway-rescue/scripts/status.sh
显示:服务状态、恢复脚本、备份文件、恢复日志、Gateway 端口。
故障测试
bash ~/.openclaw/workspace/skills/gateway-rescue/scripts/test.sh
模拟 Gateway 停止 → 等待自动恢复 → 验证端口。
手动备份
bash ~/.openclaw/workspace/skills/gateway-rescue/scripts/backup.sh
创建完整备份(~/.openclaw 打包),最多保留 2 个。
恢复机制
Linux (systemd)
Gateway 启动失败 3 次 (StartLimitBurst=3)
→ systemd 触发 OnFailure
→ openclaw-gateway-restore.service 启动
→ /usr/local/bin/openclaw-gateway-restore.sh 解压最新备份
→ reset-failed + restart gateway service
macOS (launchd)
launchd-wrapper.sh 每次启动计数
→ 连续失败 3 次
→ 调用 /usr/local/bin/openclaw-gateway-restore.sh
→ 解压备份后重置计数
→ launchd KeepAlive 自动重试
恢复脚本
路径:/usr/local/bin/openclaw-gateway-restore.sh
- 放在升级范围之外,不受
openclaw upgrade/git pull影响 - 有并发锁防止重复恢复
- 完整日志记录到
$OPENCLAW_DIR/gateway-rescue/restore.log - 备份来源:
$HOME/openclaw-backups/openclaw-full-backup-*.tar.gz
文件结构
gateway-rescue/
├── SKILL.md
├── scripts/
│ ├── install.sh # 安装 unit + 恢复脚本 + 首次备份
│ ├── uninstall.sh # 卸载所有 + 删除恢复脚本
│ ├── status.sh # 状态查看(含备份和恢复日志)
│ ├── test.sh # 故障测试
│ ├── backup.sh # 手动/升级前备份(最多2个)
│ ├── restore.sh # 恢复脚本源码(安装时复制到 /usr/local/bin/)
│ └── launchd-wrapper.sh # macOS 计数+恢复 wrapper
└── units/
├── openclaw-gateway.service # Gateway service(含 OnFailure)
├── openclaw-gateway-restore.service # 恢复 service(Linux only)
└── com.openclaw.gateway.plist # macOS LaunchAgent
