跳到主要內容

從 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 密鑰解析

Agent 行為

內容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_TOKENToken 可為字符串或 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 QR 配對認證(非 token)
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
網關認證 tokengateway.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使用 cron 任務實現週期性任務
BOOTSTRAP.mdarchive/workspace/BOOTSTRAP.md使用上下文文件或技能
Cron 任務archive/cron-config.json使用 hermes cron create 重建
插件archive/plugins-config.json參見 插件指南
鉤子/Webhookarchive/hooks-config.json使用 hermes webhook 或網關鉤子
記憶後端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 的 logging 部分設置
多 Agent 列表archive/agents-list.json使用 Hermes 配置文件
通道綁定archive/bindings.json按平臺手動設置
複雜通道archive/channels-deep-config.json手動平臺配置

API 密鑰解析

當啟用 --migrate-secrets 時,API 密鑰將按優先級從 三個來源 收集:

  1. 配置值models.providers.*.apiKeyopenclaw.json 中 TTS 提供商密鑰
  2. 環境文件~/.openclaw/.env(如 OPENROUTER_API_KEYANTHROPIC_API_KEY 等)
  3. 認證配置文件~/.openclaw/agents/main/agent/auth-profiles.json(按 Agent 的憑據)

配置值具有最高優先級。.env 文件用於填充缺失的值。認證配置文件則用於填充剩餘的空白。

支持的鍵目標

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 密鑰的值可以採用三種格式:

// 純字符串
"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 目錄”

遷移過程會依次檢查 ~/.openclaw/~/.clawdbot/~/.moldbot/。如果你的安裝路徑不同,請使用 --source /path/to/your/openclaw 指定路徑。

“未找到任何服務商 API 密鑰”

密鑰可能位於你的 .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