← 리포트 목록
OpenClaw 23개 이관 필요 잡 — 자동 이관 스크립트 + 작은 5개 staged
2026-04-24
auto
[openclaw, hermes, migration, launchagent, automation]
OpenClaw 23개 이관 필요 잡 — 자동 이관 스크립트 + 작은 5개 staged
결론
자동 이관 스크립트를 만들고, 23개 중 가장 작은 5개를 dry-run 검증 후 Hermes jobs.json에 disabled 상태로 staged 등록했다.
- 성공: 5개
- 실패: 0개
- OpenClaw source kill: 안 함 (
--kill-source미사용) - Hermes 등록 상태:
enabled=false,state=paused - 실제 알림/HA/TTS 실행: 안 함. 검증은
bash -n/py_compile만 수행.
스크립트:
/Users/ron/.hermes/workspace/scripts/admin/auto_migrate_openclaw.py
1. 선택한 작은 5개
기준:
- LaunchAgent 단일 label
- 단일 shell/python entrypoint
- MCP 의존 없음
- LLM 호출 없음
- 상시 daemon/interval job 제외
- webapp/orchestrator/proxy/listener/bridge/analyst/door-alert 등 위험군 제외
선정:
| OpenClaw label | 이유 | 검증 방식 | Hermes staged job |
|---|---|---|---|
com.openclaw.cold-alert |
아침 1회 센서 shell, LLM 없음 | bash -n |
hmig-cold-alert |
com.openclaw.rain-alert |
아침 1회 센서 shell, LLM 없음 | bash -n |
hmig-rain-alert |
com.openclaw.late-lights |
밤 1회 센서 shell, LLM 없음 | bash -n |
hmig-late-lights |
com.openclaw.kpi-daily |
단일 Python wrapper, LLM 없음 | py_compile |
hmig-kpi-daily |
com.openclaw.kpi-weekly |
단일 Python wrapper + --weekly, LLM 없음 |
py_compile |
hmig-kpi-weekly |
제외 예시:
- analyst 4종: LLM/발송 가능
- door-alert: 60초 interval + HA timeout 이슈 이력
- webapp/orchestrator/otel/autopilot: 운영 backbone
- cf-tunnel/listener/bridge/task-notifier: daemon/네트워크 경로
2. 자동 이관 스크립트 기능
auto_migrate_openclaw.py 기능:
- 입력: label 목록 또는
--batch-small-5 - OpenClaw 위치 탐색
~/Library/LaunchAgents/<label>.plist~/.openclaw/cron/jobs.jsonentry- LaunchAgent → Hermes shell job 변환
ProgramArguments→ shell commandEnvironmentVariables→ command env prefixStartCalendarInterval→ cron exprStandardOut/ErrorPath는 원본 plist에 남기고 Hermes job은silent=true.openclaw경로가 있으면.hermesmirror 경로로 copy 계획/수행- 안전장치
- 기본 allowlist: 이번 small 5만 허용
- 위험 키워드 차단:
codex-proxy,orchestrator,webapp,otel,analyst,listener,bridge,door-alert,gateway,queue등 - 실제 실행 대신 syntax validation만 수행
- 옵션
- 기본: dry-run plan only
--apply: Hermes jobs.json upsert--enable: 등록 시 enabled=true. 이번엔 미사용--kill-source: OpenClaw jobs.json 비활성화. LaunchAgent bootout은 자동화하지 않음. 이번엔 미사용
위험 job 차단 검증:
$ auto_migrate_openclaw.py com.openclaw.sihwang-webapp
rc=2
BLOCK com.openclaw.sihwang-webapp: not in SAFE_SMALL_5 allowlist
3. dry-run 결과
명령:
/Users/ron/.hermes/workspace/scripts/admin/auto_migrate_openclaw.py --batch-small-5 --json
결과:
com.openclaw.cold-alert -> hmig-cold-alert bash-n rc=0
com.openclaw.rain-alert -> hmig-rain-alert bash-n rc=0
com.openclaw.late-lights -> hmig-late-lights bash-n rc=0
com.openclaw.kpi-daily -> hmig-kpi-daily py_compile rc=0
com.openclaw.kpi-weekly -> hmig-kpi-weekly py_compile rc=0
모두 통과해서 STOP 조건은 발생하지 않았다.
4. apply 결과 — Hermes jobs.json staged 등록
백업:
/Users/ron/.hermes/cron/jobs.json.bak-auto-migrate-small5-<timestamp>
명령:
/Users/ron/.hermes/workspace/scripts/admin/auto_migrate_openclaw.py --batch-small-5 --apply --json
등록 결과:
registered_count 5
hmig-cold-alert enabled=False schedule=10 7 * * *
hmig-rain-alert enabled=False schedule=15 7 * * *
hmig-late-lights enabled=False schedule=0 23 * * *
hmig-kpi-daily enabled=False schedule=45 7 * * *
hmig-kpi-weekly enabled=False schedule=50 7 * * 1
중요: enabled=false라 아직 Hermes에서 실제 실행되지 않는다. 다음 단계는 각 job을 1개씩 enabled=true로 전환하고 같은 시각 OpenClaw LaunchAgent를 bootout/archive하는 것이다.
5. 검증
python3 -m py_compile /Users/ron/.hermes/workspace/scripts/admin/auto_migrate_openclaw.py: OK
small-5 dry-run: 5/5 OK
small-5 apply staged: 5/5 OK
Hermes jobs.json registered_count: 5
위험 job block test: OK
6. 다음 액션
권장 순서:
hmig-cold-alert하나만 enabled=true- 같은 label
com.openclaw.cold-alertLaunchAgent bootout/archive - 다음날 07:10 로그 확인
- 이상 없으면 rain → late-lights → kpi-daily → kpi-weekly 순서로 반복
센서 3개는 HA URL 이슈 이력이 있으므로, 활성화 전 HA_URL 생존성 재확인이 필요하다.
자체평가
| 기준 | 점수 | 근거 |
|---|---|---|
| 정확성 | 4.2/5 | 23개 중 위험군을 제외하고 small 5만 allowlist로 처리 |
| 완성도 | 4.2/5 | 스크립트, dry-run, apply staged, 차단 테스트, 보고 완료 |
| 검증 | 4.2/5 | py_compile, bash -n/py_compile validation, jobs.json 등록 확인 |
| 최소 변경 | 4.5/5 | Hermes jobs.json에 disabled staged만 추가, OpenClaw source 미변경 |
종합: 4.3/5
DONE