Устранение неполадок автоматизации¶
Используйте эту страницу для проблем с планировщиком и доставкой (cron + heartbeat).
Командная лестница¶
openclaw status
openclaw gateway status
openclaw logs --follow
openclaw doctor
openclaw channels status --probe
Затем запустите проверки автоматизации:
openclaw cron status
openclaw cron list
openclaw system heartbeat last
Cron не срабатывает¶
openclaw cron status
openclaw cron list
openclaw cron runs --id <jobId> --limit 20
openclaw logs --follow
Корректный вывод выглядит так:
cron statusсообщает, что включено, и указывает будущийnextWakeAtMs.- Задание включено и имеет корректное расписание/часовой пояс.
cron runsпоказываетokили явную причину пропуска.
Общие подписи:
cron: scheduler disabled; jobs will not run automatically→ cron отключён в конфиге/переменных окружения.cron: timer tick failed→ сбой тика планировщика; проверьте окружающий стек/контекст логов.reason: not-dueв выводе запуска → ручной запуск вызван без--force, и задание ещё не должно выполняться.
Cron сработал, но доставки нет¶
openclaw cron runs --id <jobId> --limit 20
openclaw cron list
openclaw channels status --probe
openclaw logs --follow
Корректный вывод выглядит так:
- Статус запуска —
ok. - Для изолированных заданий задан режим доставки/цель.
- Проба канала сообщает, что целевой канал подключён.
Общие подписи:
- Запуск успешен, но режим доставки —
none→ внешнее сообщение не ожидается. - Цель доставки отсутствует/некорректна (
channel/to) → запуск может завершиться успешно внутренне, но исходящая отправка пропускается. - Ошибки аутентификации канала (
unauthorized,missing_scope,Forbidden) → доставка заблокирована из‑за учётных данных/прав канала.
Heartbeat подавлен или пропущен¶
openclaw system heartbeat last
openclaw logs --follow
openclaw config get agents.defaults.heartbeat
openclaw channels status --probe
Корректный вывод выглядит так:
- Heartbeat включён с ненулевым интервалом.
- Результат последнего heartbeat —
ran(или причина пропуска понятна).
Общие подписи:
heartbeat skippedсreason=quiet-hours→ внеactiveHours.requests-in-flight→ основной поток занят; heartbeat отложен.empty-heartbeat-file→ существуетHEARTBEAT.md, но нет полезного содержимого.alerts-disabled→ настройки видимости подавляют исходящие сообщения heartbeat.
Подводные камни timezone и activeHours¶
openclaw config get agents.defaults.heartbeat.activeHours
openclaw config get agents.defaults.heartbeat.activeHours.timezone
openclaw config get agents.defaults.userTimezone || echo "agents.defaults.userTimezone not set"
openclaw cron list
openclaw logs --follow
Быстрые правила:
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задан неверно.
Связанное: