乐于分享
好东西不私藏

别直接把 OpenClaw 搬到 Hermes Agent:我把迁移、冲突和回滚完整跑了一遍

别直接把 OpenClaw 搬到 Hermes Agent:我把迁移、冲突和回滚完整跑了一遍

大家好,我是 One,

很多人以为从 OpenClaw 换到 Hermes Agent,就是把 ~/.openclaw/ 改名,再跑一条安装命令,

其实要做得好,没这么简单,

我在隔离目录里造了一套带有模型配置、MCP、workspace、memory 和 skill 的 OpenClaw 测试实例,

装上当前 Hermes Agent v0.18.2,完整跑了一遍预览、迁移、密钥边界和回滚,

先说结论,迁移工具现在确实能帮你搬不少东西,但它搬的是“可映射的数据”,不是把两个 Agent 的运行时原样复制过去

真正注意的地方,仍然是 workspace、认证、冲突文件和迁移后的验证,

OpenClaw 迁到 Hermes Agent,真正容易出问题的不是复制文件,

而是环境隔离、配置冲突、认证迁移和失败回滚,这篇文章把实际跑过的命令、失败结果和完整迁移链路都拆开了,

先别迁,先判断你是不是适合迁

如果你只有一个 Agent、一个模型 provider、一个消息入口和一个 workspace,迁移的风险相对可控,先复制数据,跑预览,再逐项验证,

如果你有多个 Agent 共享状态、多个租户共用 system-level service、复杂的 channel binding,

或者依赖 OpenClaw 特有插件,建议先做旁路迁移,不要直接停掉生产实例,

还有一个现实问题,Telegram 这类 bot token 同一时间只能由一个活跃轮询实例使用,

OpenClaw 没停,Hermes 又拿同一个 token 启动,最后通常不是两个都能用,而是互相踢下线,

所以迁移顺序不是“安装 Hermes → 复制文件”,而是:备份,隔离,停止旧服务,预览,迁移,重新认证,启动新 gateway,最后才切消息入口

第一关:隔离 Hermes,别拿生产 profile 做实验

我第一次测试只设置了 HOME,但 Hermes 仍然把目标解析到了当前公众号助手 profile,还检测到了正在运行的 Feishu gateway,

这不是小问题,Hermes 当前用 HERMES_HOME 决定自己的数据根目录,单独改 HOME 不够,

先建立一个临时目标,真实迁移时换成你自己的新目录,

export HERMES_HOME=/tmp/hermes-migration-testmkdir -p "$HERMES_HOME"hermes --versionhermes config path

我这次实际跑到的版本是:

Hermes Agent v0.18.22026.7.7.2

这里还有一个容易被忽略的保护,当前 Hermes 会拒绝在 /tmp 这种临时目录里写 systemd gateway unit,提示这是测试环境,

所以临时目录可以用来验证配置和迁移结果,但不能把它当成最终服务安装目录,

真正部署 gateway 时,要换到正常的 Hermes home,并确认 systemd 用户服务的范围,

第二关:先做 OpenClaw 归档,不要只备份 json

OpenClaw 的配置不是 Agent 本体,workspace 才是 Agent 长期行为的一部分,至少要把这些内容一起收走:

~/.openclaw/└── openclaw.json~/.openclaw/workspace/├── SOUL.md├── AGENTS.md├── MEMORY.md├── USER.md├── memory/└── skills/

生产环境先停服务,再归档,路径按你的实际 workspace 调整,

openclaw gateway statusopenclaw gateway stoptar czf ~/openclaw-archive-$(date +%Y%m%d).tar.gz \  ~/.openclaw/ \  ~/.openclaw/workspace/

注意的一点是,

这个~/clawd/ 目录是我的 workspace,不是所有 OpenClaw 安装的固定路径,

当前 OpenClaw 默认workspace 更常见的是~/.openclaw/workspace

第三关:先 dry-run,再决定是否覆盖

当前 Hermes 的原生迁移入口是:

hermes claw migrate --help

官方提供两个 preset,user-data 主要搬用户数据,full 会尝试搬更多兼容配置,但两个 preset 默认都不会导入 secrets,

我这次先用不带密钥的预览:

hermes claw migrate \  --source"$HOME/.openclaw" \  --dry-run \  --preset user-data \  --workspace-target /tmp/hermes-migration-workspace

