Общаться с агентом
В этом руководстве рассказано, как работать с агентом в пространстве.
Создать пространство
Заголовок раздела «Создать пространство»- Перейдите в раздел Пространства на боковой панели
- Нажмите кнопку + рядом с заголовком «Пространства»
- Введите название — оно обязательно. Пустое название не принимается; диалог остаётся открытым
- При необходимости добавьте агентов из рабочего пространства
- Если в рабочем пространстве есть хотя бы один репозиторий, появляется выбор репозиториев. Изначально выбраны все; сузьте выбор (в том числе сняв один репозиторий), оставив только те репозитории, для которых это пространство должно подготавливать worktree
- Подтвердите
Control Center открывает пространство и в фоне начинает подготавливать по одному worktree с копированием при записи для каждого выбранного репозитория.
Отправить первое сообщение
Заголовок раздела «Отправить первое сообщение»Введите сообщение в поле ввода и нажмите Enter. Агент запускается и начинает передавать свой ответ потоком.
Если пространство всё ещё подготавливается, ваше сообщение не теряется, а откладывается — поле ввода удерживает его и отправляет автоматически, как только worktree будут готовы.
Пока агент работает, вы видите, как в потоке идёт его ход: сегменты рассуждений, вызовы инструментов (чтение и запись файлов, shell-команды) и текст ответа — всё внутри одного сообщения хода агента.
Направлять работающего агента
Заголовок раздела «Направлять работающего агента»Пока агент работает, обычный текст переписки не ставит новый ход в очередь. Он превращается в поставленную в очередь карточку управления в полосе над полем ввода и встраивается в идущий запуск на границе следующего хода. Всплывающего уведомления нет — обратную связь даёт сама карточка.
Поведение меняют три вещи:
- Сообщение, содержащее @-упоминание, всегда отправляется как сообщение, а не как управление
- Сообщение, начинающееся со slash-команды, всегда обрабатывается как эта команда
- Сообщение с вложением всегда отправляется как сообщение — очередь управления работает только с текстом
- Если все идущие запуски уже завершены, текст проходит дальше и отправляется как обычное сообщение
Одобрить заблокированное действие
Заголовок раздела «Одобрить заблокированное действие»Когда агент упирается в действие, которое отсекают его ограничения —
разрушительная команда, привилегированный инструмент — сервер блокирует
запуск и публикует запрос на одобрение всем подключённым клиентам. Если у вас
открыт этот разговор, запрос появляется в чате, над полем ввода, в виде той
же карточки с пронумерованными вариантами, что и для ask_user (отклонить,
одобрить и, при желании, одобрить на 8 часов). Пропустить нельзя:
заблокированный агент ждёт решения.
Если вы находитесь в другом месте приложения, панель, всегда отображаемая поверх остальных, всё равно перечисляет то, что ждёт, — так вы можете разблокировать агента, не разыскивая пространство. Эта панель скрывает запрос, как только разговор этого пространства оказывается на экране, поэтому вы никогда не отвечаете на один и тот же запрос дважды.
Тайм-аута нет: заблокированный агент ждёт, пока кто-нибудь не примет решение. Этот же запрос появляется в полосе «Требует внимания» во входящих и в мобильном клиенте.
Ответить на вопрос агента
Заголовок раздела «Ответить на вопрос агента»Агент, которому нужно узнать предпочтение, недостающее требование или сделать
настоящий выбор, обязан вызвать ask_user. Если написать вопрос обычным
сообщением в чате, ход завершится, и вам придётся обратиться к агенту заново.
Инструмент отображает в разговоре карточку с номерами — варианты, необязательное
поле свободного текста или и то и другое — и запуск ждёт вашего ответа.
Нажмите один вариант, чтобы отправить его (номер в конце при наведении
превращается в стрелку). Для множественного выбора и ответов, введённых с
клавиатуры, используйте Продолжить (⌘↵ / Ctrl↵). Пропустить велит
агенту выбрать разумное значение по умолчанию и больше не спрашивать.
Это отдельный механизм, отличный от карточки одобрения выше: одобрение — это «можно мне это сделать?», а вопрос — «что именно из этого вы имели в виду?». Задавать вопросы можно во встроенном раннере в любом режиме, включая режимы только для чтения (он ничего не изменяет), и это намеренно не обёрнуто в запрос одобрения — диалог перед диалогом при отсутствии подключённого одобряющего закрывался бы отказом. Запуск, у которого нет разговора для отображения, просто не получает этот инструмент.
Остановить агента
Заголовок раздела «Остановить агента»Пока запуски идут, кнопка отправки в поле ввода становится кнопкой Остановить. Очистите поле ввода и нажмите её — это остановит всех агентов, работающих в этом разговоре.
В заголовке пространства нет элемента управления для остановки, и для неё нет сочетания клавиш. Чтобы остановить только один запуск, когда их несколько, откройте вкладку активности этого запуска — в её заголовке есть привязанные к запуску пауза/возобновление и остановка (при остановке потребуется подтверждение). Наблюдаемость → Онлайн перечисляет всех работающих агентов рабочего пространства с тем же элементом управления.
Остановленный запуск помечается как остановленный. Отправьте новое сообщение, чтобы запустить агента снова.
Использовать slash-команды
Заголовок раздела «Использовать slash-команды»Введите / в поле ввода, чтобы увидеть список команд. Те из них, что меняют
поведение разговора:
| Команда | Что она делает |
|---|---|
/plan |
Переключает пространство в режим плана. Просто /plan только взводит режим; /plan <запрос> взводит его и отправляет остаток как ваше сообщение |
/goal <text> |
Записывает рабочую цель разговора |
/loop <text> |
Повторяет работу над задачей, пока она не будет завершена |
/compact |
Сворачивает старую историю в закреплённое резюме и продолжает на сжатом контексте |
/todo … |
Просматривает и редактирует сохранённый список задач этого разговора |
Навыки появляются в том же списке в собственном пространстве имён skill:,
поэтому они никогда не конфликтуют с командами выше — навык с именем plan или
compact остаётся доступным:
| Команда | Что она запускает |
|---|---|
/skill:<name> |
Навык, установленный в рабочем пространстве или привязанный к агенту |
/skill:<repo>:<name> |
Навык, поставляемый одним из репозиториев, склонированных в это пространство |
Навыки репозиториев помечены значком репозитория, из которого они пришли, потому
что одно имя не говорит, соглашения какого сервиса он в себе несёт, и два
репозитория могут каждый поставлять навык testing. Чтобы найти навык,
необязательно вводить префикс: при вводе одного имени навыка совпадают и записи
с пространством имён.
Агент несёт с собой только навыки того репозитория, в котором он сейчас работает — см. Навыки в рамках репозитория. Поле ввода так не ограничено: можно вызвать навык любого репозитория, назвав его.
/compact и /todo перехватываются клиентом и никогда не сохраняются как
сообщения — строка /compact в расшифровке сдвинула бы границу следующего
сжатия на один ход назад. /plan переключает сохранённый режим пространства, а
не передаётся как текст. Так что ни одна из этих трёх не является «сообщением,
которое вы отправляете агенту»; не ждите увидеть их в истории.
Сначала запросите план
Заголовок раздела «Сначала запросите план»Перед сложным изменением переключите пространство в режим плана с помощью
/plan, раскрывающегося списка режимов на панели инструментов поля ввода или
Shift+Tab. Тогда агент исследует всё в режиме только для чтения и выдаёт
типизированный план, который вы одобряете до начала любой работы. См.
Использовать режим плана.
Обратиться к агенту без отдельного пространства
Заголовок раздела «Обратиться к агенту без отдельного пространства»Не нужно заводить отдельное пространство для каждого агента. В любом пространстве:
@alice can you look at the failing tests in src/auth_test.dart?Упомянутый агент добавляется в пространство и запускается с контекстом этого пространства. О том, как сопоставляются имена, см. @-упоминать агентов.
Связанные руководства
Заголовок раздела «Связанные руководства»- Использовать пространства
- @-упоминать агентов
- Использовать режим плана
- Настроить интеграцию Slack, чтобы делать то же самое из Slack