Перейти к содержимому

@-упоминания агентов

В этом руководстве рассказано, как @-упоминать агентов и коллег в пространстве.

Введите @ в поле ввода и выберите агента из автодополнения или наберите имя сами:

@alice fix the login bug

Упомянутый агент, если он ещё не участник, добавляется в пространство как участник и запускается с контекстом и режимом пространства. Неупомянутые участники видят сообщение, но не запускаются.

Если вы отправляете сообщение без упоминания агента, Control Center сам выбирает отвечающего: агента, который говорил в разговоре последним; иначе владельца разговора, если он есть; иначе первого агента верхнего уровня среди участников пространства. В пространстве с одним агентом это всегда его единственный агент.

Токен упоминания сопоставляется без учёта регистра, по точному имени или префиксу. Так @arch доходит до агента с именем architect, а @Alice — до alice.

Два следствия, которые стоит учесть заранее:

  • Короткий токен — не ошибка. Если два агента имеют общий префикс, побеждает первый найденный, а какой именно — зависит от порядка, а не от какого-либо правила разрешения ничьей. Если имена пересекаются, используйте полное имя.
  • В токен входят только буквы, цифры и подчёркивания. Парсер сопоставляет @(\w+), поэтому @code-reviewer читается как токен code, а @my agent — как my. Агента, в имени которого есть дефис, точка или пробел, невозможно упомянуть надёжно — в том числе через автодополнение, которое вставляет имя как обычный текст. Называйте агентов одним словом или с подчёркиваниями.

Упоминания вырезаются из текста до того, как он дойдёт до агента. Поэтому сообщение, состоящее только из упоминаний (@alice), никого не запускает — дайте ему задачу.

@alice refactor the auth module. @bob write tests for it.

Оба агента запускаются параллельно в одном разговоре, и оба получают полное сообщение.

Они также делят worktree этого пространства. Worktree репозиториев подготавливаются на пространство, а не на агента; каждый агент получает собственный рабочий каталог-оверлей для своего AGENTS.md, навыков и конфигурации, а общие репозитории подключены в него для чтения и записи. Поэтому два упомянутых вместе агента видят правки друг друга — и могут с ними столкнуться.

Любой @token, не совпавший с агентом, проверяется по участникам-людям рабочего пространства — по нику, с тем же правилом точного совпадения или префикса без учёта регистра.

Разрешённое упоминание человека никого не запускает. Оно передаётся в метаданных сообщения только для того, чтобы маршрутизатор уведомлений мог оповестить этого человека.

Имена агентов всегда проверяются первыми, и токен, занятый агентом, никогда не предлагается списку участников, — один @word может разрешиться только в одного субъекта.

Запущенный агент получает в своём промпте блок «Summons», в котором названо, кто его вызвал, и перечислен состав пространства — другие агенты (помеченные как агенты верхнего уровня или дочерние) и участники-люди, — чтобы он знал, кому может передать работу. В блоке также сказано, что упоминание другого агента в его ответе пробуждает этого агента, а упоминание самого себя игнорируется.

Агент может передать работу в собственном ответе. Когда ход завершается чисто, упоминания в его тексте разрешаются, и эти агенты добавляются в пространство и запускаются в тот же разговор, а их промптом становится упомянувший их ход. Ход, который завершился сбоем или был прерван, никого не пробуждает — он остановился на середине мысли.

Правила намеренно строже, чем у поля ввода, потому что за исправлением ошибочной догадки никто не следит:

  • Только точные имена. Совпадения по префиксу нет. @arch доходит до architect, когда его набирает человек; от агента он не доходит ни до кого. Имя, совпадающее с двумя агентами, тоже не доходит ни до кого.
  • Код — не текст. Упоминания внутри блоков кода или в `обратных кавычках` игнорируются, поэтому цитировать аннотацию @Override или pip install foo@1.2 безопасно. Незакрытый блок обнуляет всё после себя.
  • @, приклеенный к предыдущему токену, — не упоминание — sam@host.com, pkg/@scope и node@20 не разрешаются ни в кого.
  • Дефисы сохраняются, поэтому @code-reviewer разрешается как сам собой, а не как токен code.
  • Не более трёх агентов на ход. Агент, перечисляющий в сводке шесть коллег, перечисляет их, а не вызывает.

Цепочка пробуждений ограничена так же, как делегирование: глубина 3, и агент, уже находящийся в цепочке, не может быть разбужен ею снова (никаких A → B → A). Упорядоченная пара также ограничена по частоте между цепочками. Отклонённое пробуждение публикует в разговоре системное сообщение о том, какое упоминание не было доставлено и почему, — а неразрешённое имя этого не делает, иначе любое @ в предложении рассказывало бы о себе само.

Для передачи работы, которая не должна зависеть от текста, — запрос/ответ или обращение к агенту вне пространства — вместо этого используйте инструменты send_to_agent, ask_agent и delegate_task.