OpenClaw 配置备份与恢复策略
背景
OpenClaw 的 Git 仓库通常包含以下内容:
✅ 已备份的内容:
skills/- 自定义技能agents/- 子代理角色定义memory/- 记忆文件(日常日志 + 长期记忆)docs/- 文档资料AGENTS.md、SOUL.md、USER.md、HEARTBEAT.md等工作区配置文件
❌ 不备份的内容:
openclaw.json- 核心配置文件(含 API 密钥、频道凭证等敏感信息,被.gitignore排除)
核心痛点:换设备恢复 Git 备份后,所有技能、记忆、文档都在,但 openclaw.json 配置全部丢失(模型选择、子代理设置、频道开关、插件列表等),用户很难记住曾经做过哪些自定义修改。
解决方案
OpenClaw 自动维护一份 RESTORE.md —— 声明式的配置恢复指令文档。它随 Git 一起备份,新设备恢复后交给 OpenClaw 执行即可完整还原。
RESTORE.md 格式示范
## 子代理配置
在 openclaw.json 中配置:
- agents.defaults.subagents.maxConcurrent = 3
- agents.defaults.subagents.model = "your-model-name"
...
## 模型配置
在 openclaw.json 中配置:
- agents.defaults.model.primary = "your-primary-model"
...
## 频道配置 [含敏感项]
在 openclaw.json 中配置:
- channels.feishu.appId = [询问用户:飞书 appId]
- channels.feishu.appSecret = [询问用户:飞书 appSecret]
...
格式规则:
- 按领域分
##标题:子代理、模型、工具、频道、插件 - 每个 section 描述当前状态,不是变更历史
- 敏感项(API 密钥、密码等)用
[询问用户:描述]占位,恢复时交互获取 - 不记录的配置:gateway.、meta.、commands.、session.、messages.*(安装时已确定)
更新机制
触发时机
| 时机 | 说明 |
|---|---|
| 实时更新 | 用户通过对话修改配置时,立即同步更新 RESTORE.md |
| 备份前校验 | 每次 git commit/push 前,自动对比 openclaw.json 与 RESTORE.md,有差异先更新再提交 |
更新方式
- 找到对应
##section → 整体替换 - 不存在 → 末尾新增
- 更新"最后更新"日期
- 禁止:只做加法、保留历史值、同一配置项多版本
现有OpenClaw备份配置及全新OpenClaw恢复的完整流程
步骤一:现有设备部署策略
在正在使用的 OpenClaw 终端执行一键部署指令(见下文),完成以下操作:
- 创建
RESTORE.md文件 - 在
AGENTS.md中添加配置维护规则 - 创建
docs/BACKUP-STRATEGY.md简化版规则
部署后,对 OpenClaw 说:
"读取你的 openclaw.json,填充 RESTORE.md"
OpenClaw 会自动解析当前配置,生成 RESTORE.md。之后执行 git add . && git commit && git push 完成备份。
步骤二:新设备安装 OpenClaw
- 安装 OpenClaw:按照官方文档安装新设备
- 手动调试:确保对话功能正常(测试模型、频道等基础功能)
- 上传备份文档:将 Git 仓库克隆到
~/.openclaw/workspace/,或手动复制备份文件
步骤三:对话框内激活恢复
在新设备的对话框中对 OpenClaw 说:
"按照 RESTORE.md 恢复配置"
OpenClaw 会:
- 逐个 section 处理
- 普通配置直接写入 openclaw.json
- 敏感项(API 密钥等)逐个询问是否需要配置,可跳过
- 全部完成后重启 gateway
日常使用
- OpenClaw 每次新会话自动读取 AGENTS.md,策略即刻生效
- 从 Git 取回备份后,建议手动触发一次校验:
"读取你的 openclaw.json,对照 RESTORE.md,检查差异并更新"
- 之后完全自动化
一键部署指令
在 OpenClaw 终端执行以下指令:
W=~/.openclaw/workspace && mkdir -p "$W/docs" && \
grep -q '配置文档维护' "$W/AGENTS.md" 2>/dev/null || cat >> "$W/AGENTS.md" << 'A'
## 配置文档维护(RESTORE.md)
你负责维护 `RESTORE.md`,这是一份可自执行的配置恢复指令文档。完整规则详见 `docs/BACKUP-STRATEGY.md`。
日常只需记住:
1. **实时**:当用户要求修改 openclaw.json 配置时,按 `docs/BACKUP-STRATEGY.md` 中的规则同步更新 RESTORE.md
2. **备份前校验**:每次执行 git commit/push 前,先读取 openclaw.json 与 RESTORE.md 对比,有差异则先更新再提交
A
cat > "$W/docs/BACKUP-STRATEGY.md" << 'B'
# OpenClaw 配置备份策略
## RESTORE.md 格式
- 声明式,按领域分 `## ` section:子代理、模型、工具、频道、插件
- 每个 section 描述当前状态,不是变更历史
- 敏感项(API 密钥等)用 `[询问用户:描述]` 占位
## 更新规则
- 触发:对话修改配置时实时更新 + git commit/push 前自动校验
- 方式:找到对应 `## ` section 整体替换;不存在则末尾新增;更新最后更新日期
- 禁止:只做加法、保留历史值、同一配置项多版本
## 不记录的配置(安装时已确定)
- gateway.*、meta.*、commands.*、session.*、messages.*、cron.enabled
## 恢复执行
用户说"按照 RESTORE.md 恢复配置"时:
1. 逐个 section 处理
2. 普通 section → 直接写入 openclaw.json
3. 含敏感项 section → 逐个询问"是否需要配置?",可跳过
4. 用户选择配置的项,交互获取密钥
5. 全部完成后重启 gateway
B
[ -f "$W/RESTORE.md" ] || cat > "$W/RESTORE.md" << 'C'
# OpenClaw 配置恢复指令
> 本文档由 OpenClaw 自动维护,反映 openclaw.json 中用户主动修改的当前状态。
> 最后更新:(待首次更新)
C
echo "deploy complete"