Возможности
- Два типа задач: команда оболочки (Terminal) или промпт для ИИ.
- Расписание словами или точно: каждые 5, 15 или 30 минут, каждый час, ежедневно, по будням, еженедельно, ежемесячно — с выбором часа и минуты. Для нестандартных случаев есть поле своего выражения cron.
- Показывает человеческим языком, когда задача выполнится в следующий раз, и подсказывает следующие три запуска прямо в форме.
- Часовой пояс задаётся отдельно: чипы с основными зонами плюс поле для любой другой. Задание «в 9 утра» сработает в 9 утра именно в выбранной зоне.
- Повторы при ошибке: сколько раз пробовать ещё и с какой паузой. По умолчанию одна попытка без повторов.
- Что делать с пропущенными запусками, если телефон выключался: пропустить, выполнить один раз или выполнить все.
- Уведомление о завершении: обычное системное уведомление телефона, если задача это просит. По нажатию открывает нужную задачу. Уведомление можно отключить целиком в настройках приложения.
- Запуск вручную: кнопкой у задачи, не дожидаясь расписания. Долгую задачу можно остановить на лету — сначала вежливое завершение, потом принудительное. Задача, которая уже идёт, второй раз не запустится: кнопка скажет, что она занята. Если свободных слотов нет, будет отказ, а не очередь.
- Поиск по списку: имя, команда, расписание, часовой пояс или теги.
- Дублирование задачи — чтобы не настраивать похожую заново.
- Удаление задачи убирает только её саму: история прошлых прогонов остаётся в общем журнале.
- История прогонов с живым выводом: видно, что задача пишет прямо сейчас. Фильтры «все», «успешные», «провальные», догрузка более старых записей, копирование вывода и очистка истории.
- Шесть готовых шаблонов, чтобы не придумывать команду с нуля: проверка свободного места, уборка временных файлов старше недели, недельный бэкап папки проекта, проверка связи с интернетом, еженедельное обновление Termux и ежедневный дайджест от ИИ.
- Общая пауза: останавливает все задачи разом, не трогая их настройки. Уже идущие задачи при этом не прерываются — пауза влияет только на запуск новых по расписанию. Кнопка «запустить сейчас» паузу не спрашивает, так что задачу всё равно можно запустить вручную.
Технические данные
| Параметр | Значение |
|---|---|
| Где живут задачи | в сервере на телефоне, приложение — только интерфейс |
| Формат расписания | cron из 5 полей: минуты, часы, день, месяц, день недели |
| Точность | проверка расписания раз в минуту, секунд не поддерживается |
| Параллельных задач | не больше 3, лишние ждут следующей проверки |
| Таймаут по умолчанию | 300 секунд |
| Размер вывода в логе | до 256 КБ на каждый из двух потоков, дальше обрезается |
| Статусы прогона | успех, ошибка, таймаут, прерван, идёт |
| Теги | вводятся через запятую |
| Пауза уведомлений | общий выключатель в настройках приложения |
| Работа агента | только через REST-вызовы, своих инструментов нет |
Где что живёт
Планировщик работает не в приложении, а в сервере на телефоне. Приложение умеет только нарисовать список, отправить изменения и показать вывод. Поэтому:
- если сервер не запущен, планировщик молчит, а список в приложении пустеет;
- задачи переживают перезапуск приложения и самого телефона — они на диске;
- выполняются они от имени сервера, то есть в обычном Termux, с его окружением и правами.
Про два типа задач
- Команда оболочки выполняется через
bash -c. То есть работает всё, что обычно работает в терминале: утилиты Termux,pkg,find, скрипты. Процесс запускается отдельной группой, поэтому остановка задачи действительно убивает и дочерние процессы, а не только саму команду. - Промпт ИИ уходит не агентам в чате, а веб-ИИ: это тот же путь, что у обычного запроса к DeepSeek через аккаунты. Ответ целиком пишется в лог задачи. Агент в чате такой запрос не выполняет и в логах не участвует. У запроса два потолка: квота аккаунта — 100 обращений в сутки на аккаунт, и пять минут на ответ — даже если таймаут задачи больше. Если аккаунты закончились или сломались, задача упадёт с ошибкой.
Про очередь и повторы
Одновременно выполнятся максимум три задачи — столько, сколько телефон потянет по памяти. Если все три места заняты, лишняя задача не ставится в очередь, а просто ждёт следующей минутной проверки: тогда она и стартует. Ничего не теряется, но задержка может быть заметной, если задачи долгие.
При ручном запуске поведение другое: если мест нет, сразу приходит отказ «занято, попробуйте позже», а не ожидание.
Повторы срабатывают только при ошибке. Таймаут и остановка вручную повторов не вызывают — на них задача просто заканчивается. Пауза между попытками растёт: по умолчанию 30 секунд перед второй, 60 перед третьей и так дальше, но не больше пяти минут. Каждая попытка пишется в историю отдельной записью, так что видно все попытки, а не только последнюю.
Про пропущенные запуски
Если задача должна была сработать, пока телефон был выключен или сервер лежал, при следующем старте поведение зависит от настройки:
none— пропустить, просто пересчитать время следующего запуска;once— выполнить один раз (по умолчанию);all— задумано как «выполнить все пропущенные», но сейчас работает так же, какonce: задача запускается один раз. Разницы между этими двумя вариантами планировщик не делает.
Ограничение общее для обоих режимов: за одну проверку планировщик берёт не больше десяти задач, у которых подошло время. Остальные ждут следующей минутной проверки — поэтому за раз большая лавина не обрушивается.
Что показывает лог
Каждый прогон пишется отдельной записью: когда начался, когда закончился, с каким статусом и кодом завершения, что ушло в обычный вывод и что — в вывод ошибок. Если вывод не влез, запись помечается обрезанной. Активный прогон показывается отдельно и обновляется на лету.
Пока задача выполняется, её вывод подтягивается каждые две секунды; список задач обновляется раз в пять секунд, пока экран открыт.
История бывает общей для всех задач и для конкретной задачи; её можно очистить целиком или по одной записи. Сами задачи при этом не трогаются. А удаление задачи наоборот убирает только её, а история прогонов остаётся в общем журнале.
Что агент умеет с планировщиком
Собственных инструментов у планировщика нет — ни одного. Агент работает с ним через обычные запросы к серверу:
- Посмотреть список задач и статус планировщика: на паузе ли он, сколько задач и сколько из них включено, что выполняется прямо сейчас, когда ближайший запуск и как давно сервер работает. Там же — счётчики: сколько запусков было всего, сколько провалилось и сколько прервано. Ответ приходит только если сервер жив, так что это заодно проверка живости.
- Создать, изменить, включить, выключить и удалить задачу, задав имя, тип, команду или промпт, расписание, часовой пояс, таймаут, повторы, рабочую папку, переменные окружения, теги и уведомление о завершении. Имя и команда обязательны, тип ограничен двумя значениями, а неверное расписание или часовой пояс сервер отклоняет при сохранении, а не молча.
- Запустить задачу прямо сейчас и прервать её, если она идёт долго.
- Проверить расписание до сохранения: сервер считает и говорит, правильное ли выражение, и показывает следующие три запуска. Без этой проверки можно было бы сохранить задачу с опечаткой и потом не понять, почему она молчит.
- Прочитать историю прогонов и вывод задачи, включая провальные — чтобы понять, почему упало.
- Очистить историю прогонов, а также выгрузить все задачи в файл и загрузить их обратно — удобно для переноса на другое устройство. При загрузке расписание пересчитывается под текущее время, а задача, которая уже есть, не добавляется второй раз — она пропускается. Поэтому один и тот же файл можно загружать сколько угодно без вреда. Но переименование задачи не поможет: узнаёт он её по внутреннему номеру, а не по имени.
Что важно понимать: команда задачи — обычная команда оболочки, поэтому агент может выполнить её и через терминал, минуя планировщик. Единственное, чего он не делает, это сам запуск по расписанию: расписание срабатывает на сервере, когда агент может и не работать.
Ограничения
- Без работающего сервера планировщик не работает вообще.
- Секунд в расписании нет: минимальная частота — раз в минуту.
- Задачи типа «промпт ИИ» уходят в веб-ИИ и тратят квоту аккаунта, а не выполняются агентом в чате.
- Пауза общая для всех задач: поставить на паузу одну задачу, не выключив остальные, нельзя. На паузе не срабатывает расписание, но ручной запуск по-прежнему работает.
- Если задача падает и повторы закончились, она не «залипнет» — просто останется с последним провальным прогоном в истории.
- Секундная точность и запуск «в этом часе при любом времени» недоступны.