claw-saver

Polar Sponsor
爱发电 赞助
.NET 9.0

将 ~/.openclaw 完整备份至 Git 仓库,支持定时备份、交互式恢复以及用于大模型文件的 Git LFS。

爪子保护器 : 将 OpenClaw 环境( ~/. openclaw) 全部备份到 Git 仓库

功能概述

爪子保护器 : 将 OpenClaw 环境( ~/. openclaw) 全部备份到 Git 仓库是一项面向实际任务的技能,主要用于支持预定备份、 交互恢复和网络故障的指数备份;Features.;

核心要点

  • Fulll。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。

使用与执行

该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

claw-saver

将整个 OpenClaw 环境(~/.openclaw)备份至 Git 仓库。支持定时备份、交互式还原,以及在网络失败时采用指数退避重试策略。

功能特性

  • 完整备份:备份 ~/.openclaw 下所有内容,包括 agents、skills、配置文件、知识库(kb)及 agent memory
  • 智能排除:仅忽略明确无害的运行时产物(如日志、缓存、node_modules、canvas)
  • 定时备份:支持可配置的 cron 调度(默认每 5 小时执行一次)
  • 原子化提交:采用双提交策略,确保备份文件与还原指南(RESTORE.md)始终一致
  • Git LFS 支持:大型模型文件自动通过 Git LFS 追踪
  • 指数退避:推送失败时按 60s → 120s → 240s 延迟重试
  • 陈旧锁保护:自动检测并清理已失效的备份进程锁
  • 动态 .gitignore:基于实际目录结构扫描生成排除规则,不依赖硬编码假设

快速开始

# 1. 配置 Git 访问令牌
openclaw config set env.OPENCLAW_BACKUP_GIT_TOKEN 

# 2. 设置目标仓库地址
# 编辑 ~/.openclaw/skills/claw-saver/config.json,设置 "repo" 字段
# 示例:"repo": "https://cnb.cool/yourname/your-repo"

# 3. 执行首次备份
openclaw backup run

# 4. 启用自动定时备份(每 5 小时一次)
openclaw backup enable-cron

CLI 命令

openclaw backup run            # 立即执行一次备份
openclaw backup status         # 显示最近一次备份时间及对应 commit hash
openclaw backup restore        # 从历史 commit 中交互式还原(interactive)
openclaw backup enable-cron    # 启用定时备份
openclaw backup disable-cron   # 禁用定时备份
openclaw backup set-cron  # 设置自定义调度表达式(例如 "0 */2 * * *")

配置

编辑 ~/.openclaw/skills/claw-saver/config.json:

{
  "repo": "https://cnb.cool/yourname/your-repo",
  "cron": "0 */5 * * *",
  "lfs_threshold_mb": 10,
  "lfs_extensions": [".bin", ".gguf", ".safetensors", ".pt", ".pth", ".onnx", ".msgpack", ".model"],
  "push_retries": 3,
  "push_retry_interval_ms": 60000
}
配置项 默认值 说明
repo (必填) Git 仓库 URL
cron 0 */5 * * * 备份调度表达式(cron 格式,使用系统本地时区)
lfs_threshold_mb 10 大于该大小(MB)的文件将通过 Git LFS 追踪
lfs_extensions (见上方 JSON 示例) 需由 Git LFS 追踪的文件扩展名列表
push_retries 3 推送失败时最大重试次数
push_retry_interval_ms 60000 初始重试延迟(毫秒),后续每次翻倍

备份内容

除明确无害的运行时产物外,全部备份:

# === 已备份内容 ===
agents/              # Agent 配置、认证信息、会话数据
credentials/         # 渠道凭证与密钥
identity/           # 设备身份密钥
kb/                 # 知识库(用户文档 + 向量数据库)
lts/                # 长期脚本(如清理、OOM 防护)
openclaw.json       # 核心配置(含 tokens)
skills/             # 所有已安装 skills 及其配置
workspace-* /       # Agent 工作区、memory、learnings
**/.learnings/      # Agent 自优化日志
**/.openclaw/       # 每个工作区的 OpenClaw 状态
~/.openclaw/ 下所有其他目录

排除内容(仅限运行时产物)

以下内容为临时性或可重建数据,明确不参与备份:

.git/               # Git 仓库本身(仅本地存在)
logs/               # 运行时日志
canvas/             # Canvas 运行时状态
media/             # 已上传的媒体文件
npm/               # NPM 包(可通过 npm install 重建)
cron/runs/         # Cron 执行历史
**/node_modules/   # 依赖包(可通过 npm install / pip install 重建)
**/__pycache__/     # Python 字节码缓存
**/.cache/          # 通用缓存
**/dreaming/        # 短期记忆状态
*.tmp, *.bak        # 系统临时文件
.backup.lock        # 运行时锁文件

用户数据原则:如有疑问,默认备份。凭证(credentials)、身份密钥(identity keys)、知识库(kb)、agent memory 和学习所得数据(learned data)均被完整保留。

安全性

  • 令牌隔离:Git 访问令牌仅存储于 ~/.openclaw/.git/config(本地,永不推送到备份仓库)和 cron 环境变量中(仅限本机系统)
  • 提交中不含令牌:还原指南(RESTORE.md)与提交信息中仅包含仓库 URL,绝不包含访问令牌
  • 屏蔽 stderr 输出:将 git push 的 stderr 重定向,防止错误信息中泄露令牌
  • 排除 .git 目录:.git/ 已加入 .gitignore,因此其中包含远程 URL(含令牌)的 .git/config 永远不会被备份

还原操作

openclaw backup restore

该命令会将仓库克隆至临时目录,检出指定 commit,并将文件复制回 ~/.openclaw。运行中的备份进程不受影响(skills/claw-saver 在还原期间持续运行)。

还原完成后,请执行:

openclaw gateway restart

还原指南

每次备份均会在对应 commit 中嵌入一份 RESTORE.md 文件,其中包含:精确的 commit hash、克隆指令,以及本次备份所排除的文件列表,便于您识别哪些内容需手动恢复。

架构设计

skills/claw-saver/
  lib/
    backup.js      # 核心编排逻辑(加锁、暂存、提交、推送)
    git.js         # Git 操作封装(init、add、commit、push、clone)
    lfs.js         # Git LFS 初始化与文件追踪逻辑
    restore.js     # 交互式还原主逻辑
  scripts/
    cli.js         # CLI 入口(run/status/restore/cron 等命令)
  config.json      # 用户配置(仓库地址、cron 表达式、LFS 设置等)

锁机制

通过基于原子化 mkdir 的锁防止并发备份:

  • 锁目录路径:~/.openclaw/.backup.lock/(内部含 PID 文件)
  • 若检测到陈旧锁(持有者 PID 已不存在),则强制接管
  • 无论备份成功或失败,锁均通过 finally{} 块确保释放

相关专题

更多
Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

0

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

0

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

0

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习