Hermes 迁移

OpenClaw 迁移 Hermes 保姆级教程:M01–M13 资产盘点、dry-run 与回滚

按当前 hermes claw migrate 行为盘点 persona、memory、skills、审批、浏览器、消息和 secrets,用 user-data dry-run、独立 profile 与新 session 金丝雀完成迁移。

进阶 治理 预计 55 分钟 更新 2026/10/7 核验 2026/10/7
本页目录

完成结果

学完后你会留下什么

一份 M01–M13 资产盘点、dry-run 报告、冲突与归档清单、新 session 金丝雀和回滚决定。

验证版本
v0.21.5(2026.9.24)
平台
macOS / Windows / Linux
权限
高权限
积分影响
低
适合谁
已经运行 OpenClaw,想试用 Hermes 又不允许旧记忆、技能、审批、消息入口和凭据静默丢失的用户
开始前确认
  • 已有可工作的 OpenClaw 环境
  • 已安装独立 Hermes 测试 profile
  • 可以保护包含配置或凭据的本地备份

hermes claw migrate 不是把一个配置文件改名。当前官方迁移器会发现 persona、workspace 指令、Memory、User profile、四类 Skill 来源、模型、审批 allowlist、Browser 设置、消息配置与部分 secrets;无法直接映射的内容会归档。

可靠迁移要回答三个问题:具体导入了什么、什么被跳过或冲突、怎样证明新环境可用且旧环境仍能回退。

2026-10-07 本站已在 Hermes v0.21.5 上用一份合成的 OpenClaw 目录实跑了第 4–7 步,与官方文档不一致的地方已在步骤中标出,完整记录见文末。以下所有命令先在独立 profile 和无真实用户流量的窗口执行。

1. 先决定是否需要迁移

如果 OpenClaw 当前稳定,而你只是想体验 Hermes,先并行安装空白 Hermes profile,不必导入任何资产。只有你明确需要复用 persona、Memory、Skills 或命令 allowlist 时,迁移器才有价值。

以下情况先停:不知道 OpenClaw 实际 home;Hermes 目标已有重要数据却没有备份;没有人能审查 secrets;真实 Gateway 仍在写入;无法保留 OpenClaw 回滚窗口。

产品选型已经整合到 OpenClaw vs Hermes 自动化与 Gateway 对比。本页只负责已经决定试点后的迁移执行。

2. 用独立 profile 和 workspace 隔离试点

创建一个明确命名的 Hermes profile,例如 migration-lab,并把工作目录设为独立测试路径。Profile 隔离 config、.env、SOUL、Memory、sessions、Skills、cron 和 Gateway state,但官方明确提醒:Profile 本身不是文件系统 sandbox;本地 terminal 仍可能拥有当前系统用户权限。

不要让两个 Agent 进程同时写同一个 profile,也不要把生产 OpenClaw workspace 直接设成 Hermes 的 terminal.cwd。本实验需要能删除重建的目标。

3. 填写 M01–M13,不只列文件名

资产表要求记录来源、目标、默认动作、显式参数和验收方法。重点边界包括:

  • SOUL.md 可直接复制;Memory 与 USER 会解析、合并并去重。
  • AGENTS.md 只有提供明确 --workspace-target 才迁移。
  • Skills 会从 workspace、managed/shared、个人跨项目和项目级四类目录发现。
  • Skill 冲突默认 skip,也可明确选择 overwrite 或 rename。
  • approval mode 和 command allowlist 会映射,但仍需重新审查权限是否扩大。
  • 没有直接 Hermes 等价物的设置进入 timestamp archive。
  • WhatsApp 不能靠 token 迁移会话,迁移后要 QR 重新配对。

先给每项标注 需要 / 不需要 / 待确认。待确认项不能通过 --overwrite 或 --yes 消失。

4. 第一次只跑 user-data dry-run

hermes claw migrate --dry-run --preset user-data

保存完整预览,记录 migrated、skipped、conflicting 和 archived 数量。user-data 适合作为默认试点:它覆盖 persona、workspace 指令、Memory、User profile、消息设置、allowlist、Skills、TTS assets 与 archive,但不导入 secret settings。

