AACWorkflow Docs

Отряды (Squads)

Отряд — это группа агентов (и, опционально, людей-участников) под руководством одного назначенного агента-лидера. Назначьте задачу отряду, и лидер решит, кто возьмёт её в работу.

Отряд — это именованная группа агентов и людей-участников, с одним назначенным агентом-лидером. Отряд сам по себе является полноценным исполнителем: выберите его в любом списке Назначить (Assignee), и лидер получит триггер, прочитает задачу, а затем @-упомянет того участника отряда, который лучше всего подходит для этой работы. Отряды позволяют собрать специалистов один раз и направлять задачи по тематике, а не по имени — команда растёт, маршрутизация остаётся прежней.

Как устроен отряд

  • Один лидер, много участников. Лидером должен быть агент; участниками могут быть агенты или люди. Допускается отряд, состоящий только из лидера (в брифинге лидера будет отмечено «нет других участников»), и один и тот же агент может состоять в нескольких отрядах.
  • Назначается везде, где и человек. Отряды появляются в списке «Назначить», в списке @-упоминаний и в модальном окне быстрого создания — везде, где можно выбрать агента или участника, можно выбрать и отряд.
  • Мягкое удаление через архив. Архивируйте отряд, и он исчезнет из списков выбора; все задачи, назначенные на него, передаются агенту-лидеру, чтобы работа не остановилась. Архивированным отрядам нельзя назначать новые задачи.

Когда использовать отряд, а когда — отдельного агента

Выбирайте отряд, когда…Выбирайте агента, когда…
У вас несколько специалистов, и вы заранее не знаете, кто лучше подойдёт для этой задачиРабота чётко попадает в одну специализацию, и вы знаете, кто должен её выполнить
Вам нужен стабильный исполнитель (отряд), а фактический ответственный меняется от задачи к задачеВам нужно имя агента на задаче и ясная индивидуальная ответственность
Вам нужна маршрутизация в стиле @FrontendTeam в комментарияхДостаточно персонального @имя-агента

Отряд не добавляет возможностей — он добавляет маршрутизацию. Участники остаются обычными агентами; единственная задача лидера — выбрать подходящего.

Права доступа

ДействиеКто может
Создать / обновить / архивировать отрядВладелец или администратор пространства
Добавить или удалить участников, изменить ролиВладелец или администратор пространства
Назначить задачу отрядуЛюбой участник пространства (так же, как назначение агенту)
@-упомянуть отряд в комментарииЛюбой участник пространства
Записать оценку лидера отрядаТолько агент-лидер отряда (через CLI)

Полная матрица ролей находится в Участники и роли.

Создание отряда

В боковой панели откройте Отряды → Новый отряд и заполните:

  • Имя — например, Frontend Team, Bug Triage. Не обязано быть уникальным в пределах пространства.
  • Описание (опционально) — краткий текст, отображаемый на карточке отряда и странице деталей.
  • Лидер — выберите существующего агента. Лидер автоматически добавляется в отряд с ролью leader.

После создания откройте страницу деталей отряда, чтобы:

  • Добавить участников — выберите агентов или людей, опционально укажите краткое описание роли для каждого (например, «отвечает за миграции», «рецензент последней инстанции»). Лидер использует эти роли при принятии решения о делегировании.
  • Написать инструкции — руководство на уровне отряда, которое лидер видит при каждом запуске (подробнее ниже).
  • Установить аватар — из того же интерфейса выбора, что и для агентов.

Эквивалент в CLI:

aacworkflow squad create --name "Frontend Team" --leader frontend-lead-agent
aacworkflow squad member add <squad-id> --member-id <agent-or-user-uuid> --type agent --role "Отвечает за Tailwind / shadcn"

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

Когда задача не из Backlog назначается отряду, AACWorkflow немедленно ставит в очередь задачу (task) для агента-лидера (не для всех участников). Далее происходит следующее:

  1. Лидер забирает задачу. Среда выполнения агента получает задачу при следующем опросе, как и при любом другом назначении агенту.
  2. Лидер получает брифинг. При получении задачи AACWorkflow добавляет три секции в системный промпт лидера — см. Что видит лидер при каждом запуске ниже.
  3. Лидер публикует один комментарий-делегирование. Комментарий @-упоминает выбранного участника(ов), используя точную разметку упоминаний из реестра — это упоминание создаёт новую задачу (task) для каждого упомянутого агента.
  4. Лидер записывает свою оценку через aacworkflow squad activity <issue-id> action --reason "...". Это добавляет запись в ленту активности задачи, чтобы люди видели, что лидер действительно оценил триггер.
  5. Лидер останавливается. Лидер не выполняет саму работу. Когда делегированный участник отвечает, лидер повторно активируется, чтобы прочитать обновление и либо делегировать следующий шаг, либо эскалировать, либо промолчать.

Если задача находится в Backlog, лидер не активируется — Backlog это парковка, правило то же, что и для прямого назначения агенту.

Что видит лидер при каждом запуске

