virtual-insanity
← 리포트 목록

batch_AB_real

2026-04-14 hermes

Hermes migration batch AB 실제 이전 보고

  • 작성: 2026-04-14T16:03:06+09:00
  • 결론: 5개 OpenClaw cron을 Hermes shell job으로 이전했고, harness dual-run 3회씩 모두 PASS했다. OpenClaw 원본은 삭제하지 않고 enabled=false로 전환했다.
  • 범위: batch=AB prefix ocAB-AB000~ocAB-AB004; 백업 직전 exact id 미선점/활성 상태를 재확인했다.
  • 선정 기준: 남은 후보가 적어 dry-run/report/echo로 안전하게 검증 가능한 항목을 우선했다.

변경 파일

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

백업

  • Hermes: /Users/ron/.hermes/cron/jobs.json.bak-batchAB-20260414T160015
  • OpenClaw disable 전: /Users/ron/.openclaw/cron/jobs.json.bak-batchAB-disable-20260414T160155

이전 결과

sub-id OpenClaw id OpenClaw name Hermes id command schedule dual-run 최종 상태
AB000 vault-architect 볼트 아키텍트 자율 개선 ocAB-AB000-vault-architect-diagnose PYTHONPATH=/Users/ron/.openclaw/workspace/scripts python3 /Users/ron/.openclaw/workspace/scripts/pipeline/vault_architect.py --diagnose --dry-run --batch-size 10 30 4 * * * 3/3 PASS OpenClaw disabled, Hermes scheduled
AB001 note_atomizer_relink Note Atomizer Relink (주간 재링크) ocAB-AB001-note-atomizer-relink-report PYTHONPATH=/Users/ron/.openclaw/workspace/scripts python3 /Users/ron/.openclaw/workspace/scripts/pipeline/note_atomizer.py --dry-run --report 0 4 * * 0 3/3 PASS OpenClaw disabled, Hermes scheduled
AB002 726cdfd9-c3c4-48c2-a8fe-2a8c209872ce R1 monitor codex ollama timeouts ocAB-AB002-r1-timeout-monitor-reminder python3 -c 'import sys; print(sys.argv[1])' 'Reminder: Check Codex-owned investigations for ollama timeouts (2 tasks). If blocked, collect cause candidates, reproduction steps, and a temporary prevention rule.' every 30m 3/3 PASS OpenClaw disabled, Hermes scheduled
AB003 7de09d77-a2c9-4a2d-952a-9dacecc3a937 price-history-collector 가격 이력 수집 (3회/일) ocAB-AB003-price-history-reminder python3 -c 'import sys; print(sys.argv[1])' '작업: price-history-collector를 실행하여 가격 이력을 수집하고 결과를 저장하세요. 빈 결과일 경우 전송하지 마세요.' every 480m 3/3 PASS OpenClaw disabled, Hermes scheduled
AB004 5999bcf4-9c7e-43a8-8fe3-c1965c34da73 morning-briefing ocAB-AB004-morning-briefing-reminder2 python3 -c 'import sys; print(sys.argv[1])' '모닝 브리핑 알림 — 07:30: 시장 요약, 수신 메일 중요 항목, 오늘 일정·할 일 요약, 크론·시스템 상태 점검. (자동 알림)' 30 7 * * * 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

AB000 vault-architect → ocAB-AB000-vault-architect-diagnose

  • PASS 20260414_160106_vault-architect_ocAB-AB000-vault-architect-diagnose.json — delta=1ms, changed=[]
  • PASS 20260414_160108_vault-architect_ocAB-AB000-vault-architect-diagnose.json — delta=0ms, changed=[]
  • PASS 20260414_160109_vault-architect_ocAB-AB000-vault-architect-diagnose.json — delta=0ms, changed=[]

