Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help


从 OpenClaw 迁移

hermes claw migrate 命令可将您现有的 OpenClaw(或旧版的 Clawdbot/Moldbot)配置导入 Hermes。本指南将详细说明哪些内容会被迁移、配置键的对应关系,以及迁移完成后需要验证的事项。

::note 如果您是从 Claude Code 或 OpenAI Codex CLI 过渡而来?请使用 hermes import-agent 命令。

::

::tip 如果您的 OpenClaw 配置使用了多个提供商,可使用 hermes setup --portal 将其整合为单一的 OAuth 认证——只需一次登录即可使用 300 多种模型以及工具网关。详情请参阅 Nous Portal。

::

快速入门

# Preview then migrate (always shows a preview first, then asks to confirm)
hermes claw migrate

# Preview only, no changes
hermes claw migrate --dry-run

# Full migration including API keys, skip confirmation
hermes claw migrate --preset full --migrate-secrets --yes

在执行任何更改之前,该迁移工具总会先完整预览即将导入的内容。请仔细查看列表,确认无误后再继续操作。

默认从 ~/.openclaw/ 目录读取数据。系统会自动识别旧的 ~/.clawdbot/ 或 ~/.moltbot/ 目录,旧的配置文件名(如 clawdbot.json、moltbot.json)也是如此。

选项

选项描述
--dry-run仅预览——显示迁移内容后停止。
--preset <name>full(所有兼容设置)或 user-data(排除基础设施相关配置)。默认情况下,这两种预设都不会导入机密信息——需明确使用 --migrate-secrets 选项。
--overwrite在出现冲突时覆盖现有的 Hermes 文件(默认:若计划存在冲突则拒绝应用)。
--migrate-secrets包含 API 密钥。即使使用 --preset full 选项也必须此选项——没有任何预设会悄悄导入机密信息。
--no-backup跳过对 ~/.hermes/ 的迁移前压缩包快照创建步骤(默认情况下,在应用更改前会在 ~/.hermes/backups/pre-migration-*.zip 下生成一个恢复点存档,可通过 hermes import 命令恢复)。
--source <path>自定义 OpenClaw 目录路径。
--workspace-target <path>指定 AGENTS.md 文件的保存位置。
--skill-conflict <mode>skip(默认)、overwrite 或 rename。
--yes跳过预览后的确认提示。

将被迁移的内容

人物设定、记忆内容及指令信息

