최종 Critic — Hermes 이전 + 해리 시야 전수 검증 통합 판정
작성: 2026-04-15 15:48 KST
원칙: 메인/각 Codex 보고서 무비판 수용 금지. 실제 파일·로그·launchctl·cron jobs·Hermes memory·sector config 직접 확인. 원본 코드/Gateway 수정 없음.
최종 판정
부분 PASS. Phase 18 안정화로 넘겨야 함.
해리 시야 기준으로 “대부분 화면/데이터/리포트 경로가 어디로 가는지”는 파악됐고, Hermes 코드·데이터·잡 정의는 상당 부분 전환됐다. 그러나 운영 웹앱 PID가 아직 OpenClaw 실행체이고, 8개 active cron 중 여러 리포트성 job이 외부 DNS/LLM/Gmail 실패를 exit 0으로 삼키는 false success 위험이 남아 있다.
즉, “해리가 오늘 보는 화면이 대체로 살아 있다”는 의미에서는 부분 성공이지만, “OpenClaw를 완전히 폐기해도 된다”는 의미의 PASS는 아니다.
5개 sub-task 판정표
| sub-task | 판정 | 근거 |
|---|---|---|
| s:2 웹앱 전수 페이지/API | REVISE | Hermes 코드 test_client 기준 500 없음, 주요 alias/route 보강은 확인. 그러나 현재 8080 PID 19581은 cwd=/Users/ron/.openclaw/workspace/scripts/pipeline, stdout/stderr도 .openclaw/logs 사용. plist 파일은 Hermes로 고쳐졌지만 launchd 메모리 정의와 실제 프로세스는 아직 OpenClaw. |
| s:4 cron 8개 리포트 발송 | REVISE | active jobs 8개와 현 command 대부분 Hermes 경로 확인. 그러나 s:4 재검증에서 bond/blog/newsletter/Gmail/macro 등 다수가 DNS·LLM·Gmail 실패. 특히 bond_daily_report.py, newsletter, Gmail collector가 실패를 exit 0으로 남길 수 있음. vault-analyst-feedback도 현재 last_status=error. |
| s:6 newsletter 5단계 체인 | APPROVE | Damnang 등 뉴스레터 노트가 Hermes/agent vault에 있고, 2026-04-15 13:24~13:25 gmail_newsletter_collector.py report sector trace 다수 확인. sector-group.json report topic id=8, Bot API chat 확인 보고도 있음. 이후 sandbox DNS 재실행 실패는 환경 제약으로 분리. |
| s:8 sector 5 topic 라우팅 | APPROVE | ~/.hermes/sector-group.json 5개 topic 매핑 확인: market=5, ideas=6, industry=7, report=8, ops=9. Hermes shared/telegram.py가 message_thread_id를 넣는 코드 경로 확인. 외부 Telegram live send는 sandbox DNS로 실패했지만 dry-run 범위의 목적지/경로 검증은 충족. |
| s:9 데이터 ↔ UI 매트릭스 | REVISE | Hermes memory 데이터와 Hermes source UI 연결은 PASS. Fed/SPY/bond/newsletter 데이터 존재 확인. 하지만 s:9 자체 결론대로 현재 운영 PID 19581은 OpenClaw cwd/source/log를 잡고 있어 “실제 해리 화면이 Hermes source를 읽는다”는 조건 미충족. |
결과: APPROVE 2 / REVISE 3 / REJECT 0
전체 이전 완성도 점수
| 기준 | 점수 | 판정 근거 |
|---|---|---|
| 해리 원래 의도 일치도 | 3.6/5 | 웹앱/텔레그램 리포트 경로는 대부분 파악. 하지만 실제 운영 웹앱이 Hermes 경로가 아니고, 리포트 cron 일부는 현재 네트워크/LLM 실패 시 조용히 성공 처리. |
| 웹앱 Hermes 전환 | 3.0/5 | Hermes webapp code/test_client는 양호. LaunchAgent plist 파일도 Hermes 경로. 그러나 launchd 로드 상태와 PID 19581은 OpenClaw 실행체라 freeze 불가. |
| 텔레그램/sector 라우팅 | 4.0/5 | sector config와 message_thread_id 코드 경로 확인. report sector trace는 실제 다수 존재. 다만 5 topic 모두 live ok/message_id 확보는 sandbox 차단으로 미확인. |
| cron/jobs Hermes 전환 | 3.5/5 | active jobs 8개, active command 기준 .openclaw 경로는 openclaw_command metadata 1건 외 없음. 그러나 일부 job last_status/error, external 실패, false-success 위험이 큼. |
| 데이터 저장소 전환 | 4.0/5 | ~/.hermes/workspace/memory에 Fed liquidity, SPY 51 rows, bond briefing, newsletter data 존재. sector-news 반도체 파일은 빈 배열. 일부 루트 데이터/ops/telemetry는 선별 이전만 됨. |
| 경로 치환 완성도 | 4.1/5 | strict 활성 scripts grep에서 .openclaw path hit 0. 백업/컨테이너/식별자 제외 기준 통과. 단 ~/.hermes/openclaw.json 내부 학습 토픽 prompt에는 /Users/ron/.openclaw/... 문자열 37개 잔존. |
| 실질 작동 증거 | 3.8/5 | Fed aggregator Hermes output 15:03 성공, SPY Hermes data 51 rows, Gateway running/Telegram getUpdates OK, newsletter sector_trace 확인. 반면 macro collector latest output은 DNS 실패, webapp live PID mismatch. |
종합 점수: 3.7/5 — 부분 PASS
직접 확인한 핵심 사실
1) Hermes active jobs 8개
~/.hermes/cron/jobs.json 직접 확인:
jobs_total=8, active=8
41c2736f0527 vault-analyst-feedback last=error
ocPH-SPY-price-history-refresh last=ok command=~/.hermes/workspace/scripts/pipeline/price_history_collector.py
ocAK-AK000-bond-daily-dry-run last=ok command=~/.hermes/workspace/scripts/pipeline/bond_daily_report.py --notify
ocAO-AO003-bond-morning-command last=ok command=~/.hermes/workspace-root-scripts/gmail_credit_monitor.py
macro-series-collector last=ok command=~/.hermes/workspace/scripts/pipeline/macro_series_collector.py
fed-liquidity-aggregator last=ok command=~/.hermes/workspace/scripts/pipeline/fed_liquidity_aggregator.py
ocM-M019-blog-monitor last=None command=~/.hermes/workspace/scripts/pipeline/blog_monitor.py --notify
ocAQ-AQ004-gmail-newsletter-command last=None command=~/.hermes/workspace/scripts/pipeline/gmail_newsletter_collector_dual.sh
jobs.json 내 .openclaw hit는 openclaw_command metadata 1건뿐이고 active command에는 없음.
2) Hermes scripts 경로 치환
백업·컨테이너·docker/podman·test 파일 제외 후 직접 검사:
~/.hermes/workspace/scripts strict grep .openclaw path hit_files = 0
다만 ~/.hermes/openclaw.json에는 /Users/ron/.openclaw 문자열 37개가 남아 있음. 대부분 텔레그램 학습 토픽 prompt의 ingest/react 명령 예시다. 이는 sector 리포트 발송과 별개지만, Telegram learning-topic 자동 ingest까지 Hermes화하려면 후속 치환 필요.
3) webapp 운영 PID는 아직 OpenClaw
launchctl print gui/501/com.openclaw.sihwang-webapp
arguments = /usr/bin/python3 /Users/ron/.openclaw/workspace/scripts/pipeline/run_webapp.py
working directory = /Users/ron/.openclaw/workspace/scripts/pipeline
stdout/stderr = /Users/ron/.openclaw/logs/...
pid = 19581
lsof -p 19581
cwd = /Users/ron/.openclaw/workspace/scripts/pipeline
반면 plist 파일 자체는 Hermes로 수정되어 있음:
/Users/ron/Library/LaunchAgents/com.openclaw.sihwang-webapp.plist
ProgramArguments = /usr/bin/python3 /Users/ron/.hermes/workspace/scripts/pipeline/run_webapp.py
WorkingDirectory = /Users/ron/.hermes/workspace/scripts/pipeline
logs = /Users/ron/.hermes/logs/...
판정: 파일 패치는 됐지만 launchd가 새 정의를 다시 로드하지 않았다. 단순 curl이 200이어도 “Hermes 이전 완료” 증거로는 부족하다.
4) Hermes 데이터는 존재
직접 확인:
~/.hermes/workspace/memory/fed-liquidity/latest.json
date=2026-04-15, phase=유동성 축소 — 흡수 국면, history_last=2026-04-15
~/.hermes/workspace/memory/price-history/SPY.json
last_updated=2026-04-15, source=yfinance, rows=51, last=2026-04-14
~/.hermes/workspace/memory/bond-briefing/latest.json
date=2026-04-12, report_len=8294
~/.hermes/workspace/memory/sector-news/20260414_S10_반도체기술.json
[] # 빈 배열
5) sector config와 Gateway
~/.hermes/sector-group.json
chat_id=-1003522748967
topics={market:5, ideas:6, industry:7, report:8, ops:9}
Gateway는 건드리지 않고 상태만 확인:
launchctl ai.hermes.gateway state=running, pid=50183
API_SERVER_ENABLED=true, API_SERVER_PORT=18789
최근 gateway.log: Telegram getUpdates HTTP 200 반복
해리 시야 커버리지
| 해리가 보는 것 | 커버 상태 | 판단 |
|---|---|---|
| 웹앱 메인/브리핑/API | Hermes code 기준 검증됨, live PID는 OpenClaw | 부분 커버 |
/api/chart/SPY |
live log와 Hermes data 기준 정상, SPY 51 rows | 커버 |
| Fed liquidity | Hermes latest.json과 aggregator output 확인 | 커버 |
| bond study | 04-12 리포트/PDF 있음, 04-14는 데이터 없음 | 부분 커버 |
| sector-news 반도체 | endpoint는 200 가능하지만 데이터 파일 빈 배열 | 부분 커버 |
| 뉴스레터/Damnang | vault notes와 report sector trace 확인 | 커버 |
| Telegram sector topics | config/code path 확인, live send ok/message_id는 sandbox 차단 | 부분 커버 |
| cron 리포트 전체 | 8개 정의/경로 확인, 다수 dry-run 실패/false-success | 부분 커버 |
커버 안 된 핵심: 실제 웹앱 프로세스의 Hermes 실행 전환, 외부 네트워크 의존 cron의 정상 수집/발송, false-success 제거.
잔존 이슈 우선순위
P0 — OpenClaw freeze 전 필수
- webapp LaunchAgent 재로드/재시작
- 현재 plist 파일은 Hermes지만 로드된 launchd job과 PID는 OpenClaw.
-
필요 조건: 재로드 후
lsof -p <pid>에서 cwd/log/arguments가.hermes로 바뀌어야 함. -
cron false-success 수정
bond_daily_report.py --dry-runLLM 실패 후 exit 0.- Gmail/newsletter/Gmail credit monitor도 외부 조회 실패를 wrapper success처럼 남김.
-
실패를
degraded또는 non-zero로 올리지 않으면 해리가 “정상”으로 오판함. -
외부 DNS/API reachability 검증
- s:4에서 Gmail/FRED/RSS/Telegram/yfinance fallback이 sandbox에서 광범위 실패.
- Gateway는 Telegram polling 200이므로 전부 코드 결함은 아니지만, cron runtime별 네트워크가 분리되어 있음.
P1 — Hermes 단독 운용 품질
vault-analyst-feedbackjob 정리- prompt job이고 현재 last_status=error / Codex token 401 계열.
-
shell script로 묶을지, provider/auth를 고칠지 결정 필요.
-
macro-series-collectorsilent fail / FRED 실패 처리 - 메인 직접 backfill 데이터는 있음.
- 그러나 최신 Hermes cron output에는 FRED API DNS 실패와 49개 실패 로그가 남아 있음.
-
실패 개수 > 0이면 명확히 경고/상태 기록해야 함.
-
blog-monitor notify 폭주 위험
- backlog가 많고 active command는
--notify. - 첫 운영 실행 전 processed seed/limit/dry-run 전환 필요.
P2 — 청소/명칭 정리
~/.hermes/openclaw.json내부 old path 37개- 학습 토픽 ingest/react prompt가 OpenClaw script를 가리킴.
-
Harry visible report와 직접 충돌은 아니지만 Telegram 자동 ingest에 영향 가능.
-
OpenClaw LaunchAgents 파일 잔존
- loaded 기준 OpenClaw 없음 보고가 있었으나 plist 파일들은 남아 있음.
- 서비스 label
com.openclaw.*를 유지할지ai.hermes.*로 바꿀지 정책 필요.
해리 후속 행동 필요 사항
해리가 직접 할 일은 코드 작업이 아니라 방향 결정 1개임.
권고: Phase 18 안정화로 넘김.
목표는 “OpenClaw 완전 폐기”가 아니라 먼저 아래 3개를 끝내는 것.
- 웹앱을 실제 Hermes 프로세스로 재기동하고 확인.
- 8개 cron 중 false-success/외부 실패를 고쳐 상태가 거짓 OK가 되지 않게 함.
- Telegram/Gmail/FRED/RSS 네트워크가 Hermes runtime에서 되는지 한 번에 검증.
이 3개 전에는 ~/.openclaw freeze/삭제/쓰기금지 선언 금지.
최종 결론
최종 판정: 부분 PASS
- Hermes 이전은 “코드/데이터/잡 정의” 관점에서 상당히 진행됨.
- 해리 시야의 핵심 항목도 대부분 어디서 읽고 어디로 보내는지 파악됨.
- 그러나 실제 운영 웹앱이 아직 OpenClaw 경로에서 떠 있고, cron 리포트 다수가 실패를 조용히 삼키는 상태라 완전 PASS 또는 OpenClaw 폐기 선언은 불가.
다음 라운드는 Critic Round가 아니라 Phase 18 안정화 작업이어야 함.
자체평가
- 정확성: 4.7/5 — 보고서 주장과 실제 파일·launchctl·jobs·memory·logs를 직접 대조함.
- 완성도: 4.6/5 — 5개 sub-task 판정, 전체 점수, 잔존 이슈, 후속 행동까지 정리함.
- 검증: 4.5/5 — sandbox localhost/DNS 제한 때문에 일부 live curl/send는 로그와 파일 증거로 대체했지만, 제한과 코드 결함을 분리해 기록함.
- 최소 변경: 5.0/5 — 원본 코드/Gateway 수정 없음. critic 보고서만 생성.
종합: 4.7/5