С возвращением на вечеринку автоматизации
Tutorial 21: Scheduled Tasks (Cron) — easy-to-understand guide based on official docs
С возвращением на вечеринку автоматизации
В уроке 20 мы создали бота для утренней сводки, который заглядывает к вам каждое утро. Мило, правда? Что ж, сегодня мы выходим на новый уровень. Система cron в Hermes умеет гораздо больше, чем просто говорить «доброе утро». Мы говорим о мониторинге сайтов, еженедельных дайджестах, отслеживании GitHub и даже конвейерах данных — всё это работает на автопилоте.
Самое приятное? Вам не нужно быть программистом, чтобы всё это настроить. Достаточно знать, что вы хотите автоматизировать, а Hermes возьмёт на себя всю тяжёлую работу.
Золотое правило: самодостаточные промпты
Прежде чем мы нырнём в паттерны, есть одна концепция, которую вам absolutely нужно понять: 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-репозиторием
Следите за любым репозиторием, не обновляя страницу каждые пять минут.
/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-задачи только со скриптом: Если ваш скрипт уже выдаёт нужное сообщение (алерты о памяти, предупреждения о диске, heartbeat), пропустите агента полностью. Просто попросите Hermes настроить это — инструмент
cronjobзнает, когда использоватьno_agent=True. -
Одноразовый запуск из работающего скрипта: Используйте
hermes send, чтобы отправить stdout или файл прямо в Telegram, Discord или Slack. Идеально для шагов CI, post-commit хуков или деплой-скриптов.
Итоги
У вас есть паттерны. Теперь идите и автоматизируйте что-нибудь скучное. Ваше будущее «я» скажет спасибо.
Полную документацию по функциям смотрите в документации Scheduled Tasks (Cron). И помните: самодостаточные промпты, [SILENT] для тишины и скрипты для механической работы. В этом вся суть.
📖 Официальная документация
Эта статья основана на официальной документации Hermes Agent :Официальные документы › guides/automate-with-cron