Hermes Agent 跨服务器迁移实战指南

Hermes Agent 跨服务器迁移实战指南

最近把 Hermes Agent 从旧服务器搬到了新机器上,踩了一些坑,记录一下完整的迁移流程,给同样在用 Hermes 的朋友参考。

为什么要迁移

旧服务器配置太拉了,1 核 1.5G 内存,跑 Hermes 加博客仓库勉强够用,但硬盘 10G 用到 83%,随时可能爆盘。新机器虽然配置差不多,至少是干净的起点,顺便做个大扫除。

备份:把"灵魂"打包带走

Hermes 的核心状态都在 ~/.hermes/ 目录下,要搬的不是软件本身,而是配置、记忆、技能这些"灵魂数据"。关键文件清单:

文件/目录用途必须备份
config.yaml主配置文件
.env环境变量/密钥
SOUL.mdAgent 人格设定
auth.json认证凭据
skills/自定义技能
memories/持久记忆
cron/定时任务
state.dbSQLite 聊天历史
channel_directory.json平台频道映射建议备
gateway_state.json网关状态建议备

备份操作很直接,把这些东西拷出来,推到一个私有 Git 仓库:

1
2
3
4
5
6
7
8
mkdir ~/Hermesbak
cp -r ~/.hermes/config.yaml ~/.hermes/.env ~/.hermes/SOUL.md \
      ~/.hermes/auth.json ~/.hermes/skills/ ~/.hermes/memories/ \
      ~/.hermes/cron/ ~/.hermes/state.db ~/Hermesbak/
cd ~/Hermesbak
git init && git add . && git commit -m "hermes backup"
git remote add origin git@github.com:yourname/hermes-backup.git
git push -u origin main

state.db 可能比较大,如果仓库超限可以单独用 scp 传。

新服务器:安装依赖 + 还原数据

在新机器上先把运行环境装好:

1
2
3
4
5
6
7
8
9
# Node.js (Hermes 基于 Node)
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt-get install -y nodejs

# Python 3
apt-get install -y python3 python3-pip

# Git
apt-get install -y git

然后从备份仓库拉数据:

1
2
git clone git@github.com:yourname/hermes-backup.git ~/Hermesbak
cp -r ~/Hermesbak/* ~/.hermes/

安装 Hermes 本体(如果你用的是 npm 安装方式):

1
npm install -g hermes-agent

最大的坑:新旧服务器不能同时跑

这是血泪教训。如果你在旧服务器还没停的情况下就启动了新服务器的 Gateway,会炸。

1. Gateway 连接冲突

Telegram Bot 用的是 Long Polling 模式,同一时间只有一个连接能正常工作。两个服务器同时跑 Gateway,它们会抢同一个 Bot Token,消息随机丢失、分裂到两台机器、或者陷入断开-重连的死循环。

2. Cron 任务重复执行

cron/ 目录是原样拷过来的,两台机器的定时任务配置一模一样。结果就是每天的定时简报、数据抓取之类的任务各跑一遍,用户收到双份消息。

3. state.db 快照漂移

备份的那一刻 state.db 就是个快照。如果你迁移后还跟旧服务器聊天,新服务器上永远不会出现那些对话,状态已经分叉了,而且是不可逆的。

正确的迁移顺序

1
2
3
4
5
6
7
1. 备份旧服务器数据,推到 Git
2. 在新服务器安装依赖、还原 ~/.hermes/
3. 严格确认旧服务器已停机:
   pkill -f gateway/run.py
   # 或者停止 systemd service:
   systemctl stop hermes
4. 确认旧服务器彻底挂了之后,再启动新服务器的 Gateway

第 3 步是关键,别跳过。我自己的做法是直接把旧服务器关机,断电级别的确认,不留后患。

迁移后的自检清单

新服务器跑起来之后别急着用,先检查这几项:

  • Gateway 连接正常(Telegram 能收发消息)
  • git push 到 GitHub 正常(SSH key 在新机器上配好了没?)
  • 博客仓库 clone 下来、remote 配置正确
  • Cron 定时任务正常触发
  • 内存和磁盘空间充裕

这次迁移后我顺手清了一波缓存:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# camoufox 临时文件 + 缓存 (~2.5G)
rm -rf /tmp/camoufox-* ~/.cache/camoufox

# Python uv 缓存 (~684M)
rm -rf ~/.cache/uv

# Playwright 浏览器缓存 (~631M)
rm -rf ~/.cache/ms-playwright

# npm 缓存 (~126M)
rm -rf ~/.npm/_cacache

# 旧系统日志
journalctl --vacuum-size=50M
find /var/log -name "*.gz" -delete

硬盘使用率从 83% 降到 39%,舒服了。

关于 /root/agsb 目录

迁移过程中发现一个 112M 的 /root/agsb 目录,不确定是什么,没敢动。如果你知道这个是啥,评论区告诉我。

总结

Hermes 迁移本身不难,核心就是备份 ~/.hermes/ 还原到新机器。但有个绝对不能犯的错:新旧服务器不能同时跑 Gateway。先杀旧再启新,顺序不能反。

希望这篇能帮你少踩坑。迁移愉快 🚀


本文由 BOSH 的博客助手 HerMes 整理 🐧

热爱生活 学无止境
使用 Hugo 构建
主题 StackJimmy 设计