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.md和USER.md轉換為 Hermes 記憶條目 - 將 OpenClaw 命令批准模式合併到 Hermes 的
command_allowlist中 - 遷移與 Hermes 兼容的消息傳遞設置,例如
TELEGRAM_ALLOWED_USERS和MESSAGING_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/... 的較短路徑。
在運行輔助腳本之前:
- 優先使用
~/.hermes/skills/migration/openclaw-migration/下的已安裝路徑。 - 如果該路徑失敗,檢查已安裝的技能目錄,並相對於已安裝的
SKILL.md解析腳本路徑。 - 僅在已安裝位置缺失或技能被手動移動時,才使用
find作為後備方案。 - 調用終端工具時,不要傳遞
workdir: "~"。使用絕對目錄(如用戶的主目錄),或完全省略workdir。
使用 --migrate-secrets 時,它還將導入一小部分允許列表中的與 Hermes 兼容的秘密信息,目前包括:
TELEGRAM_BOT_TOKEN
默認工作流程
- 首先通過預演(dry run)進行檢查。
- 呈現簡要摘要,說明可以遷移的內容、無法遷移的內容以及將被歸檔的內容。
- 如果
clarify工具可用,則使用它來進行用戶決策,而不是要求自由形式的文本回復。 - 如果預演發現導入的技能目錄存在衝突,請在執行前詢問如何處理這些衝突。
- 在執行前,要求用戶在兩種支持的遷移模式之間進行選擇。
- 僅當用戶希望遷移工作區指令文件時,才請求目標工作區路徑。
- 使用匹配的預設和標誌執行遷移。
- 總結結果,特別是:
- 已遷移的內容
- 已歸檔以供手動審查的內容
- 已跳過的內容及其原因
用戶交互協議
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
在這種情況下,你必須在執行前詢問關於工作區指令的事項。不要靜默地將其視為跳過決策。
由於該限制,請使用此簡化決策流程:
- 對於
SOUL.md衝突,使用clarify並提供如下選項:keep existingoverwrite with backupreview first
- 如果預運行顯示一個或多個
kind="skill"項的status="conflict",使用clarify並提供如下選項:keep existing skillsoverwrite conflicting skills with backupimport conflicting skills under renamed folders
- 對於工作區指令,使用
clarify並提供如下選項:skip workspace instructionscopy to a workspace pathdecide later
- 如果用戶選擇複製工作區指令,請提出後續開放式
clarify問題,請求提供絕對路徑。 - 如果用戶選擇
skip workspace instructions或decide later,請在不使用--workspace-target的情況下繼續。 - 對於遷移模式,使用
clarify並提供以下 3 個選項:user-data onlyfull compatible migrationcancel
user-data only意味著:遷移用戶數據和兼容配置,但不導入允許列表中的密鑰(secrets)。full compatible migration意味著:遷移相同的兼容用戶數據以及存在時的允許列表中的密鑰。- 如果
clarify不可用,請以普通文本詢問相同的問題,但仍將答案限制為user-data only、full compatible migration或cancel。
執行門禁:
- 當由
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 instructions或decide later,不要添加--workspace-target。
在執行之前,用通俗語言重述確切的命令計劃,並確保它與用戶的選擇一致。
運行後報告規則
執行後,將腳本的 JSON 輸出視為真實來源。
- 所有計數均基於
report.summary。 - 僅當某項的
status恰好為migrated時,才將其列在“成功遷移”下。 - 除非報告顯示該項為
migrated,否則不要聲稱衝突已解決。 - 除非
kind="soul"的報告項具有status="migrated",否則不要說SOUL.md已被覆蓋。 - 如果
report.summary.conflict > 0,請包含一個衝突部分,而不是靜默地暗示成功。 - 如果計數與列出的項目不一致,請在響應之前修正列表以匹配報告。
- 在可用時包含報告中的
output_dir路徑,以便用戶可以檢查report.json、summary.md、備份和歸檔文件。 - 對於內存或用戶配置文件溢出,除非報告明確顯示歸檔路徑,否則不要說條目已歸檔。如果存在
details.overflow_file,請說明完整的溢出列表已導出到該位置。 - 如果技能是在重命名的文件夾下導入的,請報告最終目標位置並提及
details.renamed_from。 - 如果存在
report.skill_conflict_mode,請將其用作所選導入技能衝突策略的真實來源。 - 如果某項的
status="skipped",不要將其描述為已覆蓋、已備份、已遷移或已解決。 - 如果
kind="soul"的status="skipped"且原因為Target already matches source,請說明其保持未變,並且不要提及備份。 - 如果重命名的導入技能的
details.backup為空,不要暗示現有的 Hermes 技能已被重命名或備份。僅說明導入的副本已放置在新目標位置,並引用details.renamed_from作為保留在原位的現有文件夾。
遷移預設
在正常使用時,首選以下兩個預設:
user-datafull
user-data 包括:
soulworkspace-agentsmemoryuser-profilemessaging-settingscommand-allowlistskillstts-assetsarchive
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 或主目錄作為工作區目標。首先詢問明確的工作區路徑。
重要規則
- 除非用戶明確指示立即繼續,否則在寫入之前先運行幹跑。
- 默認情況下不要遷移機密。令牌、身份驗證 blob、設備憑據和原始網關配置應保留在 Hermes 之外,除非用戶明確要求遷移機密。
- 除非用戶明確希望如此,否則不要靜默覆蓋非空的 Hermes 目標。啟用覆蓋時,輔助腳本將保留備份。
- 始終向用戶提供跳過項目的報告。該報告是遷移的一部分,而非可選的額外內容。
- 首選主要的 OpenClaw 工作區(
~/.openclaw/workspace/),而非workspace.default/。僅當主要文件缺失時,才將默認工作區作為後備使用。 - 即使在機密遷移模式下,也僅將機密遷移到乾淨的 Hermes 目標位置。不支持的身份驗證 blob 仍必須報告為已跳過。
- 如果幹跑顯示大量資產複製、衝突的
SOUL.md或溢出的內存條目,請在執行之前單獨指出這些問題。 - 如果用戶不確定,默認選擇“僅 user-data”。
- 僅當用戶明確提供了目標工作區路徑時,才包含
workspace-agents。 - 將類別級別的
--include/--exclude視為高級逃生艙口,而非常規流程。 - 如果可以使用
clarify,不要在幹跑總結末尾使用模糊的“您想做什麼?”。改用結構化的後續提示。 - 當真正的選擇提示起作用時,不要使用開放式的
clarify提示。首選可選擇的選項,然後僅對絕對路徑或文件審查請求使用自由文本。 - 幹跑後,如果仍有未解決的決策,切勿在總結後停止。立即對最高優先級的阻塞性決策使用
clarify。 - 後續問題的優先級順序:
SOUL.md衝突- 導入的技能衝突
- 遷移模式
- 工作區指令目標位置
- 不要承諾在同一消息中稍後提供選項。通過實際調用
clarify來呈現它們。 - 在回答遷移模式後,明確檢查
workspace-agents是否仍未解決。如果是,您的下一個操作必須是工作區指令的clarify調用。 - 在任何
clarify回答之後,如果還有其他必需的決策待定,不要敘述剛剛決定的內容。立即詢問下一個必需的問題。
預期結果
成功運行後,用戶應擁有:
- 已導入 Hermes 角色狀態
- 已使用轉換後的 OpenClaw 知識填充 Hermes 內存文件
- OpenClaw 技能可在
~/.hermes/skills/openclaw-imports/下使用 - 一份遷移報告,顯示任何衝突、遺漏或不支持的數據