MemoryLake
返回全部文章
Tutorial2026 年 10 月 9 日·10 分钟阅读

如何在不丢失上下文的情况下从 OpenClaw 迁移到 Hermes Agent(2026)

OpenClaw 和 Hermes Agent 是近亲。两者都是可以从聊天应用和终端访问的自托管智能体(agent),都通过几个 Markdown 文件来塑造智能体,并且都能跨会话保留记忆。Hermes 甚至为这次迁移提供了一个专用命令:"hermes claw migrate 会将您的 OpenClaw(或旧版 Clawdbot/Moldbot)配置导入到 Hermes 中。"

这使得操作机制变得非常简单。真正需要您注意的是在迁移过程中记忆会发生什么变化,因为这两个项目对记忆的理解有所不同。OpenClaw 将其每日笔记视为不进入提示词(prompt)的工作层。而 Hermes 在迁移过程中,会将这些每日笔记合并为一个单一的记忆文件,并将其注入到每个会话中,同时限制其字符数。

本指南将介绍迁移携带的内容、您的上下文将落脚于何处,以及如何准备您的 OpenClaw 记忆以确保重要部分完好无损地导入。有关 OpenClaw 记忆内部工作原理的背景信息,请参阅 OpenClaw 记忆系统深度解析。

实际迁移的内容

人设、指令和技能

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 安装相互独立。

MemoryLake 控制台显示 API 密钥屏幕,在此创建并复制新密钥以在智能体中使用
MemoryLake 控制台显示 API 密钥屏幕,在此创建并复制新密钥以在智能体中使用

步骤 2:上传您的第一批记忆

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

已上传首批文档的 MemoryLake 工作区,列出了每个文件成为可搜索记忆的过程
已上传首批文档的 MemoryLake 工作区,列出了每个文件成为可搜索记忆的过程

步骤 3:连接您的 AI 和智能体

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

MemoryLake 集成屏幕,列出了可以连接到记忆层的 AI 客户端和智能体框架
MemoryLake 集成屏幕,列出了可以连接到记忆层的 AI 客户端和智能体框架

这在实践中带来了什么改变

第一个区别是,没有任何重要的事情依赖于合并。您的持久上下文之所以能够导入,是因为您对其进行了整理,而不是因为它恰好符合字符限制。

第二个区别是内置记忆更加精简。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,将原始文件保存在您自己的存档中,运行干跑,然后在迁移后验证报告和记忆文件。

将您的持久上下文保存在您自己维护的地方,下一次迁移就会变成一项配置任务,而不是一次记忆拯救行动。

常见问题

如何从 OpenClaw 迁移到 Hermes Agent?

Hermes 提供了 hermes claw migrate,它可以导入 OpenClaw 或旧版的 Clawdbot 配置。先使用 --dry-run 运行它以预览计划,然后在设置了工作区目标的情况下应用它,以便放置 AGENTS.md。

我的 OpenClaw 每日记忆文件会怎么样?

Hermes 的迁移指南指出“所有每日文件合并到主记忆中”,这意味着它们会与您的长期记忆一起合并到 ~/.hermes/memories/MEMORY.md 中,然后进行去重。

Hermes 的 MEMORY.md 可以有多大?

Hermes 文档中规定 MEMORY.md 的限制为 2,200 个字符,而 USER.md 的限制更小。该限制可以通过 memory_char_limit 进行配置,并且当记忆存满时不会自动压缩。

迁移会携带我的外部记忆提供商吗?

它会被归档以供手动审查,而不是直接应用。Hermes 会将记忆后端配置保存到迁移存档中,并表示需要使用 hermes honcho 进行配置。在 Hermes 中,只能有一个外部提供商处于激活状态,并与内置记忆并存。

为什么 Hermes 看不到我刚刚导入的记忆?

Hermes 在会话开始时将记忆作为冻结快照注入。其文档指出,导入的技能和记忆条目在新会话中生效,因此请在迁移后启动一个新会话。

OpenClaw 的 heartbeat 和 identity 文件会怎么样?

它们会被归档。Hermes 建议将 IDENTITY.md 合并到 SOUL.md 中,并使用 cron 任务来处理 HEARTBEAT.md 所负责的周期性任务。