virtual-insanity
← 리포트 목록

batch_N_real

2026-04-14 hermes

Hermes migration batch N — real cutover

  • 기준 시각: 2026-04-14 15:20 KST
  • 결과: 5개 OpenClaw cron을 Hermes shell-job으로 이전 완료
  • 검증: hermes_migration_verify.py dual-run 3회, --hermes-exec direct, --strict-diff, 각 회차 PASS
  • 최종 상태: 성공 5개는 OpenClaw enabled=false, Hermes enabled=true/state=scheduled/status=verified_cutover

백업

  • Hermes 백업: /Users/ron/.hermes/cron/jobs.json.bak-batchN-20260414T151620
  • OpenClaw disable 전 백업: /Users/ron/.openclaw/cron/jobs.json.bak-batchN-disable-20260414T151827

중복 회피

  • 작업 시작 후 batch I~M 선점 상태를 다시 읽었다.
  • cost-monitor-daily, indicator-extractor, media_enricher, sector-research-daily, vault-flow-health, analyst-quality-tracker 등은 I~M/K/L/M/J가 선점 또는 이전 중인 것이 확인되어 batch N 후보에서 제외했다.
  • batch N 최종 5개는 cutover 직전 active 중복 migration이 없음을 확인했다.

이전 완료 5개

1) pipeline-self-healer → ocN-N000-self-healer

  • 스케줄: 0 * * * *
  • 명령: cd /Users/ron/.openclaw/workspace && PYTHONPATH=scripts python3 scripts/pipeline/pipeline_self_healer.py
  • 선정 사유: 현재 fixes=0 사전 확인, 실행 시 “수정 없음” 경로라 안전
  • dual-run 3회: PASS
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchN/20260414_151705_pipeline-self-healer_ocN-N000-self-healer.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchN/20260414_151706_pipeline-self-healer_ocN-N000-self-healer.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchN/20260414_151708_pipeline-self-healer_ocN-N000-self-healer.json
  • 최종: OpenClaw disabled / Hermes scheduled

2) session-skill-extractor → ocN-N001-session-skill-cleanup

  • 스케줄: 30 4 * * *
  • 명령: cd /Users/ron/.openclaw/workspace && PYTHONPATH=/Users/ron/.openclaw/workspace/scripts/shared:/Users/ron/.openclaw/workspace/scripts/pipeline python3 scripts/pipeline/session_skill_extractor.py --cleanup
  • 선정 사유: --cleanup 경로만 실행, 삭제 대상 old processed checkpoint 0건 확인
  • dual-run 3회: PASS
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchN/20260414_151739_session-skill-extractor_ocN-N001-session-skill-cleanup.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchN/20260414_151740_session-skill-extractor_ocN-N001-session-skill-cleanup.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchN/20260414_151741_session-skill-extractor_ocN-N001-session-skill-cleanup.json
  • 비고: 최초 1회는 output_hint가 없는 로그 파일을 가리켜 watch만 실패했다. output_hint 제거 후 3회 재검증 PASS.
  • 최종: OpenClaw disabled / Hermes scheduled

3) chroma-mcp-recycle → ocN-N002-chroma-recycle

  • 스케줄: 0 */6 * * *
  • 명령: python3 /Users/ron/.openclaw/workspace/scripts/monitoring/restart_chroma_mcp.py
  • 산출물 힌트: /Users/ron/.openclaw/logs/chroma_restart.log
  • 선정 사유: 사전 dry-run에서 chroma-mcp process 없음 → 실제 실행도 skip 경로
  • dual-run 3회: PASS
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchN/20260414_151747_chroma-mcp-recycle_ocN-N002-chroma-recycle.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchN/20260414_151748_chroma-mcp-recycle_ocN-N002-chroma-recycle.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchN/20260414_151750_chroma-mcp-recycle_ocN-N002-chroma-recycle.json
  • 최종: OpenClaw disabled / Hermes scheduled

