核心用法
graceful-restart 是 OpenClaw 生态中的基础设施型 skill,专门解决 Gateway 重启导致的会话上下文丢失问题。当用户触发"重启"指令或 Gateway 需要重启时,该 skill 通过预置一次性 cron 任务实现"自唤醒"机制。
执行流程:
1. 在当前会话中创建一个 10 秒后触发的一次性 cron 任务(可自定义延迟)
2. 执行 Gateway 重启
3. 重启完成后,heartbeat 轮询捕获 cron 事件
4. 通过 --session main --system-event 向主会话投递唤醒消息
5. 自动恢复任务或通知用户继续
命令行调用示例:
# 基础重启 node ~/.openclaw/workspace/skills/graceful-restart/graceful-restart.js # 带任务描述(重启后继续指定工作) node ~/.openclaw/workspace/skills/graceful-restart/graceful-restart.js --task "继续安装 Python 包" # 自定义延迟(60 秒后唤醒) node ~/.openclaw/workspace/skills/graceful-restart/graceful-restart.js --task "继续任务" --delay 60
显著优点
- 会话零丢失:彻底解决传统
exec openclaw gateway restart导致的主会话中断问题 - 完全自动化:无需用户手动发送消息触发恢复,降低操作负担
- 灵活可配置:支持自定义延迟时间和任务描述,适应不同场景
- 资源自清理:使用
--delete-after-run确保一次性 cron 任务自动销毁,无残留 - 架构规范:强制替代 exec 重启方式,统一 Gateway 重启入口
潜在缺点与局限性
- 单点依赖:依赖 openclaw CLI 和 cron 子系统,若 cron 服务异常则唤醒失败
- 时间窗口风险:默认 10 秒延迟需匹配 Gateway 实际启动时间,过短可能错过唤醒,过长增加等待
- 无状态验证:无法检测重启是否成功,仅依赖时间触发,若重启失败会形成"幽灵任务"
- 权限要求:需具备 cron 创建权限和 Gateway 重启权限,受限环境可能无法使用
- 调试困难:system event 的投递链路涉及多个组件,故障排查较复杂
适合人群
- OpenClaw 重度用户:频繁修改配置、安装 skill 或更新 Gateway 的用户
- 长任务执行者:运行耗时任务(如批量部署、数据处理)且需保持会话连续性的场景
- 自动化运维开发者:构建无人值守工作流,需要可靠重启机制保障 SLA
常规风险
| 风险类型 | 说明 | 缓解措施 |
|---------|------|---------|
| 唤醒失败 | Gateway 启动超时导致 cron 事件投递失败 | 增大 `--delay` 参数,或检查 Gateway 启动日志 |
| 任务残留 | 极端情况下 `--delete-after-run` 未生效 | 定期清理 `~/.openclaw/cron/` 目录 |
| 误用风险 | 开发者可能习惯性使用 `exec restart` | 严格遵循文档,在 CI/CD 中配置 lint 规则拦截 |
| 并发冲突 | 高频重启可能导致 cron 任务堆积 | 添加重启频率限制或互斥锁机制 |