Hermes migration batch N — real cutover
- 기준 시각: 2026-04-14 15:20 KST
- 결과: 5개 OpenClaw cron을 Hermes shell-job으로 이전 완료
- 검증:
hermes_migration_verify.pydual-run 3회,--hermes-exec direct,--strict-diff, 각 회차 PASS - 최종 상태: 성공 5개는 OpenClaw
enabled=false, Hermesenabled=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→ Hermesinterval 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-healerocN-N001-session-skill-cleanupocN-N002-chroma-recycleocN-N003-notion-analyst-syncocN-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 run2026-04-14T15:20:00+09:00hermes_migration_verify.pypy_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의 namedtechnical-data-collector와 같은 스크립트를 쓰지만, OpenClaw에는 UUID 기반 2시간 systemEvent가 별도 active로 남아 있어 별도 이전했다. Hermes 쪽 중복 실행 목적이 맞는지는 다음 cleanup batch에서 전체 duplicate 스케줄 관점으로 다시 정리하는 것이 좋다.