← Agent Learning daily code-senior 2026-06-08

2026-06-08 — Hermes cron no-agent watchdogs and delivery reliability

무엇을 학습 오늘의 핵심 주제는 **Hermes cron에서 LLM이 필요 없는 감시/알림 작업은 `no_agent` script-only job으로 분리하는 운영 패턴**이다. 공식 로컬 문서 기준으로 Hermes cron은 일반 LLM job과 `no-agent mode`를 모두 지원한다. `no-agent`는 스케줄러가 스크립트를 실행하고, stdout이 있으면 그대로 delivery router로…
어디에 정리 02_Code_Senior/Daily/2026-06-08.md
앞으로 어떻게 쓸 것인가 브리프·체크리스트·자동화 패턴에 즉시 참조

2026-06-08 — Hermes cron no-agent watchdogs and delivery reliability

핵심 요약

  • 오늘의 핵심 주제는 Hermes cron에서 LLM이 필요 없는 감시/알림 작업은 no_agent script-only job으로 분리하는 운영 패턴이다.
  • 공식 로컬 문서 기준으로 Hermes cron은 일반 LLM job과 no-agent mode를 모두 지원한다. no-agent는 스케줄러가 스크립트를 실행하고, stdout이 있으면 그대로 delivery router로 보낸다.
  • 실무적으로는 “서버 상태가 임계값을 넘으면 알림”, “CI 실패 시 로그 일부 전달”, “heartbeat/health check”처럼 메시지가 스크립트 출력으로 확정되는 작업은 LLM cron보다 no_agent=True가 더 안정적이다.

왜 중요한가

  • Phillip의 서버/프로젝트 운영에서는 야간·새벽 시간대에 토큰 비용, OAuth/provider 장애, agent loop timeout 없이 감시가 돌아가는 것이 중요하다.
  • LLM cron은 요약·판단·보고서 생성에는 강하지만, 단순 watchdog에 쓰면 다음 리스크가 생긴다.
    • provider/OAuth 문제 때문에 감시 자체가 실패할 수 있음
    • tool loop 또는 모델 지연으로 알림이 늦을 수 있음
    • “정상일 때 조용히”라는 요구가 prompt 품질에 좌우될 수 있음
  • no-agent는 script exit/stdout 계약으로 동작하므로 idempotent하고 검증 가능한 운영 단위가 된다.

실무 적용

  • 기본 분류:
    • no-agent cron: RAM/disk/GPU/port/HTTP status/CI artifact 존재 여부처럼 규칙이 명확한 알림
    • LLM cron: 뉴스 선별, 장애 로그 원인 요약, 여러 소스의 우선순위 판단, 사람에게 읽기 좋은 briefing 작성
  • 생성/운영 흐름:
    1. 스크립트는 ~/.hermes/scripts/ 아래에 둔다.
    2. 정상 상태에서는 stdout을 비운다.
    3. 알림이 필요한 상태에서만 짧고 actionable한 stdout을 출력한다.
    4. non-zero exit와 timeout은 오류 알림으로 취급되므로 의도치 않은 실패가 묻히지 않는다.
    5. hermes cron listhermes cron run <job_id>로 수동 검증한다.
  • delivery target은 telegram, telegram:<chat_id>, discord:#ops, local 등으로 명시한다. 사용자 1명에게 반드시 도달해야 하는 작업은 origin보다 explicit target이 낫다.

구현/운영 패턴

# 1) script-only watchdog: stdout이 비어 있으면 silent tick
# ~/.hermes/scripts/disk-watchdog.sh
#!/usr/bin/env bash
THRESHOLD=90
df -h / 2>/dev/null | awk -v t="$THRESHOLD" '
  NR > 1 && $5+0 >= t {
    printf "⚠ Disk %s full on %s (%s)\n", $5, $6, $1
  }
'

# 2) schedule
hermes cron create "every 10m" \
  --no-agent \
  --script disk-watchdog.sh \
  --deliver telegram \
  --name "disk-watchdog"

# 3) verify
hermes cron list
hermes cron run disk-watchdog

운영 계약:

  • Empty stdout = 정상/무전송
  • Non-empty stdout = 그대로 전송
  • Non-zero exit = 오류 알림
  • Script timeout = 오류 알림
  • LLM 판단이 필요하면 no-agent가 아니라 agent cron으로 전환

리스크/검증 필요

  • Web search/extract는 오늘 Tavily 432 오류로 실패했다. 이 노트는 /usr/local/lib/hermes-agent/website/docs/...의 로컬 공식 문서와 loaded Hermes skill 내용을 근거로 작성했다.
  • 현재 설치된 Hermes 버전/branch가 배포 문서와 완전히 동일한지는 별도 git status, hermes --version 확인이 필요하다.
  • 공식 문서 일부는 “cron jobs use whatever provider hermes model selected”라고 설명하지만, 운영 메모에는 cron-specific provider/model override caveat가 있다. Phillip 환경에서는 unattended LLM cron에 job-level provider/model override를 우선 검토해야 한다.
  • no-agent 스크립트에는 secrets를 출력하지 않는다. API 호출이 필요하면 .env 사용, 로그/전송 stdout에는 redacted 요약만 남긴다.

다음 학습 질문

  • Hermes cron의 script pre-check와 wakeAgent: false gate를 LLM cron 앞단 필터로 쓰는 최적 패턴은 무엇인가?
  • profile-pinned cron과 workdir-pinned cron이 sequential execution으로 제한될 때, 여러 운영 job을 어떻게 stagger할 것인가?
  • no-agent watchdog 결과를 Obsidian/LLM Wiki에 누적할 때, raw metric dump와 curated incident summary를 어떻게 분리할 것인가?

관련 링크

Study Room

내일 학습·스터디 큐

내일 학습 큐가 아직 추출되지 않았습니다.

스터디 대화

코칭뿐 아니라 학습 내용에 대해 에이전트별 토론·스터디 지시를 남기는 공간입니다. 저장된 메시지는 다음 학습 큐 조정의 근거가 됩니다.

아직 스터디 대화가 없습니다.

인사이트로 Second Brain에 저장

스터디 대화와 approved 큐를 원문 덤프가 아닌 Phillip의 큐레이션 인사이트 노트로 승격합니다.