daily-context-snapshot 이관 결정 — Hermes 복구 후 1주 dual-run
결정
유지 + Hermes 복구 + 1주 dual-run.
OpenClaw를 바로 죽이지 않았다. 이유는 Hermes 동등 파일이 존재했지만 2026-04-15 버전으로 stale했고, OpenClaw 쪽만 2026-04-24 v2 스냅샷/세션로그를 정상 생성하고 있었기 때문이다.
이번 조치:
- Hermes script를 OpenClaw 최신 v2 script로 갱신
- Hermes memory 경로로 쓰도록 WORKSPACE = ~/.hermes/workspace 보정
- Hermes jobs.json에 daily-context-snapshot active 등록
- OpenClaw jobs.json은 enabled=true 유지 — 1주 dual-run 비교 후 사망 판단
1) 상태 점검
| 항목 | OpenClaw | Hermes |
|---|---|---|
| job | daily-context-snapshot active |
기존 동등 job 없음/또는 stale copy만 존재 |
| script | ~/.openclaw/workspace/scripts/pipeline/daily_context_snapshot.py |
~/.hermes/workspace/scripts/pipeline/daily_context_snapshot.py |
| script mtime | 2026-04-24 09:33 | 2026-04-15 13:38 → 이번에 갱신 |
| latest.json | 2026-04-24T13:08:43, schema v2 | 2026-04-15T00:00:51, schema v1 → 이번에 2026-04-24T14:11:49 v2 |
| 출력 | ~/.openclaw/workspace/memory/daily-context-snapshot/latest.json |
~/.hermes/workspace/memory/daily-context-snapshot/latest.json |
2) 원인
Hermes 쪽은 스크립트와 산출물이 04-15에서 멈춰 있었다. OpenClaw 쪽은 surface:9 복구본으로 v2 스키마와 세션로그 생성 기능이 추가되어 실제 본체 역할을 하고 있었다.
따라서 “OpenClaw 본체이고 Hermes stale” 케이스로 판정했다.
3) 실행 조치
백업
/Users/ron/.hermes/workspace/scripts/pipeline/daily_context_snapshot.py.bak-before-refresh-20260424T141149/Users/ron/.hermes/cron/jobs.json.bak-daily-context-refresh-20260424T141149
스크립트 갱신
cp ~/.openclaw/workspace/scripts/pipeline/daily_context_snapshot.py \
~/.hermes/workspace/scripts/pipeline/daily_context_snapshot.py
보정:
WORKSPACE = HOME / ".hermes" / "workspace"
SESSION_STATE는 phase1 동안 OpenClaw listener state가 source-of-truth라 ~/.openclaw/logs/session_state.json을 유지했다.
Hermes job 등록
{
"id": "daily-context-snapshot",
"enabled": true,
"state": "scheduled",
"schedule": {"kind": "cron", "expr": "0 9,22 * * *", "tz": "Asia/Seoul"},
"next_run_at": "2026-04-24T22:00:00+09:00",
"command": "cd /Users/ron/.hermes/workspace && PYTHONPATH=/Users/ron/.hermes/workspace/scripts:/Users/ron/.hermes/workspace/scripts/shared:/Users/ron/.hermes/workspace/scripts/pipeline /usr/bin/python3 /Users/ron/.hermes/workspace/scripts/pipeline/daily_context_snapshot.py"
}
OpenClaw job은 유지:
~/.openclaw/cron/jobs.json: daily-context-snapshot enabled=true
4) 검증
python3 -m py_compile ~/.hermes/workspace/scripts/pipeline/daily_context_snapshot.py
python3 -m json.tool ~/.hermes/cron/jobs.json
cd ~/.hermes/workspace && PYTHONPATH=... /usr/bin/python3 scripts/pipeline/daily_context_snapshot.py
실행 출력:
{
"ok": true,
"json": "/Users/ron/.hermes/workspace/memory/daily-context-snapshot/2026-04-24.json",
"latest": "/Users/ron/.hermes/workspace/memory/daily-context-snapshot/latest.json",
"report": "/Users/ron/knowledge-agent/400-reports/260424_pipeline_daily-context-snapshot.md",
"session_log": "/Users/ron/knowledge/800 운영/850 실행/세션로그/260424_session.md",
"context_log": "/Users/ron/knowledge/800 운영/850 실행/세션로그/context_20260424_1411.md",
"enabled_stale_over_24h": 22
}
latest 비교:
| 경로 | schema | generated_at | cron total/enabled |
|---|---|---|---|
| OpenClaw latest | v2 | 2026-04-24T13:08:43+09:00 | 371 / 75 |
| Hermes latest | v2 | 2026-04-24T14:11:49+09:00 | 376 / 77 |
Hermes CLI:
daily-context-snapshot [active]
Schedule: 0 9,22 * * *
Next run: 2026-04-24T22:00:00+09:00
5) 다음 판단 기준
1주 dual-run 동안 비교:
- ~/.openclaw/workspace/memory/daily-context-snapshot/latest.json
- ~/.hermes/workspace/memory/daily-context-snapshot/latest.json
사망 조건:
- 7일 동안 Hermes가 09:00/22:00에 정상 생성
- schema v2 유지
- cron.total/enabled, enabled_stale_over_24h, session log 생성이 OpenClaw와 의미상 동등
조건 충족 시 OpenClaw daily-context-snapshot disabled.
자체평가
- 정확성: 4.4/5 — stale 원인과 산출물 mtime/schema를 실측했다.
- 완성도: 4.3/5 — Hermes 복구, job 등록, 수동 실행, next_run 확인 완료.
- 검증: 4.4/5 — py_compile, JSON validation, actual run, latest 비교, Hermes CLI 확인.
- 최소 변경: 4.5/5 — OpenClaw는 유지하고 Hermes만 복구해 1주 dual-run으로 안전 확보.
DONE