类型OpenClaw 源文件路径Hermes 目标路径备注
人物设定workspace/SOUL.md~/.hermes/SOUL.md直接复制
工作空间说明workspace/AGENTS.md使用 --workspace-target 指定的 AGENTS.md 路径需要使用 --workspace-target 参数
长期记忆workspace/MEMORY.md~/.hermes/memories/MEMORY.md该文件会被解析为多个条目,与现有条目合并并去重,使用 § 作为分隔符
用户资料workspace/USER.md~/.hermes/memories/USER.md合并逻辑与长期记忆相同
日志记忆文件workspace/memory/*.md~/.hermes/memories/MEMORY.md所有的日志文件都会被合并到主记忆文件中

作为备用路径,还会检查 workspace.default/ 和 workspace-main/ 中的文件(在最新版本中,OpenClaw 将 workspace/ 更名为 workspace-main/,而在多智能体环境中则使用 workspace-{agentId} 作为路径)。

技能(4个来源)

来源OpenClaw 文件位置Hermes 目标路径
工作空间技能workspace/skills/~/.hermes/skills/openclaw-imports/
托管/共享技能~/.openclaw/skills/~/.hermes/skills/openclaw-imports/
个人跨项目技能~/.agents/skills/~/.hermes/skills/openclaw-imports/
项目级共享技能workspace/.agents/skills/~/.hermes/skills/openclaw-imports/
技能冲突可通过 --skill-conflict 参数处理:skip 选项会保留现有的 Hermes 技能,overwrite 选项则会替换它,而 rename 选项则会创建一个带有 -imported 后缀的副本。

模型与提供者配置

配置项OpenClaw 配置路径Hermes 目标位置备注
默认模型agents.defaults.modelconfig.yaml → model可以是字符串形式,也可以是 {primary, fallbacks} 对象形式
自定义提供者models.providers.*config.yaml → custom_providers(在下次执行 hermes update 配置迁移时,会自动转换为标准的 providers: 字典格式)该参数用于指定 baseUrl、apiType/api —— 支持简写形式(如“openai”、“anthropic”)以及带连字符的形式(如“openai-completions”、“anthropic-messages”、“google-generative-ai”)
提供者 API 密钥models.providers.*.apiKey~/.hermes/.env需要使用 --migrate-secrets 参数。详情请参见下文的API 密钥解析部分。

Agent 行为表现

项目OpenClaw 配置路径Hermes 配置路径映射规则
最大轮次数agents.defaults.timeoutSecondsagent.max_turnstimeoutSeconds / 10,上限为 200
详细模式agents.defaults.verboseDefaultagent.verbose“off” / “on” / “full”
推理强度agents.defaults.thinkingDefaultagent.reasoning_effort“always”/“high”/“xhigh” → “high”;“auto”/“medium”/“adaptive” → “medium”;“off”/“low”/“none”/“minimal” → “low”
压缩功能agents.defaults.compaction.modecompression.enabled“off” → false,其他值均为 true
压缩模型agents.defaults.compaction.modelcompression.summary_model直接字符串复制
人类延迟agents.defaults.humanDelay.modehuman_delay.mode“natural” / “custom” / “off”
人类延迟时长agents.defaults.humanDelay.minMs / .maxMshuman_delay.min_ms / .max_ms直接复制
时区设置agents.defaults.userTimezonetimezone直接字符串复制
命令执行超时时间tools.exec.timeoutSecterminal.timeout直接复制(字段名为 timeoutSec,而非 timeout)
Docker 沙箱环境agents.defaults.sandbox.backendterminal.backend“docker” → “docker”
Docker 镜像agents.defaults.sandbox.docker.imageterminal.docker_image直接复制

会话生命周期

空闲计时器和每日重置计时器不会被导入:Hermes 对话会一直保留,直到用户明确发出 /new 或 /reset 命令。而高级会话设置(如身份关联、线程绑定、维护选项、作用域及发送策略)则会被存档以供后续参考。

MCP 服务器

OpenClaw 字段Hermes 字段备注
mcp.servers.*.commandmcp_servers.*.command标准输入输出传输方式
mcp.servers.*.argsmcp_servers.*.args
mcp.servers.*.envmcp_servers.*.env
mcp.servers.*.cwdmcp_servers.*.cwd
mcp.servers.*.urlmcp_servers.*.urlHTTP/SSE 传输方式
mcp.servers.*.tools.includemcp_servers.*.tools.include工具筛选功能
mcp.servers.*.tools.excludemcp_servers.*.tools.exclude

文本转语音(TTS)

TTS 设置会从 两个 OpenClaw 配置位置读取,其优先级如下:

  1. messages.tts.providers.{provider}.*(标准配置位置)
  2. 顶层配置的 talk.providers.{provider}.*(备用位置)
  3. 旧版的扁平键格式 messages.tts.{provider}.*(最旧格式)
项目Hermes 目标路径
提供商名称config.yaml → tts.provider
ElevenLabs 语音 IDconfig.yaml → tts.elevenlabs.voice_id
ElevenLabs 模型 IDconfig.yaml → tts.elevenlabs.model_id
OpenAI 模型config.yaml → tts.openai.model
OpenAI 语音config.yaml → tts.openai.voice
Edge TTS 语音config.yaml → tts.edge.voice(OpenClaw 将 “edge” 更名为 “microsoft”——两种名称均可被识别)
TTS 资源文件~/.hermes/tts/(通过复制文件方式提供)

消息传递平台

PlatformOpenClaw config pathHermes .env variableNotes
Telegramchannels.telegram.botToken or .accounts.default.botTokenTELEGRAM_BOT_TOKENToken can be string or SecretRef. Both flat and accounts layout supported.
Telegramcredentials/telegram-default-allowFrom.jsonTELEGRAM_ALLOWED_USERSComma-joined from allowFrom[] array
Discordchannels.discord.token or .accounts.default.tokenDISCORD_BOT_TOKEN
Discordchannels.discord.allowFrom or .accounts.default.allowFromDISCORD_ALLOWED_USERS
Slackchannels.slack.botToken or .accounts.default.botTokenSLACK_BOT_TOKEN
Slackchannels.slack.appToken or .accounts.default.appTokenSLACK_APP_TOKEN
Slackchannels.slack.allowFrom or .accounts.default.allowFromSLACK_ALLOWED_USERS
WhatsAppchannels.whatsapp.allowFrom or .accounts.default.allowFromWHATSAPP_ALLOWED_USERSAuth via Baileys QR pairing — requires re-pairing after migration
Signalchannels.signal.account or .accounts.default.accountSIGNAL_ACCOUNT
Signalchannels.signal.httpUrl or .accounts.default.httpUrlSIGNAL_HTTP_URL
Signalchannels.signal.allowFrom or .accounts.default.allowFromSIGNAL_ALLOWED_USERS
Matrixchannels.matrix.accessToken or .accounts.default.accessTokenMATRIX_ACCESS_TOKENUses accessToken (not botToken)
Mattermostchannels.mattermost.botToken or .accounts.default.botTokenMATTERMOST_BOT_TOKEN

其他配置项

配置项OpenClaw 路径Hermes 路径备注
审批模式approvals.exec.modeconfig.yaml → approvals.mode取值范围:“auto”→“off”,“always”→“manual”,“smart”→“smart”
命令白名单exec-approvals.jsonconfig.yaml → command_allowlist各模式规则会进行合并与去重处理
浏览器 CDP 地址browser.cdpUrlconfig.yaml → browser.cdp_url
浏览器无头模式browser.headlessconfig.yaml → browser.headless
Brave 搜索密钥tools.web.search.brave.apiKey.env → BRAVE_API_KEY需要使用 --migrate-secrets 参数
网关认证令牌gateway.auth.token.env → HERMES_GATEWAY_TOKEN需要使用 --migrate-secrets 参数
工作目录agents.defaults.workspaceconfig.yaml → terminal.cwd为兼容旧版本,某些迁移任务仍可能输出 MESSAGING_CWD 作为备用值

归档配置(Hermes 中无直接对应项)

此类配置会被保存至 ~/.hermes/migration/openclaw/<时间戳>/archive/ 目录,以便人工查看:

类型存档文件在 Hermes 中的重建方式
IDENTITY.mdarchive/workspace/IDENTITY.md合并到 SOUL.md 中
TOOLS.mdarchive/workspace/TOOLS.mdHermes 已内置工具使用说明
HEARTBEAT.mdarchive/workspace/HEARTBEAT.md使用定时任务(cron job)处理周期性任务
BOOTSTRAP.mdarchive/workspace/BOOTSTRAP.md通过上下文文件或技能来实现
定时任务archive/cron-config.json使用 hermes cron create 命令重新创建
插件archive/plugins-config.json参见插件指南
Hook/Webhookarchive/hooks-config.json使用 hermes webhook 或网关 Hook
内存后端archive/memory-backend-config.json通过 hermes honcho 进行配置
技能注册表archive/skills-registry-config.json使用 hermes skills config 命令
用户界面/身份配置archive/ui-identity-config.json使用 /skin 命令
日志记录archive/logging-diagnostics-config.json在 config.yaml 的日志配置部分进行设置
多智能体列表archive/agents-list.json通过 Hermes 配置文件来管理
渠道绑定archive/bindings.json需根据不同平台手动配置
复杂渠道archive/channels-deep-config.json需针对不同平台进行手动配置

API 密钥解析

当启用 --migrate-secrets 参数时,API 密钥会按优先级从四个来源中收集:

  1. 配置值 — models.providers.*.apiKey 以及 openclaw.json 中的 TTS 提供商密钥
  2. 环境文件 — ~/.openclaw/.env(包含如 OPENROUTER_API_KEY、ANTHROPIC_API_KEY 等键值)
  3. 配置环境子对象 — openclaw.json → "env" 或 "env"."vars"(部分配置会将密钥存储于此,而非单独的 .env 文件中)
  4. 认证配置文件 — ~/.openclaw/agents/main/agent/auth-profiles.json(用于存储每个智能体的凭证)

配置值的优先级最高,后续的配置来源将填补剩余的空缺。

支持的密钥类型

OPENROUTER_API_KEY、OPENAI_API_KEY、ANTHROPIC_API_KEY、DEEPSEEK_API_KEY、GEMINI_API_KEY、ZAI_API_KEY、MINIMAX_API_KEY、ELEVENLABS_API_KEY、TELEGRAM_BOT_TOKEN、VOICE_TOOLS_OPENAI_KEY

不在此列表中的密钥将不会被复制。

SecretRef 处理方式

OpenClaw 中用于存储令牌和 API 密钥的配置值可采用三种格式:

// Plain string
"channels": { "telegram": { "botToken": "123456:ABC-DEF..." } }

// Environment template
"channels": { "telegram": { "botToken": "${TELEGRAM_BOT_TOKEN}" } }

// SecretRef object
"channels": { "telegram": { "botToken": { "source": "env", "id": "TELEGRAM_BOT_TOKEN" } } }

此次迁移可处理这三种格式的配置。对于源类型为 env 的环境模板和 SecretRef 对象,系统会从 ~/.openclaw/.env 文件以及 openclaw.json 中的环境子对象中查找对应值。而源类型为 file 或 exec 的 SecretRef 对象则无法自动完成解析——系统会针对这类对象发出警告,相关值必须通过 hermes config set 命令手动添加到 Hermes 中。

迁移完成后

  1. 查看迁移报告——迁移完成后会生成该报告,其中列明了已迁移、跳过以及存在冲突的项的数量。

  2. 检查归档文件——位于 ~/.hermes/migration/openclaw/<timestamp>/archive/ 目录中的所有文件都需要人工处理。

  3. 启动新会话——已导入的技能和内存条目仅在新建的会话中生效,当前会话不受影响。

  4. 验证 API 密钥——运行 hermes status 命令以检查服务提供方的身份认证状态。

  5. 测试消息功能——如果已迁移平台令牌,需重启网关:systemctl --user restart hermes-gateway

  6. 查看会话归档文件——检查归档后的高级设置;出于设计考虑,空闲计时器和每日重置计时器不会被导入。

  7. 重新配对 WhatsApp——WhatsApp 使用二维码配对方式(Baileys 协议),而非令牌迁移机制。需运行 hermes whatsapp 命令进行配对。

  8. 清理归档文件——确认所有功能正常后,运行 hermes claw cleanup 命令将剩余的 OpenClaw 目录重命名为 .pre-migration/(以避免状态混淆)。

故障排除

“未找到 OpenClaw 目录”

迁移过程会依次检查 ~/.openclaw/、~/.clawdbot/ 和 ~/.moltbot/ 这三个目录。如果您的安装路径不在这些位置,请使用 --source /path/to/your/openclaw 参数指定路径。

“未找到提供者 API 密钥”

根据 OpenClaw 的版本不同,密钥可能存储在多个位置:openclaw.json 文件中 models.providers.*.apiKey 字段内、~/.openclaw/.env 文件中、openclaw.json 的 "env" 子对象中,或是 agents/main/agent/auth-profiles.json 文件中。迁移工具会逐一检查这四个位置。如果密钥使用了 source: "file" 或 source: "exec" 类型的 SecretRefs,系统将无法自动解析这些密钥——需要通过 hermes config set 命令手动添加。

迁移后技能未显示

导入的技能会存储在 ~/.hermes/skills/openclaw-imports/ 目录下。需要启动新会话才能让这些技能生效,或者运行 /skills 命令来确认它们已被加载。

TTS 语音未同步迁移

OpenClaw 会将 TTS 相关设置存储在两个位置:messages.tts.providers.* 文件以及顶层的 talk 配置文件中。迁移过程会同时检查这两个位置。如果您的声音 ID 是通过 OpenClaw 用户界面设置的(且存储在其他路径),则可能需要手动设置:hermes config set tts.elevenlabs.voice_id YOUR_VOICE_ID。