← 리포트 목록
Hermes 마이그레이션 자동화 도구 + 첫 batch 실제 이전
2026-04-14
hermes
[hermes, cron, migration, shell-job]
Hermes 마이그레이션 자동화 도구 + 첫 batch 실제 이전
결론
첫 batch 5개를 모두 실제 이전했다.
- Hermes shell-job: 5개 enabled/scheduled
- OpenClaw 원본 cron: 5개 enabled=false 비활성화, 삭제 없음
- dual-run strict 검증: 각 3회 통과, diff 0
- Hermes gateway: 재기동 후 API/cron scheduler healthy
변경 파일
| 경로 | 변경 |
|---|---|
/Users/ron/.hermes/hermes-agent/cron/scheduler.py |
shell-job 실행 경로 반영 확인 + 성공 응답이 stdout/stderr를 함께 반환하도록 보정 |
/Users/ron/.openclaw/workspace/scripts/hermes_migration_verify.py |
Hermes direct 실행 시 시스템 Python 대신 Hermes venv Python 사용 |
/Users/ron/.openclaw/workspace/scripts/hermes_migration_batch_tool.py |
batch 자동 변환·등록·3회 검증·성공 시 OpenClaw 비활성화 도구 신규 작성 |
/Users/ron/.hermes/cron/jobs.json |
5개 shell-job enabled/scheduled |
/Users/ron/.openclaw/cron/jobs.json |
5개 원본 cron enabled=false 비활성화 |
금지 파일 shared/llm.py는 수정하지 않았다.
OpenClaw cron 삭제도 하지 않았다.
백업
주요 백업:
/Users/ron/.openclaw/cron/jobs.json.bak-first-real-batch-20260414143615-20260414143615/Users/ron/.hermes/cron/jobs.json.bak-first-real-batch-20260414143615-20260414143615/Users/ron/.openclaw/workspace/scripts/hermes_migration_verify.py.bak-venv-20260414143407/Users/ron/.hermes/hermes-agent/cron/scheduler.py.bak-shelljob-20260414143128
이전 결과
| OpenClaw cron | Hermes job | schedule | dual-run | diff | 최종 조치 |
|---|---|---|---|---|---|
source-registry-updater |
ocA-src-reg |
5 9 * * 1-5 |
3/3 PASS | 0 | OpenClaw 비활성화, Hermes 활성화 |
data-quality-monitor |
ocA-data-quality |
15 7 * * * |
3/3 PASS | 0 | OpenClaw 비활성화, Hermes 활성화 |
vault-control-sync |
ocA-vault-control |
0 4 * * * |
3/3 PASS | 0 | OpenClaw 비활성화, Hermes 활성화 |
hypothesis-feedback |
ocA-hyp-feedback |
10 22 * * * |
3/3 PASS | 0 | OpenClaw 비활성화, Hermes 활성화 |
log-rotator |
hm-log-rotator-safe |
5 4 * * * |
3/3 PASS | 0 | OpenClaw 비활성화, Hermes 활성화 |
참고: 사용자 후보명은 log-rotator-safe였지만 실제 OpenClaw ID는 log-rotator였다. Hermes ID를 hm-log-rotator-safe로 만들었다.
검증 증거
자동화 도구 실행 결과:
- 전체 batch 요약:
/Users/ron/.openclaw/workspace/verification/hermes-first-real-batch/summary-rerun2.json - vault-control 재검증 요약:
/Users/ron/.openclaw/workspace/verification/hermes-first-real-batch/summary-vault-control-rerun.json
각 job별 verifier report는 아래 폴더에 저장됐다.
/Users/ron/.openclaw/workspace/verification/hermes-first-real-batch/ocA-src-reg//Users/ron/.openclaw/workspace/verification/hermes-first-real-batch/ocA-data-quality//Users/ron/.openclaw/workspace/verification/hermes-first-real-batch/ocA-vault-control//Users/ron/.openclaw/workspace/verification/hermes-first-real-batch/ocA-hyp-feedback//Users/ron/.openclaw/workspace/verification/hermes-first-real-batch/hm-log-rotator-safe/
최종 상태 확인:
Hermes:
ocA-src-reg enabled=True state=scheduled next=2026-04-15T09:05:00+09:00 last=ok
ocA-data-quality enabled=True state=scheduled next=2026-04-15T07:15:00+09:00 last=ok
ocA-vault-control enabled=True state=scheduled next=2026-04-15T04:00:00+09:00 last=ok
ocA-hyp-feedback enabled=True state=scheduled next=2026-04-14T22:10:00+09:00 last=ok
hm-log-rotator-safe enabled=True state=scheduled next=2026-04-15T04:05:00+09:00 last=ok
OpenClaw:
source-registry-updater enabled=False
data-quality-monitor enabled=False
vault-control-sync enabled=False
hypothesis-feedback enabled=False
log-rotator enabled=False
Hermes gateway 확인:
HTTP API: 127.0.0.1:18789 healthy
Scheduler: tick healthy
Gateway is running — cron jobs will fire automatically
active job(s): 7
next run: 2026-04-14T22:10:00+09:00
중간 이슈와 처리
- 첫 실행에서 verifier가 시스템 Python으로 Hermes를 import해 실패했다.
- 원인: Hermes 코드가 Python 3.11 문법을 쓰는데 시스템 Python이 맞지 않았다.
-
조치: verifier direct 실행을 Hermes venv Python으로 변경.
-
shell-job 기본값이 성공 응답을
[SILENT]로 숨겨 strict diff가 실패했다. - 원인: 검증 harness는 Hermes response와 OpenClaw stdout/stderr를 비교한다.
-
조치: 이전 대상 shell-job은
silent=false로 등록하고, shell-job 성공 응답에 stdout/stderr를 함께 담게 보정. -
log-rotator첫 실패 검증 과정에서 OpenClaw 쪽 실제 log rotation이 먼저 실행됐다. - 이후 재검증에서는 양쪽 모두
No rotation needed로 3회 통과. - 삭제는 script 정책 범위 안의 오래된 rotation cleanup만 수행됐고, cron 삭제는 없음.
자동화 도구 사용법
전체 batch 실행:
python3 /Users/ron/.openclaw/workspace/scripts/hermes_migration_batch_tool.py --cycles 3
특정 1개만 재검증:
python3 /Users/ron/.openclaw/workspace/scripts/hermes_migration_batch_tool.py --cycles 3 --only vault-control-sync
동작:
- OpenClaw/Hermes jobs.json 백업
- OpenClaw payload.command를 Hermes shell-job으로 변환
- Hermes job enabled=true 등록
hermes_migration_verify.py로 strict dual-run 3회- 3회 모두 통과하면 OpenClaw enabled=false
- 실패하면 Hermes job paused, OpenClaw 유지
남은 리스크
- gateway 재기동 중 일시적으로 18789 API가 내려갔다가
hermes gateway start로 복구했다. log-rotator는 검증 중 실제 로그 회전을 수행했다. 현재는 정상 상태지만, 다음부터는 dry-run 없는 정리성 작업을 dual-run할 때 파일 변화량을 먼저 따로 산정하는 가드가 필요하다.- shell-job은 이제 LLM을 우회하므로 prompt-wrap 때의 임의 명령 실행 문제는 제거됐다. 다만 command allowlist 정책은 아직 batch tool 수준에 머물고 Hermes 전역 정책으로 완전히 굳힌 것은 아니다.
자체평가
- 정확성: 4.8/5 — 5개 모두 3회 strict diff 통과 후 실제 이전 완료
- 완성도: 4.7/5 — 자동화 도구와 harness 보정 포함
- 검증: 4.8/5 — py_compile, JSON validate, verifier report, gateway health 확인
- 최소 변경: 4.5/5 — shell-job 응답 보정을 위해 Hermes scheduler를 건드렸지만 목적 범위 내
종합: 4.7/5