Skip to Content
Руководство для пользователейВозможностиЗапланированные задачи

Запуск промптов по расписанию

Используйте /loop и инструменты планирования cron для многократного запуска промптов, опроса статуса или установки разовых напоминаний в рамках сессии Qwen Code.

Запланированные задачи позволяют Qwen Code автоматически перезапускать промпт через заданные интервалы. Используйте их для опроса статуса деплоя, мониторинга PR, проверки длительных сборок или напоминания о необходимости выполнить какое-либо действие позже в рамках сессии.

Задачи привязаны к сессии: они существуют только в текущем процессе Qwen Code и удаляются при выходе. На диск ничего не записывается.

Совет: Запланированные задачи включены по умолчанию. Чтобы отключить их, установите experimental.cron: false в настройках или задайте переменную окружения QWEN_CODE_DISABLE_CRON=1.

Планирование повторяющегося промпта с помощью /loop

Встроенный skill /loop — это самый быстрый способ запланировать повторяющийся промпт. Передайте необязательный интервал и сам промпт, и Qwen Code настроит cron-задачу, которая будет выполняться в фоновом режиме, пока сессия открыта.

/loop 5m check if the deployment finished and tell me what happened

Qwen Code разбирает интервал, преобразует его в cron-выражение, планирует задачу и подтверждает частоту выполнения и ID задачи. Затем он немедленно выполняет промпт один раз — вам не нужно ждать первого срабатывания cron.

Синтаксис интервалов

Интервалы необязательны. Вы можете указать их в начале, в конце или не указывать вовсе.

ФормаПримерРазобранный интервал
Интервал в начале/loop 30m check the buildкаждые 30 минут
Конструкция every в конце/loop check the build every 2 hoursкаждые 2 часа
Без интервала/loop check the buildпо умолчанию каждые 10 минут

Поддерживаемые единицы измерения: s для секунд, m для минут, h для часов и d для дней. Секунды округляются до ближайшей минуты, так как минимальная гранулярность cron составляет одну минуту. Интервалы, которые не делятся нацело на свою единицу, например 7m или 90m, округляются до ближайшего кратного значения, и Qwen Code сообщает, какой интервал был выбран.

Запуск другой команды в цикле

Запланированный промпт может сам быть командой или вызовом skill. Это полезно для повторного запуска уже упакованного рабочего процесса.

/loop 20m /review-pr 1234

При каждом срабатывании задачи Qwen Code выполняет /review-pr 1234 так, как если бы вы ввели это вручную.

Автономный режим

Запуск /loop без промпта запускает автономный цикл вместо повторения фиксированного промпта. Qwen Code выступает в роли куратора работы, уже определенной в диалоге, — он продолжает двигать задачу вперед, пока вас нет:

/loop

Простой /loop (без промпта и интервала) запускает автономный цикл в собственном темпе; /loop <интервал> без промпта запускает тот же автономный цикл с фиксированной частотой (например, /loop 10m). При каждом срабатывании он продвигает то, что уже было задано в диалоге: завершает начатые вами дела, поддерживает PR в рабочем состоянии (отвечает на комментарии в ревью, чинит падающий CI, разрешает конфликты) и выполняет взятые на себя обязательства. Он работает только с задачами, которые уже определены в истории диалога: он никогда не придумывает новую работу и не вносит необратимые изменения (push, delete, send) без явного разрешения, и останавливается, когда все задачи выполнены.

Управление циклами

/loop также поддерживает две подкоманды для управления существующими задачами:

/loop list

Выводит список всех запланированных задач с их ID и cron-выражениями.

/loop clear

Отменяет все запланированные задачи сразу.

Установка разового напоминания

Для разовых напоминаний опишите то, что вам нужно, на естественном языке вместо использования /loop. Qwen Code запланирует задачу с однократным срабатыванием, которая удалит сама себя после выполнения.

remind me at 3pm to push the release branch
in 45 minutes, check whether the integration tests passed

Qwen Code фиксирует время срабатывания на конкретной минуте и часе с помощью cron-выражения и подтверждает, когда оно произойдет.

Управление запланированными задачами

Попросите Qwen Code на естественном языке вывести список или отменить задачи, либо обратитесь к базовым инструментам напрямую.

what scheduled tasks do I have?
cancel the deploy check job

Под капотом Qwen Code использует следующие инструменты:

