문제 상황
게이트웨이 서비스가 알 수 없는 에러와 함께 시작을 거부했다:
MissingEnvVarError: Missing env var "CLAWDBOT_GATEWAY_TOKEN"
referenced at config path: gateway.auth.token
토큰은 존재했다. 정확히 설정되어 있었다. 다만 다른 이름으로.
flowchart LR
subgraph "사용자가 설정한 것"
A[OPENCLAW_GATEWAY_TOKEN] --> B[쉘에 설정됨]
end
subgraph "설정 파일이 기대한 것"
C[CLAWDBOT_GATEWAY_TOKEN] --> D[찾을 수 없음!]
end
A -.->|"이름 불일치"| D
D --> E[시작 실패]
조사 과정
프로젝트가 두 번 이름이 바뀌었다:
clawdbot → moltbot → openclaw
하지만 ~/.clawdbot/moltbot.json 경로의 설정 파일은 (그렇다, 이 경로 자체가 문제를 보여준다) 여전히 원래 접두사를 참조하고 있었다:
{
"gateway": {
"auth": {
"token": "${CLAWDBOT_GATEWAY_TOKEN}"
}
}
}
한편 문서와 새로운 설정은 모두 OPENCLAW_* 변수를 사용하고 있었다.
이름 변경의 고고학
프로젝트 이름을 바꿀 때, 단순히 문자열 하나를 바꾸는 게 아니다. 하드코딩된 참조로 가득한 전체 생태계와 싸우는 것이다:
flowchart TD
subgraph "명백한 변경사항"
A[패키지 이름]
B[저장소 이름]
C[문서]
end
subgraph "숨겨진 지뢰밭"
D[환경 변수 접두사<br/>PROJECT_* → NEWNAME_*]
E[설정 디렉토리<br/>~/.oldname/ → ~/.newname/]
F[LaunchAgent 라벨<br/>com.oldname. → ai.newname.]
G[키체인 항목<br/>서비스/계정 이름]
H[심볼릭 링크<br/>옛 위치 가리킴]
I[쉘 별칭 및 스크립트]
J[CI/CD 시크릿]
end
A & B & C --> K[보통 업데이트됨]
D & E & F & G & H & I & J --> L[종종 잊힘]
L --> M[6개월 후 터짐]
해결 방법
- 즉각적 수정: 설정을
${OPENCLAW_GATEWAY_TOKEN}사용하도록 변경 - 아티팩트 이름 변경: 키체인 항목과 래퍼 스크립트 업데이트
- 마이그레이션 경고 추가: Doctor 명령이 이제 deprecated 변수를 감지:
$ openclaw doctor
- Deprecated legacy environment variables detected (ignored).
- Use OPENCLAW_* equivalents instead:
CLAWDBOT_GATEWAY_TOKEN -> OPENCLAW_GATEWAY_TOKEN
적절한 마이그레이션 전략
프로젝트 이름 변경 시 다음 안전장치를 구현해야 한다:
1. 하위 호환성 유지 기간
2-3 버전 동안 옛 이름이 deprecation 경고와 함께 작동하도록 유지한다:
def get_token():
# 새 이름 우선
token = os.environ.get('OPENCLAW_GATEWAY_TOKEN')
# 경고와 함께 레거시로 폴백
if not token:
token = os.environ.get('CLAWDBOT_GATEWAY_TOKEN')
if token:
warn("CLAWDBOT_GATEWAY_TOKEN is deprecated. Use OPENCLAW_GATEWAY_TOKEN")
return token
2. 마이그레이션 문서화
모든 아티팩트를 나열한 전용 마이그레이션 가이드를 만든다:
## 마이그레이션 체크리스트: clawdbot → openclaw
### 환경 변수
| 이전 | 이후 |
|-----|-----|
| CLAWDBOT_GATEWAY_TOKEN | OPENCLAW_GATEWAY_TOKEN |
| CLAWDBOT_API_KEY | OPENCLAW_API_KEY |
### 파일 위치
| 이전 | 이후 |
|-----|-----|
| ~/.clawdbot/ | ~/.openclaw/ |
| /var/log/clawdbot/ | /var/log/openclaw/ |
3. 자동 감지
CLI에 감지 기능을 내장한다:
$ openclaw migrate --check
Found legacy artifacts:
- ~/.clawdbot/config.json (should be ~/.openclaw/config.json)
- CLAWDBOT_GATEWAY_TOKEN in environment
- LaunchAgent com.clawdbot.gateway still registered
Run 'openclaw migrate --apply' to fix automatically.
핵심 교훈
- 이름 변경은 리팩토링이다 - 생각보다 훨씬 많은 것에 영향을 미친다
- 사용자는 기억력이 길다 - 그들의 설정과 스크립트는 옛 이름을 영원히 기억한다
- 우아하게 실패하라 - deprecated 이름에 대해 크래시 대신 경고를 로그하라
- 마이그레이션을 자동화하라 - 레거시 참조를 찾고 수정하는 도구를 제공하라
- 철저하게 문서화하라 - 모든 아티팩트 유형을 다루는 마이그레이션 체크리스트를 만들어라
“한 시간이면 되는” 프로젝트 이름 변경은 우리가 스스로에게 하는 거짓말이다. 그 뒤에 따라올 고고학 탐험을 위한 시간을 확보해 두어라.
