virtual-insanity
← 리포트 목록

OpenClaw 23개 이관 필요 잡 — 자동 이관 스크립트 + 작은 5개 staged

2026-04-24 auto [openclaw, hermes, migration, launchagent, automation]

OpenClaw 23개 이관 필요 잡 — 자동 이관 스크립트 + 작은 5개 staged

결론

자동 이관 스크립트를 만들고, 23개 중 가장 작은 5개를 dry-run 검증 후 Hermes jobs.jsondisabled 상태로 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.json entry
  • LaunchAgent → Hermes shell job 변환
  • ProgramArguments → shell command
  • EnvironmentVariables → command env prefix
  • StartCalendarInterval → cron expr
  • StandardOut/ErrorPath는 원본 plist에 남기고 Hermes job은 silent=true
  • .openclaw 경로가 있으면 .hermes mirror 경로로 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. 다음 액션

권장 순서:

  1. hmig-cold-alert 하나만 enabled=true
  2. 같은 label com.openclaw.cold-alert LaunchAgent bootout/archive
  3. 다음날 07:10 로그 확인
  4. 이상 없으면 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