🤖HermesBlog
Hermes Feature Guides · 파트 168/9/2026

스크립트 전용 크론 잡: 토큰 낭비 없이 자동화하기

Script-Only Cron Jobs — easy-to-understand guide based on official docs

guide-cron-script-only

스크립트 전용 크론 잡: 토큰 낭비 없이 자동화하기

Hermes 크론 잡을 사용해 본 적이 있다면, 그 기능이 얼마나 강력한지 이미 알고 있을 거예요. 그런데 한 가지 질문이 있습니다. LLM이 “생각”할 필요 없이, 그냥 정해진 시간에 실행되고 결과만 알려주면 되는 경우는 어떨까요?

바로 그때 스크립트 전용 크론 잡이 등장합니다. 군더더기 없는 자동화 레이어라고 생각하면 돼요. 동일한 스케줄러, 동일한 전달 방식, 단 LLM 토큰은 0원.

스크립트 전용 크론 잡은 언제 사용해야 할까?

스크립트 전용 잡은 스크립트 자체가 이미 보고 싶은 메시지를 정확히 만들어낼 때 빛을 발합니다. 추론도 필요 없고, 요약도 필요 없어요. 그저 순수하고 결정적인 출력만 있으면 됩니다.

전형적인 사용 사례는 다음과 같아요:

  • 메모리 알림 – 스크립트가 RAM 사용량을 확인하고 “메모리 92% 사용 중”을 출력
  • 디스크 공간 경고 – 같은 아이디어, 다른 지표
  • 하트비트 – 서비스가 아직 살아있다는 증거
  • 스크립트가 답을 알고 있는 모든 모니터링 – 문제가 있으면 말하고, 괜찮으면 조용히 있기

장점이 뭘까요? 스크립트의 신뢰성과 Hermes의 전달 능력을 동시에 얻을 수 있다는 거예요. 토큰 비용도, 지연 시간도, “잠깐만 생각해볼게요” 하는 딜레이도 없습니다.

설정 방법

가장 쉬운 방법? 그냥 채팅에서 Hermes에게 요청하면 됩니다. cronjob 도구는 no_agent=True를 언제 사용해야 하는지 스스로 판단할 만큼 똑똑해요. 스크립트를 작성하고 모든 것을 설정해 줍니다.

하지만 직접 하고 싶다면, 이 패턴을 따라 하세요:

/cron add "every 1h" "This prompt won't be used" --script ~/.hermes/scripts/my-check.py --name "My monitor" --deliver telegram

잠깐, 프롬프트가 이상해 보이죠? 설명해 드릴게요.

스크립트가 말한다

스크립트 전용 크론 잡에서는 스크립트의 표준 출력이 곧 메시지가 됩니다. 그 사이에 LLM이 개입하지 않아요. 따라서 스크립트는 전달하고 싶은 내용을 정확히 출력해야 합니다.

간단한 예시를 볼까요:

#!/usr/bin/env python3
import shutil

total, used, free = shutil.disk_usage("/")
percent = used / total * 100

if percent > 90:
    print(f"⚠️ Disk at {percent:.1f}% — clean up now!")
else:
    print("[SILENT]")

끝에 있는 [SILENT] 보이시죠? 그게 바로 마법의 조용함 표시입니다. Hermes는 출력에서 [SILENT]를 발견하면 아무것도 보내지 않아요. 스크립트가 언제 귀찮게 할지 결정하는 거예요.

[SILENT] 트릭

이건 모니터링 스크립트를 위한 최고의 기능이에요. 매시간 “다 정상이에요” 알림을 받는 대신, 실제로 주의가 필요할 때만 Hermes가 연락을 줍니다.

스크립트 로직:

  • 문제 발견? 알림 메시지 출력
  • 모두 정상? [SILENT] 출력

나머지는 Hermes가 처리합니다. 조용한 시간대에 알림 없음, 알림 피로 없음, “건강한 서버인데 왜 새벽 3시에 폰이 울리지?” 같은 일도 없어요.

스크립트 전용 vs. hermes send

또 하나 알아두면 좋은 제로 토큰 옵션이 있습니다: hermes send. 이미 어딘가에서 실행 중인 스크립트가 있을 때 사용하세요. CI 단계, 커밋 후 훅, 배포 스크립트 등에서 출력을 Telegram이나 Discord로 보내고 싶을 때요.

./my-deploy-script.sh | hermes send --channel telegram

차이점이 뭘까요? 스크립트 전용 크론 잡은 반복적이고 정기적인 확인을 위한 것입니다. hermes send는 스크립트가 말할 때가 됐다고 판단하는 일회성 순간을 위한 것이에요.

실전 예시: 웹사이트 변경 모니터

모든 것을 하나로 합쳐 볼게요. 웹페이지를 감시하고 변경 사항이 있을 때만 알려주는 스크립트입니다:

import hashlib, json, os, urllib.request

URL = "https://example.com/pricing"
STATE_FILE = os.path.expanduser("~/.hermes/scripts/.watch-state.json")

content = urllib.request.urlopen(URL, timeout=30).read().decode()
current_hash = hashlib.sha256(content.encode()).hexdigest()

prev_hash = None
if os.path.exists(STATE_FILE):
    with open(STATE_FILE) as f:
        prev_hash = json.load(f).get("hash")

with open(STATE_FILE, "w") as f:
    json.dump({"hash": current_hash}, f)

if prev_hash and prev_hash != current_hash:
    print(f"CHANGE DETECTED on {URL}")
    print(f"Previous hash: {prev_hash}")
    print(f"Current hash: {current_hash}")
    print(f"\nFirst 2000 chars:\n{content[:2000]}")
else:
    print("[SILENT]")

설정은 이렇게:

/cron add "every 1h" "unused" --script ~/.hermes/scripts/watch-site.py --name "Pricing monitor" --deliver telegram

스크립트가 페이지를 가져오고, 해시를 비교하고, 뭔가 다를 때만 말합니다. LLM 토큰도, 불필요한 알림도 없이 순수한 자동화만 남아요.

결론

스크립트 전용 크론 잡은 제로 토큰 자동화의 핵심입니다. 다음과 같은 경우에 완벽해요:

  • 결정적인 확인 – 답이 이분법적인 경우
  • 고빈도 모니터링 – LLM 비용이 쌓일 수 있는 경우
  • LLM의 해석보다 스크립트의 판단을 신뢰하는 모든 경우

그리고 가장 좋은 점? 스크립트 전용과 LLM 기반 잡 중에서 하나만 선택할 필요가 없다는 거예요. 같은 워크플로우에서 함께 사용하세요. 기계적인 확인에는 스크립트를, 흥미로운 부분은 LLM이 처리하게 하세요. 예를 들어 그 웹사이트 변경이 중요한지 요약하는 것처럼요.

더 깊이 알아보고 싶나요? 전체 크론 문서데일리 브리핑 봇 튜토리얼을 확인해서 LLM 기반 기능도 살펴보세요.

📖 공식 문서

この記事は Hermes Agent の공식 문서に基づいています:공식 문서 › guides/automate-with-cron