title: “Openclaw Migration — Migrate a user’s OpenClaw customization footprint into Hermes Agent” sidebar_label: “Openclaw Migration” description: “Migrate a user’s OpenClaw customization footprint into Hermes Agent”
{/* 本页面由 website/scripts/generate-skill-docs.py 根据技能对应的 SKILL.md 文件自动生成。请直接编辑源文件 SKILL.md,而非此页面。 */}
OpenClaw 迁移
将用户的 OpenClaw 定制配置迁移至 Hermes Agent。该功能会从 ~/.openclaw 中导入与 Hermes 兼容的记忆体、SOUL.md 文件、命令允许列表、用户技能以及选定的工作区资源,同时详细列出无法迁移的内容及其原因。
技能元数据
| 来源 | 可选 — 通过 hermes skills install official/migration/openclaw-migration 命令安装 |
| 路径 | optional-skills/migration/openclaw-migration |
| 版本 | 1.0.0 |
| 开发者 | Hermes Agent(Nous Research) |
| 许可协议 | MIT |
| 支持平台 | linux、macos、windows |
| 标签 | Migration、OpenClaw、Hermes、Memory、Persona、Import |
| 相关技能 | hermes-agent |
参考:完整 SKILL.md 内容
OpenClaw -> Hermes 迁移
当用户希望以最少的手动操作将 OpenClaw 配置迁移至 Hermes Agent 时,可使用此技能。
CLI 命令
如需快速且无需交互式的迁移操作,可直接使用内置的 CLI 命令:
hermes claw migrate # Full interactive migration
hermes claw migrate --dry-run # Preview what would be migrated
hermes claw migrate --preset user-data # Migrate without secrets
hermes claw migrate --overwrite # Overwrite existing conflicts
hermes claw migrate --source /custom/path/.openclaw # Custom source
该 CLI 命令会运行下文所述的相同迁移脚本。当您需要一种具备交互式引导功能、可预览试运行结果并能针对每项内容解决冲突的迁移方式时,可通过代理使用此技能。
首次设置: hermes setup 向导会自动检测 ~/.openclaw 目录,并在开始配置前提示进行迁移。
该技能的功能
它通过 scripts/openclaw_to_hermes.py 脚本来实现以下功能:
- 将
SOUL.md文件导入 Hermes 主目录,文件名保持不变; - 将 OpenClaw 的
MEMORY.md和USER.md文件转换为 Hermes 对应的内存条目; - 将 OpenClaw 中的命令审批规则合并到 Hermes 的
command_allowlist中; - 迁移与 Hermes 兼容的消息设置,如
TELEGRAM_ALLOWED_USERS,并将 OpenClaw 的工作区设置映射为 Hermes 的工作目录配置; - 将 OpenClaw 的技能复制到
~/.hermes/skills/openclaw-imports/目录中; - 可选地将 OpenClaw 的工作区说明文件复制到用户指定的 Hermes 工作区中;
- 将兼容的工作区资源(如
workspace/tts/目录下的文件)复制到~/.hermes/tts/目录中; - 对那些没有直接对应 Hermes 存储路径的非机密文档进行归档;
- 生成结构化报告,列出已迁移的项目、存在冲突的项目、被跳过的项目及其原因。
路径解析
该辅助脚本位于以下路径:
scripts/openclaw_to_hermes.py
若通过 Skills Hub 安装此技能,其默认路径为:
~/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py
请勿尝试使用如 ~/.hermes/skills/openclaw-migration/... 这类简写路径。
在运行该辅助脚本之前,请遵循以下步骤:
- 优先使用位于
~/.hermes/skills/migration/openclaw-migration/下的已安装路径; - 若该路径无法使用,则查看已安装的技能目录,根据其中的
SKILL.md文件确定脚本的准确位置; - 仅当已安装路径不存在或技能被手动移动时,才将
find命令作为备用方案; - 调用终端工具时,切勿传递
workdir: "~"参数。应使用用户主目录等绝对路径,或者完全省略workdir参数。
若使用 --migrate-secrets 参数,该脚本还会导入一组经过筛选的、与 Hermes 兼容的机密信息,目前包括:
TELEGRAM_BOT_TOKEN
默认工作流程
- 首先通过试运行进行预览;
- 简要总结哪些内容可以迁移、哪些无法迁移以及哪些会被归档;
- 若有
clarify工具可用,应使用它来获取用户决策,而非要求用户直接输入文字回复; - 若试运行发现导入的技能目录存在冲突,应在执行前询问用户如何处理这些冲突;
- 在执行前,让用户从两种支持的迁移模式中选择一种;
- 仅当用户希望同步工作区说明文件时,才询问目标工作区路径;
- 使用相应的预设参数和标志执行迁移操作;
- 概要说明迁移结果,重点包括:
- 已迁移的内容;
- 被归档以供人工审核的内容;
- 被跳过的内容及其原因。
用户交互协议
Hermes CLI 支持使用 clarify 工具进行交互式提问,但其功能有限制:
- 每次只能提供一个选项;
- 预定义的选项最多为 4 个;
- 还会自动提供一个“其他”选项供用户输入自由文本。
它不支持在单个提问中提供真正的多选复选框。
对于每次 clarify 调用,需满足以下要求:
- 必须包含一个非空的
question字段; - 仅在实际需要用户选择的提问中才包含
choices字段; choices中的选项应为 2 到 4 个纯文本选项;- 绝不可使用
...等占位符或截断后的选项形式; - 绝不可通过额外空格来填充或美化选项内容;
- 绝不可在提问中添加虚假的表单字段,如“请输入目录路径”、留空行供填写,或使用
_____等符号; - 对于需要用户输入路径的开放式提问,只需提出问题即可;用户可在面板下方的常规 CLI 输入框中输入内容。
如果 clarify 调用返回错误,需查看错误信息,修正相关参数,然后使用有效的 question 和干净的选项列表重新尝试一次。
当 clarify 工具可用且试运行结果显示需要用户做出决策时,接下来的操作必须是再次调用 clarify 工具。切勿以常规助手回复的方式结束当前对话,例如:
- “让我为您列出可选选项”
- “您想怎么做?”
- “以下是可选选项”
如果需要用户做出决策,应先通过 clarify 获取用户的决定,然后再继续输出文字说明。如果仍有未解决的决策问题,不得在这些问题之间插入解释性文字。收到一次 clarify 的回复后,通常应立即进行下一次必要的 clarify 调用。
当试运行结果显示以下情况时,应将 workspace-agents 视为未解决的决策问题:
kind="workspace-agents"status="skipped"- 原因中包含“未提供目标工作区”
在这种情况下,必须在执行前询问用户关于工作区说明文件的处理方式。切勿默认将其视为应跳过该步骤。
由于存在上述限制,建议采用以下简化的决策流程:
- 对于
SOUL.md文件的冲突,使用clarify提供以下选项供用户选择:- 保留现有版本
- 用备份版本覆盖
- 先进行查看
- 如果试运行显示有一个或多个
kind="skill"类型的项目且状态为conflict,则使用clarify提供以下选项:- 保留现有的技能
- 用备份版本覆盖有冲突的技能
- 将有冲突的技能导入到重命名的文件夹中
- 对于工作区说明文件的处理,使用
clarify提供以下选项:- 跳过工作区说明文件的同步
- 复制到指定的工作区路径
- 稍后决定
- 如果用户选择复制工作区说明文件,则需进一步提出开放式
clarify问题,要求用户输入绝对路径; - 如果用户选择“跳过工作区说明文件”或“稍后决定”,则无需添加
--workspace-target参数即可继续; - 对于迁移模式的选择,使用
clarify提供以下三个选项:- 仅迁移用户数据
- 执行完整的兼容性迁移(包括已筛选的机密信息)
- 取消迁移
- “仅迁移用户数据”意味着:迁移用户数据及兼容的配置文件,但不导入已筛选的机密信息;
- “完整的兼容性迁移”意味着:迁移相同的兼容用户数据,同时导入已筛选的机密信息(如果存在的话);
- 如果无法使用
clarify工具,则需以普通文本形式提出相同的问题,但仍要将用户的回答限制在“仅迁移用户数据”、“完整的兼容性迁移”或“取消迁移”这三种选项之中。
执行前提条件:
- 只有在因“未提供目标工作区”而导致
workspace-agents任务被跳过的问题得到解决后,才能执行迁移; - 解决该问题的有效方式仅有以下几种:
- 用户明确选择“跳过工作区说明文件”;
- 用户明确选择“稍后决定”;
- 用户在选择“复制到指定的工作区路径”后提供了具体的工作区路径;
- 试运行中未指定目标工作区,并不意味着可以立即执行迁移;
- 只有在所有必要的
clarify决策问题都得到解决后,才能执行迁移。
请严格使用以下格式的 clarify 参数作为默认结构:
{"question":"您现有的 SOUL.md 文件与导入的版本存在冲突,我应该怎么做?","choices":["keep existing","overwrite with backup","review first"]}{"question":"已有一个或多个从 OpenClaw 导入的技能存在于 Hermes 中,我该如何处理这些冲突?","choices":["keep existing skills","overwrite conflicting skills with backup","import conflicting skills under renamed folders"]}{"question":"请选择迁移模式:仅迁移用户数据,还是执行包含已筛选机密信息的完整兼容性迁移?","choices":["user-data only","full compatible migration","cancel"]}{"question":"您是否希望将 OpenClaw 的工作区说明文件复制到 Hermes 的某个工作区中?","choices":["skip workspace instructions","copy to a workspace path","decide later"]}{"question":"请提供目标工作区路径,以便复制工作区说明文件。"}
决策与命令的对应关系
需将用户的决策准确映射为相应的命令参数:
- 如果用户选择对
SOUL.md保留现有版本,则不要添加--overwrite参数; - 如果用户选择用备份版本覆盖,则添加
--overwrite参数; - 如果用户选择先进行查看,则在执行前暂停,让用户先查看相关文件;
- 如果用户选择保留现有的技能,则添加
--skill-conflict skip参数; - 如果用户选择用备份版本覆盖有冲突的技能,则添加
--skill-conflict overwrite参数; - 如果用户选择将有冲突的技能导入到重命名的文件夹中,则添加
--skill-conflict rename参数; - 如果用户选择“仅迁移用户数据”,则使用
--preset user-data参数执行迁移,且不要添加--migrate-secrets参数; - 如果用户选择“完整的兼容性迁移”,则使用
--preset full --migrate-secrets参数执行迁移; - 仅当用户明确提供了具体的绝对路径时,才添加
--workspace-target参数; - 如果用户选择“跳过工作区说明文件”或“稍后决定”,则无需添加
--workspace-target参数。
在执行迁移之前,需用通俗的语言再次说明具体的执行计划,并确保该计划与用户的决策一致。
执行后的报告规则
执行完成后,应以脚本生成的 JSON 输出结果作为最权威的依据。
- 所有的计数数据均来源于
report.summary部分; - 仅当某项内容的
status字段确切为migrated时,才将其列入“已成功迁移”的列表中; - 除非报告显示某项内容已被标记为“已迁移”,否则不得声称该冲突已得到解决;
- 除非
kind="soul"类型的项目在报告中被标记为status="migrated",否则不得声明SOUL.md文件已被覆盖; - 如果
report.summary.conflict的数值大于 0,则需单独列出冲突相关内容,而不得隐含迁移已成功的含义; - 如果计数数据与列出的项目内容不一致,则需在回复之前调整列表,使其与报告内容保持一致;
- 若报告中有
output_dir路径信息,应一并列出,以便用户查看report.json、summary.md文件、备份文件以及被归档的文件; - 对于内存条目或用户配置文件因空间不足而被归档的情况,除非报告明确指出了归档路径,否则不得声称这些条目已被归档。如果存在
details.overflow_file文件,则应说明所有的溢出内容均已导出到该文件中; - 如果某个技能是导入到重命名的文件夹中的,需在报告中说明其最终存储位置,并提及
details.renamed_from字段中记录的原始文件夹名称; - 如果报告中有
report.skill_conflict_mode字段,则应以该字段所指定的规则作为判断导入技能冲突处理方式的依据; - 如果某项内容的
status为skipped,则不得将其描述为已被覆盖、备份、迁移或解决; - 如果
kind="soul"类型的项目状态为skipped,且原因显示“目标与源文件相同”,则应说明该项目保持不变,无需提及任何备份操作; - 如果某个被重命名的导入技能的
details.backup字段为空,则不得暗示 Hermes 中原有的技能已被重命名或备份。只需说明导入的版本已被放置到新的目标位置,并提及details.renamed_from字段中记录的原有文件夹名称。
迁移预设选项
在日常使用中,建议优先选择以下两种预设模式:
user-datafull
user-data 模式包含以下内容:
soulworkspace-agentsmemoryuser-profilemessaging-settingscommand-allowlistskillstts-assetsarchive
full 模式则包含 user-data 模式中的所有内容,此外还包含:
secret-settings该辅助脚本仍支持在类别层级使用--include/--exclude参数,但应将其视为一种高级的备用功能,而非默认的用户体验。
命令
执行包含完整资源发现的模拟运行:
python3 ~/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py
在使用终端工具时,建议采用如下这种绝对调用方式:
{"command":"python3 /home/USER/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py","workdir":"/home/USER"}
使用用户数据预设进行模拟运行:
python3 ~/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py --preset user-data
执行用户数据迁移:
python3 ~/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py --execute --preset user-data --skill-conflict skip
执行完全兼容的迁移:
python3 ~/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py --execute --preset full --migrate-secrets --skill-conflict skip
按包含工作区指令的方式执行:
python3 ~/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py --execute --preset user-data --skill-conflict rename --workspace-target "/absolute/workspace/path"
默认情况下,请勿将 $PWD 或用户主目录设置为工作空间目标,应首先询问用户明确指定的工作空间路径。
重要规则
- 除非用户明确要求立即执行,否则应在写入数据前先进行试运行。
- 默认情况下不得迁移机密信息。令牌、认证数据块、设备凭证以及原始网关配置均不应被导入 Hermes,除非用户明确要求迁移这些机密内容。
- 除非用户明确希望如此,否则不得默默覆盖非空的 Hermes 目标。若启用了备份功能,辅助脚本会保留原有数据。
- 始终需向用户提供已跳过项目的报告。该报告是迁移流程的必要部分,而非可选附加项。
- 应优先使用主 OpenClaw 工作空间(
~/.openclaw/workspace/),而非workspace.default/。仅当主工作空间中的文件缺失时,才将默认工作空间作为备用。 - 即使处于机密信息迁移模式,也仅能在目标 Hermes 环境正常的情况下迁移机密信息。不受支持的认证数据块仍需标记为已跳过。
- 若试运行显示有大量资产需要复制、存在冲突的
SOUL.md文件或内存条目已满,应在执行前分别指出这些问题。 - 若用户不确定,应默认仅处理“用户数据”部分。
- 仅当用户明确提供了目标工作空间路径时,才包含
workspace-agents目录。 - 将类别级别的
--include/--exclude选项视为高级应急手段,而非常规操作方式。 - 若存在
clarify功能,切勿在试运行总结时使用含糊的“您想做什么?”这类表述,而应使用结构化的后续提示。 - 当可以使用明确的选项式提示时,不要使用开放式的
clarify提示。应优先提供可选选项,仅在需要输入绝对路径或审核文件时才允许自由输入文本。 - 试运行结束后,若仍有未解决的决策问题,切勿仅作总结便结束流程,应立即针对最高优先级的阻塞性问题使用
clarify功能。 - 后续问题的处理优先级如下:
SOUL.md文件冲突- 导入的技能之间存在冲突
- 迁移模式选择
- 工作空间目标设置
- 不得在同一条消息中承诺稍后会给出选项,而应通过实际调用
clarify功能来呈现选项。 - 在获取用户对迁移模式的回答后,需明确检查
workspace-agents问题是否仍未解决。若仍有未解决项,下一步操作必须是对工作空间设置使用clarify功能。 - 在获得任何
clarify的回答后,若还有其他必须做出的决策,切勿复述刚刚的决策内容,应立即提出下一个必要问题。
预期结果
成功执行迁移后,用户应获得以下结果:
- Hermes 人物状态已被导入
- Hermes 内存文件已填充转换后的 OpenClaw 知识
- OpenClaw 技能会出现在
~/.hermes/skills/openclaw-imports/目录下 - 一份迁移报告,列出所有冲突、遗漏或不受支持的数据信息