마이그레이션을 결심하는 것은 보통 세 가지 순간 중 하나다. CVE-2026-25253에 대해 읽고 OpenClaw 인스턴스가 인터넷에 노출되어 있었다는 것을 깨달았을 때. 서버의 메모리 사용량을 확인하고 2GB RAM 머신에서 OpenClaw가 1.2GB로 유휴 상태임을 발견했을 때. 또는 XDA Developers 기사를 보고 다음 취약점이 어떤 모습일지 기다리는 것보다 낫다고 판단했을 때.
무엇이 당신을 여기로 데려왔든, 마이그레이션은 간단하다. ZeroClaw에는 무거운 작업을 처리하는 내장 마이그레이션 도구가 포함되어 있다. 무엇을 기대할지 설명하겠다.
이전되는 것
마이그레이션 도구는 대화 기록을 ZeroClaw의 SQLite 메모리 데이터베이스로 가져온다. 채널 연결——Telegram, Discord, WhatsApp 토큰——은 config.toml 형식으로 이전된다. AI 제공업체 설정과 API 키는 직접 전송된다. 시스템 프롬프트와 페르소나 구성은 깔끔하게 변환된다.
잃지 않는 것은 컨텍스트다. 나눴던 대화들, 어시스턴트가 학습한 선호도, 시간이 지나면서 쌓인 메모리——그 모든 것이 함께 온다.
실제로 바뀌는 것
가장 큰 변화는 스킬 시스템이다. OpenClaw의 JavaScript 스킬은 ZeroClaw에서 실행되지 않는다. 일반적인 내장 스킬 대부분에는 ZeroClaw 동등품이 있다——`zeroclaw tools list`로 확인할 수 있다. 직접 작성한 커스텀 스킬의 경우 내장 동등품을 찾거나 Rust 트레이트를 구현해야 한다. 간단한 자동화에는 Rust를 작성하지 않고 외부 스크립트를 호출할 수 있는 셸 도구를 사용할 수 있다.
두 번째 변화는 인터페이스다. ZeroClaw에는 웹 UI가 없다. 채팅 채널이나 CLI를 통해 상호작용한다. OpenClaw의 웹 인터페이스에 크게 의존했다면 유사한 기능을 제공하는 커뮤니티 웹 게이트웨이가 있지만, 주요 상호작용 모델은 채널 우선이다.
그 외 모든 것은 더 단순해진다. node_modules 없음, 의존성 관리 없음, 플러그인 마켓플레이스 없음. 통합은 레지스트리에서 설치하는 것이 아니라 TOML 파일에서 구성된다. 하나의 바이너리, 하나의 설정 파일, 하나의 데이터베이스.
시작하기 전에
무언가를 실행하기 전에 5분을 들여 준비한다:
```bash # 현재 OpenClaw 버전 확인 openclaw --version
# 메모리를 백업으로 내보내기 openclaw export --format json > openclaw-backup.json
# .env 파일을 안전한 곳에 저장 cp ~/.openclaw/.env ~/openclaw-env-backup ```
활성 채널 토큰과 구축한 커스텀 스킬도 적어둔다. 마이그레이션 도구는 대부분의 것을 자동으로 처리하지만, 무언가에 수동 처리가 필요한 경우 참조가 있으면 유용하다.
1단계: ZeroClaw 설치
```bash # macOS brew install zeroclaw
# Linux curl -fsSL https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/main/scripts/bootstrap.sh | bash
# Windows curl -fsSLO https://github.com/zeroclaw-labs/zeroclaw/releases/latest/download/zeroclaw-x86_64-pc-windows-msvc.zip ```
2단계: 마이그레이션 도구 실행
항상 드라이런을 먼저 한다. 변경 없이 무엇이 가져와지고, 무엇이 건너뛰어지고, 무엇에 수동 처리가 필요한지 정확히 보여준다:
```bash zeroclaw migrate openclaw --dry-run ```
출력을 주의 깊게 읽는다. 뭔가 잘못된 것 같으면 커밋하기 전에 처리할 수 있다. 만족하면:
```bash zeroclaw migrate openclaw ```
대화 메모리, 채널 구성, AI 제공업체 설정, 시스템 프롬프트가 가져와진다. 기본적으로 마지막 10,000개 메시지를 가져온다. 전체 기록에는 `--full-history`를 추가.
3단계: 설정 확인
`~/.config/zeroclaw/config.toml`을 열고 마이그레이션이 모든 것을 올바르게 가져왔는지 확인:
```toml [ai] provider = "anthropic" model = "claude-sonnet-4-20250514" api_key = "sk-ant-..."
[channels.telegram] token = "123456:ABC..." allowed_users = [your_user_id]
[channels.discord] token = "MTk..." guild_ids = [your_server_id] ```
4단계: 전환 전 테스트
```bash zeroclaw start ```
각 채널에서 테스트 메시지를 보낸다. 봇이 응답하는지, 이전 대화 컨텍스트가 사용 가능한지, 선호하는 AI 모델이 사용되고 있는지 확인한다. 아직 OpenClaw를 중지하지 말고——모든 것이 작동하는지 확인할 때까지 둘 다 병렬로 실행한다.
일반적인 문제
WhatsApp 브리지가 연결되지 않는다. ZeroClaw는 다른 WhatsApp 브리지 라이브러리를 사용한다. QR 코드 재스캔: `zeroclaw channel whatsapp pair`.
커스텀 스킬이 작동하지 않는다. `zeroclaw tools list`로 내장 동등품이 있는지 확인. 커스텀 로직에는 외부 스크립트를 호출하는 셸 도구를 사용하거나, 더 복잡한 통합에는 Rust 트레이트를 구현한다.
메모리가 불완전해 보인다. 마이그레이션은 기본적으로 마지막 10,000개 메시지를 가져온다. 전체 기록에는: `zeroclaw migrate openclaw --full-history`.
설정 형식이 혼란스럽다. OpenClaw는 .env 파일과 JSON을 사용한다. ZeroClaw는 TOML을 사용한다. 마이그레이션 도구는 변환을 자동으로 처리하지만, 수동 조정이 필요한 경우 ZeroClaw 문서에 완전한 설정 참조가 있다.
전후 비교
모든 것이 작동하는지 확인하면 차이는 즉각적이다:
| 지표 | OpenClaw | ZeroClaw | |--------|----------|----------| | RAM 사용량 | ~1.2 GB | ~4 MB | | 시작 시간 | ~8초 | <10ms | | 디스크 사용량 | ~800 MB | ~12 MB | | 의존성 | 1,200+ npm 패키지 | 0 | | 오픈 CVE | 2개 이상 치명적 | 0 |
마무리
ZeroClaw가 올바르게 작동하는지 확인했으면 OpenClaw를 중지하고 리소스를 회수한다:
```bash sudo systemctl stop openclaw npm uninstall -g openclaw ```
혹시 모르니 `openclaw-backup.json`을 몇 주 동안 보관하고, 필요 없다고 확신하면 삭제한다.
마이그레이션에는 약 20분이 걸린다. 회수하는 RAM은 즉각적이다. CVE 노출은 OpenClaw가 실행을 멈추는 순간 끝난다.