자동화 파티에 다시 오신 것을 환영합니다
Tutorial 21: Scheduled Tasks (Cron) — easy-to-understand guide based on official docs
자동화 파티에 다시 오신 것을 환영합니다
튜토리얼 20에서는 매일 아침 인사해 주는 데일리 브리핑 봇을 만들었죠. 귀엽지 않나요? 오늘은 한 단계 더 레벨업합니다. Hermes의 cron 시스템은 단순히 “좋은 아침”이라고 말하는 것보다 훨씬 더 많은 일을 할 수 있어요. 웹사이트 감시, 주간 다이제스트, GitHub 모니터링, 심지어 데이터 파이프라인까지 — 모두 자동 조종으로 돌아갑니다.
가장 좋은 점? 프로그래머가 아니어도 설정할 수 있다는 거예요. 자동화하고 싶은 게 뭔지만 알면 되고, 무거운 작업은 Hermes가 처리합니다.
핵심 원칙: 자립형 프롬프트
패턴을 살펴보기 전에 반드시 이해해야 할 개념이 하나 있어요: cron 작업은 새로운 에이전트 세션에서 실행됩니다. 즉, 에이전트는 현재 채팅에 대한 기억이 전혀 없어요. “어제 우리가 얘기했던 거 기억해?” 같은 건 없습니다. 그런 거 전혀 없어요.
그러니 작성하는 모든 프롬프트는 완전히 자립적이어야 합니다. 에이전트가 알아야 할 모든 것을 포함하세요: 실행할 명령어, 확인할 소스, 원하는 형식. 전부 구체적으로 적어야 합니다.
막 들어온 아주 똑똑한 인턴에게 지시사항을 적는 것처럼 생각하면 돼요. “우리가 논의했던 그거 해”라고 하면 안 되겠죠. “정확히 이렇게 해, 단계별로”라고 해야 합니다.
패턴 1: 웹사이트 변경 모니터
경쟁업체가 가격 페이지를 바꾸는 순간을 알고 싶나요? 아니면 즐겨찾는 블로그가 업데이트되는 순간? 이 패턴은 URL을 감시하다가 실제로 변경 사항이 있을 때만 알려줍니다.
핵심은 --script 파라미터예요. Python 스크립트가 각 실행 전에 기계적인 작업(가져오기, 비교)을 수행하고, 그 출력이 에이전트의 컨텍스트가 됩니다. 그러면 에이전트가 판단하죠: 이 변경이 흥미로운가?
무거운 작업을 처리하는 스크립트는 다음과 같습니다:
# ~/.hermes/scripts/watch-site.py
import hashlib, json, os, urllib.request
URL = "https://example.com/pricing"
STATE_FILE = os.path.expanduser("~/.hermes/scripts/.watch-site-state.json")
req = urllib.request.Request(URL, headers={"User-Agent": "Hermes-Monitor/1.0"})
content = urllib.request.urlopen(req, 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, "url": URL}, 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"\nCurrent content (first 2000 chars):\n{content[:2000]}")
else:
print("NO_CHANGE")
그리고 cron 작업을 설정합니다:
/cron add "every 1h" "If the script output says CHANGE DETECTED, summarize what changed on the page and why it might matter. If it says NO_CHANGE, respond with just [SILENT]." --script ~/.hermes/scripts/watch-site.py --name "Pricing monitor" --deliver telegram
프로 팁: [SILENT] 지시사항이 보이나요? 그게 조용한 신호입니다. 에이전트가 그냥 [SILENT]라고만 응답하면, Hermes는 귀찮게 하지 않아요. 업무 시간 외에 스팸 알림 없음.
패턴 2: 주간 리포트
업계 동향을 파악하는 데 딱 좋은 패턴입니다. 매주 월요일 오전 9시에 실행되어 여러 소스에서 다이제스트를 수집합니다.
/cron add "0 9 * * 1" "Generate a weekly report covering:
1. Search the web for the top 5 AI news stories from the past week
2. Search GitHub for trending repositories in the 'machine-learning' topic
3. Check Hacker News for the most discussed AI/ML posts
Format as a clean summary with sections for each source. Include links.
Keep it under 500 words — highlight only what matters." --name "Weekly AI digest" --deliver telegram
0 9 * * 1은 표준 cron 문법입니다: 분 0, 시간 9, 날짜 무관, 월 무관, 월요일(1). 한 번 알면 쉬워요.
패턴 3: GitHub 저장소 감시자
5분마다 페이지를 새로고침하지 않고도 어떤 저장소든 계속 추적할 수 있어요.
/cron add "every 6h" "Check the GitHub repository NousResearch/hermes-agent for:
- New issues opened in the last 6 hours
- New PRs opened or merged in the last 6 hours
- Any new releases
Use the terminal to run gh commands:
gh issue list --repo NousResearch/hermes-agent --state open --json number,title,author,createdAt --limit 10
gh pr list --repo NousResearch/hermes-agent --state all --json number,title,author,createdAt,mergedAt --limit 10
Filter to only items from the last 6 hours. If nothing new, respond with [SILENT].
Otherwise, provide a concise summary of the activity." --name "Repo watcher" --deliver discord
프롬프트에 정확한 gh 명령어가 포함된 게 보이나요? 그게 자립형 규칙이 실제로 적용된 모습입니다. 에이전트는 지난번에 어떻게 했는지 기억하지 못해요 — 매번 알려줘야 합니다.
패턴 4: 데이터 수집 파이프라인
데이터 덕후들을 위한 패턴입니다. 정기적으로 가격, 지표 또는 API 데이터를 수집하고 파일로 저장한 다음, 에이전트가 추세를 파악하게 합니다.
스크립트는 수집을 담당하고(가져오기에 LLM 토큰 낭비 없음), 에이전트는 분석을 담당합니다. 둘을 결합하면 강력한 추세 감지 시스템이 됩니다.
토큰 제로 대안
LLM이 전혀 필요 없나요? 두 가지 옵션이 있습니다:
-
스크립트 전용 cron 작업: 스크립트가 이미 정확한 메시지를 생성한다면(메모리 알림, 디스크 경고, 하트비트), 에이전트를 완전히 건너뛰세요. Hermes에게 설정해 달라고만 하면 됩니다 —
cronjob도구는 언제no_agent=True를 사용할지 알고 있어요. -
실행 중인 스크립트에서 원샷 전송:
hermes send를 사용하여 stdout이나 파일을 Telegram, Discord, Slack으로 바로 보내세요. CI 단계, 커밋 후 훅, 배포 스크립트에 완벽합니다.
마무리
패턴을 익혔습니다. 이제 지루한 일을 자동화하러 가보세요. 미래의 당신이 고마워할 거예요.
전체 기능 참조는 예약 작업(Cron) 문서를 확인하세요. 그리고 기억하세요: 자립형 프롬프트, 조용한 알림을 위한 [SILENT], 기계적인 작업을 위한 스크립트. 이게 전부입니다.
📖 공식 문서
この記事は Hermes Agent の공식 문서に基づいています:공식 문서 › guides/automate-with-cron