결론
8개 중 즉시 정상 판정은 3개, 조건부 정상/주의가 4개, 수정 필요가 1개다.
- ✅ 정상:
price-history SPY refresh,fed-liquidity-aggregator,gmail-newsletter-collector - ⚠️ 주의:
vault-analyst-feedback,bond-daily-report-real-notify,bond-morning-poll-real-gmail-collector,batchM-intelligence-blog-monitor - ❌ 수정 필요:
macro-series-collector
가장 중요한 수정 포인트는 두 개다.
macro-series-collector는 Hermes 쪽 FRED API key가 없어 현재 entry 그대로 직접 실행하면 실패한다.~/.openclaw/fred_api_key는 있으나~/.hermes/fred_api_key는 없다.blog_monitor.py --notify는 backlog 44건이 확인됐다. 현재 enabled 상태로 다음 tick이 오면 대량 텔레그램 발송 가능성이 있다.
Gateway 상태 확인
hermes cron list는 아래 경고를 출력했다.
Gateway is not running — jobs won't fire automatically.
하지만 프로세스/포트/API는 살아 있었다.
PID 50183: python -m hermes_cli.main gateway run
127.0.0.1:18789 LISTEN
GET /v1/models => HTTP/1.1 200 OK
따라서 Gateway 자체는 동작 중으로 보이지만, hermes cron list의 상태 감지 로직은 불일치한다. 스케줄 자동 firing 보장은 별도 tick 로그로 한 번 더 확인해야 한다.
8개 entry 결과표
| # | Entry | 판정 | 검증 결과 | 실패/주의 원인 | 권고 |
|---|---|---|---|---|---|
| 1 | vault-analyst-feedback |
⚠️ | command는 비어 있고 prompt 기반 Hermes job. 최신 output은 2026-04-15 09:00 실행, last_status=ok, response 없음. 구현 파일 ~/.hermes/workspace/scripts/pipeline/vault_analyst_feedback.py 존재. |
shell entry가 아니라 prompt job이다. 실제 구현 파일은 현재 job에 wired 되어 있지 않다. | prompt job으로 유지할지, shell job으로 vault_analyst_feedback.py를 호출할지 결정 필요. |
| 2 | price-history SPY refresh |
✅ | 실제 실행 성공. stdout 저장 경로가 /Users/ron/.hermes/workspace/memory/price-history로 찍힘. SPY.json mtime 2026-04-15 14:02:42. |
샌드박스 실행은 DNS 실패했으나 escalated 실제 실행은 OK. | 현재 상태 유지. |
| 3 | bond-daily-report-real-notify |
⚠️ | py_compile/import OK. --dry-run 존재. escalated dry-run에서 LLM 완료 후 리포트 stdout 생성. |
실제 cron command는 --notify라 텔레그램 발송을 유발한다. dry-run은 저장/전송 안 함. bond-report-output 디렉토리는 없지만 스크립트는 memory/bond-briefing을 사용한다. |
real notify가 의도된 entry인지 확인. 테스트용이면 command를 --dry-run으로 분리 권고. |
| 4 | bond-morning-poll-real-gmail-collector |
⚠️ | 파일 존재. --fixed-income-only 지원. 토큰 경로 ~/.credentials/gmail_token.json, profile [email protected]. 기존 Hermes output 09:33 exit 0, 황대진 2건 저장. |
fi_saved > 0이면 내부에서 bond_daily_report.py --notify를 트리거한다. 이번 세션에서는 텔레그램 방지를 위해 직접 실행하지 않음. |
운영용이면 OK. 검증용/마이그레이션용이면 notify trigger를 stub/dry-run 분리 필요. |
| 5 | macro-series-collector |
❌ | 현재 entry와 같은 환경에서 --dry-run 실행 시 49/49 실패. 원인: FRED API key 없음. 단, FRED_API_KEY=$(cat ~/.openclaw/fred_api_key)를 주입하면 DGS10 1개 dry-run 성공. |
~/.hermes/fred_api_key 없음. cron command도 FRED_API_KEY를 명시하지 않는다. |
~/.hermes/fred_api_key 배치 또는 command/env에 FRED_API_KEY 주입 필요. |
| 6 | fed-liquidity-aggregator |
✅ | --dry-run 성공. Hermes memory/macro-timeseries를 읽어 net_t=5.9452, phase=유동성 축소 — 흡수 국면 산출. |
jobs.json의 last_status=error는 이전 OpenClaw 경로 실행 흔적으로 보임. 현재 스크립트는 Hermes path 기준. |
다음 실제 tick 이후 last_status 갱신 확인. |
| 7 | batchM-intelligence-blog-monitor |
⚠️ | import/compile OK. escalated --dry-run --limit 10 성공. RSS 50건, category filter 후 44건 backlog 확인. |
현재 cron command는 --notify. backlog 44건 때문에 발송 폭주 위험. |
첫 운영 실행 전 --dry-run/--limit/processed seed 처리 후 notify 전환 권고. |
| 8 | gmail-newsletter-collector |
✅ | dual wrapper 존재. $HOME/.openclaw 하드코드 없음. 두 토큰 실행 OK. gmail_token.json → 0건, gmail_token_mangdeng2.json → Damnang chat 알림 skip 후 0건. |
현재 cron command에는 --no-digest가 없어 새 글이 있으면 Telegram digest 전송 가능. 운영 목적이면 정상. |
상태 유지. 필요 시 검증용 job은 --no-digest 별도 분리. |
Entry별 증거 로그
1. vault-analyst-feedback
현재 job은 command가 아니라 prompt 기반이다.
id 41c2736f0527
name vault-analyst-feedback
command None
type None job_type None kind None
last_status ok
최신 output tail:
# Cron Job: vault-analyst-feedback
Run Time: 2026-04-15 09:00:51
Prompt: 볼트 분석 환류 작업을 실행해줘...
Response: (No response generated)
구현 파일 확인:
/Users/ron/.hermes/workspace/scripts/pipeline/vault_analyst_feedback.py
2. price-history SPY refresh
실행:
cd /Users/ron/.hermes/workspace
python3 /Users/ron/.hermes/workspace/scripts/pipeline/price_history_collector.py --ticker SPY
stdout tail:
=== 가격 이력 수집 시작 [증분] — 1개 티커 ===
저장 경로: /Users/ron/.hermes/workspace/memory/price-history
[SPY] 증분 수집 (마지막: 2026-04-14)...
[SPY] OK — 51일치 저장 (신규 2개)
=== 완료 — 성공 1/1, 실패 0 ===
저장 확인:
2026-04-15 14:02:42 /Users/ron/.hermes/workspace/memory/price-history/SPY.json
3. bond-daily-report-real-notify
검증:
python3 -m py_compile .../bond_daily_report.py => OK
import bond_daily_report => IMPORT_OK
--help: --dry-run, --notify 지원
디렉토리:
/Users/ron/.hermes/workspace/memory/bond-briefing 존재
/Users/ron/.hermes/workspace/memory/bond-report-output 없음
주의: 스크립트 실제 PDF/JSON 저장 경로는 bond-report-output이 아니라 memory/bond-briefing이다.
escalated dry-run tail:
[2026-04-15 13:47:19] bond_daily_report 시작
[2026-04-15 13:47:19] 노트: 260414_황대진_전달-일일-414-화-마감-및-채권시장-정리-DS증권-황대진.md
[2026-04-15 13:47:19] 파싱 완료 — 타입: 낙찰정리, 날짜: 2026-04-14, 낙찰: 0건
[2026-04-15 13:48:04] LLM 완료 (모델: ollama/qwen2.5:3b, 2198자)
4. bond-morning-poll-real-gmail-collector
파일/옵션:
/Users/ron/.hermes/workspace-root-scripts/gmail_credit_monitor.py 존재
--fixed-income-only 지원
TOKEN_PATH /Users/ron/.credentials/gmail_token.json
token_exists True
profile [email protected]
최신 Hermes output tail:
✅ Gmail 토큰 자동 갱신 완료
[정대호] 0건 발견
[이향기] 0건 발견
[황대진] 8건 발견
[vault] 저장: 260414_황대진_전달-금일-415-수-입찰-및-해외시장-동향-DS증권-황대진.md
[vault] 저장: 260414_황대진_전달-일일-414-화-마감-및-채권시장-정리-DS증권-황대진.md
[fixed-income] 볼트 저장 2건
완료
직접 실행은 하지 않았다. 이유: 새 fixed-income 메일이 있으면 내부에서 bond_daily_report.py --notify를 트리거한다.
5. macro-series-collector
현재 entry 환경 dry-run tail:
완료: 0개 성공, 49개 실패
요약: 0/49 succeeded, 49 failed (success_rate=0.0%)
❌ macro_series_collector 실패: 성공한 시리즈가 0개입니다.
반복된 원인:
FRED API 키 없음. ~/.hermes/fred_api_key 파일에 저장하거나 FRED_API_KEY 환경변수로 설정하세요.
키 위치 확인:
MISSING /Users/ron/.hermes/fred_api_key
EXISTS /Users/ron/.openclaw/fred_api_key
키를 명시 주입했을 때 1개 series 검증:
[macro_series_collector] 시작 — incremental(최근 60일)
⚠️ dry-run 모드: 실제 저장 없음
OK DGS10 40건 latest=2026-04-13 4.3
완료: 1개 성공, 0개 실패
요약: 1/1 succeeded, 0 failed (success_rate=100.0%)
6. fed-liquidity-aggregator
실행:
python3 /Users/ron/.hermes/workspace/scripts/pipeline/fed_liquidity_aggregator.py --dry-run
stdout tail:
"net_t": 5.9452,
"wow_t": -0.0001,
"mom_t": 0.143,
"phase": "유동성 축소 — 흡수 국면",
"phase_color": "red",
"interpretation": "TGA 증가 또는 Fed 자산 감소로 시장에서 자금이 회수되고 있음.",
"investment_signal": "단기 위험자산 비중 축소. 연준 정책 전환 시점 주시."
}
[fed_liquidity_aggregator] 완료
저장 파일 확인:
/Users/ron/.hermes/workspace/memory/fed-liquidity/latest.json 존재
7. batchM-intelligence-blog-monitor
실행:
python3 /Users/ron/.hermes/workspace/scripts/pipeline/blog_monitor.py --dry-run --limit 10
stdout tail:
[2026-04-15 13:49:20] Fetching RSS from https://rss.blog.naver.com/ranto28
[2026-04-15 13:49:20] RSS fetched: 50 entries
[2026-04-15 13:49:20] Category filter: 50 → 44 entries
[2026-04-15 13:49:20] New entries: 44
[2026-04-15 13:49:20] [DRY-RUN] 파월과 베센트가 은행장들을 긴급 소집한 이유 (feat 미토스) [주절주절]
[2026-04-15 13:49:20] [DRY-RUN] 원유 상황은 정말 괜찮을까? [주절주절]
[2026-04-15 13:49:20] [DRY-RUN] 우리 파키스탄이 달라졌어요 (feat 미국 이란의 종전협상 중재) [경제/주식/국제정세/사회]
[2026-04-15 13:49:20] [DRY-RUN] 미장은 언제부터 오를수 있을까? A/S [경제/주식/국제정세/사회]
{"source": "blog_monitor", "blog": "ranto28", "status": "dry_run", "new_posts": 10}
주의: current cron command는 python3 .../blog_monitor.py --notify다.
8. gmail-newsletter-collector
wrapper 확인:
/Users/ron/.hermes/workspace/scripts/pipeline/gmail_newsletter_collector_dual.sh 존재
COLLECTOR_DIR="$HOME/.hermes/workspace/scripts/pipeline"
PYTHONPATH="$HOME/.hermes/workspace/scripts/shared:$HOME/.hermes/workspace/scripts/pipeline..."
tokens=(~/.credentials/gmail_token.json ~/.credentials/gmail_token_mangdeng2.json)
토큰 profile:
/Users/ron/.credentials/gmail_token.json => [email protected]
/Users/ron/.credentials/gmail_token_mangdeng2.json => [email protected]
실행:
bash /Users/ron/.hermes/workspace/scripts/pipeline/gmail_newsletter_collector_dual.sh --days 2 --no-digest
stdout tail:
=== [dual-collector] run with gmail_token.json ===
[start] 뉴스레터 수집 시작 (days=2, backfill=False, only=None, limit=None)
[done] 0건 수집 완료
[dual-collector] gmail_token.json ok
=== [dual-collector] run with gmail_token_mangdeng2.json ===
[start] 뉴스레터 수집 시작 (days=2, backfill=False, only=None, limit=None)
[skip] Damnang: 비본문 알림 (💬 New thread from Damnang)
[done] 0건 수집 완료
[dual-collector] gmail_token_mangdeng2.json ok
수정 필요 사항
macro-series-collector~/.hermes/fred_api_key를 준비하거나 command에FRED_API_KEY를 주입해야 한다.-
현재 entry 그대로는 직접 실행 기준 실패한다.
-
batchM-intelligence-blog-monitor - backlog 44건 확인.
- 현재 enabled +
--notify는 발송 폭주 위험. -
최초 1회는
--dry-run/--limit/processed seed 후 notify 전환 권고. -
vault-analyst-feedback - command empty는 prompt job으로는 정상이나, “Hermes 경로 shell 실행 검증” 범주에는 맞지 않는다.
-
이미 존재하는
vault_analyst_feedback.py를 shell job으로 연결할지 결정 필요. -
bond-*계열 - 두 job 모두 운영 의도상 Telegram notify 가능성이 있다.
- 검증용 entry와 운영용 entry를 분리하면 이후 테스트가 안전해진다.
자체평가
- 정확성: 4.6/5 — 각 entry를 파일/옵션/실행 로그 기준으로 확인했다.
- 완성도: 4.5/5 — 8개 모두 판정했고 실패 원인과 권고를 남겼다.
- 검증: 4.5/5 — py_compile/import/help/dry-run/escalated run을 조합했다. 단, notify 위험 entry는 직접 full run하지 않았다.
- 최소 변경: 4.8/5 — 코드/cron 수정 없이 보고서만 작성했다. 실행 검증 중 price/newsletter 상태 파일 일부 갱신 가능성은 있다.
종합: 4.6/5.