4) notion-analyst-sync → ocN-N003-notion-analyst-sync

  • 스케줄: 20 8 * * 1-5
  • 명령: python3 /Users/ron/.openclaw/workspace/scripts/pipeline/notion_analyst_sync.py
  • 선정 사유: no telegram, 현재 상태는 “에이전트 리서치 로그 DB 없음”으로 0개 동기화 경로
  • dual-run 3회: PASS
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchN/20260414_151759_notion-analyst-sync_ocN-N003-notion-analyst-sync.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchN/20260414_151800_notion-analyst-sync_ocN-N003-notion-analyst-sync.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchN/20260414_151801_notion-analyst-sync_ocN-N003-notion-analyst-sync.json
  • 최종: OpenClaw disabled / Hermes scheduled

5) 564d049b-bf08-4c2d-b8b8-f93bda415ad5 → ocN-N004-tech-data-uuid

  • OpenClaw 이름: technical-data-collector 기술적 지표 수집 (2시간 주기)
  • 스케줄 변환: OpenClaw everyMs=7200000 → Hermes interval minutes=120
  • 명령: cd /Users/ron/.openclaw/workspace && PYTHONPATH=/Users/ron/.openclaw/workspace/scripts/shared:/Users/ron/.openclaw/workspace/scripts/pipeline python3 scripts/pipeline/technical_data_collector.py
  • 산출물 힌트: /Users/ron/.openclaw/workspace/memory/technical-signals/latest.json
  • 선정 사유: named technical-data-collector는 batch H에서 이전됐지만, UUID 기반 duplicate OpenClaw systemEvent가 별도로 active 상태라 폐기 대상에서 제외하지 않고 별도 cron으로 이전
  • dual-run 3회: PASS
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchN/20260414_151808_564d049b-bf08-4c2d-b8b8-f93bda415ad5_ocN-N004-tech-data-uuid.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchN/20260414_151810_564d049b-bf08-4c2d-b8b8-f93bda415ad5_ocN-N004-tech-data-uuid.json
  • /Users/ron/.openclaw/workspace/verification/hermes-migration/batchN/20260414_151812_564d049b-bf08-4c2d-b8b8-f93bda415ad5_ocN-N004-tech-data-uuid.json
  • 최종: OpenClaw disabled / Hermes scheduled

최종 검증

  • ~/.hermes/cron/jobs.json: JSON OK
  • ~/.openclaw/cron/jobs.json: JSON OK
  • H/N/I~M 동시 진행 중 batch N active verified_cutover: 5개
  • ocN-N000-self-healer
  • ocN-N001-session-skill-cleanup
  • ocN-N002-chroma-recycle
  • ocN-N003-notion-analyst-sync
  • ocN-N004-tech-data-uuid
  • 각 성공 항목의 OpenClaw 원본: enabled=false
  • 각 성공 항목의 Hermes 대응 job: enabled=true, state=scheduled, migration.status=verified_cutover
  • 성공 항목 active 중복 migration: 없음
  • hermes cron status: Gateway running, HTTP API healthy, Scheduler tick healthy, active jobs 57개, next run 2026-04-14T15:20:00+09:00
  • hermes_migration_verify.py py_compile OK

변경 파일

  • /Users/ron/.hermes/cron/jobs.json
  • /Users/ron/.openclaw/cron/jobs.json
  • /Users/ron/knowledge-agent/400-reports/260414_hermes_batch_N_real.md

금지 파일 shared/llm.py, shared/cycle_base.py는 수정하지 않음. LaunchAgents/Gateway pid 63520도 건드리지 않음.

Remaining Risks

  • 안전 후보가 I~M batch에 빠르게 선점되어 N에서 고를 수 있는 no-send/idempotent 후보가 적었다.
  • ocN-N004-tech-data-uuid는 batch H의 named technical-data-collector와 같은 스크립트를 쓰지만, OpenClaw에는 UUID 기반 2시간 systemEvent가 별도 active로 남아 있어 별도 이전했다. Hermes 쪽 중복 실행 목적이 맞는지는 다음 cleanup batch에서 전체 duplicate 스케줄 관점으로 다시 정리하는 것이 좋다.