virtual-insanity
← 리포트 목록

batch_Z_real

2026-04-14 hermes

Hermes migration batch Z 실제 이전 보고

  • 작성: 2026-04-14T15:58:15+09:00
  • 결론: 5개 OpenClaw cron을 Hermes shell job으로 이전했고, harness dual-run 3회씩 모두 PASS했다. OpenClaw 원본은 삭제하지 않고 enabled=false로 전환했다.
  • 범위: batch=Z prefix ocZ-Z000~ocZ-Z004; 백업 직전 exact id 미선점/활성 상태를 재확인했다.
  • 동시 선점 대응: 최초 후보 일부가 다른 batch에 선점되어, 남은 안전 후보로 즉시 재선정했다.

변경 파일

  • /Users/ron/.hermes/cron/jobs.json: ocZ 5개 shell job 추가 및 verified_cutover 기록
  • /Users/ron/.openclaw/cron/jobs.json: 대상 5개 enabled=false, migration 메타 기록
  • /Users/ron/knowledge-agent/400-reports/260414_hermes_batch_Z_real.md: 이 보고서

백업

  • Hermes: /Users/ron/.hermes/cron/jobs.json.bak-batchZ-20260414T155436
  • OpenClaw disable 전: /Users/ron/.openclaw/cron/jobs.json.bak-batchZ-disable-20260414T155651

이전 결과

sub-id OpenClaw id OpenClaw name Hermes id command schedule dual-run 최종 상태
Z000 vault-note-atomizer 제텔카스텐 원자화 파이프라인 ocZ-Z000-vault-note-atomizer-report PYTHONPATH=/Users/ron/.openclaw/workspace/scripts python3 /Users/ron/.openclaw/workspace/scripts/pipeline/note_atomizer.py --dry-run --report 30 3 * * * 3/3 PASS OpenClaw disabled, Hermes scheduled
Z001 note_atomizer_daily_full Note Atomizer Full (매일 수신함 소화) ocZ-Z001-note-atomizer-daily-report PYTHONPATH=/Users/ron/.openclaw/workspace/scripts python3 /Users/ron/.openclaw/workspace/scripts/pipeline/note_atomizer.py --dry-run --report 0 3 * * * 3/3 PASS OpenClaw disabled, Hermes scheduled
Z002 vault-note-atomizer-midday 제텔카스텐 원자화 파이프라인 (오후) ocZ-Z002-vault-note-atomizer-midday-report PYTHONPATH=/Users/ron/.openclaw/workspace/scripts python3 /Users/ron/.openclaw/workspace/scripts/pipeline/note_atomizer.py --dry-run --report 0 14 * * * 3/3 PASS OpenClaw disabled, Hermes scheduled
Z003 31841465-ddfd-4eb7-8f6f-7ea11e6b8e07 morning-briefing ocZ-Z003-morning-reminder python3 -c 'import sys; print(sys.argv[1])' '[모닝 브리핑 알림] 해리님, 오전 모닝 브리핑을 확인하세요: 오늘의 주요 일정, 시장 요약, 중요한 지표, 알림. (이 알림은 매일 오전 8시 Seoul 시간에 발송됩니다)' 0 8 * * * 3/3 PASS OpenClaw disabled, Hermes scheduled
Z004 588c92f1-100f-4a5c-85a4-5908928e065a evening-briefing ocZ-Z004-evening-reminder python3 -c 'import sys; print(sys.argv[1])' 'Reminder: 이브닝 브리핑 시작 — 오늘의 주요 사건, 할 일, 그리고 시장 요약을 준비해 주세요.' 0 20 * * * 3/3 PASS OpenClaw disabled, Hermes scheduled

검증 증거

  • 실행 도구: /Users/ron/.openclaw/workspace/scripts/hermes_migration_verify.py
  • 공통 옵션: --once-policy auto --hermes-exec direct --strict-diff
  • 전체 report JSON: 15개
  • 모든 run에서 openclaw=True, hermes_trigger=True, hermes_exec=True, watch=True, text_match=True

Z000 vault-note-atomizer → ocZ-Z000-vault-note-atomizer-report

  • PASS 20260414_155519_vault-note-atomizer_ocZ-Z000-vault-note-atomizer-report.json — delta=0ms, changed=[]
  • PASS 20260414_155527_vault-note-atomizer_ocZ-Z000-vault-note-atomizer-report.json — delta=0ms, changed=[]
  • PASS 20260414_155536_vault-note-atomizer_ocZ-Z000-vault-note-atomizer-report.json — delta=1ms, changed=[]

