自动化パーティーへようこそ、再び
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がまったく必要ない場合? 2つの選択肢があります:
-
スクリプトのみのcronジョブ:スクリプトがすでに正確なメッセージを生成している場合(メモリ警告、ディスク警告、ハートビートなど)、エージェントは完全にスキップしてください。Hermesに設定を依頼するだけです——
cronjobツールはno_agent=Trueをいつ使うか知っています。 -
実行中スクリプトからのワンショット:
hermes sendを使って、stdoutやファイルをTelegram、Discord、Slackに直接パイプします。CIステップ、コミット後フック、デプロイスクリプトに最適です。
まとめ
パターンは揃いました。さあ、退屈なことを自動化しに行きましょう。未来の自分が感謝すること間違いなしです。
全機能リファレンスは、スケジュールタスク(Cron)ドキュメントをご覧ください。そして覚えておいてください:自己完結型プロンプト、静寂のための[SILENT]、機械的な作業のためのスクリプト。これがすべてです。
📖 公式ドキュメント
この記事は Hermes Agent の公式ドキュメントに基づいています:公式ドキュメント › guides/automate-with-cron