适合谁:在生产环境中长期运行 Hermes Agent,把 Telegram/QQ 网关、定时巡检、业务脚本和个人记忆库全部托付给它,极度害怕服务器突发报废、宕机或搬家导致心血化为乌有的小白运维与技术极客。

支持系统:Debian 11/12/13、Ubuntu 20.04/22.04/24.04 LTS 等主流 Linux 服务器通用。

耗时预期:约 10 ~ 15 分钟(跟着标准流程走,一台全新裸机瞬间满血复活)。

做完你将得到:彻底参透 Hermes Agent 的底层状态存储拓扑;掌握“本地零留存 + 异地快照冷备”的标准灾备范式;学会任意突发灾难下 15 分钟内在新机器上完成记忆、网关、模型渠道与定时任务的 100% 无损自愈!

⚠️ 全程唯一保命铁律:
在新机器拉起网关之前,必须彻底掐死旧机器上的旧实例! Telegram 官方机制严禁同一 Bot Token 多处同时长轮询,否则会触发致命的 409 冲突死循环。


🧭 核心概念:搞懂 Hermes 的“躯壳与灵魂”(大白话顿悟)

很多新手以为迁移或恢复 Agent 需要像克隆虚拟机一样把整台服务器搬过去,其实它的架构设计极其优雅:

TEXT
┌─────────────────────────────────────────────────────────────┐
│ 🤖 躯壳(随时可换):Hermes 运行引擎                          │
│    - 官方全局命令(`hermes` CLI)、Python 虚拟环境与依赖;    │
│    - 在任何全新机器上,跑一行官方脚本 1 分钟即可重新生成。    │
├─────────────────────────────────────────────────────────────┤
│ 🧠 灵魂(绝对不能丢):/root/.hermes/ 隐藏目录               │
│    - 🔑 凭据中心(`.env`):模型 API Key、Telegram Bot Token; │
│    - ⚙️ 配置中枢(`config.yaml`):模型路由、工具开关、网关配置; │
│    - 📜 认知记忆(`memories/`):个人设定、长期偏好与运维经验; │
│    - 📦 技能资产(`skills/`):所有自动化工具与战术脚本;      │
│    - 💾 会话数据库(`state.db`):历史所有对话、任务与上下文。 │
└─────────────────────────────────────────────────────────────┘
  • 大白话:恢复 Hermes,本质上就是**“在全新机器上造一个新躯壳,然后把备份的灵魂注入进去”**!只要 ~/.hermes/ 备份在手,你在全世界任何一台新 VPS 上都能 15 分钟满血复活。

📋 开始前的准备清单(缺一项都别往下走)

  • 一台全新的云服务器(VPS):拥有 root 登录权限的干净系统;
  • 一份完整的全量备份包:例如存放在异地网盘或备用机的 hermes-full-2026xxxx.tar.gz;
  • 旧机器已关机或已停止网关:旧机器执行 systemctl stop hermes-gateway,确保 Bot 处于离线状态。

第 1 步:在新机器上快速安装全新 Hermes 躯壳

💻 【你本地的电脑】 打开终端连入全新服务器,进入 🖥️ 【服务器窗口】。

整段粘贴执行官方一键安装引擎,生成全新的运行环境:

BASH
# 1. 执行官方一键安装脚本
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

# 2. 检查安装状态
command -v hermes
hermes --version
  • ✅ 成功标志:终端打印出 hermes version v0.x.x,证明新机器上的运行引擎已经就位!

第 2 步:拉取并解压你的“灵魂备份包”

我们需要将异地存储的完整状态包搬运到新机器上,并执行原子化目录替换(先备份当前空目录,再放入真灵魂,保留后悔药)。

🖥️ 【服务器窗口】 假设你的备份包已经下载到新机器的 /root/hermes-full-backup.tar.gz,执行以下解包命令:

BASH
# 1. 创建安全解压临时工作区
mkdir -p /tmp/hermes-restore && cd /tmp/hermes-restore

# 2. 解压备份包
tar -zxf /root/hermes-full-backup.tar.gz

# 3. 验证解压产物必须包含完整的 .hermes 目录
if [ ! -d "/tmp/hermes-restore/.hermes" ]; then
    echo "[✗] 备份包结构异常,未找到 .hermes 核心目录!"
    exit 1
fi

# 4. 原子化替换(先把新装的空目录挪开备份,绝不直接覆盖)
if [ -d "/root/.hermes" ]; then
    mv /root/.hermes /root/.hermes.bak.$(date +%s)
fi

# 5. 将备份的灵魂精准回填到位
mv /tmp/hermes-restore/.hermes /root/
rm -rf /tmp/hermes-restore