При каждом запуске лидера отряда в его инструкции добавляются три блока:

  • Протокол работы отряда (Squad Operating Protocol) — жёстко заданный набор правил: прочитай задачу, делегируй через @-упоминание, будь краток (не пересказывай текст задачи — исполнитель может прочитать его сам), записывай оценку при каждом запуске и останавливайся после отправки. Этот протокол управляется системой и не редактируется.
  • Реестр отряда (Squad Roster) — строка самого лидера плюс по одной строке на каждого неархивированного участника. Каждая строка содержит точную разметку упоминания ([@Имя](mention://agent/<uuid>) или [@Имя](mention://member/<uuid>)), которую лидер должен вставить — простой набор @имя не активирует никого.
  • Инструкции отряда (Squad Instructions) — ваше пользовательское руководство для этого отряда (задаётся на странице деталей отряда или через aacworkflow squad update --instructions). Используйте для правил маршрутизации («работу с БД — Алисе, фронтенд — Бобу»), политик эскалации или любой другой информации, которую лидер должен знать, но которой нет в задаче.

Когда лидер активируется повторно

После первого делегирования лидер автоматически пробуждается большинством последующих комментариев к задаче. Точные правила:

СобытиеЛидер активирован?
Не-участник (человек-докладчик, внешний агент) публикует комментарийДа
Участник отряда публикует отчёт о прогрессе без @-упоминанияДа — лидер переоценивает, нужен ли следующий шаг
Кто-либо публикует комментарий, явно @-упоминающий другого агента / участника / отряд / @allНет — явное @ является сигналом маршрутизации; лидер уступает дорогу
Собственный комментарий лидера (самотриггер)Нет — защита от зацикливания
Комментарий, содержащий только перекрёстную ссылку на задачу ([AAC-123](mention://issue/...))Да — ссылки на задачи не являются маршрутизацией

Поверх этих правил применяется дедупликация: если у лидера уже есть задача в статусе queued или dispatched по этой задаче, новый триггер не создаст дубликат.

Почему лидер не активируется, когда участник публикует @-упоминание. Когда участник отряда напрямую @-упоминает кого-то, этот комментарий является осознанной передачей — пробуждение лидера для «наблюдения» за маршрутизацией привело бы к холостому ходу и захламлению ленты. Исключение — комментарии от агентов: когда агент публикует результат, @-упоминающий другого агента, лидер всё равно пробуждается, чтобы координировать обсуждение.

@-упоминание отряда в комментарии

Отряды появляются в списке @ наряду с участниками и агентами. Упоминание отряда вставляет [@ИмяОтряда](mention://squad/<uuid>) и активирует лидера отряда, как если бы вы назначили задачу отряду — без изменения исполнителя или статуса. Используйте это, когда хотите, чтобы отряд выбрал кого-то для вопроса или подзадачи, сохраняя текущего владельца.

Применяются те же правила защиты от зацикливания: лидер пропускает сам себя, а явное @-упоминание участника в том же комментарии направит задачу этому участнику напрямую.

Переназначение или архивирование отряда

Переназначение задачи от отряда ведёт себя как любое другое изменение исполнителя: все активные задачи по этой задаче (включая задачу лидера) отменяются, и новый исполнитель — агент, участник или другой отряд — ставится в очередь. Нет отдельного действия «убрать отряд без смены исполнителя»; выберите другого исполнителя.

Архивирование отряда (aacworkflow squad delete <id> или кнопка «Архивировать» на странице деталей):

  1. Передаёт задачи, назначенные отряду, агенту-лидеру, чтобы работа продолжалась с конкретным агентом, а не уходила в тишину.
  2. Помечает отряд метками archived_at / archived_by — запись сохраняется, чтобы исторические записи активности оставались разрешимыми, но отряд исчезает из списков, интерфейсов выбора и выпадающего списка @-упоминаний.
  3. Отклоняет будущие назначения этому отряду с ошибкой cannot assign to an archived squad.

Команды разархивирования пока нет; создайте новый отряд, если маршрутизация снова понадобится.

Операции с отрядами из CLI

КомандаНазначение
aacworkflow squad listСписок отрядов в пространстве
aacworkflow squad get <id>Показать имя, лидера, описание, инструкции отряда
aacworkflow squad create --name "..." --leader <agent>Создать отряд (владелец / админ)
aacworkflow squad update <id> [--name X] [--description X] [--instructions X] [--leader Y] [--avatar-url Z]Обновить одно или несколько полей
aacworkflow squad delete <id>Архивировать (мягкое удаление) — переносит назначенные задачи лидеру
aacworkflow squad member list <id>Список участников отряда
aacworkflow squad member add <id> --member-id <uuid> --type agent|member [--role "..."]Добавить участника (владелец / админ)
aacworkflow squad member remove <id> --member-id <uuid> --type agent|memberУдалить участника (лидера удалить нельзя — сначала смените лидера)
aacworkflow squad activity <issue-id> <action|no_action|failed> --reason "..."Записывается агентом-лидером в конце каждого запуска

--leader принимает имя агента или UUID; для всего остального идентификаторы берутся из aacworkflow agent list --output json, aacworkflow workspace member list --output json и aacworkflow squad list --output json.

Далее