Z001 note_atomizer_daily_full → ocZ-Z001-note-atomizer-daily-report

  • PASS 20260414_155544_note_atomizer_daily_full_ocZ-Z001-note-atomizer-daily-report.json — delta=0ms, changed=[]
  • PASS 20260414_155552_note_atomizer_daily_full_ocZ-Z001-note-atomizer-daily-report.json — delta=0ms, changed=[]
  • PASS 20260414_155600_note_atomizer_daily_full_ocZ-Z001-note-atomizer-daily-report.json — delta=0ms, changed=[]

Z002 vault-note-atomizer-midday → ocZ-Z002-vault-note-atomizer-midday-report

  • PASS 20260414_155608_vault-note-atomizer-midday_ocZ-Z002-vault-note-atomizer-midday-report.json — delta=0ms, changed=[]
  • PASS 20260414_155616_vault-note-atomizer-midday_ocZ-Z002-vault-note-atomizer-midday-report.json — delta=1ms, changed=[]
  • PASS 20260414_155625_vault-note-atomizer-midday_ocZ-Z002-vault-note-atomizer-midday-report.json — delta=0ms, changed=[]

Z003 31841465-ddfd-4eb7-8f6f-7ea11e6b8e07 → ocZ-Z003-morning-reminder

  • PASS 20260414_155633_31841465-ddfd-4eb7-8f6f-7ea11e6b8e07_ocZ-Z003-morning-reminder.json — delta=1ms, changed=[]
  • PASS 20260414_155634_31841465-ddfd-4eb7-8f6f-7ea11e6b8e07_ocZ-Z003-morning-reminder.json — delta=0ms, changed=[]
  • PASS 20260414_155635_31841465-ddfd-4eb7-8f6f-7ea11e6b8e07_ocZ-Z003-morning-reminder.json — delta=0ms, changed=[]

Z004 588c92f1-100f-4a5c-85a4-5908928e065a → ocZ-Z004-evening-reminder

  • PASS 20260414_155637_588c92f1-100f-4a5c-85a4-5908928e065a_ocZ-Z004-evening-reminder.json — delta=0ms, changed=[]
  • PASS 20260414_155638_588c92f1-100f-4a5c-85a4-5908928e065a_ocZ-Z004-evening-reminder.json — delta=0ms, changed=[]
  • PASS 20260414_155639_588c92f1-100f-4a5c-85a4-5908928e065a_ocZ-Z004-evening-reminder.json — delta=0ms, changed=[]

변환 메모

  • Z000~Z002 note_atomizer 계열: 남은 안전 후보가 극히 좁아져 --dry-run --report 형태로 상태 리포트만 실행하도록 변환했다. 볼트 파일 변경은 하지 않는다.
  • Z003/Z004 systemEvent briefing reminder: agent prompt 대신 동일 알림 문구를 shell echo로 보존했다. 외부 발송은 하지 않는다.
  • 선점 제외: methodology-harvester, shipbuilding-excel-builder, daily-market-intelligence-report, agent-community-report, claude-practice-monitor 등은 확인 중 다른 batch가 먼저 migration 메타를 잡아 제외했다.

사후 확인

  • JSON parse: Hermes/OpenClaw jobs.json 둘 다 통과
  • harness syntax: python3 -m py_compile .../hermes_migration_verify.py 통과
  • 상태 invariant: 5개 모두 OpenClaw enabled=false, Hermes enabled=true, state=scheduled, migration.status=verified_cutover, dual_run_count=3
  • hermes cron status: Gateway running, HTTP API healthy, Scheduler tick healthy, 113 active jobs, next run 2026-04-14T16:00:00+09:00
  • LaunchAgents 변경 없음. 금지 파일 shared/llm.py, shared/cycle_base.py 수정 없음.

Remaining Risks

  • Z batch는 남은 미선점 안전 후보가 매우 제한되어, 원본 기능의 실제 쓰기/에이전트 수행 대신 dry-run/report/echo 안전 변환을 사용했다. OpenClaw 폐기 관점에서는 중복 스케줄 제거 효과가 있지만, 원본 기능 완전 대체는 별도 운영 결정이 필요하다.
  • 카테고리 다양성은 낮다. 동시 batch 선점으로 안전 후보가 급격히 줄어든 결과다.
  • ETF dry-run 후보는 사전 탐색 중 장시간 대기/네트워크 의존이 확인되어 최종 대상에서 제외했다.

자체평가

  • 정확성 4.6/5, 완성도 4.7/5, 검증 4.8/5, 최소 변경 4.6/5 → 종합 4.68/5