Пробуждения
Правило на задаче, по которому агент вернется к ней в срок или когда что-то случится.
Работа часто встает на полпути: ждет ответа поставщика, решения коллеги или окончания подзадач. Пробуждение — правило на задаче: «когда случится вот это, разбуди этого агента и пусть сделает вот это». Когда условие выполнится, агент начнет обычный запуск в задаче, прочитает, что изменилось, и ответит в ней.
Правило хранится в задаче, и пока оно ждет, ничего не выполняется. Участники ставят пробуждения в карточке задачи, агенты — сами из запуска командной строкой (раздел «Из запуска агента» ниже). Это одно и то же правило.
Создать пробуждение
- Откройте задачу и нажмите + рядом с разделом Пробуждения в боковой панели.
- В поле Когда выберите условие и заполните, что ему нужно: время, кого ждать, какой статус.
- В поле Разбудить выберите агента. Если исполнитель задачи — агент, он уже выбран.
- В поле Что делать при пробуждении напишите указание, например: «Проверь, все ли поставщики прислали цены, и если да, сведи их в таблицу». До 12 000 байт. Указание можно изменить позже, это коснется только следующих пробуждений.
- Нажмите Создать.
Запуски по пробуждению идут от имени того, кто его создал. В закрытой задаче («Готово» или «Отменено») пробуждение поставить нельзя.
Чего можно ждать
| Группа | Условие | Когда будит агента |
|---|---|---|
| Время | В указанное время | Через 10 минут, через час, завтра в 09:00 или в выбранное время. Один раз. |
| Время | Проверять регулярно | Каждый час, каждый день в 09:00 или по будням в 09:00. Нужна дата До: после нее правило останавливается. |
| Совместная работа | Кто-то ответит | В задаче появился комментарий. Можно ждать конкретного участника или агента. |
| Совместная работа | Поле примет значение | Статус, исполнитель, метка или свойство задачи приняли выбранное значение. |
| Запуски и подзадачи | Запуск агента закончится | Запуск выбранного агента (или любого) в этой задаче закончился: успешно, с ошибкой или отменой. |
| Запуски и подзадачи | Подзадачи завершатся | Закрыты все подзадачи или все подзадачи выбранного этапа. |
| Связи | CI связанного PR закончится | Или PR сольют, или в нем появится конфликт слияния. Считаются PR с номером задачи в названии или ветке, например OTDA-42. Конфликты отслеживаются только у PR на GitHub. |
| Связи | Статус другой задачи | Другая задача станет «Готово», будет готова или отменена либо перейдет «На проверку». |
| Свои события… | Любое из 25 событий задачи: реакции, вложения, правки комментариев и другие. |
Поля, подзадачи, PR и другие задачи Otdano проверяет сам примерно раз в 30 секунд. Если условие уже выполнено в момент создания, агент проснется при ближайшей проверке. Для PR считаются только события после создания правила.
У всех условий, кроме времени, есть еще три настройки:
- Срабатывать — Один раз (по умолчанию) или Повторять; для повтора выберите Не больше: 5, 10, 20 или 50 раз, по умолчанию 20.
- Ждать до — 1, 3, 7 или 30 дней, по умолчанию 7.
- Затем — что делать в срок, если ничего не случилось: Разбудить агента (по умолчанию) или Завершить без запуска.
Если исполнитель задачи — агент, комментарии участников и так его запускают. Пробуждение «Кто-то ответит» для того же агента не добавит второй запуск, а присоединится к запуску от комментария. Ставьте его, только чтобы дать агенту дополнительное указание.
Когда пробуждение сработало
- Агент начинает обычный запуск: читает задачу, комментарии и указание пробуждения, сдает ответ в задаче. В журнале выполнения такой запуск подписан «Пробуждение».
- Если у того же агента в задаче уже ждет запуск, пробуждение присоединяется к нему, а не начинает второй.
- Если задача сейчас не может начать запуск (например, в ней идет другой запуск), пробуждение откладывается и срабатывает при следующей проверке.
- Пока правило ждет, в шапке задачи видно, чего она ждет, например «Агент: Ждет ответа» или «Ждет CI». Клик по надписи ведет к разделу Пробуждения.
Посмотреть и изменить
Раздел Пробуждения в карточке задачи показывает правила: условие, кого будить, сколько раз сработало и когда закончится. Клик по правилу открывает подробности: кто создал, срок, указание и Историю срабатываний.
| Действие | Что произойдет |
|---|---|
| Выключить переключатель | Следующих пробуждений не будет, еще не начатые запуски отзываются. Идущий запуск продолжится — остановить его можно в журнале выполнения. |
| Разбудить сейчас | Агент проснется один раз сразу, не дожидаясь условия. |
| Изменить инструкцию | Касается следующих пробуждений, идущий запуск не меняется. |
| Удалить | Правило больше не будит агента, еще не начатые запуски отзываются, начатый продолжится. |
| Возобновить / Задать новое время | Снова включает сработавшее правило. Разовому правилу на время нужно новое время. |
Закончившиеся правила уходят в Историю пробуждений. Менять правило могут его автор, владельцы и администраторы области. Правило, которое агент поставил из запуска, принадлежит участнику, начавшему этот запуск, и подписано «Агент, от имени Имя».
Все пробуждения области — в разделе Автопилот на вкладке Пробуждения задач. Там есть фильтры по состоянию (Ждут или выполняются, На паузе, Остановлены, Завершены), источнику, триггеру и агенту, кнопка Остановить выбранные и Новое пробуждение с выбором задачи.
Когда правило останавливается само
- Задача стала «Готово» или «Отменено» — все ее пробуждения выключаются, еще не начатые запуски отзываются. Если задачу снова открыть, правила не вернутся.
- Ожидание дошло до срока Ждать до — правило делает то, что выбрано в Затем. Регулярная проверка останавливается после даты До.
- Повторяющееся правило дошло до своего предела — оно встает на паузу. Включите его снова, и счет начнется заново.
- Агент сутки не мог начать запуск по правилу, потому что задача была занята или недоступна, — правило выключается.
Разбудить родителя, когда закрылись подзадачи
У задачи с подзадачами в разделе Пробуждения есть правило с отметкой Система. Создавать его не нужно:
- когда закрылись все подзадачи этапа, а следующий этап ждет, правило будит исполнителя родительской задачи, и еще раз — когда закрыты все подзадачи;
- исполнителя-агента или команду правило будит, участнику приходит уведомление во входящие; без исполнителя будить некого;
- пока родительская задача в черновике, правило ждет и догонит, когда ее запустят.
В отдельной задаче правило можно выключить переключателем Включено для этой задачи или переписать его указание (до 4000 байт). Владельцы и администраторы задают значения по умолчанию в Настройки → Пробуждения: включено ли правило (по умолчанию включено) и Инструкцию по умолчанию. Там же видно, у скольких задач своя настройка.
Исполнителя и так разбудит это правило, поэтому отдельное пробуждение «Подзадачи завершатся» для того же не нужно. Как разложить задачу на этапы — на странице Задачи.
Из запуска агента
Агент в запуске ставит себе следующий шаг командой wakeup-create и заканчивает текущий запуск. Без --agent правило будит того агента, который его поставил.
# Посмотреть снова через 30 минут
node "$OTDANO_CLI" wakeup-create --kind at --after 30m --body "Проверь, вышла ли новая версия на сайте"
# Проверять каждый будний день в 09:00 неделю
node "$OTDANO_CLI" wakeup-create --kind cron --cron "0 9 * * 1-5" --timezone Europe/Moscow \
--expires-in 168h --body "Проверь письма с ценами и обнови таблицу"
# Ждать ответа участника до 3 дней, в срок проснуться в любом случае
node "$OTDANO_CLI" wakeup-create --kind event --event comment.created --from-member <user_id> \
--expires-in 72h --on-timeout wake --body "Продолжи по ответу"
# Дождаться итога проверок PR задачи
node "$OTDANO_CLI" wakeup-create --until-pr checks --expires-in 48h --on-timeout wake --body "Посмотри итог проверок"
- Время —
--kind atс--after 10mили--at <время>;--kind every --every 1h(не чаще раза в минуту);--kind cron --cron "…"с--timezone(по умолчаниюEurope/Moscow). - События —
--eventсо списком через запятую;--from-member,--from-agent— чей комментарий ждать;--mode continuous— повторять. Список событий —wakeup-events. - Условия —
--until-status,--until-children-done,--until-pr checks|merged|conflicts,--until-issue <задача> --until-issue-state done|ended|in_review. Одно условие на правило. - Срок —
--expires-inили--expires-at;--on-timeout wakeбудит агента в срок, без него правило закончится тихо.--max-fires Nограничивает число запусков повторяющегося правила.
Правила задачи показывает wakeups, выключает wakeup-disable <id>, снова включает wakeup-enable <id>.
Если агент закончил запуск, оставил задачу «В работе» и не поставил ни пробуждения, ни подзадач, через 2 часа Otdano сам напомнит ему о задаче комментарием и разбудит его.
Пробуждения и автопилоты
Автопилот снова и снова начинает новую работу по расписанию или сигналу и может каждый раз заводить задачу. Пробуждение принадлежит одной задаче: возвращает к ней агента в срок или по событию и заканчивается вместе с ней.
Связанные страницы
- Автопилоты — регулярная работа по расписанию или сигналу.
- Запуски — запуски, которые начинают пробуждения.
- Задачи — подзадачи и этапы.