Hermes migration batch T 실제 이전 보고
- 작성: 2026-04-14T15:38:51+09:00
- 결론: 5개 OpenClaw cron을 Hermes shell job으로 이전했고, harness dual-run 3회씩 모두 PASS했다. OpenClaw 원본은 삭제하지 않고
enabled=false로 전환했다. - 범위: batch=T prefix
ocT-T000~ocT-T004; 기존 batch와 겹치지 않는 exact OpenClaw id만 사용했다. - 선정 기준: 남은 미선점 후보 중 5분 이내 실행, 결과 파일이 있는 작업, strict diff가 가능한 작업을 우선했다.
변경 파일
/Users/ron/.hermes/cron/jobs.json: ocT 5개 shell job 추가 및verified_cutover기록/Users/ron/.openclaw/cron/jobs.json: 대상 5개enabled=false, migration 메타 기록/Users/ron/knowledge-agent/400-reports/260414_hermes_batch_T_real.md: 이 보고서
백업
- Hermes:
/Users/ron/.hermes/cron/jobs.json.bak-batchT-20260414T153532 - OpenClaw disable 전:
/Users/ron/.openclaw/cron/jobs.json.bak-batchT-disable-20260414T153731
이전 결과
| sub-id | OpenClaw id | OpenClaw name | Hermes id | command | schedule | dual-run | 최종 상태 |
|---|---|---|---|---|---|---|---|
| T000 | f6767371-becd-48ad-a030-bedb5c1a68de |
technical-stat-models | ocT-T000-tech-stat-uuid5 |
python3 /Users/ron/.openclaw/workspace/scripts/pipeline/technical_stat_models.py |
every 120m |
3/3 PASS | OpenClaw disabled, Hermes scheduled |
| T001 | d48e651d-0475-4faf-a44c-3a50d85471b3 |
technical-stat-models 기술통계모델 (2시간 주기) | ocT-T001-tech-stat-uuid6 |
python3 /Users/ron/.openclaw/workspace/scripts/pipeline/technical_stat_models.py |
every 120m |
3/3 PASS | OpenClaw disabled, Hermes scheduled |
| T002 | 62f60664-1ec1-4b79-be24-549f4898d26e |
technical-stat-models / 기술통계모델 | ocT-T002-tech-stat-uuid7 |
python3 /Users/ron/.openclaw/workspace/scripts/pipeline/technical_stat_models.py |
every 120m |
3/3 PASS | OpenClaw disabled, Hermes scheduled |
| T003 | 528c0c4f-9806-4d7a-9a71-b3ed746e94f1 |
technical-stat-models 기술통계모델 (2시간 주기) | ocT-T003-tech-stat-uuid8 |
python3 /Users/ron/.openclaw/workspace/scripts/pipeline/technical_stat_models.py |
every 120m |
3/3 PASS | OpenClaw disabled, Hermes scheduled |
| T004 | vault-lint-advanced-weekly |
Vault Lint Advanced 주간 점검 | ocT-T004-vault-lint-advanced |
python3 /Users/ron/.openclaw/workspace/scripts/pipeline/vault_lint_advanced.py --no-telegram --no-llm |
0 5 * * 0 |
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 - report grep 기준
[ALERT],텔레그램 발송,텔레그램 그룹 전송 완료,DM 전송 완료문구 없음
T000 f6767371-becd-48ad-a030-bedb5c1a68de → ocT-T000-tech-stat-uuid5
- PASS
20260414_153617_f6767371-becd-48ad-a030-bedb5c1a68de_ocT-T000-tech-stat-uuid5.json— delta=1ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json'] - PASS
20260414_153618_f6767371-becd-48ad-a030-bedb5c1a68de_ocT-T000-tech-stat-uuid5.json— delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json'] - PASS
20260414_153619_f6767371-becd-48ad-a030-bedb5c1a68de_ocT-T000-tech-stat-uuid5.json— delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']
T001 d48e651d-0475-4faf-a44c-3a50d85471b3 → ocT-T001-tech-stat-uuid6
- PASS
20260414_153621_d48e651d-0475-4faf-a44c-3a50d85471b3_ocT-T001-tech-stat-uuid6.json— delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json'] - PASS
20260414_153622_d48e651d-0475-4faf-a44c-3a50d85471b3_ocT-T001-tech-stat-uuid6.json— delta=1ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json'] - PASS
20260414_153623_d48e651d-0475-4faf-a44c-3a50d85471b3_ocT-T001-tech-stat-uuid6.json— delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']
T002 62f60664-1ec1-4b79-be24-549f4898d26e → ocT-T002-tech-stat-uuid7
- PASS
20260414_153625_62f60664-1ec1-4b79-be24-549f4898d26e_ocT-T002-tech-stat-uuid7.json— delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json'] - PASS
20260414_153626_62f60664-1ec1-4b79-be24-549f4898d26e_ocT-T002-tech-stat-uuid7.json— delta=1ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json'] - PASS
20260414_153627_62f60664-1ec1-4b79-be24-549f4898d26e_ocT-T002-tech-stat-uuid7.json— delta=1ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']
T003 528c0c4f-9806-4d7a-9a71-b3ed746e94f1 → ocT-T003-tech-stat-uuid8
- PASS
20260414_153629_528c0c4f-9806-4d7a-9a71-b3ed746e94f1_ocT-T003-tech-stat-uuid8.json— delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json'] - PASS
20260414_153630_528c0c4f-9806-4d7a-9a71-b3ed746e94f1_ocT-T003-tech-stat-uuid8.json— delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json'] - PASS
20260414_153631_528c0c4f-9806-4d7a-9a71-b3ed746e94f1_ocT-T003-tech-stat-uuid8.json— delta=1ms, changed=['/Users/ron/.openclaw/workspace/memory/technical-signals/latest.json']
T004 vault-lint-advanced-weekly → ocT-T004-vault-lint-advanced
- PASS
20260414_153632_vault-lint-advanced-weekly_ocT-T004-vault-lint-advanced.json— delta=1ms, changed=['/Users/ron/.openclaw/workspace/memory/vault-lint-advanced/latest.json'] - PASS
20260414_153648_vault-lint-advanced-weekly_ocT-T004-vault-lint-advanced.json— delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/vault-lint-advanced/latest.json'] - PASS
20260414_153705_vault-lint-advanced-weekly_ocT-T004-vault-lint-advanced.json— delta=0ms, changed=['/Users/ron/.openclaw/workspace/memory/vault-lint-advanced/latest.json']
변환 메모
- T000~T003: 남아 있던
technical-stat-modelsUUID systemEvent 중복 4개를 기존 검증된 shell command로 정규화했다. - T004:
vault_lint_advanced.py는 원본이 텔레그램/LLM 경로를 포함하므로 Hermes 전환 command에--no-telegram --no-llm을 붙여 발송/LLM side effect를 제거했다. 리포트와 latest.json 생성은 유지했다.
사후 확인
- JSON parse: Hermes/OpenClaw jobs.json 둘 다 통과
- harness syntax:
python3 -m py_compile .../hermes_migration_verify.py통과 - 상태 invariant: 5개 모두 OpenClaw
enabled=false, Hermesenabled=true,state=scheduled,migration.status=verified_cutover,dual_run_count=3 hermes cron status: Gateway running, HTTP API healthy, Scheduler tick healthy, 82 active jobs, next run2026-04-14T15:40:00+09:00- LaunchAgents 변경 없음. 금지 파일
shared/llm.py,shared/cycle_base.py수정 없음.
Remaining Risks
- batch T도 안전성 때문에 technical-stat 중복 제거 비중이 높다. 카테고리 다양성은 T004로 일부 보완했지만 완전하지 않다.
- T004는 원본 OpenClaw command의 텔레그램/LLM 경로를 제거한 안전 변환이다. 운영 의도가 “알림까지 포함한 원본 완전 동일 실행”이라면 별도 정책 결정이 필요하다.
자체평가
- 정확성 4.7/5, 완성도 4.7/5, 검증 4.8/5, 최소 변경 4.7/5 → 종합 4.73/5