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

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

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

## Как это работает {#kak-rabotaet}

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

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

![Схема: основной агент раздаёт задачи трём субагентам (поиск по коду, чтение документации, прогон тестов), сплошные стрелки — задачи, пунктир — отчёты обратно](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/c81c3a2c157bae395e336d655f7effe4.png)

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

## Зачем агенту помощники {#zachem}

- **Главный контекст не забивается.** Поиск по репозиторию и прогон тестов дают гору ненужного потом вывода: субагент переварит его в своём окне, а родителю вернёт три строки. Это практическая борьба с [деградацией контекста](/pages/context-rot) и часть [контекст-инжиниринга](/pages/kontekst-inzhiniring-context-engineering).
- **Независимые поиски идут параллельно.** Три модуля — три субагента одновременно, затем родитель сводит находки.
- **Риск изолирован.** Субагенту с правами только `Read`, `Glob` и `Grep` нечего ломать в основной ветке.

## Как это устроено в популярных агентах {#kak-ustroeno}

| Агент | Как описывается субагент | Как задаётся модель |
|---|---|---|
| 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, например, субагент по умолчанию может запускать своих помощников до трёх уровней вложенности.

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

| Что это | Кто исполняет | Свой контекст | Результат |
|---|---|---|---|
| [Tool calling](/pages/tool-calling-api) | ваш код, без модели внутри | нет | детерминированный ответ функции |
| [Agent Skills](/pages/agent-skills) | основной агент по инструкции | нет, навык подгружается в текущее окно | работа продолжается в общем контексте |
| Субагент | собственный цикл «модель + инструменты» | да | резюме или артефакт для родителя |

Инструмент — это вызов, навык — это инструкция, а субагент — модель со своим циклом и контекстом на время задачи. Между сессиями он ничего не помнит: для этого нужна [память агента](/pages/agent-memory).

## Модель на каждый уровень {#modeli}

Планирование требует сильной модели, исполнение готового плана — нет, а токены тратят именно субагенты, читающие файлы пачками. Поэтому родителя держат на сильной модели, массовых помощников переводят на дешёвую. Цены — из [каталога RouterAI](/models) на 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](/pages/vibe-coding-claude-code)):

```bash
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:

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

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

### Hermes

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

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

## Паттерны {#patterny}

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

## Подводные камни {#podvodnye-kamni}

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

## Связь с RouterAI {#routerai}

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

## Что почитать {#chto-pochitat}

- [Create custom subagents — документация Claude Code](https://code.claude.com/docs/en/sub-agents)
- [Agents — документация OpenCode](https://opencode.ai/docs/agents/)
- [Subagents — документация Cline](https://docs.cline.bot/features/subagents)
- [Subagent Delegation — документация Hermes Agent](https://hermes-agent.nousresearch.com/docs/user-guide/features/delegation)
- [Инструмент task — oh-my-pi](https://github.com/can1357/oh-my-pi/blob/main/docs/tools/task.md)
- [Claude Code как daily driver: Claude.md, Skills, Subagents, Plugins, MCPs](https://arps18.github.io/posts/claude-code-mastery/)
