Cron-задачи в Hermes: автоматизация по расписанию без кода

Hermes Agent поддерживает cron-задачи — автоматические действия, которые запускаются по расписанию без вашего участия. Агент просыпается в нужное время, выполняет задачу и отправляет результат в Telegram, Discord, Slack или на почту. Никакого кода: вы описываете задачу на русском языке, а Hermes сам настраивает расписание.

Что такое cron-задачи в Hermes Agent?

Cron-задача в Hermes — это запланированное действие, которое AI-агент выполняет автоматически по расписанию. В отличие от обычных cron-задач в Linux, которые запускают фиксированные скрипты, Hermes добавляет слой интеллекта: агент может анализировать данные, принимать решения и генерировать текстовые отчёты.

Каждая cron-задача работает в изолированной сессии. Агент не помнит предыдущие запуски, но может получать контекст от других задач через параметр context_from. Задачи хранятся в файле ~/.hermes/cron/jobs.json, а результаты — в ~/.hermes/cron/output/.

Как создать cron-задачу: 3 способа

Способ 1: Через чат с Hermes

Самый простой вариант — попросить агента настроить задачу на русском языке:

Каждый день в 9:00 проверяй Hacker News на новости про AI и отправляй мне саммари в Telegram.

Hermes автоматически создаст cron-задачу с нужным расписанием и инструкциями.

Способ 2: Команда /cron в чате

Если вы общаетесь с Hermes через Telegram или Discord:

/cron add "every day at 9am" "Check Hacker News for AI news and send summary"
/cron add 30m "Remind me to check the build"
/cron add "every 2h" "Check server status"

Способ 3: Через CLI

Для тех, кто предпочитает терминал:

hermes cron create "every 2h" "Check server status"
hermes cron create "every 1h" "Summarize new feed items" --skill blogwatcher

Форматы расписания

Hermes поддерживает несколько форматов указания времени:

Относительные задержки (одноразовые)

30m     → Через 30 минут
2h      → Через 2 часа
1d      → Через 1 день

Интервалы (повторяющиеся)

every 30m    → Каждые 30 минут
every 2h     → Каждые 2 часа
every 1d     → Каждый день

Cron-выражения

0 9 * * *       → Каждый день в 9:00
0 9 * * 1-5     → По будням в 9:00
0 */6 * * *     → Каждые 6 часов
30 8 1 * *      → 1-го числа каждого месяца в 8:30
0 0 * * 0       → Каждое воскресенье в полночь

Натуральный язык

every weekday at 9am
every Monday and Thursday at 6pm
every hour during business hours

Hermes сам переведёт эти описания в cron-синтаксис.

Куда отправлять результаты

При создании задачи вы указываете, куда доставить результат:

Назначение Описание Пример
`origin` Туда, откуда задача создана По умолчанию для мессенджеров
`local` Сохранить локально По умолчанию для CLI
`telegram` Домашний канал Telegram Использует `TELEGRAM_HOME_CHANNEL`
`telegram:123456` Конкретный чат Telegram Прямая доставка
`telegram:-100123:17585` Тема форума Telegram Формат `chat_id:thread_id`
`discord` Домашний канал Discord Использует `DISCORD_HOME_CHANNEL`
`discord:#engineering` Конкретный канал Discord По имени канала
`slack` Домашний канал Slack
`email` Электронная почта
`all` Все подключённые каналы Решается при запуске

Пример создания задачи с доставкой в Telegram:

hermes cron create "every day at 9am" "Summarize today's tasks" --deliver telegram

Скиллы в cron-задачах

Cron-задачи могут загружать скиллы перед выполнением. Это расширяет возможности агента без написания кода.

Один скилл

hermes cron create "every 1h" "Summarize new feed items" --skill blogwatcher

Несколько скиллов

hermes cron create "every 1h" "Use both skills and combine the result" \
  --skill blogwatcher \
  --skill maps

Скиллы загружается в указанном порядке. Промпт становится инструкцией, которая применяется поверх загруженных скиллов.

Управление задачами

Просмотр списка задач

hermes cron list

Вывод:

ID Schedule Task Delivery Next Run
──────────────────────────────────────────────────────
1 daily 9am daily report telegram 2026-04-14 09:00
2 weekly fri 5pm weekly summary discord 2026-04-19 17:00
3 hourly health check telegram 2026-04-13 17:00

Приостановка и возобновление

hermes cron pause 
hermes cron resume 

Ручной запуск

hermes cron run 

Редактирование

hermes cron edit  --schedule "every 4h"
hermes cron edit  --prompt "Use the revised task"
hermes cron edit  --skill blogwatcher --skill maps
hermes cron edit  --remove-skill blogwatcher
hermes cron edit  --clear-skills