核对源目录。迁移器默认查 ~/.openclaw/,也识别 legacy 目录;workspace 还会检查 workspace/、workspace.default/、workspace-main/ 和多 Agent 路径。若发现的不是你计划迁移的实例,停止并用 --source 指向精确路径。

5. 在执行前解决三类冲突

Workspace 指令

只有你已经创建空白目标 workspace,才加入:

--workspace-target /absolute/path/to/hermes-migration-lab

不要使用含糊的当前目录或 home。导入后逐行审查 AGENTS.md 是否引用 OpenClaw 专属工具、路径和权限。

Skill 冲突

首次使用 --skill-conflict skip(实测:同名 Skill 被放进 openclaw-imports/ 时不算冲突;而 SOUL、模型配置等非 Skill 冲突会让整次迁移拒绝执行,需要 --overwrite)。对每个冲突比较 owner、版本、内容和工具依赖;需要同时保留时再选择 rename。直接 overwrite 会让现有 Hermes Skill 消失,不应作为清理冲突的快捷方式。

Secrets

默认不迁移。--preset full 也必须额外传 --migrate-secrets 才会复制允许的键。file 或 exec 类型 SecretRef 不能自动解析,会给出警告并要求手工配置。

更安全的试点是在空白 profile 手工写入一组最小测试凭据。只有你已检查四类可能来源、目标 .env 权限、allowlist 和轮换计划,才评估 secret migration。

6. 执行 user-data 迁移

确认 dry-run 后运行:

hermes claw migrate --preset user-data --skill-conflict skip \
  --workspace-target /absolute/path/to/hermes-migration-lab

在终端里交互运行时不要加 --yes,保留最终确认;脚本或管道里运行会被识别为非交互、只预览不执行,这时只能在审完 dry-run 后加 --yes。默认 apply 前会把现有 ~/.hermes/ 写入 backups/pre-migration-*.zip 还原点;不要使用 --no-backup。如果目标不是默认 profile,确认命令实际指向你刚创建的隔离 profile。

完成报告必须保存:导入、跳过、冲突、归档的项目及原因。没有跳过项报告的迁移不算可审计。

7. 必须在新 session 验收

导入后的 Skill 与 Memory 在新 session 生效。关闭旧对话,新建 session 后按顺序检查:

  1. hermes status:模型与 provider 认证符合预期。
  2. Persona:只问一条无敏感身份问题,核对 SOUL 边界。
  3. Memory:查询两个明确迁移事实和一个不应存在的负例。
  4. Skills:列出导入目录,跑正常、缺字段、不应触发和权限拒绝四个样本。
  5. Approval:一条 allowlist 内无害命令通过,一条外部命令仍被提示或拒绝。
  6. Browser:使用无敏感测试 profile 验证 CDP 与 headless 配置。
  7. Messaging:只连接自有测试账号,检查 allowlist 与工作目录。
  8. Archive:逐项决定重建、保留手工文档或放弃。

若迁移了 Telegram token,也不能直接向真实用户开放。先发送唯一金丝雀并确认入站、出站和路由。WhatsApp 使用 hermes whatsapp 单独重新配对。

8. 回滚不会自动恢复 OpenClaw

迁移默认备份的是迁移前 Hermes home,不会替你备份或删除 OpenClaw。回滚时先停止 Hermes 写入,另存当前失败状态,再使用迁移报告与还原点恢复 Hermes;OpenClaw 应继续使用原目录和原服务配置。

出现以下任一情况就回滚:Memory 合并无法对账、Skill 冲突覆盖了既有文件、approval 范围扩大、消息路由进入真实账号、目标 profile 与预期不一致,或 secrets 暴露。

不要在排障过程中运行 cleanup。官方 hermes claw cleanup 会把剩余 OpenClaw 目录改名为 .pre-migration/ 以避免状态混淆,它应晚于完整验收和回滚观察窗口。

本站实测记录(2026-10-07,Hermes v0.21.5)

