概述

Hermes Agent 的冷备(Cold Standby)方案:主机挂掉后,通过 OpenList 远程存储的加密备份包,在从机上恢复完整运行环境。整个过程只需一条命令。

架构:

1
2
3
4
5
6
7
8
9
10
11
主机                        从机(恢复目标)
┌─────────────┐ ┌──────────────┐
│ Hermes │ 每日 03:00 │ Hermes (空) │
│ TDAI Memory │ ───────→ │ TDAI Memory │
└──────┬──────┘ OpenList │ (待恢复) │
│ └──────────────┘

┌──────────────┐
│ OpenList │ ← 加密备份包
│ /aliYu/.../ │ hermes-full-*.tar.enc
└──────────────┘
  • 备份频率:每日 03:00(cron 自动执行)
  • 最大丢失窗口:≤ 24 小时
  • 备份格式 v2hermes-full-<YYYYMMDD_HHMMSS>.tar.enc(一个包 = Hermes 全部 + TDAI 记忆)

环境要求

项目 说明
系统 Linux(推荐同发行版)
Python ≥ 3.8
依赖 openssl, unzip
网络 能访问主机的 OpenList WebDAV

恢复流程

1. 复制恢复脚本

1
2
3
4
5
6
7
8
scp user@host:/opt/data/scripts/hermes-restore.py /opt/data/scripts/

# 配置加密密码
echo "your-encrypt-password" > ~/.hermes-backup-pass
chmod 600 ~/.hermes-backup-pass

# 或使用环境变量(优先级更高)
export HERMES_BACKUP_ENCRYPT_PASS="your-encrypt-password"

2. 配置 OpenList 访问

1
2
3
4
export OPENLIST_BASE_URL="http://10.0.0.2:5244"
export OPENLIST_USERNAME="xian"
export OPENLIST_PASSWORD="your-openlist-password"
export HERMES_BACKUP_OPENLIST_DIR="/aliYu/Backups/hermes/zk"

3. 查看可用备份

1
python3 /opt/data/scripts/hermes-restore.py --list

输出示例:

1
2
3
4
5
6
📂 远程备份列表:

1. [v2] hermes-full-2026-05-29-030017.tar.enc
日期: 2026-05-28 19:00 大小: 89MB
2. [v1] hermes-backup-2026-05-28-030032.zip.enc
日期: 2026-05-27 19:01 大小: 89MB
  • [v2] = 合并包(Hermes + TDAI 一体),推荐
  • [v1] = 旧格式(仅 Hermes 数据)

4. 执行恢复

方式 A — 交互式(默认)

1
python3 /opt/data/scripts/hermes-restore.py

自动查找最近备份并询问确认。

方式 B — 指定日期

1
python3 /opt/data/scripts/hermes-restore.py --date 2026-05-29

方式 C — 指定本地文件

1
python3 /opt/data/scripts/hermes-restore.py --file /tmp/hermes-full-xxx.tar.enc

5. 验证恢复结果

1
2
3
4
5
6
7
8
9
10
11
📋 恢复验证:
✅ config.yaml
✅ .env
✅ state.db
✅ sessions/
✅ skills/
✅ cron/jobs.json

✅ 恢复完成
直接启动: hermes
启动网关: hermes gateway run

格式兼容性

备份格式 说明
hermes-full-*.tar.enc (v2) 合并包,同时恢复 Hermes + TDAI
hermes-backup-*.zip.enc (v1) 旧格式,TDAI 需另从远程/本地恢复

恢复脚本自动识别两种格式,无需手动区分。


日常运维

手动运行备份

1
python3 /opt/data/scripts/hermes-full-backup.py

典型输出:

1
2
3
4
5
6
7
8
9
10
Hermes 全量备份(合并版)  2026-05-29 03:00
========================================
执行 hermes backup ... 完成
打包 TDAI 记忆 ... 完成 (1.2 MB)
打包合并包 ... 完成 (92.3 MB)
加密 ... 完成
文件: hermes-full-20260529_030017.tar.enc (13.7 MB)
上传 OpenList ... ✅

✅ 备份完成

密码管理

加密密码来源(优先级从高到低):

  1. 环境变量 HERMES_BACKUP_ENCRYPT_PASS
  2. 文件 ~/.hermes-backup-pass(chmod 600)

文件清单

路径 说明
/opt/data/scripts/hermes-full-backup.py 备份脚本(cron 每日 03:00)
/opt/data/scripts/hermes-restore.py 恢复脚本(手动执行)

备份包保留策略:

  • 本地:保留最近 3 份
  • 远程 (OpenList):保留最近 7 份
    | 旧格式清理:v2 备份上线后,首次运行自动清理远程的 v1 旧包

📝 本文由 AI 助手诺亚辅助生成