Удаление

hermes cron remove 

Все команды принимают как ID задачи, так и имя (регистронезависимо).

No-agent режим: скрипты без AI

Для задач, которые не требуют интеллекта — мониторинг диска, проверка памяти, пинг сервисов — можно использовать режим без агента:

hermes cron create "every 5m" \
  --no-agent \
  --script memory-watchdog.sh \
  --deliver telegram \
  --name "memory-watchdog"

Скрипт выполняется по расписанию, а его stdout отправляется напрямую. Пустой вывод = тишина. Ненулевой код выхода = алерт.

Пример скрипта мониторинга памяти:

#!/bin/bash
USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
if (( $(echo "$USAGE > 85" | bc -l) )); then
  echo "⚠️ RAM usage: ${USAGE}%"
else
  exit 0
fi

Цепочки задач: context_from

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

# Задача 1: Сбор данных
hermes cron create "0 7 * * *" "Fetch top 10 AI stories from HN. Save to ~/.hermes/data/raw.md" \
  --name "AI News Collector"

# Задача 2: Анализ (получает вывод задачи 1)
hermes cron create "30 7 * * *" "Score each story 1-10. Output top 5 to ~/.hermes/data/ranked.md" \
  --context-from "AI News Collector" \
  --name "AI News Triage"

# Задача 3: Публикация (получает вывод задачи 2)
hermes cron create "0 8 * * *" "Write 3 tweet drafts from ranked stories" \
  --context-from "AI News Triage" \
  --name "AI News Brief"

Цепочка может быть любой длины. Каждая задача получает вывод предыдущей как контекст.

Практические примеры

Ежедневный дайджест новостей

hermes cron create "every day at 8am" \
  "Check Hacker News, Reddit r/programming, and TechCrunch for AI news. Write a summary of 5 most interesting stories in Russian." \
  --deliver telegram \
  --name "Daily AI Digest"

Мониторинг сервера

hermes cron create "every 30m" \
  "SSH into server 192.168.1.100 as user 'deploy', check if nginx is running with 'systemctl status nginx', and verify https://example.com returns HTTP 200." \
  --deliver telegram \
  --name "Server Health Check"

Автоматические отчёты

hermes cron create "every monday at 9am" \
  "Generate a weekly report: summarize completed tasks, upcoming deadlines, and blockers. Format as markdown." \
  --deliver email \
  --name "Weekly Report"

Публикация контента

hermes cron create "every 3 days" \
  "Take the next pending topic from pool.json, research it, write an SEO article, and publish to hermeswiki.ru" \
  --skill hermeswiki-seo \
  --deliver telegram \
  --name "SEO Article Publisher"

Как это работает под капотом

Gateway-демон проверяет задачи каждые 60 секунд:

  • Загружает задачи из ~/.hermes/cron/jobs.json
  • Проверяет next_run_at against текущее время
  • Запускает свежую сессию AIAgent для каждой задачи
  • Опционально загружает скиллы
  • Выполняет промпт до завершения
  • Доставляет финальный ответ
  • Обновляет метаданные и следующее время запуска
  • Файл ~/.hermes/cron/.tick.lock предотвращает двойной запуск одной задачи.

    Безопасность

    Промпты cron-задач сканируются на prompt-injection и попытки утечки данных при создании и обновлении. Задачи с подозрительным содержимым блокируаться.

    Cron-сессии не могут рекурсивно создавать новые cron-задачи. Hermes отключает инструменты управления cron внутри cron-выполнений, чтобы предотвратить бесконечные циклы.

    FAQ

    Можно ли создать cron-задачу через чат?

    Да. Просто напишите Hermes на русском языке, что и когда нужно делать. Агент сам создаст задачу с правильным расписанием.

    Что делать, если задача не запускается?

    Проверьте статус: hermes cron status. Убедитесь, что gateway запущен: hermes gateway install. Проверьте логи в ~/.hermes/cron/output/.

    Можно ли изменить расписание существующей задачи?

    Да: hermes cron edit --schedule "новое расписание". Не нужно удалять и создавать заново.

    Как работает доставка в Telegram?

    Укажите --deliver telegram при создании задачи. Hermes отправит результат в канал, указанный в TELEGRAM_HOME_CHANNEL. Для конкретного чата: --deliver telegram:123456.

    Что такое no-agent режим?

    Режим, при котором скрипт выполняется без AI-агента. Используется для простых задач мониторинга, где не нужен интеллект. Экономит токены и деньги.

    Ссылки

  • Документация Hermes: Scheduled Tasks
  • Hermes Agent Tutorial: Cron Scheduling
  • Script-Only Cron Jobs