乐于分享
好东西不私藏

真要从 OpenClaw 迁到 Hermes,最稳的检查顺序与避坑清单

真要从 OpenClaw 迁到 Hermes,最稳的检查顺序与避坑清单

上一篇是判断题,这一篇是落地题。

如果你已经决定要从 OpenClaw 往 Hermes 迁,接下来最重要的不是继续看热闹,而是先把顺序理顺。因为迁移这件事,很多时候不是输在不会配,而是输在太着急。

最常见的翻车方式通常都差不多:

• 没 dry-run 就真跑

• 没备份就改配置

• 没验证最小链路就切主入口

• 没保留旧环境就直接删干净

• 看到“迁移成功”四个字,就以为整个工作流已经恢复

这篇文章只做一件事:把更稳的迁移顺序、每一步为什么要这样排、做完应该看到什么、最常见的坑在哪,尽量一次讲清楚。


一、先别开跑,先判断你现在适不适合今天迁

很多人看到 Hermes 很火,就容易产生一种冲动:今天就迁。

但你真正该先问自己的,是下面这几个问题:

• 你最近手上是不是正有高优先级任务在跑?

• 你现在的 OpenClaw 有没有已经很稳定的主入口?

• 这次迁移一旦中间断掉,你能不能接受?

• 你有没有至少半天到一天的连续时间做验证?

• 你现在到底是在解决真实痛点,还是只是被热度推着走?

如果你最近任务很满、当前入口又正好很稳,那今天最好的动作,可能不是迁移,而是先把准备工作做完,改在低峰时间切。

这不是保守,是工程常识。

二、先盘点你真正要迁的到底是什么

很多人一说迁移,脑子里只有一个词:配置。

其实远远不止。

你真正要迁的,通常至少包括这些层:

1)入口层

• Telegram

• Discord

• Slack

• 其它你平时高频调用的消息入口

2)模型与 provider 层

• 默认模型

• fallback 模型

• 自定义 provider

• 本地模型入口

• API key 或 auth 方式

3)上下文资产层

• SOUL.md

• USER.md / MEMORY.md

• 每日 memory

• AGENTS.md

• skills

• 项目规则文档

4)外部能力层

• MCP 配置

• TTS

• 浏览器能力

• cron / hook / 插件

• 自定义脚本

5)运行与守护层

• 本地 CLI 能不能跑

• gateway 怎么启动

• 是否要做 systemd / 计划任务 / 常驻进程

• 日志去哪看

如果你不先把这几层拆开,后面一旦出问题,就很容易陷入一种典型混乱:

• 明明是入口冲突,结果你在查模型

• 明明是 provider 没配对,结果你在怀疑 memory

• 明明是服务没起来,结果你在翻 skill

建议你先列一个最小迁移清单

• 我当前最重要的入口有哪些

• 哪个模型必须先恢复

• 哪些项目规则必须保留

• 哪些 skills 是不能丢的

• 哪些额外能力需要人工复核

• 哪个旧环境在新环境没跑稳之前绝不能删

做完这一步,你对“这次迁移到底在迁什么”会清楚很多。

三、第一步一定是 dry-run,不要直接真跑

如果 Hermes 的迁移命令支持 dry-run,那第一次就一定先 dry-run。

因为你最需要先知道的,不是“命令能不能执行”,而是:

• 它准备迁什么

• 它准备跳过什么

• 哪些地方会冲突

• 哪些内容不会自动帮你处理

• 有没有任何会让你事后才后悔的动作

为什么 dry-run 这么值钱

因为迁移里最麻烦的,不是显式报错,而是“表面成功,但你误解了它做了什么”。

比如:

• 你以为某份配置会原地覆盖,实际上它被跳过了

• 你以为某份旧目录会保留,实际上后面会进入归档流程

• 你以为某些 provider 会被完整映射,实际上还要人工修

• 你以为只要命令跑完就可以切主入口,实际上关键链路还没验证

更稳的做法是这样

1. 先跑 dry-run

2. 把输出认真看完

3. 把“会迁移 / 会跳过 / 会冲突 / 需要人工处理”的项记下来

4. 再决定要不要正式执行

如果你连 dry-run 的结果都没看懂,就不要急着真跑。

四、在真迁移之前,先把备份和回退空间留好

我建议你至少做三件事。

1. 备份旧配置

最基本的,是把 OpenClaw 当前核心配置单独备份一份。

因为你后面真正需要回头查的,往往不是“当时有没有装”,而是:

• 某个 token 当时怎么配的

• 某个 provider 原来叫什么

• 某个 fallback 链原来怎么写的

• 某个入口原来绑到了哪个 agent

2. 备份工作区或关键目录

如果你的项目已经不轻,最好至少把关键工作区做一份独立备份。

尤其是:

• 项目规则

• 项目进展

• skills

• memory

• 自定义脚本

• 任何你已经跑顺的工具链配置

3. 不要让你当前 shell 仍然挂在旧路径里

如果你当前很多终端会话、脚本 cwd、工具工作目录,还挂在旧目录上,一旦你后面触发归档、改名、移动目录,很容易出现一串非常烦的连锁问题:

• 路径失效

• 子进程起不来

• 命令工具突然找不到当前目录

• 你以为是 Hermes 出问题,其实是工作目录已经废了

所以正式开跑前,先把当前操作环境切到一个安全位置。

五、正式迁移后,先别急着宣布成功,先修最容易错的基础项

“文件迁过去了”和“系统能稳定工作了”,中间差很多步。

