Субагенты
Субагенты позволяют Кодику делегировать сфокусированную работу дочерним задачам. Каждый субагент работает в собственном контекстном окне и возвращает результат родительскому агенту. Это сохраняет контекст родителя чистым, пока исследование или реализация выполняются параллельно или последовательно.
Встроенные агенты
Заголовок раздела «Встроенные агенты»Kodik поставляется с двумя встроенными профилями субагентов. Профиль выбирает персону, предпочитаемую модель и системный промпт дочернего агента; отдельного списка разрешённых инструментов у профиля нет.
research — исследователь, ориентированный на факты: собирает информацию, составляет карту кодовой базы и сверяет данные, прежде чем родитель примет решение. Он предпочитает инструменты чтения; при запуске на переднем плане он наследует тот же действующий набор инструментов, что и родительский ход.
implement — исполнитель, ориентированный на реализацию: ограниченные по объёму изменения, команды и проверка результата. При запуске на переднем плане он тоже наследует действующий набор инструментов родительского хода и подчиняется текущему режиму подтверждений.
В режиме «Стандартные подтверждения» Kodik запрашивает подтверждение перед запуском именованного профиля (implement или пользовательского агента); Автопилот и Полный доступ запускают именованный субагент без запроса (запуск research не требует подтверждения ни в одном режиме). Собственные вызовы инструментов дочернего агента в любом режиме проходят через ту же политику подтверждений, что и у родителя.
Все субагенты неинтерактивны — инструменты вопросов убираются из дочерних запусков, — поэтому вместо вопросов пользователю они возвращают родителю выводы или описание блокеров.
Инструмент sub_agent
Заголовок раздела «Инструмент sub_agent»Агент вызывает субагентов через инструмент sub_agent. Каждый вызов указывает:
- agent — какой профиль использовать (например,
research,implementили идентификатор пользовательского агента). - goal — описание задачи, которую получает субагент.
- scope — необязательный путь или область, в которой нужно оставаться.
- expectedDeliverables — необязательное описание того, что субагент должен вернуть.
Субагент запускается как реальная дочерняя задача со своей историей сообщений и API-вызовами. Вызовы инструментов дочернего агента остаются привязаны к родительской chat-сессии, поэтому терминальные процессы, Stop и очистка сессии остаются в рамках этой задачи. Вложенные запросы к модели через Kodik proxy тоже несут id родительской задачи, поэтому usage относится к чату, который запустил дочернего агента. Результаты возвращаются родителю в виде отчёта в формате markdown. Полный справочник по инструментам см. в разделе Инструменты.
Субагенты на переднем плане наследуют ровно те инструменты провайдера, что доступны родительскому ходу — после фильтрации по режиму, пользовательских настроек целых инструментов, доступности MCP, подтверждений, хуков и текущего корня worktree. В Ask, Plan и Educator унаследованный набор инструментов Kodik для рабочей области остаётся только для чтения, а полный инструмент Browser и включённые MCP-инструменты также наследуются и могут иметь внешние побочные эффекты. Дочерние запуски на переднем плане в Code и Debug могут использовать те же встроенные инструменты с возможностью записи и MCP-инструменты, что и родитель. Жёсткие исключения для дочерних запусков на переднем плане: сам sub_agent (убирается, чтобы исключить рекурсию), todo_write и generate_plan (панели todo и плана принадлежат родительскому разговору, а прогресс дочернего агента и так виден в шагах его карточки), а также интерактивные ask_questions/check_understanding (субагент не может обращаться к пользователю — вопросы и блокеры он возвращает в итоговом отчёте). Фоновые дочерние агенты устроены иначе: они получают только фиксированный набор исследовательских инструментов для чтения, описанный ниже, и никогда не получают MCP-инструменты.
Фоновые субагенты
Заголовок раздела «Фоновые субагенты»Параметр background: true инструмента sub_agent запускает дочернего агента, не останавливая родителя: инструмент сразу возвращает подтверждение запуска (с agent_id), и основной агент продолжает работать, пока «ребёнок» исследует. Когда дочерний агент завершается — успешно, остановлен или прерван — его отчёт автоматически возвращается в разговор:
- Если ход родителя ещё выполняется, отчёт подкладывается в его следующий шаг.
- Если чат уже простаивает, отчёт сам начинает новый ход и отображается компактной строкой «агент отчитался».
Вызов agent_status без идентификатора выводит всех фоновых агентов, зарегистрированных в текущем чате. Если передать agent_id из подтверждения запуска, инструмент покажет сведения об этом агенте; wait: true дополнительно блокирует выполнение до завершения, когда результат нужен прямо сейчас. Отчёт, полученный через agent_status, считается доставленным — автоматическое уведомление для этого агента пропускается, и агент не получает одни и те же результаты дважды.
Пока фоновые агенты работают:
- Панель над полем ввода показывает, сколько агентов работает в фоне. Разверните её, чтобы увидеть цель и живые шаги каждого агента или остановить его кнопкой «Остановить». Панель привязана к сессии — каждый чат показывает только своих агентов.
- Статус сессии в боковой панели остаётся «working», пока все её агенты не завершатся.
- Остановка основного хода не останавливает фоновых агентов — они продолжают работать и отчитываются позже. Останавливайте их из панели или карточки, либо удалением сессии.
Фоновые агенты работают без подтверждений, поэтому ограничены набором инструментов только для чтения (read_file, glob, rg, codebase_search, read_lints, web_fetch, web_search) — без редактирования, команд оболочки, браузера и MCP-инструментов. Для более широкого доступа к инструментам используйте обычный (не фоновый) вызов sub_agent. Перезапуск IDE прерывает ещё работающих фоновых агентов; при следующем сообщении агенту сообщается о прерывании, чтобы он мог перезапустить исследование, если оно всё ещё нужно.
Пользовательские профили агентов
Заголовок раздела «Пользовательские профили агентов»Вы можете определять собственные профили субагентов в виде файлов .md с заголовком YAML.
Поля заголовка
Заголовок раздела «Поля заголовка»---name: my-agentdescription: Однострочное описание, отображаемое главному помощнику.model: inheritcolor: blue---
Вы — субагент my-agent. Опишите поведение и ограничения здесь.Тело файла используется дословно как системный промпт агента.| Поле | Описание |
|---|---|
name |
Короткий идентификатор (используется как id агента). |
description |
Показывается главному помощнику при решении о делегировании. |
model |
Необязательное предпочтение модели для этого профиля. inherit — использовать модель родителя. |
color |
Необязательный цветовой маркер, отображаемый в настройках. |
Используйте тело файла, чтобы описать желаемое поведение агента. Инструменты во время выполнения всегда определяются текущим режимом чата и настройками инструментов агента, а не каждым профилем.
Где размещать файлы агентов
Заголовок раздела «Где размещать файлы агентов»| Область | Расположение | Примечания |
|---|---|---|
| Проект | .kodik/agents/*.md в корне рабочего пространства |
Добавляется в систему контроля версий; все участники команды получают одинаковых агентов. |
| Пользователь (глобально) | ~/.kodik/Agents/*.md |
Личные агенты, не привязанные к проекту. |
| Плагин | <корень плагина>/agents/*.md |
Распространяются через систему плагинов. |
Включённые проектные, пользовательские и плагинные профили перечисляются в системном промпте главного ассистента, чтобы он мог выбирать их для делегирования. Settings → Sub Agents и работающий ассистент находят эти пользовательские профили из одних и тех же источников.
Именование и идентификаторы
Заголовок раздела «Именование и идентификаторы»- Агенты проекта имеют пространство имён
project:<name>. - Пользовательские агенты имеют пространство имён
user:<name>. - Агенты плагинов имеют пространство имён
<pluginId>:<name>.
Передайте полный идентификатор с пространством имён инструменту sub_agent, если хотите вызвать конкретный пользовательский агент.
В каждом ходе допустимы только идентификаторы включённых профилей. Kodik передаёт один и тот же точный список в системном промпте и в селекторе агента инструмента, чтобы основная модель копировала идентификатор с пространством имён, а не придумывала псевдоним.
Ограничения
Заголовок раздела «Ограничения»Все субагенты — встроенные и пользовательские — имеют следующие ограничения:
- Наследуемые инструменты — субагенты на переднем плане получают те же действующие инструменты, что и родительский ход, включая MCP-инструменты, когда они доступны родителю. Фоновые субагенты получают только фиксированный набор исследовательских инструментов для чтения.
- Запрет рекурсивного делегирования — инструмент
sub_agentвсегда убирается внутри субагента, независимо от заголовка профиля. - Родительские панели остаются родительскими — инструменты
todo_writeиgenerate_planвсегда убираются внутри субагента; список todo и панель плана принадлежат родительскому разговору, а прогресс дочернего агента показывают шаги его карточки. - Неинтерактивность — инструменты
ask_questionsиcheck_understandingубираются внутри субагента; выводы и блокирующие вопросы он возвращает родителю в итоговом отчёте. - Ограничения встроенных инструментов наследуются — в Ask, Plan и Educator дочерние запуски на переднем плане наследуют встроенный набор родителя только для чтения. Включённые MCP-инструменты отдельно наследуются субагентами на переднем плане во всех режимах и могут иметь побочные эффекты, определённые сервером; фоновые субагенты MCP-инструменты не получают.
- Вызовы инструментов остаются структурированными — вызовы инструментов субагента используют ту же нативную нормализацию аргументов, что и родительские вызовы, включая пакетные ходы. Панель активности показывает нормализованные дочерние шаги вместо сырого JSON вызовов инструментов. Само делегирование не обрывается по фиксированному таймауту; если список файлов или текстовый поиск субагента выполняется слишком долго, Kodik возвращает ошибку инструмента, чтобы он сузил запрос вместо зависания всего запуска.
Когда использовать субагенты
Заголовок раздела «Когда использовать субагенты»Субагенты наиболее полезны, когда:
- Нужно собрать широкий контекст из нескольких областей кодовой базы до того, как родитель вносит изменения.
- Чётко ограниченная задача реализации может выполняться изолированно, не затрагивая файлы, которые также редактирует родитель.
- Вы хотите, чтобы родитель координировал несколько параллельных исследований и синтезировал результаты.
Для небольших сфокусированных задач, когда у агента уже достаточно контекста, вызов субагента добавляет накладные расходы без пользы.
