Загрузка...

Субагент (Subagent): что это и зачем главный агент раздаёт работу помощникам

Субагент (subagent) — это отдельный экземпляр агента, которого основной агент запускает для узкой подзадачи. У субагента свой контекст, свои права на инструменты и своя модель, а родителю он возвращает короткий отчёт, а не всю переписку.

Главный агент остаётся дирижёром: ставит задачи и сводит отчёты, а работу делает помощник — в своей сессии и со своим контекстным окном.

Как это работает

Цикл тот же, что у любого агента; отличается обвязка:

  1. Запуск. Родитель формулирует цель и передаёт нужный контекст: в Claude Code — вызовом инструмента Agent, в Cline — spawn_agent, в Hermes — delegate_task. Кого звать, агент решает по описанию (description) субагента.
  2. Чистый контекст. Историю родителя субагент не видит: у него есть переданная задача и свой системный промпт.
  3. Работа в рамках прав. Он читает файлы, ищет по репозиторию, запускает команды — только выданными инструментами.
  4. Отчёт. В контекст родителя попадает итог, но не промежуточные вызовы и сырые логи.

Схема: основной агент раздаёт задачи трём субагентам (поиск по коду, чтение документации, прогон тестов), сплошные стрелки — задачи, пунктир — отчёты обратно

Родитель раздаёт задачи (fan-out), субагенты работают параллельно, отчёты возвращаются родителю (fan-in).

Зачем агенту помощники

  • Главный контекст не забивается. Поиск по репозиторию и прогон тестов дают гору ненужного потом вывода: субагент переварит его в своём окне, а родителю вернёт три строки. Это практическая борьба с деградацией контекста и часть контекст-инжиниринга.
  • Независимые поиски идут параллельно. Три модуля — три субагента одновременно, затем родитель сводит находки.
  • Риск изолирован. Субагенту с правами только Read, Glob и Grep нечего ломать в основной ветке.

Как это устроено в популярных агентах

Агент Как описывается субагент Как задаётся модель
Claude Code markdown-файл в .claude/agents/ или ~/.claude/agents/: name, description, tools, model, тело файла — системный промпт поле model: алиас sonnet, opus, haiku, fable или inherit; общий вариант — CLAUDE_CODE_SUBAGENT_MODEL
Codex инструмент spawn_agent, команда /subagents переключает потоки параметр agents.default_subagent_model
Cline инструмент spawn_agent (Cline CLI и Desktop) отдельной модели нет
OpenCode markdown-файл в .opencode/agents/ с mode: subagent поле model в формате провайдер/модель; без него наследуется модель родителя
Hermes инструмент delegate_task, настройки в секции delegation delegation.model, при необходимости delegation.base_url
omp инструмент task с пачкой tasks[], роли explore, planner поле model у задачи при включённом task.perCallModel

Детали меняются между версиями, поэтому сверяйтесь с документацией инструмента: в Claude Code, например, субагент по умолчанию может запускать своих помощников до трёх уровней вложенности.

Чем субагент отличается от инструмента

Что это Кто исполняет Свой контекст Результат
Tool calling ваш код, без модели внутри нет детерминированный ответ функции
Agent Skills основной агент по инструкции нет, навык подгружается в текущее окно работа продолжается в общем контексте
Субагент собственный цикл «модель + инструменты» да резюме или артефакт для родителя

Инструмент — это вызов, навык — это инструкция, а субагент — модель со своим циклом и контекстом на время задачи. Между сессиями он ничего не помнит: для этого нужна память агента.

Модель на каждый уровень

Планирование требует сильной модели, исполнение готового плана — нет, а токены тратят именно субагенты, читающие файлы пачками. Поэтому родителя держат на сильной модели, массовых помощников переводят на дешёвую. Цены — из каталога RouterAI на 9 ноября 2026 года.

Оценка сессии: родитель — 120 тыс. входных и 10 тыс. выходных токенов, субагенты суммарно — 400 тыс. входных и 24 тыс. выходных. Кэширование не учтено.