我最建议你优先检查这几类基础项。

1)默认模型和 provider 是否真的可用

不要只看配置文件里像不像。

你真正该验证的是:

• 默认模型能不能真正发起请求

• provider 有没有正确认到对应命名空间

• API key / OAuth / 本地 provider 是否真的生效

• fallback 链在需要时能不能正常接住

这里很容易出现一种典型误区:字段已经在,但行为不对。

2)CLI 最小可用性

先别急着测大任务。

先确认最小命令能不能通,比如:

• CLI 能正常启动

• 能正常识别当前 provider

• 能跑一个最简单的对话或最小调用

这一层如果都没通,就不要往 gateway 或消息入口上堆复杂度。

3)必要的长期资产有没有落到正确位置

这一层重点查:

• SOUL

• USER / MEMORY

• skills

• AGENTS 或项目规则

• 关键项目文档路径

因为有些东西不是“迁过去就好”,而是“必须落在你后续真正会继续使用的位置上”。

六、真正的验证顺序:先最小闭环,再主入口,再复杂工作流

这是整篇里我最想强调的顺序。

第一步:先验证最小闭环

什么叫最小闭环?

就是你只验证最基础的一条完整路径:输入进去,系统接住,模型能处理,结果能回来。

比如只测:

• 发一句最简单的话

• 要求它只返回一句固定短句

• 看它能不能稳定来回一轮

因为它最容易帮你判断:

• 服务有没有起来

• provider 通没通

• 基础链路有没有断

• 返回路径是不是完整

第二步:再验证主入口

如果你的主入口是 Telegram、Discord 之类,就在最小闭环通过以后,再去测这些入口。

这一步要确认的,不是它“理论支持”,而是:

• 入口有没有真的接上

• 会不会和旧实例冲突

• 同一 token 是否存在独占问题

• 你发出去的消息到底是谁在处理

第三步:最后再测复杂任务

比如:

• 带工具调用的任务

• 带浏览器的任务

• 带 MCP 的任务

• 长一点的研究整理

• 写作和项目规则读取

• TTS 或额外平台能力

如果你一上来就用复杂任务做第一轮验证,一旦失败,你会根本分不清是哪一层出了问题。

七、共存期最容易翻车的,不是功能,而是入口冲突和知识分裂

如果你不是当天彻底删旧环境,而是准备先共存一段时间,那要优先盯的反而不是“谁更强”,而是两件更现实的事。

坑 1:入口冲突

最常见的问题就是:

• 两边都监听同一入口

• 两边都占同一个 bot token

• 两边都想处理同一类消息

• 你自己都不确定这条消息到底落到哪边了

更稳的做法是,共存阶段先强制划边界:

• 要么分 bot

• 要么分平台

• 要么分 chat / allowlist

• 要么明确一边生产、一边测试

坑 2:知识分裂

真正的问题是:你后续新增的规则、结论、项目进展,到底以哪边为准?

如果这个问题没有唯一答案,系统会越跑越乱。

更稳的做法是,在共存期尽早定三件事:

• 规则文件唯一源头在哪

• 项目状态唯一记录在哪

• 哪边允许继续沉淀长期经验,哪边只负责消费

八、最常见的误判:把“迁移成功”当成“工作流恢复”

你看到屏幕上 success,并不代表你的工作流已经恢复。

真正该确认的是这些问题:

• 默认模型能不能真的响应

• provider 是否真能用

• 关键入口能不能回消息

• skills 有没有真正加载

• MCP / 浏览器 / TTS 是否正常

• 项目规则是否真的被读到

• 长期记忆写入和读取是不是正常

如果这些没逐项确认,那“迁移成功”最多只能说明:文件移动过了。

九、我更建议按这个时间线来做

阶段 A:迁移前准备

1. 判断今天是否适合动手

2. 列出最小迁移清单

3. 先 dry-run

4. 看清会迁移、会跳过、会冲突的内容

5. 备份旧配置与关键工作区

6. 清理当前操作环境里的旧路径依赖

阶段 B:正式迁移

1. 正式执行迁移命令

2. 不要急着删旧环境

3. 先修基础配置差异

4. 先确认 CLI 与 provider 的最小可用性

阶段 C:恢复工作流

1. 先测最小闭环

2. 再测主入口

3. 再测复杂工作流

4. 再补人工复核项

5. 最后再决定是否切主力

阶段 D:观察期

1. 保留旧环境一段时间

2. 只让新环境先吃一部分真实任务

3. 连续观察几天到一两周

4. 确认稳定后,再考虑彻底清理旧环境

十、如果你是第一次折腾,至少记住这 10 条

1. 第一次一定先 dry-run

2. 不要把迁移当成单纯改配置

3. 不要没备份就开跑

4. 不要在任务高峰期开刀

5. 不要把“字段存在”当成“行为恢复”

6. 不要一上来就切主入口

7. 不要第一次就测复杂任务

8. 不要让两个系统同时抢同一个消息入口

9. 不要让两边同时写长期状态却没有唯一源头

10. 不要在当天就把旧环境删干净

十一、最后给一句最实际的建议

如果你已经决定迁,那就别把这件事做成情绪动作。

更好的做法是:把它当成一次小型基础设施切换。

你要关心的不是“我今天有没有成功装上 Hermes”,而是:

• 我的入口有没有平稳切过去

• 我的上下文资产有没有保住

• 我的真实任务能不能继续跑

• 我的回退空间有没有保留

只要这四件事你都盯住了,这次迁移就算中间有坑,整体也仍然是可控的。