H繁中版
文件教學與最佳實踐migrate from openclaw
<!-- Source: https://hermesbible.com/docs/guides/migrate-from-openclaw -->

hermes claw migrate 將你的 OpenClaw(或舊版 Clawdbot/Moldbot)設定匯入 Hermes。本指南涵蓋確切遷移的內容、設定鍵對應,以及遷移後需要驗證的事項。

提示

如果你的 OpenClaw 設定是多供應商的,hermes setup --portal 會將其壓縮為一個 OAuth — 300 多個模型加上 Tool Gateway 在一個登入中。參見 Nous Portal

快速開始

# 預覽然後遷移(總是先顯示預覽,然後要求確認)
hermes claw migrate

# 僅預覽,不做任何變更
hermes claw migrate --dry-run

# 完整遷移包括 API 金鑰,跳過確認
hermes claw migrate --preset full --migrate-secrets --yes

遷移總是先顯示將匯入內容的完整預覽,然後才進行任何變更。檢視清單,然後確認繼續。

預設從 ~/.openclaw/ 讀取。舊版 ~/.clawdbot/~/.moltbot/ 目錄會被自動偵測。舊版設定檔名稱(clawdbot.jsonmoltbot.json)也是如此。

選項

選項描述
--dry-run僅預覽 — 顯示將被遷移的內容後停止。
--preset <name>full(所有相容設定)或 user-data(排除基礎設施設定)。兩個預設都不匯入密鑰 — 需要明確傳遞 --migrate-secrets
--overwrite衝突時覆寫現有的 Hermes 檔案(預設:當計畫有衝突時拒絕套用)。
--migrate-secrets包含 API 金鑰。即使在 --preset full 下也需要 — 沒有預設會靜默匯入密鑰。
--no-backup跳過遷移前的 ~/.hermes/ zip 快照(預設在套用前寫入一個還原點壓縮檔,位於 ~/.hermes/backups/pre-migration-*.zip;可透過 hermes import 還原)。
--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/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.yamlmodel可以是字串或 {primary, fallbacks} 物件
自訂供應商models.providers.*config.yamlcustom_providers對應 baseUrlapiType/api — 處理簡短(「openai」、「anthropic」)和連字元(「openai-completions」、「anthropic-messages」、「google-generative-ai」)值
供應商 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"
推理 effortagents.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直接複製

工作階段重設策略

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(OpenClaw 將「edge」重新命名為「microsoft」— 兩者都被識別)
TTS 資源~/.hermes/tts/(檔案複製)

訊息平台

平台OpenClaw 設定路徑Hermes .env 變數備註
Telegramchannels.telegram.botToken.accounts.default.botTokenTELEGRAM_BOT_TOKEN代碼可以是字串或 SecretRef。支援扁平和帳戶佈局。
Telegramcredentials/telegram-default-allowFrom.jsonTELEGRAM_ALLOWED_USERSallowFrom[] 陣列逗號連接
Discordchannels.discord.token.accounts.default.tokenDISCORD_BOT_TOKEN
Discordchannels.discord.allowFrom.accounts.default.allowFromDISCORD_ALLOWED_USERS
Slackchannels.slack.botToken.accounts.default.botTokenSLACK_BOT_TOKEN
Slackchannels.slack.appToken.accounts.default.appTokenSLACK_APP_TOKEN
Slackchannels.slack.allowFrom.accounts.default.allowFromSLACK_ALLOWED_USERS
WhatsAppchannels.whatsapp.allowFrom.accounts.default.allowFromWHATSAPP_ALLOWED_USERS透過 Baileys QR 配對認證 — 遷移後需要重新配對
Signalchannels.signal.account.accounts.default.accountSIGNAL_ACCOUNT
Signalchannels.signal.httpUrl.accounts.default.httpUrlSIGNAL_HTTP_URL
Signalchannels.signal.allowFrom.accounts.default.allowFromSIGNAL_ALLOWED_USERS
Matrixchannels.matrix.accessToken.accounts.default.accessTokenMATRIX_ACCESS_TOKEN使用 accessToken(非 botToken
Mattermostchannels.mattermost.botToken.accounts.default.botTokenMATTERMOST_BOT_TOKEN

其他設定

內容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.workspaceconfig.yamlterminal.cwd舊版遷移可能仍會發出 MESSAGING_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參見外掛指南
鉤子/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 部分設定
多代理清單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. 設定 env 子物件openclaw.json"env""env"."vars"(某些設定將金鑰儲存在這裡而非獨立的 .env 檔案)
  4. 認證設定檔~/.openclaw/agents/main/agent/auth-profiles.json(每個代理程式的憑證)

設定值優先。每個後續來源填補剩餘的空白。

支援的金鑰目標

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/.envopenclaw.json env 子物件中查找值。source: "file"source: "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. 檢查工作階段策略 — 執行 hermes config show 並驗證 session_reset 值符合你的預期。

  7. 重新配對 WhatsApp — WhatsApp 使用 QR 碼配對(Baileys),而非代碼遷移。執行 hermes whatsapp 進行配對。

  8. 封存清理 — 確認一切正常後,執行 hermes claw cleanup 將殘留的 OpenClaw 目錄重新命名為 .pre-migration/(防止狀態混淆)。

疑難排解

「OpenClaw directory not found」

遷移檢查 ~/.openclaw/,然後 ~/.clawdbot/,然後 ~/.moltbot/。如果你的安裝在其他地方,使用 --source /path/to/your/openclaw

「No provider API keys found」

根據你的 OpenClaw 版本,金鑰可能儲存在多個位置:openclaw.jsonmodels.providers.*.apiKey 下的內聯值、~/.openclaw/.env 中、openclaw.json"env" 子物件中,或 agents/main/agent/auth-profiles.json 中。遷移檢查所有四個位置。如果金鑰使用 source: "file"source: "exec" SecretRef,它們無法自動解析 — 透過 hermes config set 新增它們。

遷移後技能未出現

匯入的技能存放在 ~/.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



MiniMax OAuth