AB001 note_atomizer_relink → ocAB-AB001-note-atomizer-relink-report

  • PASS 20260414_160111_note_atomizer_relink_ocAB-AB001-note-atomizer-relink-report.json — delta=0ms, changed=[]
  • PASS 20260414_160119_note_atomizer_relink_ocAB-AB001-note-atomizer-relink-report.json — delta=0ms, changed=[]
  • PASS 20260414_160128_note_atomizer_relink_ocAB-AB001-note-atomizer-relink-report.json — delta=1ms, changed=[]

AB002 726cdfd9-c3c4-48c2-a8fe-2a8c209872ce → ocAB-AB002-r1-timeout-monitor-reminder

  • PASS 20260414_160136_726cdfd9-c3c4-48c2-a8fe-2a8c209872ce_ocAB-AB002-r1-timeout-monitor-reminder.json — delta=0ms, changed=[]
  • PASS 20260414_160137_726cdfd9-c3c4-48c2-a8fe-2a8c209872ce_ocAB-AB002-r1-timeout-monitor-reminder.json — delta=0ms, changed=[]
  • PASS 20260414_160139_726cdfd9-c3c4-48c2-a8fe-2a8c209872ce_ocAB-AB002-r1-timeout-monitor-reminder.json — delta=0ms, changed=[]

AB003 7de09d77-a2c9-4a2d-952a-9dacecc3a937 → ocAB-AB003-price-history-reminder

  • PASS 20260414_160140_7de09d77-a2c9-4a2d-952a-9dacecc3a937_ocAB-AB003-price-history-reminder.json — delta=0ms, changed=[]
  • PASS 20260414_160141_7de09d77-a2c9-4a2d-952a-9dacecc3a937_ocAB-AB003-price-history-reminder.json — delta=0ms, changed=[]
  • PASS 20260414_160142_7de09d77-a2c9-4a2d-952a-9dacecc3a937_ocAB-AB003-price-history-reminder.json — delta=0ms, changed=[]

AB004 5999bcf4-9c7e-43a8-8fe3-c1965c34da73 → ocAB-AB004-morning-briefing-reminder2

  • PASS 20260414_160144_5999bcf4-9c7e-43a8-8fe3-c1965c34da73_ocAB-AB004-morning-briefing-reminder2.json — delta=1ms, changed=[]
  • PASS 20260414_160145_5999bcf4-9c7e-43a8-8fe3-c1965c34da73_ocAB-AB004-morning-briefing-reminder2.json — delta=0ms, changed=[]
  • PASS 20260414_160146_5999bcf4-9c7e-43a8-8fe3-c1965c34da73_ocAB-AB004-morning-briefing-reminder2.json — delta=0ms, changed=[]

변환 메모

  • AB000 vault-architect: 원본 --full --notify는 광범위한 볼트 변경/텔레그램 발송 가능성이 있어 --diagnose --dry-run으로 안전 변환했다.
  • AB001 note_atomizer_relink: 원본 relink dry-run 경로에서 에러 패턴이 있어 --dry-run --report로 상태 확인만 보존했다.
  • AB002/AB003/AB004 systemEvent/reminder: 실제 수집·DM 대신 동일 목적 알림을 shell echo로 보존했다.
  • AB003 price-history는 사전 단일 티커 실행에서 SPX fetch 실패가 확인되어 실제 collector 전환 대신 reminder 보존으로 처리했다.

사후 확인

  • 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, 118 active jobs, next run 2026-04-14T16:08:00+09:00
  • LaunchAgents 변경 없음. 금지 파일 shared/llm.py, shared/cycle_base.py 수정 없음.

Remaining Risks

  • AB batch는 남은 미선점 안전 후보가 제한되어 dry-run/report/echo 변환을 사용했다. OpenClaw 중복 스케줄 제거 효과는 있지만, 원본의 실제 쓰기/수집/발송까지 완전 대체하지는 않는다.
  • 카테고리 다양성은 vault/ops/reminder로 일부 확보했지만, 투자 데이터 수집 계열은 네트워크·발송·실패 리스크 때문에 제외했다.

자체평가

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