跳到主要內容

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
標籤Migration, OpenClaw, Hermes, Memory, Persona, Import
相關技能hermes-agent

參考:完整 SKILL.md

信息

以下是 Hermes 在觸發此技能時加載的完整技能定義。這是技能激活時代理所看到的指令。

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 命令運行下文所述的同一遷移腳本。當你希望通過代理進行交互式、引導式遷移,幷包含預演(dry-run)預覽和逐項衝突解決時,請使用此技能。

首次設置: hermes setup 嚮導會自動檢測 ~/.openclaw,並在開始配置之前提供遷移選項。

此技能的功能

它使用 scripts/openclaw_to_hermes.py 來:

  • SOUL.md 導入到 Hermes 主目錄,命名為 SOUL.md
  • 將 OpenClaw 的 MEMORY.mdUSER.md 轉換為 Hermes 記憶條目
  • 將 OpenClaw 命令批准模式合併到 Hermes 的 command_allowlist
  • 遷移與 Hermes 兼容的消息傳遞設置,例如 TELEGRAM_ALLOWED_USERSMESSAGING_CWD
  • 將 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/... 的較短路徑。

在運行輔助腳本之前:

  1. 優先使用 ~/.hermes/skills/migration/openclaw-migration/ 下的已安裝路徑。
  2. 如果該路徑失敗,檢查已安裝的技能目錄,並相對於已安裝的 SKILL.md 解析腳本路徑。
  3. 僅在已安裝位置缺失或技能被手動移動時,才使用 find 作為後備方案。
  4. 調用終端工具時,不要傳遞 workdir: "~"。使用絕對目錄(如用戶的主目錄),或完全省略 workdir

使用 --migrate-secrets 時,它還將導入一小部分允許列表中的與 Hermes 兼容的秘密信息,目前包括:

  • TELEGRAM_BOT_TOKEN

默認工作流程

  1. 首先通過預演(dry run)進行檢查。
  2. 呈現簡要摘要,說明可以遷移的內容、無法遷移的內容以及將被歸檔的內容。
  3. 如果 clarify 工具可用,則使用它來進行用戶決策,而不是要求自由形式的文本回復。
  4. 如果預演發現導入的技能目錄存在衝突,請在執行前詢問如何處理這些衝突。
  5. 在執行前,要求用戶在兩種支持的遷移模式之間進行選擇。
  6. 僅當用戶希望遷移工作區指令文件時,才請求目標工作區路徑。
  7. 使用匹配的預設和標誌執行遷移。
  8. 總結結果,特別是:
    • 已遷移的內容
    • 已歸檔以供手動審查的內容
    • 已跳過的內容及其原因

用戶交互協議

Hermes CLI 支持用於交互式提示的 clarify 工具,但其功能限於:

  • 每次選擇一個選項
  • 最多 4 個預定義選項
  • 一個自動的 Other 自由文本選項

支持在單個提示中進行真正的多選複選框操作。

