跳到主要内容

从 OpenClaw 迁移

hermes claw migrate 可将你的 OpenClaw(或旧版 Clawdbot/Moldbot)配置导入 Hermes。本指南详细介绍迁移内容、配置键的映射关系以及迁移后的验证步骤。

快速开始

# 预览将执行的操作(不修改任何文件)
hermes claw migrate --dry-run

# 执行迁移(默认不包含密钥)
hermes claw migrate

# 完整迁移,包含 API 密钥
hermes claw migrate --preset full

迁移默认从 ~/.openclaw/ 读取配置。如果你仍有旧版 ~/.clawdbot/~/.moldbot/ 目录,系统会自动检测。旧版配置文件名(clawdbot.jsonmoldbot.json)同样支持自动识别。

选项

选项说明
--dry-run预览将迁移的内容,不写入任何文件。
--preset <name>full(默认,包含密钥)或 user-data(排除 API 密钥)。
--overwrite发生冲突时覆盖已有 Hermes 文件(默认:跳过)。
--migrate-secrets包含 API 密钥(使用 --preset full 时默认开启)。
--source <path>自定义 OpenClaw 目录。
--workspace-target <path>指定 AGENTS.md 的放置位置。
--skill-conflict <mode>skip(默认)、overwriterename
--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/ 作为备用路径进行检查。