Роль Модель Цена за 1 млн токенов, вход / выход, ₽ Стоимость части сессии, ₽
Родитель: план и сводка anthropic/claude-sonnet-5.5 213,56 / 1067,8 около 36
Субагенты, сильный вариант anthropic/claude-haiku-5.5 10,68 / 53,39 около 6
Массовые субагенты deepseek/deepseek-v4.1-flash 2,58 / 46,98 около 2
Массовые субагенты, дешёвый выход z-ai/glm-5.3-flash 3,94 / 9,75 около 2
Субагенты с длинными отчётами qwen/qwen3.6-flash 20,02 / 120,13 около 11

Для сравнения: те же субагенты на Claude Sonnet 5.5 обошлись бы примерно в 111 ₽ вместо 2–6 ₽.

Claude Code

Полный id вроде deepseek/deepseek-v4.1-flash в поле model субагента Claude Code не принимает: такое значение отвергается как неизвестная модель. Рабочий путь — направить алиас на нужную модель переменными окружения (настройка Claude Code через RouterAI):

export ANTHROPIC_BASE_URL="https://routerai.ru/api"
export ANTHROPIC_AUTH_TOKEN="sk-xxxxxxxxxxxxxxxx"
export ANTHROPIC_API_KEY=""
export ANTHROPIC_DEFAULT_SONNET_MODEL="anthropic/claude-sonnet-5.5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek/deepseek-v4.1-flash"

Теперь субагент с model: haiku идёт на DeepSeek V4.1 Flash, а основная сессия — на Sonnet:

---
name: scout
description: Разведчик. Используй, чтобы найти файлы и коротко отчитаться о находках
tools: Read, Glob, Grep
model: haiku
---
Ищи в репозитории то, о чём просят, и отвечай отчётом не длиннее трёх строк.

Если задан CLAUDE_CODE_SUBAGENT_MODEL, его значение применяется к субагентам без поля model. Чтобы одна модель использовалась для всех субагентов, добавьте CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1: тогда поле model в описаниях игнорируется.

Hermes

# ~/.hermes/config.yaml
delegation:
  model: "deepseek/deepseek-v4.1-flash"
  base_url: "https://routerai.ru/api/v1"
  api_key: "sk-xxxxxxxxxxxxxxxx"

Без delegation.model субагенты наследуют модель родителя.

Паттерны

  • Fan-out / fan-in. Родитель режет задачу на независимые куски, запускает субагентов параллельно и сводит отчёты.
  • Исследователь, исполнитель, ревьюер. Разведчик на дешёвой модели собирает факты, родитель правит код, субагент с правами только на чтение проверяет дифф.
  • Чистильщик контекста. Субагент сжимает накопленный за долгую сессию лог до решений и открытых вопросов, родитель продолжает с выжимкой.

Подводные камни

  • Дублирование работы. Субагенты не видят друг друга, поэтому границы задач нужно задавать явно.
  • Потеря связности. Субагент не знает, что обсуждалось в сессии. Нужный контекст передавайте в тексте задачи.
  • Токены на отчёты. Каждый отчёт снова попадает в контекст родителя, поэтому заранее просите краткий формат.
  • Сложность отладки. Видно только итог: без логов субагентов причину ошибки не найти.
  • Маленькие задачи. Правка одной функции в основном контексте дешевле: запуск и отчёт сами тратят токены. Субагент окупается, когда сырого вывода больше, чем отчёта о нём.

Связь с RouterAI

RouterAI даёт инструментам OpenAI-совместимый эндпоинт https://routerai.ru/api/v1 и Anthropic Messages API на https://routerai.ru/api. Родитель и субагенты идут через один ключ и один баланс, а различаются только id моделей. Работа из России без VPN и оплата в рублях действуют для всех моделей каталога. О том, как из ролей собирается команда, читайте в статьях про оркестрацию ИИ-агентов и мультиагентные системы.

Что почитать