Устранение неполадок автоматизации
Используйте эту страницу для проблем с планировщиком и доставкой (cron + heartbeat).
Командная лестница
Cron не срабатывает
cron statusсообщает, что включено, и указывает будущийnextWakeAtMs.- Задание включено и имеет корректное расписание/часовой пояс.
cron runsпоказываетokили явную причину пропуска.
cron: scheduler disabled; jobs will not run automatically→ cron отключён в конфиге/переменных окружения.cron: timer tick failed→ сбой тика планировщика; проверьте окружающий стек/контекст логов.reason: not-dueв выводе запуска → ручной запуск вызван без--force, и задание ещё не должно выполняться.
Cron сработал, но доставки нет
- Статус запуска —
ok. - Для изолированных заданий задан режим доставки/цель.
- Проба канала сообщает, что целевой канал подключён.
- Запуск успешен, но режим доставки —
none→ внешнее сообщение не ожидается. - Цель доставки отсутствует/некорректна (
channel/to) → запуск может завершиться успешно внутренне, но исходящая отправка пропускается. - Ошибки аутентификации канала (
unauthorized,missing_scope,Forbidden) → доставка заблокирована из‑за учётных данных/прав канала.
Heartbeat подавлен или пропущен
- Heartbeat включён с ненулевым интервалом.
- Результат последнего heartbeat —
ran(или причина пропуска понятна).
heartbeat skippedсreason=quiet-hours→ внеactiveHours.requests-in-flight→ основной поток занят; heartbeat отложен.empty-heartbeat-file→ существуетHEARTBEAT.md, но нет полезного содержимого.alerts-disabled→ настройки видимости подавляют исходящие сообщения heartbeat.
Подводные камни timezone и activeHours
Config path not found: agents.defaults.userTimezoneозначает, что ключ не задан; heartbeat откатывается к часовому поясу хоста (илиactiveHours.timezone, если задано).- Cron без
--tzиспользует часовой пояс хоста Gateway (шлюза). - Heartbeat
activeHoursиспользует настроенное разрешение часового пояса (user,localили явный IANA tz). - ISO‑временные метки без часового пояса трактуются как UTC для cron‑расписаний
at.
- Задания выполняются не в то «настенное» время после изменения часового пояса хоста.
- Heartbeat всегда пропускается днём, потому что
activeHours.timezoneзадан неверно.