對於每次 clarify 調用:

  • 始終包含非空的 question
  • 僅在真正的可選擇提示中包含 choices
  • choices 限制為 2-4 個純字符串選項
  • 切勿發出佔位符或截斷的選項,例如 ...
  • 切勿用額外的空白字符填充或美化選項
  • 切勿在問題中包含虛假的表單字段,例如 enter directory here、待填寫的空白行或下劃線(如 _____
  • 對於開放式路徑問題,僅提出簡單的句子;用戶在面板下方的正常 CLI 提示中輸入內容

如果 clarify 調用返回錯誤,請檢查錯誤文本,修正 payload,並使用有效的 question 和乾淨的選項重試一次。

clarify 可用且預運行(dry run)揭示任何需要用戶決策的事項時,你的下一步操作必須是調用 clarify 工具

不要以普通的助手消息結束當前回合,例如:

  • “讓我展示選項”
  • “你想做什麼?”
  • “以下是可選方案”

如果需要用戶決策,請在生成更多正文之前通過 clarify 收集該決策。 如果存在多個未解決的決策,不要在它們之間插入解釋性的助手消息。在收到一個 clarify 響應後,你的下一步操作通常應該是下一個所需的 clarify 調用。

每當預運行報告以下內容時,將 workspace-agents 視為未解決的決策:

  • kind="workspace-agents"
  • status="skipped"
  • 原因包含 No workspace target was provided

在這種情況下,你必須在執行前詢問關於工作區指令的事項。不要靜默地將其視為跳過決策。

由於該限制,請使用此簡化決策流程:

  1. 對於 SOUL.md 衝突,使用 clarify 並提供如下選項:
    • keep existing
    • overwrite with backup
    • review first
  2. 如果預運行顯示一個或多個 kind="skill" 項的 status="conflict",使用 clarify 並提供如下選項:
    • keep existing skills
    • overwrite conflicting skills with backup
    • import conflicting skills under renamed folders
  3. 對於工作區指令,使用 clarify 並提供如下選項:
    • skip workspace instructions
    • copy to a workspace path
    • decide later
  4. 如果用戶選擇複製工作區指令,請提出後續開放式 clarify 問題,請求提供絕對路徑
  5. 如果用戶選擇 skip workspace instructionsdecide later,請在不使用 --workspace-target 的情況下繼續。
  6. 對於遷移模式,使用 clarify 並提供以下 3 個選項:
    • user-data only
    • full compatible migration
    • cancel
  7. user-data only 意味著:遷移用戶數據和兼容配置,但導入允許列表中的密鑰(secrets)。
  8. full compatible migration 意味著:遷移相同的兼容用戶數據以及存在時的允許列表中的密鑰。
  9. 如果 clarify 不可用,請以普通文本詢問相同的問題,但仍將答案限制為 user-data onlyfull compatible migrationcancel

執行門禁:

  • 當由 No workspace target was provided 引起的 workspace-agents 跳過狀態仍未解決時,不要執行。
  • 解決該問題的唯一有效方式是:
    • 用戶明確選擇 skip workspace instructions
    • 用戶明確選擇 decide later
    • 用戶在選擇 copy to a workspace path 後提供了工作區路徑
  • 預運行中缺少工作區目標本身並不構成執行的許可。
  • 當任何所需的 clarify 決策仍未解決時,不要執行。

使用以下確切的 clarify 負載結構作為默認模式:

  • {"question":"Your existing SOUL.md conflicts with the imported one. What should I do?","choices":["keep existing","overwrite with backup","review first"]}
  • {"question":"One or more imported OpenClaw skills already exist in Hermes. How should I handle those skill conflicts?","choices":["keep existing skills","overwrite conflicting skills with backup","import conflicting skills under renamed folders"]}
  • {"question":"Choose migration mode: migrate only user data, or run the full compatible migration including allowlisted secrets?","choices":["user-data only","full compatible migration","cancel"]}
  • {"question":"Do you want to copy the OpenClaw workspace instructions file into a Hermes workspace?","choices":["skip workspace instructions","copy to a workspace path","decide later"]}
  • {"question":"Please provide an absolute path where the workspace instructions should be copied."}

決策到命令的映射

將用戶決策精確映射到命令標誌:

  • 如果用戶為 SOUL.md 選擇 keep existing不要添加 --overwrite
  • 如果用戶選擇 overwrite with backup,添加 --overwrite
  • 如果用戶選擇 review first,在執行前停止並審查相關文件。
  • 如果用戶選擇 keep existing skills,添加 --skill-conflict skip
  • 如果用戶選擇 overwrite conflicting skills with backup,添加 --skill-conflict overwrite
  • 如果用戶選擇 import conflicting skills under renamed folders,添加 --skill-conflict rename
  • 如果用戶選擇 user-data only,使用 --preset user-data 執行,並且不要添加 --migrate-secrets
  • 如果用戶選擇 full compatible migration,使用 --preset full --migrate-secrets 執行。
  • 僅當用戶明確提供了絕對工作區路徑時,才添加 --workspace-target
  • 如果用戶選擇 skip workspace instructionsdecide later,不要添加 --workspace-target

在執行之前,用通俗語言重述確切的命令計劃,並確保它與用戶的選擇一致。

運行後報告規則

執行後,將腳本的 JSON 輸出視為真實來源。

  1. 所有計數均基於 report.summary
  2. 僅當某項的 status 恰好為 migrated 時,才將其列在“成功遷移”下。
  3. 除非報告顯示該項為 migrated,否則不要聲稱衝突已解決。
  4. 除非 kind="soul" 的報告項具有 status="migrated",否則不要說 SOUL.md 已被覆蓋。
  5. 如果 report.summary.conflict > 0,請包含一個衝突部分,而不是靜默地暗示成功。
  6. 如果計數與列出的項目不一致,請在響應之前修正列表以匹配報告。
  7. 在可用時包含報告中的 output_dir 路徑,以便用戶可以檢查 report.jsonsummary.md、備份和歸檔文件。
  8. 對於內存或用戶配置文件溢出,除非報告明確顯示歸檔路徑,否則不要說條目已歸檔。如果存在 details.overflow_file,請說明完整的溢出列表已導出到該位置。
  9. 如果技能是在重命名的文件夾下導入的,請報告最終目標位置並提及 details.renamed_from
  10. 如果存在 report.skill_conflict_mode,請將其用作所選導入技能衝突策略的真實來源。
  11. 如果某項的 status="skipped",不要將其描述為已覆蓋、已備份、已遷移或已解決。
  12. 如果 kind="soul"status="skipped" 且原因為 Target already matches source,請說明其保持未變,並且不要提及備份。
  13. 如果重命名的導入技能的 details.backup 為空,不要暗示現有的 Hermes 技能已被重命名或備份。僅說明導入的副本已放置在新目標位置,並引用 details.renamed_from 作為保留在原位的現有文件夾。

遷移預設

在正常使用時,首選以下兩個預設:

  • user-data
  • full

user-data 包括:

  • soul
  • workspace-agents
  • memory
  • user-profile
  • messaging-settings
  • command-allowlist
  • skills
  • tts-assets
  • archive

full 包括 user-data 中的所有內容,外加:

  • secret-settings

輔助腳本仍然支持類別級別的 --include / --exclude,但應將其視為高級後備方案,而非默認的用戶體驗。

命令

進行完整發現的幹跑(dry run):

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"}

使用 user-data 預設進行幹跑:

python3 ~/.hermes/skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py --preset user-data

執行 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 或主目錄作為工作區目標。首先詢問明確的工作區路徑。

重要規則

  1. 除非用戶明確指示立即繼續,否則在寫入之前先運行幹跑。
  2. 默認情況下不要遷移機密。令牌、身份驗證 blob、設備憑據和原始網關配置應保留在 Hermes 之外,除非用戶明確要求遷移機密。
  3. 除非用戶明確希望如此,否則不要靜默覆蓋非空的 Hermes 目標。啟用覆蓋時,輔助腳本將保留備份。
  4. 始終向用戶提供跳過項目的報告。該報告是遷移的一部分,而非可選的額外內容。
  5. 首選主要的 OpenClaw 工作區(~/.openclaw/workspace/),而非 workspace.default/。僅當主要文件缺失時,才將默認工作區作為後備使用。
  6. 即使在機密遷移模式下,也僅將機密遷移到乾淨的 Hermes 目標位置。不支持的身份驗證 blob 仍必須報告為已跳過。
  7. 如果幹跑顯示大量資產複製、衝突的 SOUL.md 或溢出的內存條目,請在執行之前單獨指出這些問題。
  8. 如果用戶不確定,默認選擇“僅 user-data”。
  9. 僅當用戶明確提供了目標工作區路徑時,才包含 workspace-agents
  10. 將類別級別的 --include / --exclude 視為高級逃生艙口,而非常規流程。
  11. 如果可以使用 clarify,不要在幹跑總結末尾使用模糊的“您想做什麼?”。改用結構化的後續提示。
  12. 當真正的選擇提示起作用時,不要使用開放式的 clarify 提示。首選可選擇的選項,然後僅對絕對路徑或文件審查請求使用自由文本。
  13. 幹跑後,如果仍有未解決的決策,切勿在總結後停止。立即對最高優先級的阻塞性決策使用 clarify
  14. 後續問題的優先級順序:
    • SOUL.md 衝突
    • 導入的技能衝突
    • 遷移模式
    • 工作區指令目標位置
  15. 不要承諾在同一消息中稍後提供選項。通過實際調用 clarify 來呈現它們。
  16. 在回答遷移模式後,明確檢查 workspace-agents 是否仍未解決。如果是,您的下一個操作必須是工作區指令的 clarify 調用。
  17. 在任何 clarify 回答之後,如果還有其他必需的決策待定,不要敘述剛剛決定的內容。立即詢問下一個必需的問題。

預期結果

成功運行後,用戶應擁有:

  • 已導入 Hermes 角色狀態
  • 已使用轉換後的 OpenClaw 知識填充 Hermes 內存文件
  • OpenClaw 技能可在 ~/.hermes/skills/openclaw-imports/ 下使用
  • 一份遷移報告,顯示任何衝突、遺漏或不支持的數據