OpenClaw에서 Hermes Agent로 안전하게 마이그레이션하는 방법
한 줄 import를 넘어선 안전한 전환
AI 어시스턴트 마이그레이션은 단순한 애플리케이션 설정 복사와는 다른 문제입니다. 가장 어려운 부분은 두 개의 게이트웨이가 동일한 봇으로 작동하지 않도록 하면서도, 정체성, 기억, 도구 동작, 예약된 작업, 그리고 메시지 접근 권한을 보존하는 것입니다.
Hermes Agent는 이제 hermes claw migrate를 포함하고 있습니다. 이는 단순한 외형적 가져오기 명령이 아닌, 실질적인 마이그레이션 플랜너입니다. 이 도구는 OpenClaw에서 30개 이상의 범주를 매핑하고, 충돌을 감지하며, Hermes 복원 지점을 생성하고, 비호환 상태(manual review를 위한 아카이브)를 저장합니다. 이를 통해 마이그레이션이 실용적이 되지만, 자동으로 이루어지지는 않습니다.

아래에 제시된 접근 방식은 단계적 전환(staged cutover)입니다. OpenClaw를 백업하고, 전체 마이그레이션을 dry-run으로 실행하며, 시크릿(비밀값) 없이 가져오고, 터미널에서 Hermes를 검증한 후, 새로운 에이전트가 올바르게 작동함을 확인한 후에야 메시징 자격 증명을 이전합니다. --overwrite --migrate-secrets --yes 플래그로 시작하지 마십시오. 이러한 플래그는 리허설된 마이그레이션 이후 자동화를 위해 유용할 뿐, 어시스턴트가 실제로 무엇에 의존하는지 발견하는 데에는 도움이 되지 않습니다.
OpenClaw에서 Hermes로의 마이그레이션 런북
| 단계 | 명령어 또는 작업 | 종료 조건 |
|---|---|---|
| 인벤토리 | 버전, 워크스페이스, 플러그인, 채널, cron 작업, 프로바이더 기록 | 모든 파일 외부 의존성 소유자 확인 |
| 백업 | openclaw backup create --verify |
OpenClaw 상태 외부에 검증된 아카이브 존재 |
| 미리보기 | hermes claw migrate --dry-run --preset full |
설명되지 않는 충돌 또는 핵심 데이터 건너뜀 없음 |
| 가져오기 | 시크릿 없이 전체 프리셋 실행 | Hermes 설정, 페르소나, 기억, 스킬, MCP 항목 존재 |
| 로컬 테스트 | 터미널에서 Hermes 실행 | 모델, 도구, 기억, 승인, 워크스페이스 테스트 통과 |
| 채널 전환 | OpenClaw 중지, 시크릿 마이그레이션 또는 설정, Hermes 게이트웨이 시작 | 각 봇 토큰 또는 계정의 소유권이 Hermes에만 존재 |
| 안정화 관찰(Soak) | OpenClaw는 중지 상태이지만 복원 가능하게 유지 | 예약된 작업 및 수신 작업이 올바르게 작동 |
| 정리 | 승인 후에만 구 OpenClaw 상태 아카이빙 | 롤백 창이 의도적으로 종료됨 |
명령어가 짧은 이유는 판단이 미리보기 및 검증 단계로 이동했기 때문입니다. 생성된 마이그레이션 보고서는 안심시키는 콘솔 출력으로 보지 말고, 변경 계획서로 다뤄야 합니다.
hermes claw migrate가 실제로 읽는 내용
마이그레이션 도구는 기본적으로 ~/.openclaw/ 디렉터리를 읽습니다. 또한 이전 버전의 ~/.clawdbot/ 및 ~/.moltbot/ 디렉터리와 레거시 설정 파일名将을 감지하므로, 마이그레이션 전에 구형 설치 환경의 이름을 변경할 필요가 없습니다.
OpenClaw는 여러 워크스페이스 레이아웃을 사용해 왔습니다. Hermes는 workspace/, workspace.default/, workspace-main/를 확인하며, workspace-<agentId>와 같은 에이전트별 디렉터리도 인식합니다. 커스텀 에이전트 루트 또는 다중 프로필을 사용하는 경우, 기본 워크스페이스가 전체 시스템을并不代表한다고 가정하기보다, 미리보기에서 모든 해석된 경로를 확인하십시오.
대상은 보통 ~/.hermes/입니다. 기존에 설치된 Hermes는 빈 컨테이너로 취급되지 않습니다. 플랜너는 양쪽을 안전하게 보존할 수 없는 경우 충돌을 보고하고, 기본적으로 적용을 거부합니다.
무엇이 마이그레이션되고 무엇이 그렇지 않은가
유용한 구분은 “지원” 대 “비지원"이 아닙니다. 일부 OpenClaw 상태는 직접 매핑되고, 일부는 변환되어야 하며, 일부는 두 에이전트가 다른 실행 모델을 사용하기 때문에 아카이빙할 수만 있습니다.
직접 또는 변환된 마이그레이션
| OpenClaw 원본 | Hermes 대상 | 마이그레이션 동작 |
|---|---|---|
workspace/SOUL.md |
~/.hermes/SOUL.md |
페르소나 직접 복사 |
workspace/MEMORY.md |
~/.hermes/memories/MEMORY.md |
파싱, 병합, 중복 제거 |
workspace/USER.md |
~/.hermes/memories/USER.md |
파싱, 병합, 중복 제거 |
workspace/memory/*.md |
메인 Hermes 기억 | 일일 파일이 항목으로 병합 |
workspace/AGENTS.md |
선택된 프로젝트 디렉터리 | --workspace-target 필요 |
| OpenClaw 스킬 디렉터리 | ~/.hermes/skills/openclaw-imports/ |
명시적인 충돌 정책을 적용하여 복사 |
agents.defaults.model |
Hermes 모델 설정 | 1차 및 폴백 형태 해석 |
models.providers.* |
Hermes 프로바이더 설정 | Base URL 및 API 유형 매핑 |
mcp.servers.* |
mcp_servers.* |
Stdio 및 HTTP/SSE 정의 매핑 |
| 채널 토큰 및 허용 목록 | Hermes .env |
--migrate-secrets 옵션 사용 시에만 |
| 세션 재설정 정책 | session_reset |
일일 및 유휴 모드 번역 |
| 실행 승인 | Hermes 승인 및 명령 허용 목록 | 모드 및 패턴 변환 |
| 브라우저, TTS, 샌드박스, 타임아웃 설정 | 관련 Hermes 설정 | 지원되는 필드 매핑 |
기억은 하나의 불투명한 문서로 복사되지 않습니다. 마이그레이션 도구는 OpenClaw의 기억 및 사용자 프로필 파일을 파싱하고, 기존 Hermes 항목과 병합하며, 중복을 제거합니다. 이는 확립된 Hermes 기억 파일을 대체하는 것보다 안전하지만, 파일 크기뿐 아니라 의미와 구조를 비교해야 함을 의미합니다.
수동 재구성을 위해 아카이빙
| OpenClaw 기능 | 직접 이식이 불가능한 이유 | Hermes 방향 |
|---|---|---|
| Cron 작업 | 스케줄러 및 전달 모델 차이 | hermes cron create로 재생성 |
| 플러그인 | 플러그인 API가 제품 특화 | Hermes 플러그인, 스킬, MCP 서버 또는 내장 도구로 교체 |
| 훅 및 웹훅 | 이벤트 및 권한 계약 차이 | Hermes 웹훅 또는 게이트웨이 훅으로 재생성 |
| 고급 메모리 백엔드 | 데이터베이스 및 조회(semantics) 차이 | Hermes 메모리 프로바이더를 별도 구성 |
| 스킬 레지스트리 설정 | 레지스트리 구현 차이 | hermes skills config로 구성 |
| 멀티 에이전트 목록 및 바인딩 | 라우팅 및 프로필 모델 차이 | Hermes 프로필 및 게이트웨이 구성으로 재구축 |
IDENTITY.md |
Hermes는 다른 정체성 분리 방식 사용 | 관련 정체성을 SOUL.md에 병합 |
HEARTBEAT.md |
직접적인 파일 기반 하트비트 동등물 없음 | 주기적 작업을 cron 작업으로 표현 |
TOOLS.md |
Hermes는 자체 도구 지침 제공 | 진정한 워크플로 규칙만 스킬 또는 컨텍스트 파일로 이동 |
BOOTSTRAP.md |
부트스트랩 의미론 차이 | 컨텍스트 파일, 설정 또는 스킬 사용 |
이러한 항목은 ~/.hermes/migration/openclaw/<timestamp>/archive/ 아래에 저장됩니다. 따라서 비어 있지 않은 아카이브를 가진 성공적인 마이그레이션은 완료된 것이 아니며, 아카이브는 남은 작업 대기열입니다.
1단계: 라이브 OpenClaw 시스템 인벤토리 작성
무언가를 설치하기 전에, 실제로 사용 중인 동작을 기록하십시오. 설정 파일만으로 플러그인의 외부 데이터베이스, 수동 감독되는 게이트웨이, 커스텀 에이전트 디렉터리, 로컬 모델 프로세스, 또는 웹훅 엔드포인트의 소유 계정을 파악할 수 없을 수 있습니다.
최소한 다음 사항을 기록하십시오:
- OpenClaw 및 Hermes 버전.
- 활성 OpenClaw 상태 디렉터리 및 설정 경로.
- 모든 에이전트 및 워크스페이스 디렉터리.
- 모델 프로바이더, 폴백 모델, 로컬 엔드포인트.
- 설치 및 활성화된 플러그인(영속적 데이터 포함).
- 워크스페이스, 관리용, 개인용, 프로젝트 디렉터리로부터의 스킬.
- MCP 서버, 환경 변수, 작업 디렉터리, 자격 증명.
- Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Mattermost 계정.
- Cron 작업, 훅, 웹훅, 하트비트 동작, 외부 슈퍼바이저.
- 승인 규칙, 명령 허용 목록, 샌드박스 백엔드, 브라우저 접근 권한.
이 인벤토리는 나중에 승인 체크리스트가 됩니다. 이를 통해 마이그레이션된 어시스턴트가 메시지에 응답하는 것처럼 보이지만 실제로는 주간 백업, 메모리 프로바이더, 또는 제한적인 승인 규칙을 놓치고 있는 것을 발견할 수 있습니다.
2단계: 검증된 OpenClaw 백업 생성
OpenClaw 2.0은 현재 SQLite 상태, 구성된 에이전트 루트, 자격 증명, 플러그인, 워크스페이스를 이해하는 백업 명령을 포함합니다. 라이브 데이터베이스 파일을 복사하고 WAL 사이더가 일관되게 캡처되기를 바라는 것 대신, 이 명령을 사용하십시오.
mkdir -p ~/Backups
openclaw gateway stop
openclaw backup create --output ~/Backups --verify
생성된 아카이브는 ~/.openclaw/ 외부에 보관하십시오. --verify 옵션은 경로 안전성 및 지원되는 SQLite 무결성 검사를 포함하여 아카이브를 즉시 검증합니다. OpenClaw 소유의 데이터베이스는 원시 파일로 복사되는 대신, SQLite 온라인 백업 API를 통해 캡처되고, 소유자가 검증되며, 컴팩트됩니다. 워크스페이스가 큰 경우 --no-include-workspace를 사용할 수 있지만, 이 경우 해당 리포지토리 및 비-Git 파일을 별도로 백업하십시오; 에이전트 디렉터리는 어쨌든 포함됩니다.
2.0 이전 트랜스크립트 함정
OpenClaw 2.0은 세션 및 트랜스크립트를 sessions.json과 JSONL 파일에서 SQLite로 옮겼으며, 기본 위치는 ~/.openclaw/agents/<agent>/agent/openclaw-agent.sqlite입니다. 이는 여기서 한 가지 자명하지 않은 이유로 중요합니다: 이전 JSONL 트랜스크립트 및 로그가 더 이상 작성되지 않는 경우에도, 포터블한 backup create 아카이브는 이를 누락합니다.
따라서 OpenClaw 설치 버전이 2.0 이전이며 구 대화 기록이 중요하다면, 검증된 아카이브만으로는 이를 보호하지 못합니다. 마이그레이션 전에 게이트웨이를 중지하고 파일 시스템, 볼륨, 또는 VM 스냅샷을 취하거나, 압축되고 독립적으로 검증 가능한 카피가 필요한 데이터베이스에 대해 OpenClaw의 데이터베이스별 스냅샷 명령을 사용하십시오:
openclaw backup sqlite create --global --repository ~/Backups/openclaw-sqlite
openclaw backup sqlite create --agent main --repository ~/Backups/openclaw-sqlite
openclaw backup sqlite list --repository ~/Backups/openclaw-sqlite
openclaw backup sqlite verify ~/Backups/openclaw-sqlite/<snapshot-id>
해당 스냅샷 리포지토리를 라이브 상태와 동일한 권한 및 보유 정책으로 취급하십시오 — 인증 프로필, 세션 상태, 플러그인 데이터를 포함할 수 있기 때문입니다. 주기적 아카이브가 아닌 연속 복제 설정의 경우, OpenClaw는 동일한 데이터베이스에 대한 Litestream을 문서화합니다; 마이그레이션에 며칠이 걸릴 것이라면 이는 손으로 만든 cp 작업보다 더 나은 해결책입니다.
Hermes에 이미 유용한 상태가 포함되어 있다면 Hermes 백업도 생성하십시오:
hermes backup
마이그레이션은 보통 ~/.hermes/backups/ 아래에 마이그레이션 전 Hermes 아카이브를 자동으로 생성합니다. 첫 번째 전환 시 --no-backup을 전달하지 마십시오; 몇 초를 절약하는 것이 가장 단순한 롤백 경로를 제거하는 것만큼 가치 있지 않습니다.
3단계: 빈 Hermes Agent 설치 및 테스트
OpenClaw 상태를 가져오기 전에 Hermes를 설치하고, 모델을 선택하고, 기본 터미널 에이전트가 작동하는지 증명하십시오. 이는 설치 및 프로바이더 실패를 마이그레이션 실패와 분리합니다. Hermes AI 어시스턴트 가이드는 프로바이더 선택 및 게이트웨이 구성을 상세히 다룹니다; 마이그레이션을 위해서는 작동하는 터미널 베이스라인만 필요합니다.
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
source ~/.bashrc
hermes setup
hermes status
hermes doctor
이미 Hermes를 설치했다면, 현재 마이그레이션 동작에 의존하기 전에 업데이트하십시오:
hermes update
hermes --version
해당 버전 확인은 형식적인 절차가 아닙니다. claw migrate의 안전성 입장은 2026년 동안 상당하게 변경되었습니다: 최신 빌드는 충돌하는 플랜을 적용하는 것을 거부하고, 기본적으로 마이그레이션 전 복원 지점을 작성하며, 디스크에 저장하는 보고서에서 시크릿을 검열(redact)하고, --preset full 하에서도 --migrate-secrets가 명시적으로 필요합니다. 구형 빌드는 이러한 것 중 어느 것도 수행하지 않았습니다 — 특히, --preset full은 이전에 API 키를 조용히 가져오곤 했으며, 충돌하는 플랜은 이미 확인한 후에 “migrated 0"을 보고했습니다. 구형 튜토리얼을 따르고 있다면, 플래그는 동일해 보이지만 중요한 부분에서 동작이 다를 수 있습니다.
이전 봇 토큰을 아직 구성하지 마십시오. 터미널 전용 검증은 Hermes를 준비하는 동안 OpenClaw가 라이브 상태를 유지할 수 있게 하고, 두 게이트웨이 프로세스가 동일한 메시징 정체성을 놓고 경쟁하는 것을 방지합니다.
4단계: 플래그 선택 전 Dry-run 실행
가장 큰 매핑 범위를 드러내기 위해 전체 프리셋으로 시작하지만, 시크릿은 제외 상태로 유지하십시오:
hermes claw migrate --dry-run --preset full
마이그레이션은 --dry-run이 없어도 적용 전에 미리보기를 항상 제시합니다. 명시적 플래그는 여전히 가치를 지니는데, 의도를 명확하게 하고, 인내심 없는 확인 프롬프트 없이 소스 경로, 대상, 변환, 충돌, 건너뜀 항목, 아카이브, 시크릿 경고를 검토할 시간을 주기 때문입니다. claw migrate 및 인접 명령의 전체 플래그 집합은 Hermes Agent CLI 치트시트에 요약되어 있습니다.
OpenClaw 상태가 기본 위치가 아닌 경우 커스텀 소스를 사용하십시오:
hermes claw migrate \
--dry-run \
--preset full \
--source /srv/openclaw-state
AGENTS.md가 특정 리포지토리에 적용되어야 한다면 명시적으로 지정하십시오:
hermes claw migrate \
--dry-run \
--preset full \
--workspace-target /srv/projects/my-project
--workspace-target가 없으면 워크스페이스 지침은 임의의 현재 디렉터리로 배치되지 않습니다. 이는 올바른 동작입니다: 지침 파일은 범위에 속하며, 그 범위를 추측하는 것은 잘못된 디렉터리 아래에서 시작된 모든 Hermes 세션을 변경할 수 있습니다.
전체(full) 또는 사용자 데이터(user-data) 프리셋?
full 프리셋은 호환 가능한 인프라 및 동작 설정을 포함합니다. user-data 프리셋은 페르소나, 기억, 스킬 및 관련 사용자 콘텐츠에 초점을 맞추고 인프라 설정을 제외합니다.
Hermes에 이미 정교하게 구축된 프로바이더, 게이트웨이, 보안 또는 샌드박스 구성이 있는 경우 user-data를 사용하십시오. Hermes가 새롭고 OpenClaw가 권위 있는 설정인 경우 full을 사용하지만, 여전히 모든 변환된 동작 설정을 검토하십시오. --migrate-secrets가 추가되지 않는 한, 어느 프리셋도 시크릿을 가져오지 않습니다.
5단계: 소스(Provenance)를 파괴하지 않고 충돌 해결
기본 충돌 동작은 보수적입니다: --overwrite가 설정되지 않는 한, 마이그레이션은 해결되지 않은 파일 충돌이 있는 플랜을 적용하는 것을 거부합니다. 이는 새로운 Hermes 페르소나 또는 스킬을 덮어쓰는 겉보기에 성공적인 전환보다 선호하며, 충돌하는 플랜을 확인하면 “migrated 0” 결과가 나타나 보이기는 no-op처럼 보였지만 실제로는 조용한 건너뜀(silent skip)이었던 구형 동작보다 선호됩니다.
스킬 충돌은 별도로 처리되며,那里的 기본값은 skip으로, 기존 Hermes 버전을 조용히 유지하고 들어오는 버션을 폐기합니다. 첫 번째 마이그레이션에는 rename을 추천합니다:
hermes claw migrate \
--preset full \
--workspace-target /srv/projects/my-project \
--skill-conflict rename
가져온 스킬은 ~/.hermes/skills/openclaw-imports/ 아래에 배치됩니다. rename을 사용하면 이름 충돌 시 어느 버전도 숨기지 않고 가져온 형제 파일(sibling)이 생성됩니다. 두 구현을 검토하고, 선택한 것을 테스트한 후 나중에 불필요한 카피를 제거하십시오.
--overwrite는 미리보기를 검토한 후 또는 버려도 되는 Hermes 프로필을 재구성할 때만 사용하십시오. 이는 스킬 충돌 처리보다 더 광범위하게 적용될 수 있으며 기존 Hermes 파일을 대체할 수 있습니다. 백업의 존재는 덮어쓰기를 복원 가능하게 만들지만, 바람직한 것은 아닙니다.
6단계: 시크릿 없이 설정 및 사용자 데이터 마이그레이션
검토된 플랜을 적용하고 자격 증명은 전환 단계로 남겨두십시오:
hermes claw migrate \
--preset full \
--workspace-target /srv/projects/my-project \
--skill-conflict rename
완료 후, 마이그레이션, 건너뜀, 충돌, 아카이브된 항목의 출력된 카운트를 저장하십시오. 타임스탬프가 찍힌 마이그레이션 디렉터리를 열고, 새 Hermes 세션을 시작하기 전에 그 요약을 읽어보십시오. 최신 빌드는 report.json 및 summary.md에 쓰이는 감지된 시크릿 값을 검열(redact)하므로, 변경 노트와 함께 해당 파일을 안전하게 유지할 수 있습니다 — 하지만 이를 가정하기보다 해당 버전을 확인하십시오, 이전 빌드가 동일한 보고서에 원시 API 키를 기록했기 때문입니다.
새 세션이 중요합니다. 가져온 스킬과 기억 항목은 세션이 시작될 때 로드되므로, 마이그레이션 이전 세션 내에서 테스트하면 거짓 “skill not found” 또는 구식 기억 결과가 나올 수 있습니다.
7단계: 채널 전환 전 동작 검증
마이그레이션 후 체크를 터미널에서 실행하십시오:
hermes status
hermes doctor
hermes config show
hermes gateway status
기억 조회가 불완전해 보이면, 가져오기가 실패했다고 결론 내리기 전에 인덱스를 재구성하십시오:
hermes memory reindex
그 후 새 Hermes 대화를 시작하고, 파일 존재 여부만이 아니라 관찰 가능한 동작을 테스트하십시오. 기억에서 알려진 사용자 선호도를 묻고, 가져온 스킬 하나를 호출하고, MCP 도구를 호출하고, 허용되어야 하는 무해한 터미널 명령을 실행하고, 승인이 필요해야 하는 것을 하나 시도하십시오.
유용한 승인 매트릭스는 다음과 같습니다:
| 영역 | 테스트 | 실패 시 보통 의미 |
|---|---|---|
| 페르소나 | 톤과 경계가 명확한 질문 | SOUL.md가 발견되지 않음, 덮어쓰기됨, 또는 병합 필요한 정체성 콘텐츠 있음 |
| 사용자 기억 | 알려진 안정적 선호도 요청 | 기억 항목 가져오기 실패, 예상치 못한 중복 제거, 재인덱싱 미수행, 또는 새 세션에서 로드되지 않음 |
| 스킬 | 고유한 가져온 워크플로 호출 | 이름 충돌, 유효하지 않은 메타데이터, 의존성 누락, 또는 구식 세션 |
| 프로바이더 | 정상 및 긴 응답 실행 | 잘못된 모델 매핑, 자격 증명 누락, 또는 호환되지 않는 API 유형 |
| MCP | 각 서버에서 읽기 전용 도구 하나 호출 | 환경 누락, 잘못된 cwd, 전송 불일치, 또는 도구 필터 문제 |
| 터미널 | 허용 및 승인 필요 명령 테스트 | 승인 모드 또는 허용 목록 매핑이 정책 변경 |
| 브라우저 | 무해한 테스트 페이지 열기 | CDP URL, 브라우저 백엔드, 또는 샌드박스 접근 차이 |
| 압축 | 긴 일회용 세션 실행 | 요약 모델 또는 컴팩션 동작이 의도대로 매핑되지 않음 |
| 세션 재설정 | 설정 확인 및 일회용 프로필에서 테스트 | 일일/유휴 해석이 OpenClaw 규칙과 다름 |
마이그레이션은 timeoutSeconds를 추정된 최대 턴 값으로 매핑하고, 추론 레벨을 번역하며, 승인 모드를 변환합니다.它们是 의미론적 매핑이며 바이트 대 바이트 카피가 아닙니다. 특히 긴 자율적 작업 및 명령 실행에 대해, 결과 동작이 의도에 부합하는지 확인하십시오.
8단계: 시크릿은 별도의 보안 변경으로 처리
--migrate-secrets는 OpenClaw 설정 값, ~/.openclaw/.env, 설정 환경 객체, 에이전트별 인증 프로필(~/.openclaw/agents/<agent>/agent/auth-profiles.json)에서 허용 목록에 포함된 키를 수집할 수 있습니다. 이는 일반 문자열, 환경 템플릿, 환경 기반 SecretRef 객체를 이해합니다.
이는 의도적으로 임의의 시크릿 이름을 복사하지 않습니다. 파일 기반 및 명령 기반 SecretRef는 자동으로 해석될 수 없으며, 지원되는 허용 목록 밖의 값은 수동 설정을 위해 남아 있습니다. 여기서 모든 경고는 설계대로 작동하는 컨트롤로, Hermes에 OpenClaw 환경을 통째로 붙여넣으라는 이유가 아니라고 취급하십시오.
첫 번째 마이그레이션의 경우, 데이터 가져오기 후 Hermes를 통해 프로바이더 자격 증명을 구성하는 것을 선호합니다. 자동 시크릿 마이그레이션을 사용한다면, 미리보기를 확인하고 채널 소유권을 이전할 준비가 되었을 때만 실행하십시오:
hermes claw migrate \
--dry-run \
--preset full \
--migrate-secrets
그 후 값을 출력하지 않고 존재 여부를 검증하십시오:
hermes status
hermes auth status
셸 히스토리, 마이그레이션 노트에 붙여넣기, 또는 의도보다 약한 권한으로 저장된 경우 자격 증명을 회전(Rotate)하십시오. 마이그레이션은 접근 권한을 보존하지만, 이전 시크릿 처리 관행이 안전했음을 증명하지는 않습니다.
9단계: 통제된 메시징 전환 수행
두 프로세스가 동일한 봇 계정으로 폴링, 구독, 또는 응답을 하려 할 때 정직한 제로 다운타임 핸드오프는 존재하지 않습니다. 안전한 패턴은 병렬로 준비하고, OpenClaw를 중지하고, Hermes를 시작하고, 각 플랫폼을 테스트하고, 롤백 명령을 준비해 두는 것입니다.
먼저 OpenClaw 게이트웨이를 중지하고 중지됨을 확인하십시오:
openclaw gateway stop
openclaw gateway status
이제 메시징 시크릿을 마이그레이션하거나 수동으로 설정하고, Hermes 게이트웨이를 구성하고 시작하십시오:
hermes gateway setup
hermes gateway install
hermes gateway start
hermes gateway status
각 플랫폼에서 허용된 사용자로 직접 메시지를 보내십시오. 수신 텍스트, 답변, 첨부 파일(사용 시), 슬래시 명령, 긴 실행 작업, 중단, 그리고 외부 예약 또는 수동 전송을 테스트하십시오. 녹색 서비스 상태는 프로세스가 실행 중임을 증명하지만, 허용 목록, 스레드 라우팅, 전달, 포맷팅이 이동 과정에서 살아남았음을 증명하지는 않습니다.
WhatsApp은 마이그레이션이 Baileys 세션을 재사용 가능한 토큰으로 이전하지 않기 때문에 재페어링이 필요합니다. hermes whatsapp를 실행하고 QR 플로우를 완료하십시오. 다른 채널은 토큰을 재사용할 수 있지만, 계정 레이아웃 및 멀티 계정 바인딩은 여전히 명시적인 테스트가 필요합니다.
스킬, 플러그인, MCP 서버는 상호 교환되지 않음
네 가지 위치의 OpenClaw 스킬은 가져올 수 있지만, 가져온 디렉터리는 그 가정이 여전히 참일 때만 유용합니다. 명령 이름, 파일 시스템 경로, 환경 변수, 플랫폼 특화 도구, OpenClaw 전용 API에 대한 참조를 확인하십시오. OpenClaw 스킬 가이드는 소스 포맷을 설명하고, Hermes 스킬 작성 가이드는 대상 동작을 다룹니다.
OpenClaw 플러그인은 Hermes 플러그인이 되지 않습니다. 가장 좁고 적합한 레이어에서 기능을 재구성하십시오:
- 절차, 도구 선택, 재사용 가능한 지침을 위해 Hermes 스킬을 사용하십시오.
- 라이브 데이터 또는 외부 서비스 경계를 위해 MCP 서버를 사용하십시오.
- 이미 기능이 제공되는 경우 내장 Hermes 도구를 사용하십시오.
- 코드가 에이전트 런타임 자체에 참여해야 할 때만 Hermes 플러그인을 사용하십시오.
이것은 건축적 퇴적물을 제거할 좋은 타이밍입니다. 구 OpenClaw 제한 사항을 보상하기 위해 설치된 플러그인은 Hermes에서 생존할 이유가 없을 수 있으며, 영속적 데이터베이스를 가진 플러그인은 의도적인 내보내기 또는 교체 계획이 필요합니다.
MCP 정의는 더 직접적으로 마이그레이션되며, 명령, 인자, 환경, 작업 디렉터리, URL, 포함/제외 도구 필터를 포함합니다. 여전히 각 서버를 별도로 테스트하십시오: 올바른 YAML 매핑이 누락된 실행 파일을 설치하거나, OAuth를 갱신하거나, 구 호스트의 경로를 새 호스트에서 존재하게 할 수는 없습니다.
기억은 라인 카운트 체크가 아닌 품질 체크가 필요
Hermes는 MEMORY.md, USER.md, 일일 메모리 파일을 기억 구조로 가져옵니다. 이는 유용한 사실을 보존하지만, OpenClaw 메모리 플러그인, 장문 컨텍스트 데이터베이스, 임베딩 인덱스, 조회 정책은 동등한 인지 시스템으로 번역되는 것이 아니라 아카이브됩니다.
가져온 기억을 세 단계로 검토하십시오:
- 정체성 및 안정적 선호도: 많은 세션에 영향을 미쳐야 하는 간결한 사실을 보존하십시오.
- 운영 지식: 전역 기억이 아닌 스킬이나 프로젝트 컨텍스트로 반복 가능한 절차를 이동하십시오.
- 역사적 잔재: 완료된 인시던트, 구식 계획, 자기 참조 에이전트 주석을 영구적으로 주입하기보다 아카이브하십시오.
모든 트랜스크립트를 영속적 기억으로 가져오지 마십시오. 더 많이 기억된 텍스트는 구식 제약 조건과 자신의 이전 추측을 반복적으로 조회함으로써 에이전트를 덜 일관성 있게 만들 수 있습니다. Hermes 기억 시스템 가이드는 가져온 항목이 어디에 놓이는지 설명하고, 에이전트 메모리 프로바이더 비교는 새 장기 백엔드를 선택하는 더 나은 장소입니다.
Cron 작업, 하트비트, 훅, 멀티 에이전트 라우팅 재구성
Cron 작업은 스케줄된 실행이 단순한 cron 표현식이 아니기 때문에 아카이브됩니다. 작업에는 프롬프트 또는 명령, 작업 디렉터리, 모델, 타임아웃, 전달 대상, 권한, 재시도 동작, 세션 상태에 대한 기대치도 있습니다.
모든 아카이브된 OpenClaw 작업에 대해, 해당 필드를 기록하고 Hermes에서 재구성하십시오:
hermes cron create
hermes cron list
스케줄을 활성화하기 전에 각 작업을 수동으로 한 번 실행하십시오. 특히 구 작업이 Telegram 채트, Slack 채널, Discord 스레드에 게시했던 경우, 작업과 전달 경로를 모두 검증하십시오.
주기적 실행이 실제로 필요할 때만 HEARTBEAT.md를 명시적인 예약 작업으로 번역하십시오. 몇 분마다 모든 것을 검사하라는 모호한 하트비트는 비용이 많이 들고 검증하기 어렵습니다; 관찰 가능한 결과를 가진 명시적 이름이 있는 작업이 운영하기 더 쉽습니다.
멀티 에이전트 정의 및 채널 바인딩도 수동 설계를 요구합니다. Hermes 프로필은 격리된 상태와 게이트웨이를 제공하지만, OpenClaw 에이전트 목록의 문법적 재작성은 아닙니다. 이름을 먼저 복제하는 대신, 책임, 워크스페이스, 자격 증명, 채널, 보안 경계를 매핑하십시오; 해당 매핑의 프로필 우선 추론은 Hermes 프로덕션 설정 가이드에서 자세히 다루어집니다.
중요한 실패 문제 해결
“OpenClaw 디렉터리 발견되지 않음”
명령어는 현재 OpenClaw, Clawdbot, Moltbot 기본 디렉터리를 검색합니다. 상태가 다른 곳에 있다면, OpenClaw 설정 및 관련 상태를 포함하는 디렉터리를 지정하십시오:
hermes claw migrate --dry-run --source /path/to/openclaw
그것이 실제로 완전한 소스 트리인 경우를 제외하고는 --source를 워크스페이스에만 지시하지 마십시오. 미리보기에는 설정, 워크스페이스, 인식된 범주가 표시되어야 합니다.
마이그레이션이 충돌로 거부됨
이는 충돌이라는 안전 기본값이며, 충돌(crash)이 아닙니다. Hermes를 백업하고, 각 충돌의 권위 있는 쪽을 식별하고, 스킬은 --skill-conflict rename을 사용하며, 검토된 플랜에만 --overwrite를 예약하십시오.
기존 Hermes 구성이 가치 있다면 user-data 프리셋을 고려하십시오. 이는 확립된 인프라를 대체하려 하지 않고 어시스턴트의 사용자 소유 콘텐츠만 가져옵니다.
가져온 스킬이 표시되지 않음
새 세션을 시작하고 ~/.hermes/skills/openclaw-imports/ 아래에 있는 가져온 디렉터리를 검사하십시오. Hermes 안에서 /skills를 사용하여 발견 여부를 확인하십시오. 스킬이 존재하지만 실행할 수 없다면, 마이그레이션을 반복하기보다 그 의존성 및 도구 가정을 검사하십시오.
프로바이더 키가 발견되지 않음
키는 OpenClaw 환경 파일, 설정 환경 객체, 인증 프로필, 파일 기반 SecretRef, 명령 기반 SecretRef, 또는 지원되지 않는 변수 이름에 저장될 수 있습니다. 마이그레이션 도구는 지원되는 형태를 해석하고 나머지에 대해 경고를 표시합니다. 가져오기 도구를 만족시키도록 보안 참조를 평문으로 변환하는 대신, Hermes 구성 또는 인증 명령을 통해 미해결 값을 추가하십시오.
봇은 실행 중이지만 메시지가 누락되거나 중복됨
OpenClaw 게이트웨이가 중지되어 있고, 토큰을 소유하는 Hermes 프로필이 하나뿐인지 확인하십시오. 다음으로 hermes gateway status 및 게이트웨이 로그를 검사한 후, 채널 허용 목록 및 계정 선택을 확인하십시오. 중복 컨슈머와 잘못된 허용 목록은 손상된 언어 모델보다 더 흔합니다.
성격(Personality)은 있지만 기억(Recall)이 나쁨
SOUL.md와 기억은 다른 레이어입니다. 페르소나가 ~/.hermes/SOUL.md로 복사되었는지, 기억 항목이 ~/.hermes/memories/에 도달했는지, 그리고 테스트가 새 세션을 사용하는지 확인하십시오. 더 깊은 디버깅 전에 hermes memory reindex를 실행하십시오. OpenClaw가 외부 메모리 플러그인에 의존했다면, Markdown 가져오기가 그 조회 동작을 재현할 것으로 기대하기보다 Hermes 메모리 프로바이더를 구성하십시오.
Hermes 롤백
마이그레이션 전 Hermes 백업을 복원하기 전에 Hermes 게이트웨이를 중지하십시오:
hermes gateway stop
hermes import ~/.hermes/backups/pre-migration-<timestamp>.zip
hermes import는 Hermes 홈의 파일을 아카이브 내용으로 덮어쓰므로, 정확한 파일 이름을 검사하고 마이그레이션 후 Hermes 세션이 대체될 수 있음을 이해하십시오. 그 후 Hermes를 중지 상태로 유지하고 OpenClaw를 재시작하여 그 게이트웨이 및 채널 건강을 확인하십시오.
명령어가 구성을 모델링할 수 없는 경우 수동 마이그레이션
수동 폴백은 느리지만, 크게 커스터마이징된 설치에서는 때로 더 명확할 수 있습니다. 깨끗한 Hermes 프로필을 만들고 책임별로 마이그레이션하십시오:
- 페르소나 콘텐츠를
~/.hermes/SOUL.md에 복사하거나 재작성하십시오. - 전체 역사를 복사하는 대신, 안정된 사용자 사실을 Hermes
MEMORY.md및USER.md로 선별하십시오. - 프로젝트 지침을 올바른 리포지토리 레벨
AGENTS.md에 배치하십시오. - 호환 가능한 스킬을 명명된 가져오기 디렉터리에 복사하고 개별적으로 테스트하십시오.
- 시크릿을 출력하지 않고 프로바이더 및 MCP 정의를
~/.hermes/config.yaml로 번역하십시오. - Hermes 인증 또는 시크릿 관리를 통해 자격 증명을 구성하십시오.
- 승인, 샌드박싱, 브라우저 접근, cron 작업, 웹훅, 채널을 재구성하십시오.
- 각 OpenClaw 플러그인을 명시적인 Hermes 기능으로 교체하거나 폐기하십시오.
소스가 다른 워크스페이스, 메모리 플러그인, 채널 바인딩을 가진 여러 OpenClaw 에이전트를 포함할 때 수동 경로는 특히 적절합니다. 자동 유니온은 파일을 보존하면서 설정을 안전하게 만들었던 격리를 지울 수 있습니다.
OpenClaw를 즉시 정리하지 마십시오
Hermes가 로컬 및 메시징 테스트를 통과한 후, 안정화 기간(Soak period) 동안 OpenClaw를 설치한 상태로 중지해 두십시오. 검증된 OpenClaw 백업, 마이그레이션 아카이브, 마이그레이션 전 Hermes 백업, 승인 체크리스트 카피를 보존하십시오.
Hermes는 남은 OpenClaw 디렉터리를 .pre-migration/으로 이름을 변경하기 위해 hermes claw cleanup를, 그리고 아카이브될 내용을 미리보기하기 위해 hermes claw cleanup --dry-run을 문서화합니다. 이를 OpenClaw 게이트웨이가 중지되고, 현재 Hermes 버전이 프로세스 가드를 포함하며, 롤백하지 않기로 결정한 후에만 사용하십시오. 구형 2026 빌드는 OpenClaw 게이트웨이가 실행 중일 때 상태를 이동할 수 있는 보고된 cleanup 경로를 가졌습니다; 현재 코드는 가드가 구현된 것으로 표시하지만, 검증된 백업과 중지된 소스 서비스가 여전히 합리적인 경계입니다.
정리는 Hermes가 작동함을 증명하기 위해 필수적이지 않습니다. 그것은 향후 상태 혼란을 줄이기 위해 존재하므로, 롤백 창 동안 이를 지연시키는 것은 어지럽지 않고 좋은 운영입니다.
OpenClaw 2.0에 머무를 때
OpenClaw 2.0은 버려진 베이스라인이 아닙니다. v2026.8.1 릴리스는 900명 이상의 기여자로부터 16,000개 이상의 pull request를 포함했으며 — 프로젝트의 총 병합 역사 중 약 절반 — 온보딩, 웹 Control UI, 세션 저장, 백업, 채널, 기억, 플러그인, 자동화, 브라우저 및 컴퓨터 사용, 보안, 서비스 신뢰성을 상당하게 변경했습니다. 이러한 플랫폼 기능이 배포의 핵심이라면, 마이그레이션은 단순화하는 것보다 더 많은 작동 기능을 제거할 수 있습니다.
다음에 의존하는 경우 OpenClaw에 머무르십시오:
- 독킹된 파일 편집기, git 기반 Changes 패널, 브라우저 패널, 대화 내 승인을 갖춘 재구축된 Control UI.
- 세션 프리셋, 트랜스크립트 검색, 그룹, 상태 보기, 배치 작업.
- Hermes 동등물이 없는 제품 특화 플러그인.
- 프로덕션에서 이미 작동하는 복잡한 멀티 사용자, 모바일, 디바이스, 채널 라우팅.
- OpenClaw 특화 브라우저, 컴퓨터 사용, 또는 게이트웨이 관리.
- 허용 가능한 손실로 내보낼 수 없는 메모리 또는 세션 데이터베이스.
- 팀이 이미 알고 있고 모니터링하는 운영 컨트롤.
그것이 실제로 운영하는 것과 더 잘 일치하는 경우 Hermes로 이동하십시오: 더 단순한 터미널 우선 워크플로, 프로필, 학습 지향 스킬, 기억 모델, 예약된 작업, 프로바이더 유연성, 또는 위임 모델. OpenClaw와 Hermes 비교는 현재 숫자와 함께 해당 결정을 논의합니다; 이 페이지는 결정이 내려진 후 전환을 실행하는 것에 관한 것입니다.
최종 마이그레이션 체크리스트
- OpenClaw 버전 및 해석된 경로 기록.
- 라이브 상태 외부에 검증된 OpenClaw 백업 저장.
- 2.0 이전 JSONL 트랜스크립트가 중요할 경우 별도로 스냅샷.
- 기존 Hermes 백업 생성.
- 현재
claw migrate안전 동작에 대한 Hermes 버전 확인. - 전체 dry-run 검토.
- 모든 충돌에 해결책 배정.
- 아카이브 콘텐츠를 수동 작업 목록에 추가.
- 페르소나, 사용자 기억, 스킬을 새 세션에서 테스트.
- 프로바이더, 폴백 모델, MCP, 브라우저, 터미널 테스트.
- 승인 및 샌드박스 동작 테스트(거부된 동작 포함).
- Cron 작업, 플러그인, 훅, 메모리 백엔드, 멀티 에이전트 바인딩 재구성 또는 폐기.
- 채널 자격 증명 이동 전 OpenClaw 게이트웨이 중지.
- 모든 메시징 채널을 허용된 계정에서 테스트.
- 사용 시 WhatsApp 재페어링.
- 롤백 명령 및 아카이브 이름 기록.
- 안정화 기간이 끝날 때까지 OpenClaw 정리 지연.
최종 판단
hermes claw migrate는 OpenClaw에서 Hermes로의 이동을 루틴하게 만들기에 충분히 좋지만, “루틴"이 계획되고 되돌릴 수 있음을 의미할 때만 그렇습니다. 그 가장 강력한 기능은 복사하는 파일의 수가 아니라, 구 어시스턴트의 어떤 부분이 실제 Hermes 동등물을 가지는지, 어떤 부분이 여전히 엔지니어링 판단을 요구하는지를 알려주는 미리보기입니다.
범위를 발견하기 위해 전체 프리셋을 사용하고, 첫 번째 패스에서 시크릿을 배제하고, 스킬 충돌을 이름 변경(rename)하고, 터미널에서 테스트하고, 채널 소유권 이전을 별도의 이벤트로 처리하십시오. 가장 중요하게는, 단순히 성공적인 상태 명령을 반환하는 것이 아니라, Hermes가 실제 예약된 작업과 실제 대화를 완료할 때까지 구 시스템을 보존하십시오.