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

Субагенты

Субагенты позволяют Кодику делегировать сфокусированную работу дочерним задачам. Каждый субагент работает в собственном контекстном окне и возвращает результат родительскому агенту. Это сохраняет контекст родителя чистым, пока исследование или реализация выполняются параллельно или последовательно.

Kodik поставляется с двумя встроенными профилями субагентов:

research — исследователь только для чтения. Ограничен инструментами read_file, glob, rg и web_fetch. Не может редактировать файлы, выполнять команды оболочки или порождать другие субагенты. Используется для сбора информации, составления карты кодовой базы или перекрёстных ссылок до того, как родитель примет решение.

implement — исполнитель с возможностью записи. Получает полный набор инструментов по умолчанию: read_file, edit_file, edit_files, edit_notebook, shell, command_status, codebase_search, rg, glob, web_fetch, read_lints и todo_write. Инструмент sub_agent запрещён, поэтому он не может рекурсивно порождать другие субагенты. Наследует режим подтверждения родителя — в режиме по умолчанию запрашивает подтверждение перед каждым редактированием или командой; в режиме автопилота выполняет их автоматически.

Оба встроенных агента неинтерактивны: они не могут напрямую задавать вопросы пользователю.

Агент вызывает субагентов через инструмент sub_agent. Каждый вызов указывает:

  • agent — какой профиль использовать (например, research, implement или идентификатор пользовательского агента).
  • goal — описание задачи, которую получает субагент.
  • scope — необязательный путь или область, в которой нужно оставаться.
  • expectedDeliverables — необязательное описание того, что субагент должен вернуть.

Субагент запускается как реальная дочерняя задача со своей историей сообщений и API-вызовами. Результаты возвращаются родителю в виде отчёта в формате markdown. Полный справочник по инструментам см. в разделе Инструменты.

Вы можете определять собственные профили субагентов в виде файлов .md с заголовком YAML.

---
name: my-agent
description: Однострочное описание, отображаемое главному помощнику.
tools: read_file, glob, rg, web_fetch
disallowedTools: shell, edit_file
model: haiku
color: blue
---
Вы — субагент my-agent. Опишите поведение и ограничения здесь.
Тело файла используется дословно как системный промпт агента.
ПолеОписание
nameКороткий идентификатор (используется как id агента).
descriptionПоказывается главному помощнику при решении о делегировании.
toolsЯвный список разрешённых инструментов. Пропустите для наследования широкого набора по умолчанию. Пустое значение означает отсутствие инструментов.
disallowedToolsСписок запрещённых инструментов, применяемый до сужения разрешённого списка.
modelhaiku, sonnet, opus или полный идентификатор модели. Используйте inherit (или пропустите) для той же модели, что и у родителя.
colorЦветной чип в заголовке транскрипта. Одно из: red, blue, green, yellow, purple, orange, pink, cyan.
ОбластьРасположениеПримечания
Проект.kodik/agents/*.md в корне рабочего пространстваДобавляется в систему контроля версий; все участники команды получают одинаковых агентов.
Пользователь (глобально)~/Documents/Kodik/Agents/*.mdЛичные агенты, не привязанные к проекту.
Плагин<корень плагина>/agents/*.mdРаспространяются через систему плагинов.

Kodik также распознаёт .agents/agents/*.md как нейтральное расположение, совместимое с другими инструментами.

При совпадении имён агентов приоритет имеет .kodik/agents/ над .agents/agents/.

  • Агенты проекта имеют пространство имён project:<name>.
  • Пользовательские агенты имеют пространство имён user:<name>.
  • Агенты плагинов имеют пространство имён <pluginId>:<name>.

Передайте полный идентификатор с пространством имён инструменту sub_agent, если хотите вызвать конкретный пользовательский агент.

Все субагенты — встроенные и пользовательские — имеют следующие ограничения:

  • Неинтерактивность — они не могут задавать вопросы пользователю и использовать инструменты вроде ask_questions или check_understanding.
  • Запрет рекурсивного делегирования — инструмент sub_agent всегда запрещён внутри субагента, независимо от поля tools профиля.
  • Запрет инструментов управления задачамиgenerate_plan, new_task и report_bug зарезервированы для родителя.

Субагенты наиболее полезны, когда:

  • Нужно собрать широкий контекст из нескольких областей кодовой базы до того, как родитель вносит изменения.
  • Чётко ограниченная задача реализации может выполняться изолированно, не затрагивая файлы, которые также редактирует родитель.
  • Вы хотите, чтобы родитель координировал несколько параллельных исследований и синтезировал результаты.

Для небольших сфокусированных задач, когда у агента уже достаточно контекста, вызов субагента добавляет накладные расходы без пользы.