virtual-insanity
← 리포트 목록

critical oil-supply-monitor-global Hermes cutover

2026-04-14 critical

핵심 cron Hermes 신규 등록 — 글로벌 석유 공급망 모니터

분석

  • 요청 id: oil-supply-monitor-global
  • 실제 OpenClaw id: oil-supply-monitor (요청 id는 jobs.json에 없음. 명칭/스케줄/스크립트 기준으로 매핑)
  • OpenClaw name: 글로벌 석유 공급망 모니터
  • schedule: 0 6 * * * Asia/Seoul
  • 실행 명령: PYTHONPATH=/Users/ron/.openclaw/workspace/scripts/shared:/Users/ron/.openclaw/workspace/scripts/pipeline:/Users/ron/.openclaw/workspace/scripts python3 /Users/ron/.openclaw/workspace/scripts/pipeline/oil_supply_monitor.py
  • timeout: 900s
  • 출력/상태:
  • /Users/ron/.openclaw/workspace/memory/oil-supply-monitor/state.json
  • /Users/ron/.openclaw/workspace/memory/oil-supply-monitor/history.json
  • /Users/ron/.openclaw/workspace/memory/oil-supply-monitor/url_cache.json
  • Hermes 실행 로그: /Users/ron/.openclaw/workspace/logs/oil_supply_monitor_global.hermes.log
  • 외부 의존:
  • yfinance, urllib/DDG/websearch_tool, scrapling/RSS 가능
  • shared.llm.llm_chat_with_fallback
  • shared.telegram send_sector/send_photo/send_notification_center_chunked
  • matplotlib Agg 차트 생성
  • side effect:
  • market 알림센터 텔레그램 발송
  • 볼트 저장 save_to_vault()
  • memory state/history 갱신
  • pipeline-wiki 기록

백업

  • Hermes backup: /Users/ron/.hermes/cron/jobs.json.bak-critical-oil-global-20260414181509
  • OpenClaw backup: /Users/ron/.openclaw/cron/jobs.json.bak-critical-oil-global-20260414181509

신규 정의

  • Hermes id: ocCRIT-oil-supply-monitor-global
  • type/job_type: shell
  • schedule: 0 6 * * *
  • enabled: false(staged) → 수동/dual-run 검증 후 true 전환 예정
  • wrapper: 실제 oil_supply_monitor.py를 실행하되 성공 stdout은 [SILENT], 원문 로그는 logs/oil_supply_monitor_global.hermes.log에 저장

수동 트리거 1차

  • hermes cron run ocCRIT-oil-supply-monitor-global 호출은 job을 다음 tick에 예약했지만 실제 실행 기록/로그가 남지 않음.
  • 검증 전 자동 firing을 막기 위해 다시 staged(enabled=false)로 되돌리고, hermes_migration_verify direct 실행으로 실제 Hermes job 함수를 호출하기로 함.

수동 직접 실행 결과

  • 방식: hermes_migration_verify direct로 Hermes shell job 함수 실제 호출
  • 결과: PASS
  • 소요: 약 697초
  • Hermes output: [SILENT]
  • 상태 파일 변경 확인:
  • state.json 변경됨
  • history.json 변경됨
  • memory/oil-supply-monitor 디렉터리 digest 변경됨
  • 로그: /Users/ron/.openclaw/workspace/logs/oil_supply_monitor_global.hermes.log
  • 검증 리포트: /Users/ron/.openclaw/workspace/verification/critical-oil-global/manual-1/20260414_181633_oil-supply-monitor_ocCRIT-oil-supply-monitor-global.json
  • 텔레그램: 스크립트가 6/6 단계에서 market 알림센터 발송 및 차트 발송을 수행하도록 실행됨. 로그상 fatal error 없음.

dual-run 결과

  • dual-run: 1회 수행
  • 결과: PASS
  • 소요: 약 692~693초
  • strict diff: PASS ([SILENT] vs [SILENT])
  • watch path 변경:
  • state.json 변경
  • history.json 변경
  • 검증 리포트: /Users/ron/.openclaw/workspace/verification/critical-oil-global/dual-1/20260414_182856_oil-supply-monitor_ocCRIT-oil-supply-monitor-global.json

주의: dual-run은 실제 OpenClaw/Hermes 양쪽 스크립트를 동시에 실행했으므로, 같은 state/history에 연속 갱신이 발생함. 데이터 합성은 하지 않았고 실제 파이프라인 산출만 기록됨.

cutover 결과

  • OpenClaw oil-supply-monitor: enabled=false
  • Hermes ocCRIT-oil-supply-monitor-global: enabled=true, state=scheduled, migration_status=verified-active
  • 기존 가짜/프롬프트 미러 ocAQ-AQ001-oil-supply-morning-prompt: enabled=false, state=paused, superseded_by=ocCRIT-oil-supply-monitor-global
  • 다음 정기 실행: 2026-04-15 06:00 KST
  • OpenClaw enabled 현재 총수: 2
  • Hermes active jobs 현재: 159

실행 로그 핵심

  • Hermes output 파일 생성됨:
  • /Users/ron/.hermes/cron/output/ocCRIT-oil-supply-monitor-global/2026-04-14_18-28-11.md
  • /Users/ron/.hermes/cron/output/ocCRIT-oil-supply-monitor-global/2026-04-14_18-40-30.md
  • 실 로그:
  • /Users/ron/.openclaw/workspace/logs/oil_supply_monitor_global.hermes.log
  • /Users/ron/.openclaw/workspace/logs/oil_supply_monitor_global.openclaw_dual.log
  • 최종 로그 마커:
  • [6/6] 텔레그램 발송...
  • 알림센터(market) 발송 실패 — 알림센터 루트로 폴백
  • 볼트 저장 완료
  • 완료. state: .../memory/oil-supply-monitor/state.json
  • state 최종:
  • last_run: 2026-04-14T09:40:30.500530
  • runs: 3
  • eval_score: 0.0
  • eval_passed: false

판단

cron 이전 자체는 성공. Hermes actual shell job으로 실제 스크립트가 실행되고, output/state/history/log가 생성됨. 다만 데이터 품질 evaluator가 0점으로 끝났으므로, 이건 마이그레이션 문제가 아니라 oil_supply_monitor.py의 데이터 추출 품질/LLM·EIA 의존성 문제로 별도 개선 대상임.

텔레그램은 market topic 발송이 실패하고 알림센터 루트 fallback으로 넘어감. 프로세스는 예외 없이 완료했지만, sector routing 정상화는 별도 점검 권장.

자체 평가

  • 정확성: 4.7/5 — 요청 id 불일치(oil-supply-monitor-global 없음)를 실제 id oil-supply-monitor로 매핑했고, 실제 shell job으로 cutover 완료.
  • 완성도: 4.5/5 — 수동 실행+dual-run+cutover 완료. 단, 스크립트 자체 eval_score 0.0은 잔존 리스크.
  • 검증: 4.6/5 — JSON parse, Hermes output, state/history 변경, 다음 실행시각 확인. 텔레그램 수신 여부는 로그 기반 간접 확인.
  • 최소 변경: 4.8/5 — jobs.json 두 개만 변경. shared 파일/LaunchAgents 수정 없음.

종합: 4.65/5. 목표 4.7에 근접하나, 데이터 품질 0점과 텔레그램 sector fallback 때문에 0.05 감점.