260414 Hermes batch F 실제 이전 보고서
- 시작: 2026-04-14T14:51:25+09:00
- Hermes 백업:
/Users/ron/.hermes/cron/jobs.json.bak-batchF-20260414145125 - OpenClaw 백업:
/Users/ron/.openclaw/cron/jobs.json.bak-batchF-20260414145125 - Gateway/LaunchAgents 변경: 없음
- 주의: 동시 batch D/E/G/H가 먼저 선점한 후보를 제외하고, 마지막 read 시점 기준 미선점 5개를 batch F prefix로 등록.
후보 및 변환
| OpenClaw | Hermes | cron | timeout | 최근 duration | output_hint | 선정 근거 |
|---|---|---|---|---|---|---|
research_intelligence_aggregator |
hF-research-intel |
10 2 * * * |
60s | 14.3s | /Users/ron/.openclaw/workspace/memory/research-intelligence/latest.json |
볼트 frontmatter 산술 집계, no LLM, 변화시에만 알림 |
technical-stat-models |
hF-tech-stat |
35 */2 * * 1-5 |
600s | 18.8s | /Users/ron/.openclaw/workspace/memory/technical-signals/latest.json |
로컬 가격이력 기반 통계 산출, dry-run상 alert 없음 |
methodology-updater |
hF-methodology-updater |
5 7 * * 1-5 |
300s | 9.4s | /Users/ron/knowledge/400 판단/420 투자판단/425 방법론 |
dry-run상 patterns=0 no-op, no LLM |
moat-scorer |
hF-moat-scorer |
0 7 * * 1 |
300s | 8.2s | /Users/ron/.openclaw/workspace/memory/moat-scores |
Moat 정량 스코어, status상 현재 결과 없음 |
quant-performance-tracker |
hF-quant-perf |
5 9 * * 1-5 |
1800s | 7.2s | /Users/ron/.openclaw/workspace/memory/quant-performance |
dry-run상 검증 0건, local file 기반 |
변환 command
hF-research-intel←research_intelligence_aggregator:PYTHONPATH=/Users/ron/.openclaw/workspace/scripts python3 /Users/ron/.openclaw/workspace/scripts/pipeline/research_intelligence_aggregator.pyhF-tech-stat←technical-stat-models:python3 /Users/ron/.openclaw/workspace/scripts/pipeline/technical_stat_models.pyhF-methodology-updater←methodology-updater:PYTHONPATH=/Users/ron/.openclaw/workspace/scripts/shared:/Users/ron/.openclaw/workspace/scripts/pipeline python3 /Users/ron/.openclaw/workspace/scripts/pipeline/methodology_updater.pyhF-moat-scorer←moat-scorer:PYTHONPATH=/Users/ron/.openclaw/workspace/scripts/shared:/Users/ron/.openclaw/workspace/scripts/pipeline python3 /Users/ron/.openclaw/workspace/scripts/pipeline/moat_scorer.pyhF-quant-perf←quant-performance-tracker:python3 /Users/ron/.openclaw/workspace/scripts/pipeline/quant_performance_tracker.py
dual-run 결과
research_intelligence_aggregator → hF-research-intel
| cycle | verdict | reasons | duration | report |
|---|---|---|---|---|
| 1 | FAIL | openclaw_failed,hermes_exec_failed,watch_path_missing,strict_diff_mismatch |
1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real/hF-research-intel/cycle-1/20260414_145209_research_intelligence_aggregator_hF-research-intel.json |
최종: FAIL
실패 tail:
: false,
"kind": null,
"size": null,
"mtime_ns": null,
"sha256": null,
"file_count": null,
"total_size": null,
"digest": null,
"sample_files": []
}
],
"watched_changed": [],
"verdict": {
"ok": false,
"openclaw_ok": false,
"hermes_trigger_ok": true,
"hermes_exec_ok": false,
"watch_ok": false,
"text_match": false,
"strict_diff": true,
"trigger_delta_ms": 0,
"changed_watch_paths": [],
"reasons": [
"openclaw_failed",
"hermes_exec_failed",
"watch_path_missing",
"strict_diff_mismatch"
]
},
"report_path": "/Users/ron/.openclaw/workspace/verification/hermes-batch-F-real/hF-research-intel/cycle-1/20260414_145209_research_intelligence_aggregator_hF-research-intel.json"
}
technical-stat-models → hF-tech-stat
| cycle | verdict | reasons | duration | report |
|---|---|---|---|---|
| 1 | PASS | `` | 1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real/hF-tech-stat/cycle-1/20260414_145210_technical-stat-models_hF-tech-stat.json |
| 2 | PASS | `` | 1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real/hF-tech-stat/cycle-2/20260414_145212_technical-stat-models_hF-tech-stat.json |
| 3 | PASS | `` | 1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real/hF-tech-stat/cycle-3/20260414_145213_technical-stat-models_hF-tech-stat.json |
최종: PASS
methodology-updater → hF-methodology-updater
| cycle | verdict | reasons | duration | report |
|---|---|---|---|---|
| 1 | FAIL | watch_path_missing |
1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real/hF-methodology-updater/cycle-1/20260414_145214_methodology-updater_hF-methodology-updater.json |
최종: FAIL
실패 tail:
er": [
{
"path": "/Users/ron/knowledge/400 판단/420 투자판단/425 방법론",
"exists": false,
"kind": null,
"size": null,
"mtime_ns": null,
"sha256": null,
"file_count": null,
"total_size": null,
"digest": null,
"sample_files": []
}
],
"watched_changed": [],
"verdict": {
"ok": false,
"openclaw_ok": true,
"hermes_trigger_ok": true,
"hermes_exec_ok": true,
"watch_ok": false,
"text_match": true,
"strict_diff": true,
"trigger_delta_ms": 0,
"changed_watch_paths": [],
"reasons": [
"watch_path_missing"
]
},
"report_path": "/Users/ron/.openclaw/workspace/verification/hermes-batch-F-real/hF-methodology-updater/cycle-1/20260414_145214_methodology-updater_hF-methodology-updater.json"
}
moat-scorer → hF-moat-scorer
| cycle | verdict | reasons | duration | report |
|---|---|---|---|---|
| 1 | FAIL | watch_path_missing |
1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real/hF-moat-scorer/cycle-1/20260414_145216_moat-scorer_hF-moat-scorer.json |
최종: FAIL
실패 tail:
],
"watched_after": [
{
"path": "/Users/ron/.openclaw/workspace/memory/moat-scores",
"exists": false,
"kind": null,
"size": null,
"mtime_ns": null,
"sha256": null,
"file_count": null,
"total_size": null,
"digest": null,
"sample_files": []
}
],
"watched_changed": [],
"verdict": {
"ok": false,
"openclaw_ok": true,
"hermes_trigger_ok": true,
"hermes_exec_ok": true,
"watch_ok": false,
"text_match": true,
"strict_diff": true,
"trigger_delta_ms": 0,
"changed_watch_paths": [],
"reasons": [
"watch_path_missing"
]
},
"report_path": "/Users/ron/.openclaw/workspace/verification/hermes-batch-F-real/hF-moat-scorer/cycle-1/20260414_145216_moat-scorer_hF-moat-scorer.json"
}
quant-performance-tracker → hF-quant-perf
| cycle | verdict | reasons | duration | report |
|---|---|---|---|---|
| 1 | FAIL | watch_path_missing |
1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real/hF-quant-perf/cycle-1/20260414_145217_quant-performance-tracker_hF-quant-perf.json |
최종: FAIL
실패 tail:
ter": [
{
"path": "/Users/ron/.openclaw/workspace/memory/quant-performance",
"exists": false,
"kind": null,
"size": null,
"mtime_ns": null,
"sha256": null,
"file_count": null,
"total_size": null,
"digest": null,
"sample_files": []
}
],
"watched_changed": [],
"verdict": {
"ok": false,
"openclaw_ok": true,
"hermes_trigger_ok": true,
"hermes_exec_ok": true,
"watch_ok": false,
"text_match": true,
"strict_diff": true,
"trigger_delta_ms": 0,
"changed_watch_paths": [],
"reasons": [
"watch_path_missing"
]
},
"report_path": "/Users/ron/.openclaw/workspace/verification/hermes-batch-F-real/hF-quant-perf/cycle-1/20260414_145217_quant-performance-tracker_hF-quant-perf.json"
}
corrected-watch rerun methodology-updater → hF-methodology-updater
| cycle | verdict | reasons | duration | report |
|---|---|---|---|---|
| 1 | FAIL | watch_path_missing |
1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real-rerun/hF-methodology-updater/cycle-1/20260414_145320_methodology-updater_hF-methodology-updater.json |
최종: FAIL
실패 tail:
ull,
"digest": null,
"sample_files": []
},
{
"path": "/Users/ron/knowledge/400 판단/420 투자판단/425 방법론",
"exists": false,
"kind": null,
"size": null,
"mtime_ns": null,
"sha256": null,
"file_count": null,
"total_size": null,
"digest": null,
"sample_files": []
}
],
"watched_changed": [
"/Users/ron/.openclaw/workspace/logs/methodology_updater.log"
],
"verdict": {
"ok": false,
"openclaw_ok": true,
"hermes_trigger_ok": true,
"hermes_exec_ok": true,
"watch_ok": false,
"text_match": true,
"strict_diff": true,
"trigger_delta_ms": 0,
"changed_watch_paths": [
"/Users/ron/.openclaw/workspace/logs/methodology_updater.log"
],
"reasons": [
"watch_path_missing"
]
},
"report_path": "/Users/ron/.openclaw/workspace/verification/hermes-batch-F-real-rerun/hF-methodology-updater/cycle-1/20260414_145320_methodology-updater_hF-methodology-updater.json"
}
corrected-watch rerun moat-scorer → hF-moat-scorer
| cycle | verdict | reasons | duration | report |
|---|---|---|---|---|
| 1 | FAIL | watch_path_missing |
1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real-rerun/hF-moat-scorer/cycle-1/20260414_145321_moat-scorer_hF-moat-scorer.json |
최종: FAIL
실패 tail:
al_size": null,
"digest": null,
"sample_files": []
},
{
"path": "/Users/ron/.openclaw/workspace/memory/moat-scores",
"exists": false,
"kind": null,
"size": null,
"mtime_ns": null,
"sha256": null,
"file_count": null,
"total_size": null,
"digest": null,
"sample_files": []
}
],
"watched_changed": [
"/Users/ron/.openclaw/workspace/memory/moat-analysis/latest.json"
],
"verdict": {
"ok": false,
"openclaw_ok": true,
"hermes_trigger_ok": true,
"hermes_exec_ok": true,
"watch_ok": false,
"text_match": true,
"strict_diff": true,
"trigger_delta_ms": 0,
"changed_watch_paths": [
"/Users/ron/.openclaw/workspace/memory/moat-analysis/latest.json"
],
"reasons": [
"watch_path_missing"
]
},
"report_path": "/Users/ron/.openclaw/workspace/verification/hermes-batch-F-real-rerun/hF-moat-scorer/cycle-1/20260414_145321_moat-scorer_hF-moat-scorer.json"
}
corrected-watch rerun quant-performance-tracker → hF-quant-perf
| cycle | verdict | reasons | duration | report |
|---|---|---|---|---|
| 1 | FAIL | watch_path_missing |
1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real-rerun/hF-quant-perf/cycle-1/20260414_145323_quant-performance-tracker_hF-quant-perf.json |
최종: FAIL
실패 tail:
6050437101001809,
"sha256": null,
"file_count": 0,
"total_size": 0,
"digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"sample_files": []
},
{
"path": "/Users/ron/.openclaw/workspace/memory/quant-performance",
"exists": false,
"kind": null,
"size": null,
"mtime_ns": null,
"sha256": null,
"file_count": null,
"total_size": null,
"digest": null,
"sample_files": []
}
],
"watched_changed": [],
"verdict": {
"ok": false,
"openclaw_ok": true,
"hermes_trigger_ok": true,
"hermes_exec_ok": true,
"watch_ok": false,
"text_match": true,
"strict_diff": true,
"trigger_delta_ms": 0,
"changed_watch_paths": [],
"reasons": [
"watch_path_missing"
]
},
"report_path": "/Users/ron/.openclaw/workspace/verification/hermes-batch-F-real-rerun/hF-quant-perf/cycle-1/20260414_145323_quant-performance-tracker_hF-quant-perf.json"
}
corrected-output-hint rerun2 methodology-updater → hF-methodology-updater
| cycle | verdict | reasons | duration | report |
|---|---|---|---|---|
| 1 | PASS | `` | 1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real-rerun2/hF-methodology-updater/cycle-1/20260414_145357_methodology-updater_hF-methodology-updater.json |
| 2 | PASS | `` | 1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real-rerun2/hF-methodology-updater/cycle-2/20260414_145359_methodology-updater_hF-methodology-updater.json |
| 3 | PASS | `` | 1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real-rerun2/hF-methodology-updater/cycle-3/20260414_145400_methodology-updater_hF-methodology-updater.json |
최종: PASS
corrected-output-hint rerun2 moat-scorer → hF-moat-scorer
| cycle | verdict | reasons | duration | report |
|---|---|---|---|---|
| 1 | PASS | `` | 1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real-rerun2/hF-moat-scorer/cycle-1/20260414_145401_moat-scorer_hF-moat-scorer.json |
| 2 | PASS | `` | 1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real-rerun2/hF-moat-scorer/cycle-2/20260414_145403_moat-scorer_hF-moat-scorer.json |
| 3 | PASS | `` | 1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real-rerun2/hF-moat-scorer/cycle-3/20260414_145404_moat-scorer_hF-moat-scorer.json |
최종: PASS
corrected-output-hint rerun2 quant-performance-tracker → hF-quant-perf
| cycle | verdict | reasons | duration | report |
|---|---|---|---|---|
| 1 | PASS | `` | 1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real-rerun2/hF-quant-perf/cycle-1/20260414_145405_quant-performance-tracker_hF-quant-perf.json |
| 2 | PASS | `` | 1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real-rerun2/hF-quant-perf/cycle-2/20260414_145406_quant-performance-tracker_hF-quant-perf.json |
| 3 | PASS | `` | 1.3s | /Users/ron/.openclaw/workspace/verification/hermes-batch-F-real-rerun2/hF-quant-perf/cycle-3/20260414_145408_quant-performance-tracker_hF-quant-perf.json |
최종: PASS
최종 조치
| OpenClaw | Hermes | 판정 | 조치 |
|---|---|---|---|
technical-stat-models |
hF-tech-stat |
PASS | Hermes enabled 유지, OpenClaw enabled=false |
methodology-updater |
hF-methodology-updater |
PASS | Hermes enabled 유지, OpenClaw enabled=false |
moat-scorer |
hF-moat-scorer |
PASS | Hermes enabled 유지, OpenClaw enabled=false |
quant-performance-tracker |
hF-quant-perf |
PASS | Hermes enabled 유지, OpenClaw enabled=false |
research_intelligence_aggregator |
hF-research-intel |
FAIL | Hermes paused/disabled, OpenClaw enabled 유지 |
실패 원인
research_intelligence_aggregator: OpenClaw/Hermes 양쪽 모두AttributeError: dict object has no attribute parent로 실패.save_json_atomic(result, OUTPUT)호출 순서가 현재cycle_base.save_json_atomic(path, data)시그니처와 맞지 않는 코드 결함으로 판단. 마이그레이션 불승인/rollback.
최종 검증
- JSON syntax:
~/.hermes/cron/jobs.json,~/.openclaw/cron/jobs.json모두python3 -m json.tool통과. - Hermes gateway:
http://127.0.0.1:18789/healthOK.hermes cron status기준 Gateway PID63520, 66523, scheduler tick healthy, active jobs 24개. LaunchAgents 변경 없음. - 최종 성공 4/5:
technical-stat-models,methodology-updater,moat-scorer,quant-performance-tracker. - 최종 실패/rollback 1/5:
research_intelligence_aggregator는 스크립트 자체 버그로 양쪽 실행 실패. OpenClaw 유지, Hermes 비활성.
자체 평가
- 정확성 4.6/5: 중복 선점 회피 후 5개 시도, strict dual-run 기준 통과한 4개만 실제 이전. 실패 1개는 rollback.
- 완성도 4.5/5: 보고서/백업/상태 반영 완료. 단, 동시 batch가 같은 원본을 일부 중복 등록한 기존 상황은 본 batch 밖 리스크.
- 검증 4.7/5: 3회 strict dual-run, JSON 구문, gateway health 확인.
- 최소 변경 4.8/5: Hermes jobs 추가/상태 수정과 OpenClaw enabled=false만 수행. 코드/LaunchAgent 미수정.