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

Субагенты

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

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
---
Вы — субагент my-agent. Опишите поведение и ограничения здесь.
Тело файла используется дословно как системный промпт агента.
ПолеОписание
nameКороткий идентификатор (используется как id агента).
descriptionПоказывается главному помощнику при решении о делегировании.
toolsЯвный список разрешённых инструментов. Пропустите для наследования широкого набора по умолчанию. Пустое значение означает отсутствие инструментов.
disallowedToolsСписок запрещённых инструментов, применяемый до сужения разрешённого списка.
ОбластьРасположениеПримечания
Проект.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 зарезервированы для родителя.

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

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

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