본문으로 건너뛰기

OpenClaw에서 마이그레이션

anchor alias
anchor alias

OpenClaw에서 마이그레이션

hermes claw migrate은 OpenClaw(또는 레거시 Clawdbot/Moldbot) 설정을 Hermes로 가져옵니다. 이 가이드에서는 마이그레이션되는 항목, 구성 키 매핑, 마이그레이션 후 확인할 사항을 정확하게 다룹니다.

빠른 시작

# Preview then migrate (always shows a preview first, then asks to confirm)
hermes claw migrate

# Preview only, no changes
hermes claw migrate --dry-run

# Full migration including API keys, skip confirmation
hermes claw migrate --preset full --migrate-secrets --yes

마이그레이션에서는 변경하기 전에 항상 가져올 항목의 전체 미리보기를 표시합니다. 목록을 검토한 후 확인하여 계속 진행하세요.

기본적으로 ~/.openclaw/에서 읽습니다. 기존 ~/.clawdbot/ 또는 ~/.moltbot/ 디렉터리는 자동으로 감지됩니다. 레거시 구성 파일 이름(clawdbot.json, moltbot.json)과 동일합니다.

옵션

옵션설명
--dry-run미리보기 전용 — 마이그레이션할 항목을 표시한 후 중지합니다.
--preset <name>full(모든 호환 설정) 또는 user-data(인프라 구성 제외) 두 사전 설정 모두 기본적으로 비밀을 가져오지 않습니다. --migrate-secrets을 명시적으로 전달하세요.
--overwrite충돌 시 기존 Hermes 파일을 덮어씁니다(기본값: 계획이 충돌할 때 적용을 거부함).
--migrate-secretsAPI 키를 포함합니다. --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(기본값), overwrite 또는 rename.
--yes미리보기 후 확인 메시지를 건너뜁니다.

마이그레이션되는 항목

페르소나, 기억, 지침

무엇OpenClaw 소스헤르메스 목적지메모
페르소나workspace/SOUL.md~/.hermes/SOUL.md직접 복사
작업공간 지침workspace/AGENTS.mdAGENTS.md(--workspace-target)--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 위치헤르메스 목적지
작업 공간 기술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 구성 경로헤르메스 목적지메모
기본 모델agents.defaults.modelconfig.yamlmodel문자열 또는 {primary, fallbacks} 객체일 수 있습니다.
맞춤 제공업체models.providers.*config.yamlcustom_providersbaseUrl, apiType/api 매핑 — 짧은("openai", "anthropic") 값과 하이픈으로 연결된("openai-completions", "anthropic-messages", "google-generative-ai") 값을 모두 처리합니다.
제공자 API 키models.providers.*.apiKey~/.hermes/.env--migrate-secrets이 필요합니다. 아래의 API 키 확인을 참조하세요.

에이전트 행동

무엇OpenClaw 구성 경로헤르메스 구성 경로매핑
최대 회전agents.defaults.timeoutSecondsagent.max_turnstimeoutSeconds / 10, 최대 200개
자세한 모드agents.defaults.verboseDefaultagent.verbose"끄기" / "켜기" / "가득찬"
추론 노력agents.defaults.thinkingDefaultagent.reasoning_effort"항상"/"높음"/"x높음" → "높음", "자동"/"중간"/"적응형" → "중간", "끄기"/"낮음"/"없음"/"최소" → "낮음"
압축agents.defaults.compaction.modecompression.enabled"off" → false, 기타 → true
압축 모델agents.defaults.compaction.modelcompression.summary_model직접 문자열 복사
인간의 지연agents.defaults.humanDelay.modehuman_delay.mode"자연" / "맞춤" / "오프"
인간의 지연 타이밍agents.defaults.humanDelay.minMs / .maxMshuman_delay.min_ms / .max_ms직접 복사
시간대agents.defaults.userTimezonetimezone직접 문자열 복사
실행 시간 초과tools.exec.timeoutSecterminal.timeout직접 복사(필드는 timeout이 아니라 timeoutSec임)
도커 샌드박스agents.defaults.sandbox.backendterminal.backend"도커" → "도커"
도커 이미지agents.defaults.sandbox.docker.imageterminal.docker_image직접 복사

세션 재설정 정책

