Мой скилл hermes-cron вошёл в официальный каталог плагинов Hermes Agent. Он учит агента аккуратно работать с задачами по расписанию: ставить напоминания без дублей, не тратить токены на пустые запуски, проверять каждое изменение и находить, где сломалась задача, которая не сработала. Pull request 3 октября влил Teknium из команды Nous Research, и у скилла появилась своя страница в документации Hermes: категория Automation, уровень Community, версия 1.2.0, лицензия MIT. Теперь его можно найти там же, где пользователи Hermes ищут остальные расширения, а не только по ссылке из нашего чата.
Почему cron-задачи агента ломаются незаметно
Кроны, или cron-задачи, — это то, что агент делает по расписанию: утренняя сводка, напоминание через полчаса, ночная проверка сервера. Именно они превращают агента из собеседника в помощника, и именно здесь проще всего ошибиться. Сбой в кроне выглядит как успех: инструмент ответил success: true, задача числится на паузе, последний статус — ok, а сообщения то продолжают приходить, то не приходят вовсе.
Причины обычно бытовые. Агент понял «через 30 минут» как 30m — а это не разовое напоминание, а повтор каждые полчаса. В промпте написано «пришли сводку», агент её присылает, а планировщик доставляет ещё раз. Доставка origin уходит в чат, где задачу создали, а не человеку, которому она нужна. Задача с пометкой паузы, но с enabled: true никогда не сработает, хотя в списке выглядит запланированной. Я наступил почти на всё это, пока держал в Hermes несколько десятков задач, — и каждую такую ошибку превратил в правило, которому агент теперь следует сам.
Что умеет hermes-cron
Выбирать правильное действие. Пауза, отключение и удаление — разные операции, и скилл объясняет агенту, когда какая нужна. Просьба «поставь утренний дайджест на паузу до понедельника» заканчивается паузой без дубля задачи и честным ответом, кто снимет её в понедельник: у Hermes нет отложенного возобновления для повторяющихся задач.
Не будить модель зря. Каждый вызов языковой модели расходует токены, а многим задачам по расписанию она нужна только иногда или не нужна вовсе. Три режима обходятся без лишнего вызова: задача-скрипт без агента (no_agent), предварительная проверка, которая решает, нужен ли запуск, и наблюдение за изменениями — «скажи, когда поменяется». Четвёртый режим, ответ [SILENT], экономит не токены, а твоё внимание: модель отработала, но сообщать нечего, и сообщение не уходит. Сторож «напиши, только если диск заполнен больше чем на 90 %» обходится без единого вызова модели, пока всё в порядке. Об экономии токенов в агентных системах у нас есть отдельный чек-лист.

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

Доктор. В комплекте — скрипт cron-doctor.py. Сам он ничего не записывает, не запускает и не удаляет задачи, не ходит в сеть и не трогает ключи. Он вызывает встроенную проверку hermes cron doctor и добавляет то, чего она не видит: отключённые и «полупаузные» задачи, серии сбоев, итог доставки последнего запуска, открытые инциденты и задачи с закреплённой моделью — такие не следуют общей настройке модели и не переключаются на резервную, когда провайдер лежит. Одна оговорка: встроенная проверка загружает задачи штатным загрузчиком Hermes, а он может исправить повреждённые записи в jobs.json — ровно так же, как при каждом обычном такте планировщика. Если нужен чисто читающий прогон, есть флаг --no-builtin.
Сбой, который нашёлся на продакшене
Последняя проверка доктора появилась после реального случая. На Hermes 0.21.3 у меня несколько дней подряд не выполнялась ни одна задача по расписанию — все падали с одной и той же ошибкой при запуске. Инцидент при этом не открывался, а сведения о сбоях в отдельных задачах сбрасывались после ближайшего успешного запуска, так что по каждой задаче в отдельности всё выглядело почти нормально. Причина была не в задачах, а в настройке сервера.
Теперь доктор ловит именно это: одна и та же ошибка в трёх и более задачах за сутки показывается один раз, как сбой планировщика или хоста, а не как десяток разрозненных проблем. Перед подачей в каталог скилл прошёл независимое ревью и прогон на живом агенте, а у доктора 43 автотеста без сети и внешних зависимостей.
Как установить hermes-cron
Нужен Hermes Agent 0.21 или новее; в каталоге заявлены Linux, macOS и Windows. Обычный путь — поставить как скилл, агент сам подхватит его по описанию:
hermes skills install itpartypattaya/hermes-cron/skills/hermes-cron
Или как переносимый плагин:
hermes plugins install itpartypattaya/hermes-cron --no-enable
hermes plugins enable hermes-cron
Дальше достаточно говорить с агентом обычными словами: «напомни через 30 минут позвонить в банк», «почему не пришёл утренний отчёт». Если ты поставил hermes-cron как обычный скилл, доктора можно запустить и вручную:
python3 ~/.hermes/skills/hermes-cron/scripts/cron-doctor.py
Если Hermes у тебя ещё не стоит, начни с установки и подключения к Telegram, потом — настройки после установки. Код, документация и место для вопросов — в репозитории на GitHub. Issues и pull requests приветствуются.