环境:macOS 26.4(Apple Silicon),Hermes v0.21.5(2026.9.24),模型 glm-5.3-flash(zai),一次性测试 Profile;你的 default Profile 与运行中的 Gateway 未改动。 来源是我们手工造的最小 OpenClaw 目录,只含假数据:SOUL、AGENTS.md、两条重复记忆、USER、两个 workspace Skill(其中 evidence-brief 与目标同名)、一个共享 Skill、假 Telegram token、假 API key 和两条命令 allowlist。

合成数据迁移:dry-run、冲突拒绝、执行与新会话验收

步骤实测结果
第 4 步 dry-run20 项将迁移、2 项冲突(soul、model-config)、20 项跳过;Secrets: no
个人 Skill即使 --source 指向别的目录,迁移器仍从本机 ~/.agents/skills 列出 7 个”personal-skills”一起导入
同名 SkillOpenClaw 的 evidence-brief 进入 skills/openclaw-imports/,路径不同所以不算冲突;Hermes 原有的同名 Skill 原样保留
不加 --overwrite 执行”Plan has 2 conflict(s). Refusing to apply.”:整次迁移被拒绝,而不是跳过冲突项
管道输入确认识别为非交互会话,只预览不执行;必须加 --yes
第 6 步执行先写迁移前备份(这次 12.3 MB,位于目标 Profile 的 backups/),然后 17 项迁移、22 项跳过、3 项归档;报告在 migration/openclaw/<时间戳>/
Secrets假 Telegram token、假 API key 都没有写入 .env 或 config ✅
Memory导入了,但两条相同记录被拼成一行,没有去重
allowlist、Browsercommand_allowlist 变为 /bin/ls、/usr/bin/git;browser 写入 cdp_url 与 headless
第 7 步新会话直接失败:模型被改成 deepseek/deepseek-chat,provider 仍是 Z.AI,报”HTTP 400 模型不存在”
修正模型后Persona 编号、Memory 金丝雀正确;负例不存在;导入的 Skill 输出正确

我们自己踩到的坑,值得照抄成检查项:第一次跑时,假配置里的 agents.defaults.workspace 写的是 ~/.openclaw/workspace。迁移器就按这个路径去读了本机真实的 OpenClaw 目录,最后在”源和目标是同一个文件”时报错退出。我们核查过,真实目录没有任何文件被修改。但失败前它已经往目标写了 MEMORY、USER、.env 和 config,迁移不是原子操作。所以:

  1. --source 只决定配置文件从哪读,配置里的 workspace 路径和 ~/.agents/skills 仍可能指向别处。dry-run 时逐行看每一项的来源路径。
  2. 执行失败后,用迁移前备份恢复整个目标,不要在半成品上继续。
  3. 迁移后先修正模型和 provider,再做任何验收。

9. 最终只做四种决定

  • 保留 OpenClaw:迁移收益不足或关键资产没有等价物。
  • 并行试点:Hermes 验证通过,但真实入口仍留在 OpenClaw。
  • 分批迁移:先 persona/Memory/Skills,再单独迁移消息与自动化。
  • 回滚:任一权限、数据或路由硬失败。

不要把“命令退出码为 0”作为第五种决定。迁移报告、新 session 行为、归档项、消息金丝雀和回滚证据共同通过,才能说明迁移真的完成。

官方资料

版本和参数,以这些来源为准

本文按实际任务重写,快速变化的信息仍应在操作前回到官方页面核对。

常见问题

继续操作前,先确认这些边界

默认迁移会复制 API Key 吗?

不会。user-data 与 full 都不会静默复制 secrets,必须额外传入 --migrate-secrets;不确定时继续使用 user-data 且手工配置测试凭据。

迁移后的 Memory 和 Skill 为什么当前对话里看不到?

官方说明导入后的 Skill 和 Memory 要在新 session 中生效。应新建会话检查,不能用迁移前已经加载上下文的会话验收。

迁移成功后可以立刻运行 hermes claw cleanup 吗?

不应。先完成归档、消息、审批、Memory、Skill 与回滚测试,并保留观察窗口;cleanup 应是最后一步。

继续学习

按当前任务继续推进