Запланированные задачи
Система запланированных задач Elftia (Cron) позволяет автоматически выполнять повторяющиеся действия по расписанию. Поддерживаются два типа действий — уведомления на рабочем столе и выполнение задач AI Agent — с возможностью отправки результатов в мессенджеры через Channel.
Варианты использования
- Каждое утро в 9:00 AI делает сводку последних технических новостей
- Проверка статуса API каждые 30 минут с отправкой уведомления
- Одноразовое напоминание в указанное время
- Периодический запуск AI Agent для анализа данных с отправкой результатов в Discord или Telegram
- Автоматическое составление плана работы на неделю каждое утро в понедельник
Создание запланированной задачи
Шаги
- Откройте страницу управления Cron (через боковую панель или навигационное меню)
- Нажмите кнопку Создать задачу
- Заполните информацию о задаче:
- Название задачи — дайте задаче понятное имя
- Описание (необязательно) — подробно опишите назначение задачи
- Тип расписания — выберите частоту выполнения (см. типы расписаний ниже)
- Тип действия — выберите уведомление или выполнение Agent
- Содержание сообщения — текст уведомления или промпт для Agent
- (Необязательно) Настройте отправку в Channel
- (Необязательно) Выберите LLM-провайдера и модель для задач Agent
- Нажмите Сохранить
Типы расписаний
Elftia поддерживает три метода планирования, охватывающих любые потребности — от простых до сложных.
Cron-выражение
Используйте стандартное 5-полевое cron-выражение для точного управления временем выполнения.
Формат: минута час день месяц день_недели
| Поле | Диапазон | Специальные символы |
|---|---|---|
| Минута | 0-59 | * , - / |
| Час | 0-23 | * , - / |
| День | 1-31 | * , - / |
| Месяц | 1-12 | * , - / |
| День недели | 0-7 (0 и 7 — воскресенье) | * , - / |
Распространённые примеры:
| Выражение | Значение |
|---|---|
0 9 * * * | Каждый день в 9:00 |
30 8 * * 1-5 | По будням в 8:30 |
0 */2 * * * | Каждые 2 часа в начале часа |
0 9 1 * * | Первого числа каждого месяца в 9:00 |
0 9 * * 1 | Каждый понедельник в 9:00 |
*/15 * * * * | Каждые 15 минут |
0 9,18 * * * | Каждый день в 9:00 и 18:00 |
Справка по специальным символам:
| Символ | Описание | Пример |
|---|---|---|
* | Соответствует всем значениям | * * * * * — каждую минуту |
, | Перечисление нескольких значений | 0,30 * * * * — в 0 и 30 минут каждого часа |
- | Диапазон | 0 9-17 * * * — в начале каждого часа с 9 до 17 |
/ | Шаг | */10 * * * * — каждые 10 минут |
:::tip Визуальная помощь При создании задачи интерфейс предоставляет визуальный выбор режима расписания с пресетами: ежедневно, по будням, еженедельно, ежемесячно, ежечасно — не нужно писать cron-выражение вручную. При выборе пресета автоматически генерируется соответствующее cron-выражение. :::
Интервальное выполнение (every)
Повторяйте задачу через фиксированный интервал.
Формат: число + единица
| Единица | Символ | Пример |
|---|---|---|
| Секунды | s | 30s — каждые 30 секунд |
| Минуты | m | 5m — каждые 5 минут |
| Часы | h | 1h — каждый час |
| Дни | d | 3d — каждые 3 дня |
Особенности поведения:
- Интервал отсчитывается с момента завершения предыдущего выполнения
- После перезапуска приложения система возобновляет отсчёт с последнего зафиксированного времени выполнения и не срабатывает немедленно
Однократное выполнение (at)
Выполняет задачу один раз в указанное точное время; после выполнения автоматически отключается.
Формат: строка даты и времени в формате ISO 8601
Пример: 2026-04-15T09:00:00
Особенности поведения:
- Задача срабатывает в следующем цикле проверки после наступления указанного времени (интервал проверки — 30 секунд)
- После выполнения задача автоматически переходит в состояние отключена
- Просроченные одноразовые задачи не запускаются
Типы действий
Уведомление (notify)
Отправить системное уведомление на рабочем столе.
- При срабатывании задачи появляется уведомление на рабочем столе с именем задачи и содержанием сообщения
- Требует разрешения системы на отправку уведомлений приложением
- Можно включить или отключить в настройках уведомлений Elftia
Выполнение Agent (agent)
Запустить AI Agent для выполнения указанного задания по промпту.
- При срабатывании задачи система отправляет содержание сообщения в качестве промпта AI Agent
- Agent выполняет инструкции из промпта и генерирует ответ
- Ответ записывается в историю выполнения (сохраняются первые 2 000 символов)
- Если для задачи не настроен Channel, результат выполнения отображается через уведомление на рабочем столе (управляется параметром
notifyOnComplete)
Настройка LLM-провайдера
Для задач Agent можно указать LLM-провайдера и модель:
| Параметр | Описание |
|---|---|
| Провайдер (providerId) | Выбрать LLM-провайдера для выполнения задачи |
| Модель (model) | Выбрать конкретную AI-модель |
Если не указано, используются текущий провайдер и модель по умолчанию.
Отправка в Channel
Запланированные задачи поддерживают отправку результатов выполнения на внешние платформы обмена сообщениями (Discord, Telegram и другие).
Шаги настройки
- При создании или редактировании задачи включите Отправку в Channel
- Выберите целевой Channel (должен быть предварительно настроен в управлении Channel)
- Введите целевой Chat ID (идентификатор группы или канала внутри Channel)
- После завершения выполнения Agent результаты автоматически отправляются в указанный Channel
Особенности поведения
- Для задач Agent с настроенным Channel промпт содержит информацию о Channel
- Agent получает инструкцию использовать MCP-инструмент
channel_sendдля отправки результатов в целевой Channel - Задачи Agent без настроенного Channel выполняются только локально, результаты отображаются через уведомление на рабочем столе
История выполнения
История выполнения каждой задачи записывается автоматически. Для каждой задачи сохраняется не более 200 последних записей.
Поля записи истории
| Поле | Описание |
|---|---|
| Временная метка | Время начала выполнения |
| Статус | ok (успех) или error (ошибка) |
| Длительность | Время выполнения (миллисекунды) |
| Сообщение об ошибке | Описание ошибки при сбое |
| Ответ Agent | Содержание ответа задачи Agent (до 2 000 символов) |
Просмотр истории
- Нажмите на задачу на странице управления Cron
- Разверните панель сведений о задаче
- Перейдите на вкладку История выполнения
Управление задачами
Пауза / Возобновление
- Нажмите переключатель задачи, чтобы приостановить или возобновить её
- Приостановленная задача не запускается, пока не будет снова включена
Запустить сейчас
- Нажмите кнопку Запустить сейчас для ручного однократного запуска задачи
- Не влияет на обычное расписание задачи
- Если задача уже выполняется, повторное нажатие не создаёт параллельное выполнение
Редактирование
- Нажмите на задачу для перехода в режим редактирования
- Можно изменить название, описание, тип расписания, тип действия и настройки Channel
- После сохранения изменений время следующего выполнения пересчитывается автоматически
Удаление
- При удалении задачи также удаляются записи её истории выполнения
- Удаление нельзя отменить
Трансляция событий статуса
Запланированные задачи транслируют события статуса во фронтенд во время выполнения:
| Статус | Описание |
|---|---|
running | Задача запущена |
success | Задача выполнена успешно |
error | Задача завершилась с ошибкой |
Интерфейс в реальном времени обновляет индикатор статуса задачи, позволяя наблюдать за фоновыми задачами с первого взгляда.
Поведение системы
| Поведение | Описание |
|---|---|
| Интервал опроса | Перезагрузка конфигурации задач каждые 5 секунд |
| Интервал проверки | Проверка времени расписания каждые 30 секунд |
| Дедупликация Cron | Одна и та же cron-задача срабатывает только один раз в пределах одной минуты |
| Контроль параллелизма | Одна и та же задача не выполняется одновременно несколько раз |
| Хранение данных | Конфигурации задач хранятся в jobs.json; записи истории — в директории runs/ |
Часто задаваемые вопросы
| Проблема | Решение |
|---|---|
| Задача не выполнилась вовремя | Убедитесь, что задача включена, а выражение расписания задано правильно |
| Cron-выражение недопустимо | Используйте визуальный режим расписания в интерфейсе или обратитесь к примерам выражений выше |
| Выполнение задачи Agent завершилось с ошибкой | Убедитесь, что LLM-провайдер настроен правильно, а API Key действителен |
| Сообщение в Channel не получено | Убедитесь, что Channel настроен корректно, а Chat ID указан верно |
| Одноразовая задача не была запущена | Убедитесь, что указанное время ещё не наступило; время должно быть в формате ISO |
| Записи истории обрезаются | Система автоматически сохраняет последние 200 записей; более старые удаляются |
| Интервальная задача запускается сразу после перезапуска приложения | В норме запуска немедленно не происходит; система возобновляет отсчёт с последнего времени выполнения |