OpenClaw 구성 경로헤르메스 구성 경로메모
session.reset.modesession_reset.mode"매일", "유휴" 또는 둘 다
session.reset.atHoursession_reset.at_hour일일 재설정 시간(0~23)
session.reset.idleMinutessession_reset.idle_minutes비활성 시간(분)

참고: OpenClaw에는 session.resetTriggers(["daily", "idle"]과 같은 간단한 문자열 배열)도 있습니다. 구조화된 session.reset이 없으면 마이그레이션은 resetTriggers에서 추론하는 것으로 대체됩니다.

MCP 서버

OpenClaw 분야헤르메스 필드메모
mcp.servers.*.commandmcp_servers.*.command스튜디오 트랜스포트
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}.*(가장 오래된 형식)
무엇헤르메스 목적지
제공자 이름config.yamltts.provider
ElevenLabs 음성 IDconfig.yamltts.elevenlabs.voice_id
ElevenLabs 모델 IDconfig.yamltts.elevenlabs.model_id
OpenAI 모델config.yamltts.openai.model
오픈AI 음성config.yamltts.openai.voice
엣지 TTS 음성config.yamltts.edge.voice (OpenClaw의 이름이 "edge"에서 "microsoft"로 변경되었습니다. 둘 다 인식됩니다.)
TTS 자산~/.hermes/tts/ (파일 복사)

메시징 플랫폼

플랫폼OpenClaw 구성 경로헤르메스 .env 변수메모
텔레그램channels.telegram.botToken 또는 .accounts.default.botTokenTELEGRAM_BOT_TOKEN토큰은 문자열 또는 SecretRef일 수 있습니다. 평면 및 계정 레이아웃이 모두 지원됩니다.
텔레그램credentials/telegram-default-allowFrom.jsonTELEGRAM_ALLOWED_USERSallowFrom 배열에서 쉼표로 결합됨
불화channels.discord.token 또는 .accounts.default.tokenDISCORD_BOT_TOKEN
불화channels.discord.allowFrom 또는 .accounts.default.allowFromDISCORD_ALLOWED_USERS
슬랙channels.slack.botToken 또는 .accounts.default.botTokenSLACK_BOT_TOKEN
슬랙channels.slack.appToken 또는 .accounts.default.appTokenSLACK_APP_TOKEN
슬랙channels.slack.allowFrom 또는 .accounts.default.allowFromSLACK_ALLOWED_USERS
왓츠앱channels.whatsapp.allowFrom 또는 .accounts.default.allowFromWHATSAPP_ALLOWED_USERSBaileys QR 페어링을 통한 인증 - 마이그레이션 후 다시 페어링 필요
신호channels.signal.account 또는 .accounts.default.accountSIGNAL_ACCOUNT
신호channels.signal.httpUrl 또는 .accounts.default.httpUrlSIGNAL_HTTP_URL
신호channels.signal.allowFrom 또는 .accounts.default.allowFromSIGNAL_ALLOWED_USERS
매트릭스channels.matrix.accessToken 또는 .accounts.default.accessTokenMATRIX_ACCESS_TOKENaccessToken 사용(botToken 아님)
가장 중요한channels.mattermost.botToken 또는 .accounts.default.botTokenMATTERMOST_BOT_TOKEN

기타 구성

무엇OpenClaw 경로헤르메스의 길메모
승인 모드approvals.exec.modeconfig.yamlapprovals.mode"자동"→"끄기", "항상"→"수동", "스마트"→"스마트"
명령 허용 목록exec-approvals.jsonconfig.yamlcommand_allowlist패턴 병합 및 중복 제거
브라우저 CDP URLbrowser.cdpUrlconfig.yamlbrowser.cdp_url
브라우저 헤드리스browser.headlessconfig.yamlbrowser.headless
용감한 검색 키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/에 저장됩니다.

