Субагенты: как ИИ-агент для кода делит большую задачу на параллельные

· Документация

Большую задачу ИИ-агент ExecAI может разложить на части и раздать их субагентам: несколько помощников работают одновременно, а главный агент собирает их итоги. Разберём, что такое субагент, как следить за ним в терминале и в окне, сколько у него шагов и как их добавить, на какой модели он работает и когда субагенты не нужны.

Пример: окно execai ui. Справа блок «Агенты» с шагами и кнопками «+25», в центре — что успел сделать субагент, ниже — его запрос разрешения

Что такое субагент

Субагент — отдельный агент со своей короткой задачей. Главный агент формулирует её целиком, потому что субагент не видит вашу переписку и не может задавать вопросов. У субагента свой контекст: он сам ходит по файлам, а назад возвращает только итог одним блоком. Поэтому основной диалог не засоряется сотнями прочитанных строк.

Субагенты бывают двух видов:

  • Только чтение — по умолчанию. Читает и ищет по файлам, может открыть страницу или поискать в интернете. Всё, на что нужно ваше разрешение, ему отклоняется, потому что спросить он не может: на уровне безопасности по умолчанию это сеть, секреты вроде .env и файлы за пределами проекта. Разрешения, которые вы раньше дали навсегда, для него действуют.
  • С правом правки — дополнительно правит файлы и запускает команды. На каждое такое действие он спрашивает вас в той же рамке, что и главный агент, с подписью «Субагент:» и своим названием.

Субагент не может запускать своих субагентов.

Когда агент их запускает

Решает модель главного агента. Субагенты выгодны, когда задачу можно разделить на независимые части или когда разведка засорила бы основной диалог. Несколько субагентов, запущенных в одном ответе модели, работают одновременно. Агент может запустить субагента и в фоне: тогда сам продолжает работу, а итог придёт отдельным сообщением.

Можно попросить прямо:

› раздай субагентам: проверь, где в проекте считается срок подписки, — api, mailer и payments по отдельности, потом общий отчёт

В пустом чате окна execai ui есть такая же подсказка: «Раздай субагентам».

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

Одновременно работают до четырёх субагентов, остальные ждут в очереди. От зависшего субагента страхует предел в два часа.

Где это полезно

  • Разведка по большому репозиторию. «Найди все места, где читается конфиг, и опиши, кто что ждёт» — три субагента просматривают три части кода, главный агент сводит ответы.
  • Проверка одной гипотезы в нескольких местах. Один и тот же расчёт есть в трёх сервисах — каждый смотрит свой.
  • Независимые правки в разных частях. Обновить описания в docs/ и поправить обработчики в api/, когда правки не пересекаются.

Где не нужно

  • Маленькая задача в одном-двух файлах: на постановку уйдёт больше, чем на работу.
  • Шаги зависят друг от друга: «сначала разберись, потом поправь, потом прогони тесты».
  • Правки одного файла: субагентам велено трогать только файлы своей задачи, но двое в одном файле мешают друг другу.

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

Как это видно в терминале

Пока субагенты работают, над полем ввода появляется блок «🤖 Агенты»: для каждого — состояние, название, шаг («шаг 12/50 · ещё 38»), последний инструмент и время. В строке состояния — счётчик вида 2▶ 1✓. В ленте у главного агента — карточка Task с названием субагента.

Состояния: «в очереди», «работает», «ждёт ответа», «готов», «ошибка», «остановлен».

/agents                    — список: состояние, режим, шаги, модель, начало итога
/agents open 2             — что субагент 2 делал
/agents stop 2             — остановить субагента 2
/agents more 2             — дать ему ещё 25 шагов
/agents more 2 40          — дать 40 шагов
/agents limit              — сколько шагов получит новый субагент
/agents limit 80           — поменять для новых

Вместо номера подойдёт и id субагента из списка.

Как это видно в окне и панели

В окне execai ui и в панели редактора справа блок «Агенты» со счётчиками «работают» и «готово». У каждого субагента — название, состояние, шаги с полосой, время, кнопка «+25» и кнопка остановки. Щелчок по субагенту открывает, что он успел сделать, — только для чтения, кнопка «Вернуться в чат» ведёт обратно. В оформлении «Телетайп» субагенты идут строками внизу окна. Подробнее об окне — в статье «Окно ИИ-агента для кода без терминала».

Шаги: сколько и как продлить

Шаг — один круг работы: модель ответила, инструменты выполнились. Новый субагент получает 50 шагов, при запуске — не больше 100. Когда шагов остаётся пять или меньше, терминал подсвечивает строку и подсказывает /agents more.

Продлить можно тремя путями:

  • кнопкой «+25» в окне или панели;
  • командой /agents more <номер> [шагов] в терминале;
  • главный агент сам даёт субагенту ещё шагов, если видит, что тот движется к цели.

Работающему субагенту предел поднимается сразу. Тот, кто уже упёрся в предел, продолжает с того же места в фоне: в окне для этого кнопка «Продолжить (+25)». Всего у одного субагента не больше 500 шагов.

Предел для новых субагентов меняется командой /agents limit (от 1 до 100) или в меню окна, пункт «Шагов субагенту». У главного агента свой предел на ход — /max-iterations, по умолчанию тоже 50.

На какой модели работают субагенты

По умолчанию — на той же, что и главный агент. Главный агент может выбрать для субагента быструю модель — самую лёгкую из моделей текущего источника, если такая есть. Она подходит для простого поиска по коду. Может и назвать конкретную модель, но только из текущего источника. Отдельной настройки «модель для субагентов» нет. Если хотите сэкономить, скажите в задаче: «субагентам — быструю модель». Какая модель досталась каждому, видно в /agents.

Про источники моделей и свои ключи — в статье «Свои ключи или подписка».

Как остановить

  • Одного субагента — /agents stop <номер> в терминале или кнопка остановки в блоке «Агенты».
  • Всех сразу — остановить ход главного агента: Ctrl+C в терминале, кнопка остановки в окне или панели. Вместе с ходом останавливаются все его субагенты, включая фоновые.

Главный агент получит пометку, что субагента остановил человек, и последнее, что тот успел написать. Правки, которые субагент уже сделал, остаются в файлах.

Частые вопросы

Может ли субагент что-то поменять без моего ведома? Субагент только для чтения — нет. Субагент с правом правки спрашивает разрешение так же, как главный агент, и рамка подписана его названием.

Сколько субагентов работает одновременно? До четырёх, остальные ждут в очереди.

Где посмотреть, что сделал субагент? /agents open <номер> в терминале или щелчок по субагенту в окне. Его работа сохраняется после каждого шага, поэтому смотреть можно и пока он работает.

Субагенту не хватило шагов. Начинать заново? Нет: «Продолжить (+25)» в окне или /agents more в терминале продолжат с того же места.

Подробнее об агенте →

Скачать агента →

Открыть чат ExecAI

Ещё в блоге