핵심 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없음)를 실제 idoil-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 감점.