🤖HermesBlog
Hermes Feature Guides · Часть 88/9/2026

Автоматизируйте всё с помощью Cron

Automate Everything with Cron — easy-to-understand guide based on official docs

guide-automate-cron

Автоматизируйте всё с помощью Cron

Если вы читали наш учебник по боту для ежедневных дайджестов, вы уже знакомы с основами cron-задач. Но это лишь верхушка айсберга. Сегодня копаем глубже — пять реальных сценариев автоматизации, которые можно позаимствовать и адаптировать под свои рабочие процессы.

Прежде чем нырнуть с головой, вот золотое правило: cron-задачи запускаются в свежих сессиях агента без памяти о вашем текущем чате. Ваши промпты должны быть полностью самодостаточными. Включайте всё, что нужно знать агенту: команды, контекст, ожидания. Думайте об этом как об инструкции для очень умного стажёра, который только что вошёл в дверь.

Альтернативы без токенов (экономьте вызовы LLM)

Не каждой автоматизации нужна LLM. Два варианта позволяют полностью избежать затрат токенов:

  • Периодический сторожевой пёс — если ваш скрипт уже выдаёт нужное сообщение (алерты о памяти, предупреждения о диске, heartbeat-сигналы), используйте cron-задачи только со скриптом. Тот же планировщик, без LLM. Просто попросите Hermes в чате — инструмент cronjob сам знает, когда выбрать no_agent=True, и напишет скрипт за вас.
  • Разовый запуск из работающего скрипта — для шагов CI, post-commit хуков или деплой-скриптов используйте hermes send, чтобы передать stdout или файл напрямую в Telegram, Discord, Slack и т.д. Запись в cron не нужна.

Паттерн 1: Мониторинг изменений на сайте

Следите за URL и получайте уведомления только при реальных изменениях. Секретное оружие здесь — параметр script: Python-скрипт запускается перед каждым выполнением, и его stdout становится контекстом для агента. Скрипт выполняет механическую работу (загрузка, сравнение), агент — аналитическую (интересно ли это изменение?).

Сначала создайте скрипт мониторинга:

mkdir -p ~/.hermes/scripts
import hashlib, json, os, urllib.request

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

# Fetch current content
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()

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

# Save current state
with open(STATE_FILE, "w") as f:
    json.dump({"hash": current_hash, "url": URL}, f)

# Output for the agent
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], когда ничего не изменилось. Cron-доставка воспринимает это как маркер тишины — вы получаете уведомления только когда что-то действительно происходит. Никакого спама в тихие часы.


Паттерн 2: Еженедельный отчёт

Собирайте информацию из нескольких источников в форматированную сводку. Задача запускается раз в неделю и доставляет отчёт в ваш основной канал.

/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

Из CLI:

hermes cron create "0 9 * * 1" \
  "Generate a weekly report covering the top AI news, trending ML GitHub repos, and most-discussed HN posts. Format with sections, include links, keep under 500 words." \
  --name "Weekly AI digest" \
  --deliver telegram

0 9 * * 1 — стандартное cron-выражение: 9:00 утра каждый понедельник.


Паттерн 3: Наблюдатель за GitHub-репозиторием

Отслеживайте новые issues, PR или релизы в репозитории.

/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. У cron-агента нет истории переписки с прошлых запусков — распишите всё детально. (Постоянная память загружается, так что сохранённые предпочтения из MEMORY.md переносятся, но не полагайтесь на неё для критически важных деталей задачи.)


Паттерн 4: Конвейер сбора данных

Собирайте данные через регулярные интервалы, сохраняйте в файлы и отслеживайте тренды со временем. Этот паттерн сочетает скрипт (для сбора) с агентом (для анализа).

import json, os, urllib.request
from datetime import datetime

DATA_DIR = os.path.expanduser("~/.hermes/data/prices")
os.makedirs(DATA_DIR, exist_ok=True)

# Fetch current data (example: crypto prices)
url = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum&vs_currencies=usd"
data = json.loads(urllib.request.urlopen(url, timeout=30).read())

# Append to history file
entry = {"timestamp": datetime.now().isoformat(), "prices": data}
history_file = os.path.join(DATA_DIR, "history.jsonl")
with open(history_file, "a") as f:
    f.write(json.dumps(entry) + "\n")

# Output for the agent
print(f"Collected prices at {entry['timestamp']}: {data}")

Затем настройте cron-задачу, которая запускает скрипт и просит агента проанализировать собранные данные:

/cron add "every 30m" "Run the collection script, then analyze the price history in ~/.hermes/data/prices/history.jsonl. If you notice a significant trend (more than 5% change in the last hour), summarize it. Otherwise respond with [SILENT]." --script ~/.hermes/scripts/collect-prices.py --name "Price tracker" --deliver telegram

Паттерн 5: Подход «Просто спроси»

Не хотите писать скрипты или запоминать синтаксис cron? Просто опишите, что нужно, на простом языке:

/cron add "every 2h" "Check if there are any new articles about AI regulation on Google News. If there are, summarize the top 3. If nothing new, respond with [SILENT]." --name "AI regulation watch" --deliver telegram

Агент сам разберётся с остальным — поиском в интернете, фильтрацией результатов и форматированием вывода.


Подводим итоги

Эти пять паттернов покрывают самые распространённые сценарии автоматизации: мониторинг, отчёты, наблюдение за репозиториями, сбор данных и простые задачи «просто спроси». Ключевые выводы:

  1. Скрипты выполняют механическую работу — загрузка, сравнение, сбор
  2. Агенты выполняют аналитическую работу — интересно ли это? что изменилось? почему это важно?
  3. [SILENT] защищает от спама — уведомления приходят только когда что-то действительно важно
  4. Самодостаточные промпты обязательны — агент каждый раз начинает с чистого листа

Полную документацию по функциям смотрите в разделе Запланированные задачи (Cron). Удачной автоматизации!

📖 Официальная документация

Эта статья основана на официальной документации Hermes Agent :Официальные документы › guides/automate-with-cron