在我的合成测试实例里,预览显示 11 项会迁移,1 项冲突,24 项跳过,

迁移内容包括 SOUL.md、memory、USER、model、MCP、agent config、session config 和 workspace skill,

跳过的内容里包括 cron、hooks、gateway、browser、tools、approvals、插件配置和原始 OpenClaw runtime 数据,

这就是迁移工具最容易被误解的地方,预览里没有出现的东西,不会因为你换成 full 就自动变成 Hermes 原生能力,

我的目标目录第一次启动时已经自动生成了 Hermes 默认 SOUL.md,所以迁移工具默认拒绝覆盖,报的是 conflict,不是失败,

确认过目标目录确实是新的、没有要保留的文件之后,才使用:

hermes claw migrate \  --source"$HOME/.openclaw" \  --preset user-data \  --workspace-target /tmp/hermes-migration-workspace \  --overwrite \  --yes

不要一上来就加 --overwrite,先看 preview,尤其是多人共用 profile 或者你已经启动过 Hermes 的机器,

第四关:workspace、memory 和 skills 怎么映射

我实际迁移后确认的结果是:SOUL.md 进入 Hermes home,MEMORY.md 和 USER.md 进入 memories/

每天的 memory 文件会合并进 Hermes 的 memory 文件,AGENTS.md 则可以通过 --workspace-target 放到指定 workspace,

原来的 workspace skill 会被放到:

$HERMES_HOME/skills/openclaw-imports/

我特意在测试里放了一个嵌套目录 memory/research/keep.md

迁移之后它没有被当成 Hermes memory 直接吞掉,而是出现在迁移报告的 archive 目录里,

这件事很重要,迁移工具会把它能理解的内容合并到 Hermes memory,

但复杂的目录结构仍然需要你自己复核,不能只看 MEMORY.md 里有没有几行文字,

迁移后建议直接检查:

find "$HERMES_HOME/memories" -maxdepth 3 -type f -printfind "$HERMES_HOME/skills/openclaw-imports" -maxdepth 3 -type f -printsed -n '1,120p'"$HERMES_HOME/SOUL.md"sed -n '1,160p'"$HERMES_HOME/memories/MEMORY.md"

如果 Agent 能回复,但说话方式、用户背景和长期上下文都没了,优先检查 workspace 是否迁移,而不是先换模型,

第五关:配置能搬,旧 OAuth 不要盲信

OpenClaw 的模型配置可以被转换成 Hermes 的 config.yaml

我这次真实看到的是:默认模型进入 model.default,MCP 进入 mcp_servers,自定义 provider 进入 custom_providers

hermes config showhermes config checkhermes config path

注意, hermes config get gateway.port 在当前 Hermes v0.18.2 里不是有效命令,

当前应该用 config showconfig check 和 config path,不要把旧文章里的命令原样复制,

认证是另一条线,当前 Hermes 文档优先使用:

hermes authhermes auth add <provider>hermes auth status <provider>

旧版本里的 hermes login 仍可能出现在旧教程里,但不应该把它写成所有版本的唯一入口,具体 provider 按当前 hermes auth --help 确认,

我的建议是:迁移配置,重新登录,验证一次真实模型调用,三件事分开做,

旧 OAuth token 即使格式能被复制,也可能已经过期,最麻烦的是 gateway 能启动,消息入口也能通,

但每次真正调用模型都失败,Agent 看起来活着,其实不会思考,

第六关:secrets 默认不迁,确实需要时才显式打开

我用合成的假 token 做了第二轮 full 测试,

只有显式加 --migrate-secrets 后,迁移预览才出现 .env 和 allowlisted 环境变量,默认 user-data 和 full 都不会偷偷导入密钥,

hermes claw migrate \  --source"$HOME/.openclaw" \  --preset full \  --migrate-secrets \  --workspace-target /absolute/path/to/workspace \  --overwrite

这一步不要在文章、截图或日志里暴露 token,我的测试只核对了 .env 里出现了预期的变量名,没有把任何密钥值写入记录,

Telegram bot token、provider API key、gateway token 这些东西,

最好先手动列清楚,哪些要重新生成,哪些可以复制,哪些必须重新登录,别把“迁移成功”理解成“所有认证都自动恢复”,

