适合谁:在生产环境中长期运行 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 需要像克隆虚拟机一样把整台服务器搬过去,其实它的架构设计极其优雅:
┌─────────────────────────────────────────────────────────────┐
│ 🤖 躯壳(随时可换):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 躯壳
💻 【你本地的电脑】 打开终端连入全新服务器,进入 🖥️ 【服务器窗口】。
整段粘贴执行官方一键安装引擎,生成全新的运行环境:
# 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,执行以下解包命令:
# 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 数据库进行物理健康检查:
# 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:静态配置与诊断
hermes doctor
- ✅ 通过标准:各项依赖显示绿色对钩,没有阻断性红色报错。
🟢 检验 2:模型真实调用测试
hermes chat -Q -q "只回复 PONG"
- ✅ 通过标准:终端立刻吐出
PONG,证明你的 Provider、API Key 与出网请求链路打通。
🟢 检验 3:记忆与技能库对齐
hermes skills list
- ✅ 通过标准:之前沉淀的所有专属技能、战术脚本全部整齐列出,随调随到。
🟢 检验 4:网关启动与收发消息
确认前三步全绿后,安装并拉起 Gateway 服务:
# 一键生成守护服务并启动
hermes gateway install
hermes gateway start
hermes gateway status
- ✅ 通过标准:状态显示为
active (running)。
此时打开你的手机 Telegram,给 Bot 发一条测试消息(如“在吗”),收到它熟悉而温暖的秒回时——大功告成!整个 Hermes Agent 已在新机器上 100% 满血复活! 🚀🎉
🎁 极客赠礼:一键生成全量无损冷备脚本
平时怎么制作这样一份完美的冷备包?掌握这条官方标准的纯净打包命令(自动排除海量临时缓存、node_modules 与日志,只保留纯粹灵魂):
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 分钟自愈底气!