Hermes Agent 跨服务器迁移实战指南
Hermes Agent 跨服务器迁移实战指南
最近把 Hermes Agent 从旧服务器搬到了新机器上,踩了一些坑,记录一下完整的迁移流程,给同样在用 Hermes 的朋友参考。
为什么要迁移
旧服务器配置太拉了,1 核 1.5G 内存,跑 Hermes 加博客仓库勉强够用,但硬盘 10G 用到 83%,随时可能爆盘。新机器虽然配置差不多,至少是干净的起点,顺便做个大扫除。
备份:把"灵魂"打包带走
Hermes 的核心状态都在 ~/.hermes/ 目录下,要搬的不是软件本身,而是配置、记忆、技能这些"灵魂数据"。关键文件清单:
| 文件/目录 | 用途 | 必须备份 |
|---|---|---|
config.yaml |
主配置文件 | 是 |
.env |
环境变量/密钥 | 是 |
SOUL.md |
Agent 人格设定 | 是 |
auth.json |
认证凭据 | 是 |
skills/ |
自定义技能 | 是 |
memories/ |
持久记忆 | 是 |
cron/ |
定时任务 | 是 |
state.db |
SQLite 聊天历史 | 是 |
channel_directory.json |
平台频道映射 | 建议备 |
gateway_state.json |
网关状态 | 建议备 |
备份操作很直接,把这些东西拷出来,推到一个私有 Git 仓库:
1 | |
state.db 可能比较大,如果仓库超限可以单独用 scp 传。
新服务器:安装依赖 + 还原数据
在新机器上先把运行环境装好:
1 | |
然后从备份仓库拉数据:
1 | |
安装 Hermes 本体(如果你用的是 npm 安装方式):
1 | |
最大的坑:新旧服务器不能同时跑
这是血泪教训。如果你在旧服务器还没停的情况下就启动了新服务器的 Gateway,会炸。
1. Gateway 连接冲突
Telegram Bot 用的是 Long Polling 模式,同一时间只有一个连接能正常工作。两个服务器同时跑 Gateway,它们会抢同一个 Bot Token,消息随机丢失、分裂到两台机器、或者陷入断开-重连的死循环。
2. Cron 任务重复执行
cron/ 目录是原样拷过来的,两台机器的定时任务配置一模一样。结果就是每天的定时简报、数据抓取之类的任务各跑一遍,用户收到双份消息。
3. state.db 快照漂移
备份的那一刻 state.db 就是个快照。如果你迁移后还跟旧服务器聊天,新服务器上永远不会出现那些对话,状态已经分叉了,而且是不可逆的。
正确的迁移顺序
1 | |
第 3 步是关键,别跳过。我自己的做法是直接把旧服务器关机,断电级别的确认,不留后患。
迁移后的自检清单
新服务器跑起来之后别急着用,先检查这几项:
- Gateway 连接正常(Telegram 能收发消息)
git push到 GitHub 正常(SSH key 在新机器上配好了没?)- 博客仓库 clone 下来、remote 配置正确
- Cron 定时任务正常触发
- 内存和磁盘空间充裕
这次迁移后我顺手清了一波缓存:
1 | |
硬盘使用率从 83% 降到 39%,舒服了。
关于 /root/agsb 目录
迁移过程中发现一个 112M 的 /root/agsb 目录,不确定是什么,没敢动。如果你知道这个是啥,评论区告诉我。
总结
Hermes 迁移本身不难,核心就是备份 ~/.hermes/ 还原到新机器。但有个绝对不能犯的错:新旧服务器不能同时跑 Gateway。先杀旧再启新,顺序不能反。
希望这篇能帮你少踩坑。迁移愉快 🚀