返回顶部
b

boot-resume启动恢复

|

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.1.1
安全检测
已通过
151
下载量
免费
免费
1
收藏
概述
安装方式
版本历史

boot-resume

启动恢复

网关重启后零协作的会话恢复。无需检查点、无需钩子、无需代理参与——只需读取证据,从中断处继续执行。

问题

当网关重启时,任何正在进行的代理轮次都会在执行中途终止。会话历史记录保存在磁盘上,但代理不知道需要继续执行。用户必须手动告诉每个中断的会话恢复执行。

基于检查点的方法要求代理在终止之前保存状态。意外终止(SIGKILL、OOM、断电)完全绕过了这一机制。

解决方案

一个确定性的shell脚本通过systemd的ExecStartPost在每个网关启动时运行。检测循环中无需LLM参与。

┌─────────┐ ┌──────────┐ ┌──────────┐
│ 扫描 │ ──▶ │ 检测 │ ──▶ │ 恢复 │
│ 会话 │ │ JSONL │ │ 添加cron │
│ .json │ │ 尾部 │ │--系统事件│
└─────────┘ └──────────┘ └──────────┘

  1. 1. 扫描 — 查找最近20分钟内更新的会话
  2. 检测 — 读取最后5行JSONL以分类会话状态
  3. 恢复 — 安排一次性openclaw cron add --system-event --wake now注入继续提示

关键洞察:JSONL会话文件已包含检测中断所需的所有证据——无需预先保存。

检测规则

最后JSONL条目状态含义
toolResult已中断工具已返回,代理未处理
assistant(空文本)
已中断 | 工具调用已分发,在响应前被终止 | | user(非平凡) | 已中断 | 消息已接收,从未处理 | | assistant(含文本) | 已完成 | 会话正常结束 — 跳过 | | user(平凡:ok、表情符号) | 平凡 | 无待处理的实质性请求 — 跳过 |

安装

一键安装

bash
bash {baseDir}/install.sh

部署三个组件:

  • - boot-resume-check.sh → ~/.openclaw/workspace/scripts/
  • boot-resume.conf → systemd drop-in(每次网关启动时触发脚本)
  • boot-resume-wake.service → systemd用户服务(系统从睡眠/挂起唤醒时触发脚本)

手动安装

bash
cp {baseDir}/scripts/boot-resume-check.sh ~/.openclaw/workspace/scripts/
chmod +x ~/.openclaw/workspace/scripts/boot-resume-check.sh

mkdir -p ~/.config/systemd/user/openclaw-gateway.service.d
cp {baseDir}/templates/boot-resume.conf ~/.config/systemd/user/openclaw-gateway.service.d/
cp {baseDir}/templates/boot-resume-wake.service ~/.config/systemd/user/

systemctl --user daemon-reload
systemctl --user enable boot-resume-wake.service

验证

bash
systemctl --user restart openclaw-gateway
sleep 20
cat /tmp/openclaw/boot-resume.log

预期输出:

[boot-resume] now=... cut=... (20分钟窗口)
[boot-resume] 扫描代理: main
[boot-resume] 候选: 0 (agent=main)
[boot-resume] 完成

测试

  1. 1. 发送一条触发多步骤任务的消息(网络搜索、代码分析等)
  2. 等待代理开始处理(进行中的工具调用)
  3. systemctl --user restart openclaw-gateway
  4. 代理在约35秒内自动恢复

斜杠命令

当作为/boot-resume调用时,使用--no-wait参数运行脚本以跳过启动延迟:

bash
bash {baseDir}/scripts/boot-resume-check.sh --no-wait

向用户报告结果:哪些会话已恢复,或未找到任何会话。

配置

变量默认值描述
WINDOW_MINUTES20向后扫描中断会话的时间范围
DELAY
20s | 注入恢复事件前的延迟 |

在scripts/boot-resume-check.sh顶部编辑。

特性

  • - 双重触发 — 覆盖网关重启(ExecStartPost)和系统睡眠/唤醒(systemd sleep.target)
  • 多代理支持 — 扫描~/.openclaw/agents/下的所有代理,不仅限于main
  • 智能过滤 — 自动跳过系统、心跳、cron和子代理会话
  • 去重 — 尊重restart-resume.json以避免对计划重启进行双重恢复
  • 日志轮转 — 自动截断日志至1000行
  • 错误可见性 — Python和cron错误会被记录,不会吞没
  • 唯一作业名称 — 基于时间戳,防止快速重启时的冲突

对比

方法需要预先保存能抵御SIGKILL无需LLM
检查点/快照文件
重启前状态转储
是 | 否 | 否 | | 会话历史重放 | 是 | 部分 | 否 | | 事后JSONL检测(本技能) | | | |

日志

输出:/tmp/openclaw/boot-resume.log

每次运行记录:时间戳、扫描窗口、候选数量、每个会话的状态,以及是否已武装恢复作业。

局限性

  • - 20分钟扫描窗口(可配置)——空闲时间超过此值的会话不会恢复
  • 恢复提示是通用的——代理依赖会话上下文实现连续性
  • Telegram/Discord消息队列已处理未处理的消息——本技能针对执行中中断
  • 需要systemd(Linux);macOS用户需要手动设置launchd

卸载

bash
rm ~/.config/systemd/user/openclaw-gateway.service.d/boot-resume.conf
systemctl --user disable boot-resume-wake.service 2>/dev/null
rm ~/.config/systemd/user/boot-resume-wake.service
systemctl --user daemon-reload
rm ~/.openclaw/workspace/scripts/boot-resume-check.sh
rm -rf ~/.openclaw/workspace/skills/boot-resume

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 boot-resume-1776088921 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 boot-resume-1776088921 技能

通过命令行安装

skillhub install boot-resume-1776088921

下载

⬇ 下载 boot-resume v1.1.1(免费)

文件大小: 10.06 KB | 发布时间: 2026-4-17 14:14

v1.1.1 最新 2026-4-17 14:14
Add files manifest to SKILL.md metadata for security scan verification

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部