第七关:gateway 不要直接照抄旧教程

当前 Hermes 官方入口是:

hermes gateway setuphermes gateway installhermes gateway starthermes gateway status

Linux 用户服务通常配合:

sudo loginctl enable-linger "$USER"

我没有在真实 Telegram 账号上启动 pairing,因为这会产生外部消息和 token 竞争,官方命令形态可以确认,

但具体 code 要以你的 gateway 日志为准:

hermes pairing listhermes pairing approve telegram <CODE>

切换消息入口前,先确认 OpenClaw 已经停掉,再让 Hermes 单独接管 bot,验证一条最小消息,最后再恢复 cron 和其他 channel,

第八关:cron、插件和多 Agent 不要假设会自动出现

迁移报告里,我的 cron、hooks、gateway、plugins 和复杂 channel 都被列为 skipped,

这不是迁移工具坏了,而是这些内容需要按 Hermes 的运行方式重建,当前可以先看:

hermes cron --helphermes cron listhermes skills list

计划任务可以在已运行的 Hermes 对话里用自然语言创建,具体语法不要写死成某一句 slash command,先以当前平台帮助为准,

OpenClaw 的多 Agent 列表也不应该直接等价成 Hermes 的多个 workspace,

复杂部署要重新设计 profile、共享 memory 和消息路由,单 Agent 迁移能跑通,不代表三套互相依赖的 Agent 也能原样搬过去,

最后一定要做回滚测试

每次实际迁移都会在 Hermes home 下生成备份,例如:

$HERMES_HOME/backups/pre-migration-YYYY-MM-DD-HHMMSS.zip

我在测试里先修改了迁移后的 config.yaml,再执行:

hermes import \"$HERMES_HOME/backups/pre-migration-YYYY-MM-DD-HHMMSS.zip" \  --force

命令真实返回了 Import complete,配置回到了迁移前的状态,

回滚不是“出问题再想办法”,而是迁移验证的一部分,至少要确认三件事:备份文件存在,备份能被 hermes import 读取,回滚后配置确实恢复,

我最后确认的迁移清单

[ ] OpenClaw 已归档,workspace 不只备份了 openclaw.json[ ] Hermes 使用独立 HERMES_HOME,未碰生产 profile[ ] dry-run 预览过冲突和 skipped 项[ ] SOUL、MEMORY、USER、AGENTS、skills 都逐项检查[ ] config.yaml 能通过 hermes config check[ ] provider 重新认证,未盲信旧 OAuth[ ] secrets 是否迁移已经明确决定[ ] OpenClaw gateway 已停止,避免 bot token 冲突[ ] Hermes gateway 单独启动并检查状态[ ] Telegram pairing 或其他入口完成最小消息验证[ ] cron、hooks、plugins、多 Agent 路由单独重建[ ] pre-migration zip 可以被 hermes import 恢复

这次实测没有把 Telegram 真实账号、生产 provider 或线上 gateway 接进来,

所以我能确认的是迁移工具的配置映射、

workspace/memory/skills/MCP 导入、secret 开关、冲突处理、备份和回滚,不能把它包装成“所有渠道端到端已经跑通”,

我的判断是,OpenClaw 到 Hermes Agent 不是一次目录搬家,而是一次运行时迁移,

单 Agent、单入口的用户可以迁,先按这套流程旁路跑一遍,确认 Agent 没有失忆,模型真的能调用,消息真的能回来,再切生产,

多 Agent、强耦合、多租户用户不要急着换,先把 channel、cron、plugin 和共享状态画出来,

迁移工具能帮你处理一部分文件,但不会替你完成架构重写,

以上,

看到这里,如果这篇内容对你有一点帮助,

欢迎点个赞、在看,或者转发给需要的朋友~

如果不想错过后续更新,也可以给我点个星标🌟,第一时间收到推送。

感谢你的阅读和支持,我们下篇文章见!

推荐阅读

Hermes Agent 支持 GPT-5.6:90% 的人第一步就选错模型了

Hermes Agent Cloud 上线,终于可以把电脑合上了

Hermes Agent 终于可以省模型钱了:腾讯 Hy3 免费跑 Agent 任务

Hermes Agent:别再把 Agent 当聊天框了,它应该越用越懂你