# 6. 检查核心关键文件是否到齐
ls -la /root/.hermes
  • ✅ 成功标志:终端清晰展示 /root/.hermes/ 下的 config.yaml、.env、state.db 以及 skills/ 和 memories/ 全部完好无损归位!

第 3 步:修复权限与底层数据库自检(防坑核心)

搬迁解压后,由于文件权限变动,必须把敏感密钥的权限收紧,并对 SQLite 数据库进行物理健康检查:

BASH
# 1. 严格收敛密钥与配置文件权限(防系统安全拦截)
chmod 600 /root/.hermes/.env 2>/dev/null || true
chmod 600 /root/.hermes/config.yaml 2>/dev/null || true
chmod 700 /root/.hermes

# 2. 对会话数据库 state.db 运行只读物理完整性检查
sqlite3 file:/root/.hermes/state.db?mode=ro "PRAGMA quick_check;"
  • ✅ 成功标志:SQLite 检查命令直接返回一个清脆的 ok,证明数据库 B-Tree 结构 100% 完整,历史对话记忆毫发无损!

第 4 步:四层阶梯式真实能力验收(绝不盲目起跑)

不要直接去跑复杂任务!严格按照工业级 SRE 验证链路逐层点火:

🟢 检验 1:静态配置与诊断

BASH
hermes doctor
  • ✅ 通过标准:各项依赖显示绿色对钩,没有阻断性红色报错。

🟢 检验 2:模型真实调用测试

BASH
hermes chat -Q -q "只回复 PONG"
  • ✅ 通过标准:终端立刻吐出 PONG,证明你的 Provider、API Key 与出网请求链路打通。

🟢 检验 3:记忆与技能库对齐

BASH
hermes skills list
  • ✅ 通过标准:之前沉淀的所有专属技能、战术脚本全部整齐列出,随调随到。

🟢 检验 4:网关启动与收发消息

确认前三步全绿后,安装并拉起 Gateway 服务:

BASH
# 一键生成守护服务并启动
hermes gateway install
hermes gateway start
hermes gateway status
  • ✅ 通过标准:状态显示为 active (running)。
    此时打开你的手机 Telegram,给 Bot 发一条测试消息(如“在吗”),收到它熟悉而温暖的秒回时——大功告成!整个 Hermes Agent 已在新机器上 100% 满血复活! 🚀🎉

🎁 极客赠礼:一键生成全量无损冷备脚本

平时怎么制作这样一份完美的冷备包?掌握这条官方标准的纯净打包命令(自动排除海量临时缓存、node_modules 与日志,只保留纯粹灵魂):

BASH
tar -czf /root/hermes-full-$(date +%Y%m%d).tar.gz \
  --exclude='.hermes/cache' \
  --exclude='.hermes/logs' \
  --exclude='.hermes/sandboxes' \
  --exclude='.hermes/browser-profiles' \
  -C /root .hermes
  • 🗣️ 大白话:打包出来通常只有几兆到几十兆大小,随手把它 scp 传到异地机器或存进 Google Drive,这就是你最大的底气!

🚑 翻车急救站(新手迁移高频卡点速查)

异常现场真实根因对应一秒救命招式
Gateway 日志疯狂报 Conflict: terminated by other getUpdates最经典翻车:旧机器上的 Gateway 还在后台偷偷运行!登录旧机器执行 hermes gateway stop 或 systemctl stop hermes-gateway,掐死旧实例后新实例瞬间恢复。
终端提示 command not found: hermes新机器的 Shell 环境变量未加载 PATH执行 source ~/.bashrc 或 export PATH="/root/.local/bin:$PATH" 即可。
模型调用报错 401 Unauthorized.env 文件丢失或 API Key 过期检查 cat /root/.hermes/.env,核对模型提供商密钥是否已正确注入。
启动报错 database is locked之前的进程未正常释放 SQLite 句柄运行 lsof /root/.hermes/state.db,找到占用它的残留 PID 杀掉即可。

🎓 毕业全维度自检清单

核对以下 5 项指标,全部打钩即代表你的灾备自愈能力已达到生产免运维级标准:

  • 灵魂资产完备:备份包包含 .env、config.yaml、state.db、memories/ 与 skills/;
  • 数据库自检全绿:PRAGMA quick_check 返回明确的 ok;
  • 模型与网关秒通:hermes chat 能够稳定连通,Telegram 消息收发自如;
  • 排他性长轮询:旧机器已彻底下线,新机器无 409 轮询冲突;
  • 冷备定期归档:异地机或云盘保留了至少 2~3 份最新快照,具备随时 15 分钟自愈底气!