实际迁移的内容
人设、指令和技能
Hermes 为迁移发布了一个映射表。您的人设将作为“直接复制”从 workspace/SOUL.md 移动到 ~/.hermes/SOUL.md。工作区指令会移动到 AGENTS.md,但表中指出这“需要 --workspace-target 标志”,因此在运行迁移时请告诉迁移程序您的项目所在位置。
技能来自四个 OpenClaw 位置,包括工作区技能、托管技能和个人跨项目技能,所有这些技能都会落脚在 ~/.hermes/skills/openclaw-imports/。如果 Hermes 中已经存在同名技能,默认的冲突模式是 skip(跳过),这将保留现有的 Hermes 技能。
记忆和用户画像
这是需要仔细阅读的部分。OpenClaw 的长期记忆会从 workspace/MEMORY.md 移动到 ~/.hermes/memories/MEMORY.md,并在那里被“解析为条目、与现有内容合并、去重”。您的用户画像也遵循“与记忆相同的条目合并逻辑”。
接下来是改变您记忆形态的一行。来自 workspace/memory/*.md 的每日记忆文件也会进入 ~/.hermes/memories/MEMORY.md,并附带说明:“所有每日文件合并到主记忆中。”
要了解为什么这很重要,请对比每个项目对这些文件的描述。
在 OpenClaw 中,“MEMORY.md 是一个紧凑、经过整理的层,用于存储持久的非画像事实、既定决策和简短摘要,这些内容应在会话开始时可用。它不是原始记录、每日日志或详尽的存档。”每日笔记则不同:“memory/YYYY-MM-DD.md 文件是工作层:详细的每日笔记、观察、会话摘要以及以后可能仍有用的原始上下文。”OpenClaw 保持它们可搜索,而不是总是加载它们。“这些文件被索引用于 memory_search 和 memory_get,但不会在每次轮次中注入到引导提示词中。”随着时间的推移,“每日笔记中的有用材料会通过默认的 dreaming 清理机制提炼到 MEMORY.md 中。”
而在 Hermes 中,MEMORY.md 保存智能体的个人笔记,并且有 2,200 个字符的限制。“两者都存储在 ~/.hermes/memories/ 中,并在会话开始时作为冻结快照注入到系统提示词中。”Hermes 明确说明了达到限制时会发生什么:“记忆不会自动压缩:当写入超出限制时,memory 工具会返回错误,而不是默默丢弃条目。”
因此,OpenClaw 保持在提示词之外的工作层,在 Hermes 中被合并到了一个较小的、总是加载的文件中。迁移指南描述了合并和去重。它没有描述当合并的条目超过记忆限制时会发生什么,这就是为什么下面的准备步骤至关重要。该限制可以通过 Hermes 的 config.yaml 中的 memory_char_limit 进行配置,但提高限制意味着每个会话的系统提示词都会变大。
相比之下,OpenClaw 自身从 Hermes 导入时,对仅限记忆的导入采取了相反的方法:导入的文件“不会合并到智能体的引导 MEMORY.md 中”,而是保持独立以便进行索引召回。这两种选择都没有错。它们是两种不同的设计,了解您要转向哪一种,就能知道需要整理什么。
归档以供手动审查的内容
某些 OpenClaw 设置没有直接的对应项,会被保存下来供您处理。Hermes 表示“这些内容会被保存到 ~/.hermes/migration/openclaw/<timestamp>/archive/ 以供手动审查”。该列表包括 IDENTITY.md,建议是“合并到 SOUL.md”;HEARTBEAT.md,建议是“使用 cron 任务处理周期性任务”;以及 cron 任务、插件、钩子(hooks)、通道绑定和您的记忆后端配置,Hermes 表示这些需要“通过 hermes honcho 进行配置”。
会话计时也发生了变化。“空闲和每日重置定时器不会被导入:Hermes 对话会一直持续,直到显式执行 /new 或 /reset。”如果您依赖每日重置来让您的智能体每天早上都有一个全新的开始,您需要自己创建这些边界。Hermes 正是推荐这种习惯,因为记忆只有在会话开始时才会重新读取:“在自然边界处运行 /new —— 比如完成的任务、主题的更改、一天的开始。”
外部记忆提供商
如果您在 OpenClaw 中使用了外部记忆后端,它会被归档而不是迁移。在 Hermes 中,“一次只能激活一个外部提供商 —— 内置记忆始终与其一起处于激活状态。”Hermes 将外部提供商描述为附加性的:“内置记忆(MEMORY.md / USER.md)继续像以前一样工作。”计划在迁移后有意识地重新配置您的提供商。
手动迁移
步骤 1:在迁移前整理您的 OpenClaw 记忆
先从干跑(dry run)开始。迁移支持 --dry-run,它会显示计划而不写入任何内容,并且默认情况下“在应用之前会写入一个单一的还原点存档”。阅读该计划,尤其是记忆部分。
然后在 OpenClaw 端进行整理,此时您的工具仍然可用。
打开 workspace/MEMORY.md,确保它包含您希望在每个会话开始时加载的内容:既定决策、持久事实、约定。删除任何过时的内容。
检查 workspace/memory/。这些每日文件即将合并到总是加载的文件中。对于每一个文件,问问自己它是否包含持久的内容。如果是,请在 MEMORY.md 中用您自己的话将其提炼为简短的一行。如果它只是某个星期二发生的事情的记录,它就不属于 2,200 字符的记忆。相反,将原始的每日文件保存在您自己的存档中。
有些细节是持久的,但只对某项循环任务重要,例如每周任务总是需要的文件路径。Hermes 建议为这些内容寻找另一个归宿:“对于智能体在每次运行循环任务时都需要的位置,技能通常比记忆条目更合适 —— 它仅在相关时加载,并且不会争夺 2,200 字符的预算。”现在记下这些项目,以便在迁移后将它们转化为技能,而不是将它们挤进记忆中。
以同样的方式检查 USER.md。它应该描述您,而不是您的项目。Hermes 的文档明确指出 SOUL.md 和 USER.md “是独立的系统,绝不会互相馈送”,因此关于您自己的事实属于画像,而语气和身份则属于 SOUL.md。
最后,记下 IDENTITY.md 和 HEARTBEAT.md 中您想要重新创建的任何内容,因为这些内容将被归档而不是应用。如果您的 OpenClaw 智能体在迁移前总是丢失之前运行的记录,为什么 OpenClaw 会遗忘之前的运行 是一个很有用的清单,可以帮助您了解需要捕获哪些内容。
步骤 2:运行迁移,然后验证导入的内容
在设置了工作区目标的情况下运行迁移,以便放置 AGENTS.md。默认情况下,当计划存在冲突时,迁移会拒绝应用,这保护了现有的 Hermes 配置;请审查冲突,而不是直接使用覆盖选项。
完成后,从 Hermes 清单的第一步开始:“检查迁移报告 —— 在完成时打印,包含已迁移、已跳过和冲突项目的数量。”然后直接阅读 ~/.hermes/memories/MEMORY.md 和 USER.md。将它们与您整理的内容进行对比。如果缺少条目,请通过智能体一次一个事实地将最重要的条目添加回去。
审查归档文件夹并重新创建您需要的内容:将身份说明合并到 SOUL.md 中,将心跳职责转化为 cron 任务,并重新配置任何外部记忆提供商。
然后开始一个新会话。Hermes 指出“导入的技能和记忆条目在新会话中生效,而不是当前会话。”向智能体询问一些依赖于您记忆的问题,例如项目约定或既定决策,并检查回答。
最后,检查项目指令。Hermes 每个会话加载一种项目上下文类型,并且“每个会话仅加载一种项目上下文类型(最先匹配的获胜)”,其中 .hermes.md 排在 AGENTS.md 之前。如果一个项目同时拥有这两者,则 Hermes 特定的文件获胜。
当一切正常后,Hermes 提供了 hermes claw cleanup 来重命名遗留的 OpenClaw 目录,以免这两个配置混淆。
更好的方法:将持久上下文保留在任何单个智能体的记忆文件之外
手动迁移是可行的,而步骤 1 中的整理是其成功的关键。但它也揭示了潜在的问题。每个智能体对于记忆存在于何处、可以有多大以及加载什么都有自己的想法。每次迁移时,您都需要重新塑造您的知识以适应下一个容器。
持久的部分,即决策、约定及其背后的原因,不需要存在于任何单个智能体的记忆文件中。将其保存在一个由您维护的地方,让每个智能体的内置记忆发挥其所长:记录短期的、特定于智能体的笔记。
MemoryLake 就是为此而设计的:一个您维护一次并连接到您所使用的智能体的记忆层。
您自己用自己的话编写条目。不会从您的 OpenClaw 工作区、您的 Hermes 记忆文件或任何供应商的存储中读取、写入或删除任何内容。
步骤 1:创建 API 密钥
登录并从控制面板生成一个密钥。该密钥属于您的 MemoryLake 工作区,与您的 OpenClaw 和 Hermes 安装相互独立。

步骤 2:上传您的第一批记忆
从您在步骤 1 中从每日笔记中提炼出的持久内容,以及从整理好的 MEMORY.md 中提炼出的既定决策开始。每个条目一个事实,并注明日期。

步骤 3:连接您的 AI 和智能体
连接 Hermes 和您使用的其他智能体。Hermes 可以通过 MCP 连接到外部工具服务器,因此您的上下文在不拥挤其内置记忆的情况下即可使用。

这在实践中带来了什么改变
第一个区别是,没有任何重要的事情依赖于合并。您的持久上下文之所以能够导入,是因为您对其进行了整理,而不是因为它恰好符合字符限制。
第二个区别是内置记忆更加精简。Hermes 的 MEMORY.md 保持小巧且最新,这正是其设计所期望的。
第三个区别是每日细节依然可用。原始笔记保存在您的存档中,而 Hermes 保持其自身的会话历史可搜索:“所有 CLI 和消息会话都存储在具有 FTS5 全文搜索的 SQLite (~/.hermes/state.db) 中。”
第四个区别是未来的迁移更加容易。如果您以后添加另一个智能体,或者返回 OpenClaw,相同的上下文会随您而来。对比不同选择的团队可以从 OpenClaw 智能体的最佳记忆配置 开始,而 MCP 与记忆:缺失的一层 则阐述了共享层的更广泛意义。
从 OpenClaw 迁移到 Hermes Agent 的最佳实践
先进行干跑(Dry-run)。 在应用任何内容之前,先阅读计划中的记忆部分。
在合并前整理每日笔记。 将持久的要点提炼到 MEMORY.md 中;将其余内容归档。
设置工作区目标。 Hermes 将其列为放置 AGENTS.md 的必需项。
保持 USER.md 关注您,SOUL.md 关注语气。 它们在 Hermes 中是独立的系统。
有意识地重新创建归档的职责。 心跳(Heartbeats)转化为 cron 任务;身份说明合并到 SOUL.md 中。
启动新会话进行测试。 导入的记忆在新会话中生效。
创建您自己的会话边界。 Hermes 对话会一直持续,直到执行 /new 或 /reset。要了解 OpenClaw 的记忆从一开始能做什么和不能做什么,请参阅 OpenClaw 记忆能做什么和不能做什么;如果您是从 Claude 转向 OpenClaw,将 Claude 记忆迁移到 OpenClaw 展示了旅程的前半部分。有关 OpenClaw 内部持久记忆的选项,请参阅 OpenClaw 记忆。
结论
Hermes Agent 的 hermes claw migrate 可以将您的人设、指令、技能、记忆 and 用户画像从 OpenClaw 中迁移过来,并将没有直接对应项的内容归档以供您审查。需要规划的细节是记忆:OpenClaw 的每日笔记(一个保持在提示词之外的工作层)会被合并到 Hermes 的单一 MEMORY.md 中,该文件会被注入到每个会话中、限制大小且不会自动压缩。
在迁移前进行整理。将每日笔记提炼为简短、最新的 MEMORY.md,将原始文件保存在您自己的存档中,运行干跑,然后在迁移后验证报告和记忆文件。
将您的持久上下文保存在您自己维护的地方,下一次迁移就会变成一项配置任务,而不是一次记忆拯救行动。