무엇아카이브 파일헤르메스에서 재현하는 방법
IDENTITY.mdarchive/workspace/IDENTITY.mdSOUL.md에 병합
TOOLS.mdarchive/workspace/TOOLS.mdHermes에는 도구 지침이 내장되어 있습니다.
HEARTBEAT.mdarchive/workspace/HEARTBEAT.md정기적인 작업에 크론 작업 사용
BOOTSTRAP.mdarchive/workspace/BOOTSTRAP.md컨텍스트 파일 또는 기술 사용
크론 작업archive/cron-config.jsonhermes cron create으로 다시 생성
플러그인archive/plugins-config.json플러그인 가이드를 참조하세요.
후크/웹훅archive/hooks-config.jsonhermes webhook 또는 게이트웨이 후크를 사용하세요.
메모리 백엔드archive/memory-backend-config.jsonhermes honcho을 통해 구성
기술 등록archive/skills-registry-config.jsonhermes skills config 사용
UI/IDarchive/ui-identity-config.json/skin 명령을 사용하세요.
로깅archive/logging-diagnostics-config.jsonconfig.yaml 로깅 섹션에 설정
다중 에이전트 목록archive/agents-list.jsonHermes 프로필 사용
채널 바인딩archive/bindings.json플랫폼별 수동 설정
복합채널archive/channels-deep-config.json수동 플랫폼 구성

API 키 확인

--migrate-secrets이 활성화되면 API 키는 4가지 소스에서 우선순위에 따라 수집됩니다.

  1. 구성 값models.providers.*.apiKeyopenclaw.json의 TTS 제공자 키
  2. 환경 파일~/.openclaw/.env(OPENROUTER_API_KEY, ANTHROPIC_API_KEY 등과 같은 키)
  3. 환경 하위 개체 구성openclaw.json"env" 또는 "env"."vars"(일부 설정에서는 별도의 .env 파일 대신 여기에 키를 저장합니다)
  4. 인증 프로필~/.openclaw/agents/main/agent/auth-profiles.json(에이전트별 자격 증명)

구성 값이 우선순위를 갖습니다. 각 후속 소스는 남은 공백을 채웁니다.

지원되는 주요 대상

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 처리

토큰 및 API 키에 대한 OpenClaw 구성 값은 세 가지 형식일 수 있습니다.

// Plain string
"channels": { "telegram": { "botToken": "123456:ABC-DEF..." } }

// Environment template
"channels": { "telegram": { "botToken": "${TELEGRAM_BOT_TOKEN}" } }

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

마이그레이션은 세 가지 형식을 모두 해결합니다. source: "env"이 있는 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 get session_reset이 예상과 일치하는지 확인하세요.

  7. WhatsApp 다시 페어링 — WhatsApp은 토큰 마이그레이션이 아닌 QR 코드 페어링(Baileys)을 사용합니다. hermes whatsapp을 실행하여 페어링합니다.

  8. 아카이브 정리 — 모든 것이 작동하는지 확인한 후 hermes claw cleanup을 실행하여 남은 OpenClaw 디렉터리의 이름을 .pre-migration/로 바꿉니다(상태 혼동 방지).

문제 해결

"OpenClaw 디렉토리를 찾을 수 없습니다"

마이그레이션에서는 ~/.openclaw/, ~/.clawdbot/, ~/.moltbot/을 차례로 확인합니다. 다른 곳에 설치한 경우 --source /path/to/your/openclaw을 사용하세요.

"제공자 API 키를 찾을 수 없습니다."

키는 OpenClaw 버전에 따라 여러 위치에 저장될 수 있습니다. models.providers.*.apiKey 아래의 openclaw.json 인라인, ~/.openclaw/.env, openclaw.json"env" 하위 개체 또는 agents/main/agent/auth-profiles.json. 마이그레이션에서는 네 가지를 모두 확인합니다. 키가 source: "file" 또는 source: "exec" SecretRefs를 사용하는 경우 자동으로 확인할 수 없습니다. hermes config set을 통해 추가하세요.

마이그레이션 후 스킬이 나타나지 않습니다.

가져온 스킬은 ~/.hermes/skills/openclaw-imports/에 있습니다. 적용하려면 새 세션을 시작하거나 /skills을 실행하여 로드되었는지 확인하세요.

TTS 음성이 마이그레이션되지 않았습니다.

OpenClaw는 TTS 설정을 messages.tts.providers.*과 최상위 talk 구성의 두 위치에 저장합니다. 마이그레이션에서는 두 가지를 모두 확인합니다. OpenClaw UI를 통해 음성 ID를 설정한 경우(다른 경로에 저장됨) 수동으로 설정해야 할 수도 있습니다: hermes config set tts.elevenlabs.voice_id YOUR_VOICE_ID.