技能(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.yamlmodel可为字符串或 {primary, fallbacks} 对象
自定义提供商models.providers.*config.yamlcustom_providers映射 baseUrlapiType("openai"→"chat_completions","anthropic"→"anthropic_messages")
提供商 API 密钥models.providers.*.apiKey~/.hermes/.env需要 --migrate-secrets。参见下方 API 密钥解析

智能体行为

内容OpenClaw 配置路径Hermes 配置路径映射
最大轮次agents.defaults.timeoutSecondsagent.max_turnstimeoutSeconds / 10,上限 200
详细模式agents.defaults.verboseDefaultagent.verbose"off" / "on" / "full"
推理强度agents.defaults.thinkingDefaultagent.reasoning_effort"always"/"high" → "high","auto"/"medium" → "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直接复制

会话重置策略

OpenClaw 配置路径Hermes 配置路径备注
session.reset.modesession_reset.mode"daily"、"idle" 或两者都启用
session.reset.atHoursession_reset.at_hour每日重置的小时(0–23)
session.reset.idleMinutessession_reset.idle_minutes无活动的分钟数

注意:OpenClaw 还有 session.resetTriggers(简单字符串数组,如 ["daily", "idle"])。若结构化的 session.reset 不存在,迁移将回退为从 resetTriggers 推断。

MCP 服务器

OpenClaw 字段Hermes 字段备注
mcp.servers.*.commandmcp_servers.*.commandStdio 传输
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.yamltts.provider
ElevenLabs 语音 IDconfig.yamltts.elevenlabs.voice_id
ElevenLabs 模型 IDconfig.yamltts.elevenlabs.model_id
OpenAI 模型config.yamltts.openai.model
OpenAI 语音config.yamltts.openai.voice
Edge TTS 语音config.yamltts.edge.voice
TTS 资源文件~/.hermes/tts/(文件复制)

消息平台

平台OpenClaw 配置路径Hermes .env 变量备注
Telegramchannels.telegram.botTokenTELEGRAM_BOT_TOKEN令牌可为字符串或 SecretRef
Telegramcredentials/telegram-default-allowFrom.jsonTELEGRAM_ALLOWED_USERSallowFrom[] 数组用逗号连接
Discordchannels.discord.tokenDISCORD_BOT_TOKEN
Discordchannels.discord.allowFromDISCORD_ALLOWED_USERS
Slackchannels.slack.botTokenSLACK_BOT_TOKEN
Slackchannels.slack.appTokenSLACK_APP_TOKEN
Slackchannels.slack.allowFromSLACK_ALLOWED_USERS
WhatsAppchannels.whatsapp.allowFromWHATSAPP_ALLOWED_USERS通过 Baileys 二维码配对(非令牌)鉴权
Signalchannels.signal.accountSIGNAL_ACCOUNT
Signalchannels.signal.httpUrlSIGNAL_HTTP_URL
Signalchannels.signal.allowFromSIGNAL_ALLOWED_USERS
Matrixchannels.matrix.botTokenMATRIX_ACCESS_TOKEN通过 deep-channels 迁移
Mattermostchannels.mattermost.botTokenMATTERMOST_BOT_TOKEN通过 deep-channels 迁移

其他配置

内容OpenClaw 路径Hermes 路径备注
审批模式approvals.exec.modeconfig.yamlapprovals.mode"auto"→"off","always"→"manual","smart"→"smart"
命令允许列表exec-approvals.jsonconfig.yamlcommand_allowlist合并模式并去重
浏览器 CDP URLbrowser.cdpUrlconfig.yamlbrowser.cdp_url
浏览器无头模式browser.headlessconfig.yamlbrowser.headless
Brave 搜索密钥tools.web.search.brave.apiKey.envBRAVE_API_KEY需要 --migrate-secrets
网关鉴权令牌gateway.auth.token.envHERMES_GATEWAY_TOKEN需要 --migrate-secrets
工作目录agents.defaults.workspace.envMESSAGING_CWD

已存档(Hermes 无直接等价项)

以下内容保存至 ~/.hermes/migration/openclaw/<timestamp>/archive/,需人工处理:

内容存档文件如何在 Hermes 中重建
IDENTITY.mdarchive/workspace/IDENTITY.md合并至 SOUL.md
TOOLS.mdarchive/workspace/TOOLS.mdHermes 内置工具说明
HEARTBEAT.mdarchive/workspace/HEARTBEAT.md使用定时任务处理周期性任务
BOOTSTRAP.mdarchive/workspace/BOOTSTRAP.md使用上下文文件或技能
定时任务archive/cron-config.json使用 hermes cron create 重建
插件archive/plugins-config.json参见插件指南
Hooks/Webhooksarchive/hooks-config.json使用 hermes webhook 或网关 hooks
记忆后端archive/memory-backend-config.json通过 hermes honcho 配置
技能注册表archive/skills-registry-config.json使用 hermes skills config
UI/身份标识archive/ui-identity-config.json使用 /skin 命令
日志archive/logging-diagnostics-config.jsonconfig.yaml 日志部分设置
多智能体列表archive/agents-list.json使用 Hermes 配置文件
频道绑定archive/bindings.json逐平台手动配置
复杂频道配置archive/channels-deep-config.json手动配置各平台

API 密钥解析

启用 --migrate-secrets 后,API 密钥将从三个来源按优先级顺序收集:

  1. 配置值openclaw.json 中的 models.providers.*.apiKey 及 TTS 提供商密钥
  2. 环境文件~/.openclaw/.env(如 OPENROUTER_API_KEYANTHROPIC_API_KEY 等键名)
  3. 鉴权配置文件~/.openclaw/agents/main/agent/auth-profiles.json(按智能体的凭据)

配置值优先级最高,.env 补充缺失项,鉴权配置文件填充剩余部分。

支持写入的密钥

OPENROUTER_API_KEYOPENAI_API_KEYANTHROPIC_API_KEYDEEPSEEK_API_KEYGEMINI_API_KEYZAI_API_KEYMINIMAX_API_KEYELEVENLABS_API_KEYTELEGRAM_BOT_TOKENVOICE_TOOLS_OPENAI_KEY

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

SecretRef 处理

OpenClaw 中令牌和 API 密钥的配置值兼容以下三种格式:

// 纯字符串
"channels": { "telegram": { "botToken": "123456:ABC-DEF..." } }

// 环境变量模板
"channels": { "telegram": { "botToken": "${TELEGRAM_BOT_TOKEN}" } }

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

迁移工具兼容以上三种格式。对于环境变量模板和 source: "env" 的 SecretRef 对象,它会从 ~/.openclaw/.env 中查找对应值。source: "file"source: "exec" 的 SecretRef 对象无法自动解析——这些值需要在迁移完成后手动添加到 Hermes 中。

迁移后检查

  1. 查看迁移报告 — 完成时打印,包含已迁移、已跳过和冲突项目的统计。

  2. 审查已存档文件~/.hermes/migration/openclaw/<timestamp>/archive/ 中的内容需要人工处理。

  3. 验证 API 密钥 — 运行 hermes status 检查提供商鉴权状态。

  4. 测试消息平台 — 如果迁移了平台令牌,重启网关:systemctl --user restart hermes-gateway

  5. 检查会话策略 — 验证 hermes config get session_reset 的结果符合预期。

  6. 重新配对 WhatsApp — WhatsApp 使用二维码配对(Baileys),不支持令牌迁移。运行 hermes whatsapp 进行配对。

故障排查

"OpenClaw directory not found"

迁移工具依次检查 ~/.openclaw/~/.clawdbot/~/.moldbot/。如果你的安装路径不同,请使用 --source /path/to/your/openclaw

"No provider API keys found"

密钥可能在 .env 文件中而非 openclaw.json。迁移工具会同时检查两者——确保 ~/.openclaw/.env 存在且包含所需密钥。如果密钥使用 source: "file"source: "exec" 类型的 SecretRef,则无法自动解析。

迁移后技能未出现

导入的技能位于 ~/.hermes/skills/openclaw-imports/。开启新会话后它们才会生效,或运行 /skills 验证是否已加载。

TTS 语音未迁移

OpenClaw 将 TTS 设置存储在两个位置:messages.tts.providers.* 和顶层 talk 配置。迁移工具会同时检查两处。如果你的语音 ID 是通过 OpenClaw UI 设置的(存储在不同路径),可能需要手动设置:hermes config set tts.elevenlabs.voice_id YOUR_VOICE_ID