ИнструментНазначение
CronCreateПланирование новой задачи. Принимает cron-выражение из 5 полей, промпт для запуска и указание, будет ли она повторяться или сработает один раз.
CronListВывод списка всех запланированных задач с их ID, расписаниями и промптами.
CronDeleteОтмена задачи по ID.

Каждая запланированная задача имеет 8-символьный ID, который можно передать в CronDelete. В рамках одной сессии может быть до 50 запланированных задач одновременно.

Как выполняются запланированные задачи

Планировщик каждую секунду проверяет наличие задач, готовых к выполнению, и ставит их в очередь, когда сессия простаивает. Запланированный промпт срабатывает между вашими обращениями, а не во время генерации ответа Qwen Code. Если Qwen Code занят, когда наступает время выполнения задачи, промпт ожидает до завершения текущего обращения.

Все время интерпретируется в вашем локальном часовом поясе. Cron-выражение вроде 0 9 * * * означает 9 утра там, где вы запускаете Qwen Code, а не по UTC.

Джиттер

Чтобы избежать одновременного обращения всех сессий к API в одно и то же абсолютное время, планировщик добавляет небольшое детерминированное смещение ко времени срабатывания:

  • Повторяющиеся задачи срабатывают с задержкой до 10% от их периода, но не более 15 минут. Часовая задача может сработать в любое время от :00 до :06.
  • Разовые задачи, запланированные на начало или середину часа (минута :00 или :30), срабатывают на 90 секунд раньше.

Смещение вычисляется на основе ID задачи, поэтому одна и та же задача всегда получает одно и то же смещение. Если точное время имеет значение, выберите минуту, отличную от :00 или :30, например 3 9 * * * вместо 0 9 * * *, и джиттер для разовых задач не будет применяться.

Срок жизни повторяющихся задач

По умолчанию повторяющиеся задачи автоматически истекают через 7 дней после создания. Задача срабатывает в последний раз, а затем удаляет сама себя. Это ограничивает время работы забытого цикла.

Чтобы изменить этот лимит, установите experimental.cronRecurringMaxAgeDays в настройках или задайте переменную окружения QWEN_CODE_CRON_MAX_AGE_DAYS (переменная окружения имеет приоритет — это удобно для облачных или контейнерных развертываний, где редактирование settings.json нецелесообразно). Значение 0 полностью отключает срок жизни, поэтому задачи будут выполняться до тех пор, пока вы их не удалите. Это полезно для долгоживущих daemon-развертываний, которые генерируют ежедневные отчеты, дайджесты или осуществляют постоянный мониторинг. Настроенный лимит также применяется к постоянным задачам, восстановленным с диска после перезапуска.

Разовые задачи не истекают по таймеру — они просто удаляют сами себя после однократного срабатывания.

Справочник по cron-выражениям

CronCreate принимает стандартные cron-выражения из 5 полей: минута час день_месяца месяц день_недели. Все поля поддерживают подстановочные знаки (*), одиночные значения (5), шаги (*/15), диапазоны (1-5) и списки, разделенные запятыми (1,15,30).

ПримерЗначение
*/5 * * * *Каждые 5 минут
0 * * * *Каждый час в начале часа
7 * * * *Каждый час на 7-й минуте
0 9 * * *Каждый день в 9:00 по местному времени
0 9 * * 1-5По будням в 9:00 по местному времени
30 14 15 3 *15 марта в 14:30 по местному времени

В поле день_недели используется 0 или 7 для воскресенья и 6 для субботы. Если ограничены оба поля: день_месяца и день_недели (ни одно из них не равно *), дата совпадает, если совпадает хотя бы одно из полей — это соответствует стандартной семантике vixie-cron.

Расширенный синтаксис, такой как L, W, ?, и псевдонимы названий, такие как MON или JAN, не поддерживаются.

Ограничения

Планирование, привязанное к сессии, имеет свои неотъемлемые ограничения:

  • Задачи срабатывают только тогда, когда Qwen Code запущен и простаивает. Закрытие терминала или завершение сессии отменяет все задачи.
  • Нет компенсации пропущенных срабатываний. Если время выполнения задачи прошло, пока Qwen Code был занят длительным запросом, она сработает один раз, когда Qwen Code освободится, а не по одному разу за каждый пропущенный интервал.
  • Нет сохранения между перезапусками. Перезапуск Qwen Code очищает все задачи, привязанные к сессии.
Last updated on