Встроенный планировщик запускает скрипты по расписанию — для этого не нужен ни «крон» на сервере (системный планировщик задач), ни другие внешние инструменты. Всё расписание — это один файл schedule.yml в папке скриптов, которым управляет агент: вы просите в чате «запускай каждый день в 9 утра» — агент вносит запись сам.
Как устроено расписание
Файл schedule.yml — это список записей. У каждой записи:
id— название записи;script— путь к скрипту внутри папки;- описание — зачем эта задача;
- и одно из двух:
every— интервал (например,15m,24h,7d) илиcron— точное время по полям: минута, час, день месяца, месяц, день недели (по UTC); - дополнительные флаги:
enabled(запись включена),overlap— что делать, если прошлый запуск ещё идёт (пропустить или поставить в очередь),catchUp— догонять ли пропущенные запуски.
Интервалы: без дрейфа
Новая запись с интервалом запускается сразу, а дальше тикает по фиксированной сетке: каждые 15 минут, каждые 24 часа — точно, без накопления задержек. Если приложение простаивало (например, сервер перезагружался), следующий запуск — первая точка сетки в будущем, а не «плавающее» время от включения.
Точное время
Запись с точным временем ждёт совпадения по часам (UTC): «каждый будний день в 7:00». Выражения, у которых будущих срабатываний нет (например, 31 февраля), не теряются — перепроверяются позже.
Валидация «всё или ничего»
Весь файл проверяется целиком: одна плохая запись — и весь новый файл отклоняется, а действует последняя рабочая версия расписания. Сломать расписание одной опечаткой невозможно, данные не останутся без запусков. Отсутствие файла — не ошибка: просто расписания нет, ничего не запускается.
Пропущенные запуски
Если время запуска пришло, пока приложение было выключено, запуск выполнится при старте (если включён catchUp) или будет пропущен по правилам очереди. Запуски не теряются молча — поведение всегда предсказуемо.
Управление в интерфейсе
Раздел «Планировщик» показывает все записи: что запускается, когда и с каким интервалом. Отсюда можно приостановить всё расписание целиком, поставить на паузу одну запись, запустить скрипт прямо сейчас кнопкой «Запустить сейчас» и посмотреть историю запусков по расписанию. Сам файл в интерфейсе не редактируется: изменения расписания просите в чате — агент обновит schedule.yml, а правки подхватятся на лету, без перезапуска приложения.
Читайте также: Запуски, Чат с агентом.