优雅重启 Gateway。解决重启后丢失会话上下文的问题,重启前设置一次性 cron 任务,重启后自动发送消息到主会话恢复任务。默认 10 秒后唤醒。触发词:重启、restart

🔄 智能自唤醒·会话零中断

解决 Gateway 重启后会话中断问题,通过预置定时任务实现自动唤醒恢复,保障任务连续性

收藏
4.8k
安装
1.2k
版本
1.0.4
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

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 任务堆积 | 添加重启频率限制或互斥锁机制 |

优雅重启 Gateway。解决重启后丢失会话上下文的问题,重启前设置一次性 cron 任务,重启后自动发送消息到主会话恢复任务。默认 10 秒后唤醒。触发词:重启、restart 内容

手动下载zip · 4.8 kB
CHANGELOG.mdtext/markdown
请选择文件