Субагенты
Субагенты позволяют Кодику делегировать сфокусированную работу дочерним задачам. Каждый субагент работает в собственном контекстном окне и возвращает результат родительскому агенту. Это сохраняет контекст родителя чистым, пока исследование или реализация выполняются параллельно или последовательно.
Встроенные агенты
Заголовок раздела «Встроенные агенты»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 остаются только для чтения: набор инструментов родителя в этих режимах только для чтения. Дочерние запуски в режимах Code и Debug могут использовать те же инструменты с возможностью записи и MCP-инструменты, что и родитель. Жёсткие исключения для дочерних запусков: сам sub_agent (убирается, чтобы исключить рекурсию), todo_write и generate_plan (панели todo и плана принадлежат родительскому разговору, а прогресс дочернего агента и так виден в шагах его карточки), а также интерактивные ask_questions/check_understanding (субагент не может обращаться к пользователю — вопросы и блокеры он возвращает в итоговом отчёте).
Фоновые субагенты
Заголовок раздела «Фоновые субагенты»Параметр 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) — без редактирования, команд оболочки и браузера. Для делегирования с записью используйте обычный (не фоновый) вызов 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, если хотите вызвать конкретный пользовательский агент.
Ограничения
Заголовок раздела «Ограничения»Все субагенты — встроенные и пользовательские — имеют следующие ограничения:
- Наследуемые инструменты — субагенты получают те же действующие инструменты, что и родительский ход, включая MCP-инструменты, когда они доступны родителю.
- Запрет рекурсивного делегирования — инструмент
sub_agentвсегда убирается внутри субагента, независимо от заголовка профиля. - Родительские панели остаются родительскими — инструменты
todo_writeиgenerate_planвсегда убираются внутри субагента; список todo и панель плана принадлежат родительскому разговору, а прогресс дочернего агента показывают шаги его карточки. - Неинтерактивность — инструменты
ask_questionsиcheck_understandingубираются внутри субагента; выводы и блокирующие вопросы он возвращает родителю в итоговом отчёте. - Режимы только для чтения остаются только для чтения — режимы Ask, Plan и Educator по-прежнему могут делегировать, но их дочерние запуски наследуют родительский набор инструментов только для чтения.
- Вызовы инструментов остаются структурированными — вызовы инструментов субагента используют ту же нативную нормализацию аргументов, что и родительские вызовы, включая пакетные ходы. Панель активности показывает нормализованные дочерние шаги вместо сырого JSON вызовов инструментов. Само делегирование не обрывается по фиксированному таймауту; если список файлов или текстовый поиск субагента выполняется слишком долго, Kodik возвращает ошибку инструмента, чтобы он сузил запрос вместо зависания всего запуска.
Когда использовать субагенты
Заголовок раздела «Когда использовать субагенты»Субагенты наиболее полезны, когда:
- Нужно собрать широкий контекст из нескольких областей кодовой базы до того, как родитель вносит изменения.
- Чётко ограниченная задача реализации может выполняться изолированно, не затрагивая файлы, которые также редактирует родитель.
- Вы хотите, чтобы родитель координировал несколько параллельных исследований и синтезировал результаты.
Для небольших сфокусированных задач, когда у агента уже достаточно контекста, вызов субагента добавляет накладные расходы без пользы.