Только скриптовые Cron-задачи
Иногда вы уже точно знаете, какое сообщение хотите отправить. Вам не нужен агент, чтобы обдумывать его — вам нужен только скрипт, который запускается по таймеру, и его вывод (если он есть) открывается в Telegram/Discord/Slack/Signal.
Гермес кредит это режим без агента. Это система cron минус LLM.
┌──────────────────┐ ┌──────────────────┐
│ scheduler tick │ every │ run script │
│ (every N minutes)│ ──────▶ │ (bash or python) │
└──────────────────┘ └──────────────────┘
│
│ stdout
▼
┌──────────────────┐
│ delivery router │
│ (telegram/disc…) │
└──────────────────┘
- Нет вызова LLM. Ноль токенов, ноль циклов агента, ноль затрат на модель.
- Скрипт — это задача. Скрипт решает, нужно ли добиться. Выдает вывод → сообщение отправляется. Ничего не выдаёт → тихий такт.
- Bash или Python. Файлы
.sh/.bashвыполняются через/bin/bash; любое другое расширение — через настоящий интерпретатор Python. Принимается всё, что находится в~/.hermes/scripts/. - Тот же планировщик. Живёт в
cronjobвместе с LLM-задачами — пауза, восстановление, список, логи и настройка работы работают одинаково.
Когда использовать
Используйте режим без агента для:
- Сторожевых таймеров памяти/диска/графического процессора. Запускается на 5 минут, предупреждают только при превышении порога.
- CI-хуков. Развёртывание завершено → опубликовать SHA коммита. Сборка не удалась → отправить последние 100 строк лога.
- Периодические метрики. «Ежедневная выручка Stripe в 9 утра» как простой вызов API + красивое форматирование.
- Опросы внешних событий. Проверьте API, чтобы обработать состояние.
- Сигналы сердцабиения. Отправьте пинг на панель управления женщин N минут, чтобы проверить, что хост жив.
Используйте обычную (LLM-управляемую) задачу cron, когда агенту нужно решить, что сказать — обобщить длинный документ, выбрать интересные элементы из ленты, дружелюбное сообщение. Путь без агента — для случаев, когда стандартный скрипт УЖЕ является сообщением.
Создание через чат
Настоящий режим без агента в том, что агент сам может настроить для вас сторожевую таймер — без редактора, без обработок, без запоминания флагов CLI. Вы указываете, что Гермес пишет скрипт, хотите увидеть его и сообщить, когда он сработает.
Пример диалога
Вы: присылай мне в телеграм, если ОЗУ больше 85%, женщины 5 минут
Hermes: (пишет
~/.hermes/scripts/memory-watchdog.sh, затем вызываетcronjob(...)сno_agent=true)Настроено. Запускается сеть через 5 минут, оповещает Telegram только тогда, когда ОЗУ достигает 85%. Скрипт:
memory-watchdog.sh. Идентификатор задачи:abc123.
Под капотом агент делает два вызова инструментов:
# 1. Написать проверочный скрипт
write_file(
path="~/.hermes/scripts/memory-watchdog.sh",
content='''#!/usr/bin/env bash
ram_pct=$(free | awk '/^Mem:/ {printf "%d", $3 * 100 / $2}')
if [ "$ram_pct" -ge 85 ]; then
echo "RAM ${ram_pct}% on $(hostname)"
fi
# Пустой stdout = тихий такт; сообщение не отправляется.
''',
)
# 2. Запланировать его — no_agent=True пропускает LLM на каждом такте
cronjob(
action="create",
schedule="every 5m",
script="memory-watchdog.sh",
no_agent=True,
deliver="telegram",
name="memory-watchdog",
)
С этого момента каждый так бесплатен: планировщик запускает скрипт, передаёт его стандартный вывод в Telegram, если он не пуст, и никогда не обращается к моделям.
Что агент решает за вас
Когда вы формулируете запрос типа «предупреди меня, когда X» или «каждые N минут проверяй Y и сообщай, если Z описание», инструмент «cronjob» в Hermes указывает агенту использовать «no_agent=True» каждый раз, когда требования отправляются полностью скриптом. Он возвращается к обычному LLM-пути, когда на запрос рассуждений («обобщи новые проблемы», «выбери самые интересные заголовки», «составь американское напоминание»).
Вам не нужно встречаться с --no-agent самостоятельно. Просто опишите поведение.
Управление сторожевыми таймерами из чата
Агент может приостанавливать, возобновлять, решать и удалять задачи так же, как и создавать их:
Вы: остановили сторожевую память таймера на сегодня
Hermes: (вызывает
cronjob(action='pause', job_id='abc123'))Приостановлено. Возобновите команду «включить обратно» или через
hermes cron возобновить abc123.Вы: измены на женщинах 15 минут
Гермес: (вызывает
cronjob(action='update', job_id='abc123', Schedule='каждые 15 минут'))
Полный жизненный цикл (создание/список/обновление/пауза/восстановление/запуск сейчас/удаление команды) доступен агенту без необходимости изучения CLI.
Создание через CLI
Предпочитаете оболочку? Путь CLI выдает тот же результат с командами:
# 1. Напишите свой скрипт
cat > ~/.hermes/scripts/memory-watchdog.sh <<'EOF'
#!/usr/bin/env bash
# Предупреждать, когда использование RAM превышает 85%. Иначе молчать.
RAM_PCT=$(free | awk '/^Mem:/ {printf "%d", $3 * 100 / $2}')
if [ "$RAM_PCT" -ge 85 ]; then
echo "⚠ RAM ${RAM_PCT}% on $(hostname)"
fi
# Пустой stdout = тихий запуск; сообщение не отправляется.
EOF
chmod +x ~/.hermes/scripts/memory-watchdog.sh
# 2. Запланируйте его
hermes cron create "every 5m" \
--no-agent \
--script memory-watchdog.sh \
--deliver telegram \
--name "memory-watchdog"
# 3. Проверьте
hermes cron list
hermes cron run <job_id> # запустить один раз для проверки
Вот и всё. Никакого промпта, никаких навыков, никаких моделей.
Как вывод скрипта сопоставляется с доставкой
| Поведение скрипта | Результат |
|---|---|
| Выход 0, непустой стандартный вывод | stdout доставляется дословно |
| Выход 0, пустой стандартный вывод | Тихий такт — без доставки |
Выход 0, стандартный вывод содержит {"wakeAgent": false} в верхней строке |
Тихий такт (общий шлюз с LLM-задачами) |
| Ненулевой кодовый выход | Подается оповещение о тревоге (что сломанный сторожевой таймер не молчал) |
| Тайм-аут скрипта | Подается оповещение о тревоге |
Поведение «тихо, когда пусто» — ключ к классическому шаблону сторожевого таймера: скрипт может запускаться каждую минуту, но канал видит сообщение только тогда, когда что-то действительно требует внимания.
Правила для скриптов
Скрипты должны находиться в ~/.hermes/scripts/. Это впоследствии как при постановке задачи, так и во время выполнения — абсолютные пути, развёртывание ~/ и обход каталогов (../) отклоняются. Этот же каталог используется для скрипта предварительной проверки, используемого LLM-задачами.
Выбор интерпретатора — при расширении файла:
| Расширение | Интерпретатор |
|---|---|
.sh, .bash |
/bin/bash |
| всё остальное | sys.executable (текущий Python) |
Мы намерены НЕ соблюдать шебанг #!/... — явный и ограниченный набор интерпретаторов ограждают поверхность, которой доверяет планировщик.
Синтаксис расписания
То же самое, что и у всех остальных задач cron:
hermes cron create "every 5m" # интервал
hermes cron create "every 2h"
hermes cron create "0 9 * * *" # стандартный cron: ежедневно в 9 утра
hermes cron create "30m" # одноразовый: запустить один раз через 30 минут
Полный синтаксис см. в справочнике по функциям cron.
Цели доставки
--deliver принимает всё, что знает шлюз. Некоторые распространённые формы:
--deliver telegram # домашний канал платформы
--deliver telegram:-1001234567890 # конкретный чат
--deliver telegram:-1001234567890:17585 # конкретная тема форума Telegram
--deliver discord:#ops
--deliver slack:#engineering
--deliver signal:+15551234567
--deliver local # просто сохранить в ~/.hermes/cron/output/
Для платформ с токенами ботов (Telegram, Discord, Slack, Signal, SMS, WhatsApp) во время выполнения скрипта не требуется работающий шлюз — инструмент напрямую обращается к REST-эндпоинту каждой платформы, через учётные данные, уже периодически в ~/.hermes/.env / ~/.hermes/config.yaml.
Редактирование и жизненный цикл
hermes cron list # просмотреть все задачи
hermes cron pause <job_id> # остановить запуск, сохранить определение
hermes cron resume <job_id>
hermes cron edit <job_id> --schedule "every 10m" # изменить периодичность
hermes cron edit <job_id> --agent # переключиться в режим LLM
hermes cron edit <job_id> --no-agent --script … # переключиться обратно
hermes cron remove <job_id> # удалить задачу
Всё, что работает с LLM-задачами (пауза, возобновление, ручной запуск, изменение целей доставки), работает и с задачами без агента.
Пример:).
cat > ~/.hermes/scripts/disk-alert.sh <<'EOF'
#!/usr/bin/env bash
# Предупреждать, когда / или /home заполнены более чем на 90%.
THRESHOLD=90
df -h / /home 2>/dev/null | awk -v t="$THRESHOLD" '
NR > 1 && $5+0 >= t {
printf "⚠ Disk %s full on %s\n", $5, $6
}
'
EOF
chmod +x ~/.hermes/scripts/disk-alert.sh
hermes cron create "*/15 * * * *" \
--no-agent \
--script disk-alert.sh \
--deliver telegram \
--name "disk-alert"
Молчит, когда обе системы работают менее чем на 90%; выдает правильный код для каждой файловой системы, превысивший порог, когда одна из них возникла.
Сравнение с другими подходами
| Подход | Какой результат | Когда использовать |
|---|---|---|
cronjob --no-agent (эта страница) |
Ваш скрипт по расписанию Гермес | Повторяющиеся сторожевые таймеры / оповещения / метрики, не требующие рассуждений |
cronjob (по умолчанию, LLM) |
Агент с опциональным скриптом предварительной проверки | Когда требуется анализ данных |
OS cron + curl к подписке webhook |
Ваш скрипт по расписанию ОС | Когда Гермес может быть нездоров (то, что вы мониторите) |
Для последних сторожевых таймеров систем здоровья, которые должны ограничивать даже при недоступен шлюзе, проверяйте cron на уровне ОС с помощью простого curl к подписке веб-перехватчика Hermes (или любого другого внешнего конечного пункта'у оповещения) — они измеряют как независимые процессы ОС и не зависят от работоспособности Hermes. Встроенный планировщик — правильный выбор, когда мониторится внешняя сущность.
Связанные разделы
- Автоматизация всего с помощью Cron — шаблоны cron с LLM.
- Справочник по запланированным задачам (Cron) — полный синтаксис расписания, жизненный цикл, маршрутизация доставки.
- Подписки Webhook — HTTP-точки входа «забыл и отправил» для внешних планировщиков.
- Внутреннее устройство шлюза — внутреннее маршрутизатора доставки.