Как использовать subagents в Claude Code: параллельные AI-агенты, лучшие практики и сценарии применения. Worktree-изоляция, управление контекстом и кастомные агенты.
VibeLab
Поделиться

Claude Code умеет запускать несколько AI-агентов параллельно — каждый со своим контекстом, набором инструментов и зоной ответственности. Anthropic называет это subagents. Мы разобрали архитектуру, протестировали ключевые сценарии и собрали практические рекомендации, которых нет в официальной документации.
Работа с Claude Code на длинных сессиях — это накопление контекста. Каждый прочитанный файл, каждая проверенная гипотеза, каждый промежуточный результат остаётся в контекстном окне. Ответы замедляются, стоимость токенов растёт, а модель начинает терять фокус на основной задаче.
Типичная ситуация: вы реализуете фичу в монорепозитории на TypeScript. По ходу работы появляются побочные задачи — проверить, как соседний сервис обрабатывает авторизацию, найти нужный утилитный модуль, убедиться, что в дизайн-системе нет подходящего компонента. Ни одна из этих задач не требует полного контекста проекта, но каждая засоряет основную сессию.
Subagents решают эту проблему. Subagent — это изолированный экземпляр Claude со своим контекстным окном. Он получает задачу, выполняет её и возвращает только результат. Удачная аналогия от Anthropic: subagents — это вкладки браузера внутри сессии Claude Code. Можно переключиться на побочную задачу, не теряя основной нити.
Главный агент выступает оркестратором. Он анализирует задачу, определяет, какие части можно делегировать, и запускает subagents. Каждый подагент работает в собственном контексте — не видит историю разговора главного агента и не загружен чужими файлами.
Ключевой принцип — изоляция контекста. Подагент стартует с чистого листа: получает только промпт с описанием задачи и набор разрешённых инструментов. Отсюда два преимущества: подагент не отвлекается на нерелевантную информацию, а главный агент не перегружается промежуточными данными из побочных задач.
Несколько subagents могут работать параллельно. При этом у каждого свои разрешения: один может только читать код, другой — редактировать файлы, третий — выполнять bash-команды.
Claude Code включает встроенные типы агентов:
Здесь часто возникает путаница у тех, кто знаком с tool-use в LLM. Вызов инструмента — это одноразовое действие: прочитать файл, выполнить grep, запустить команду. Subagent — это полноценный агент, который сам решает, какие инструменты вызывать и в каком порядке.
Разница принципиальная. Инструмент выполняет одну операцию и возвращает результат. Subagent может выполнить цепочку из десятков операций: прочитать файл, найти зависимости, перейти к другому модулю, проанализировать паттерн и сформировать вывод. Всё это — автономно, без участия главного агента на промежуточных шагах.
| Tool-use | Subagent | |
|---|---|---|
| Контекст | Общий с главным агентом | Собственный, изолированный |
| Автономность | Одна операция | Цепочка решений |
| Параллелизм | Ограниченный | Полноценный |
| Инструменты | Один конкретный | Набор под задачу |
Subagents — не универсальный молоток. Есть задачи, где они дают заметный выигрыш, и задачи, где добавляют ненужный оверхед. Разберём четыре сценария, в которых делегирование окупается.
Самый очевидный сценарий: задачи не зависят друг от друга, и их можно запустить одновременно.
Примеры из практики разработки:
Промпт для параллельного запуска:
Claude Code сам определяет, что три задачи независимы, и запускает три subagent параллельно. По данным Anthropic, три параллельных агента завершают работу быстрее, чем один последовательный. Но выигрыш масштабируется не линейно — накладные расходы на запуск и синтез результатов съедают часть ускорения.
Сигнал к применению: задач три и больше, между ними нет зависимостей, каждая требует чтения 10+ файлов.
Параметр isolation: "worktree" создаёт для subagent временное рабочее дерево Git. Агент работает в собственной ветке и директории, не затрагивая основной репозиторий.
Это решает конкретную проблему: когда два агента одновременно редактируют файлы в одном репозитории, возникают конфликты. Worktree исключает их на уровне архитектуры.
Сценарий: рефакторинг модуля авторизации и параллельная разработка нового API-эндпоинта. Оба агента работают над общей кодовой базой, но в изолированных worktrees. Результаты сливаются через стандартный git merge после завершения.
Важный нюанс: если subagent не внёс изменений, worktree автоматически удаляется. Если изменения есть — возвращается путь к worktree и имя ветки для последующей интеграции.
Когда использовать: параллельная работа над одним репозиторием, рефакторинг с сохранением стабильной ветки, экспериментальные изменения, которые могут не пригодиться.
Главный агент — стратег. Он декомпозирует задачу и передаёт части специалистам. В Claude Code можно создать кастомных агентов с жёстко заданной специализацией.
Кастомный агент — это markdown-файл в .claude/agents/ (уровень проекта, доступен команде) или ~/.claude/agents/ (уровень пользователя, доступен во всех проектах). У каждого своё системное сообщение, набор инструментов и опционально — модель.
Пример: агент для security-ревью:
После создания Claude автоматически делегирует подходящие задачи этому агенту. Можно вызвать и явно: «Попроси security-reviewer проверить staged-изменения».
Ключевой момент: поле description определяет, когда Claude решит делегировать задачу. Пишите конкретные условия срабатывания: «проверяет код перед коммитами, затрагивающими auth» маршрутизирует точнее, чем абстрактное «эксперт по безопасности».
Для автоматического создания агента используйте команду /agents — она проведёт через настройку интерактивно и сгенерирует файл из описания.
Контекстное окно — конечный ресурс. В больших проектах оно заполняется быстро: прочитал 20 файлов, запустил несколько команд — и модель уже теряет детали из начала сессии.
Subagents решают это архитектурно. Каждый подагент работает с малым, чётко очерченным контекстом. Главный агент получает только выжимку — результат работы, а не все промежуточные файлы и рассуждения.
Параметр run_in_background: true позволяет запускать subagent в фоне. Основная сессия продолжает работу, а когда фоновый агент завершится — результат приходит автоматически. В интерфейсе Claude Code то же самое делает комбинация Ctrl+B: отправить агента в фон и продолжить работу. Проверить статус фоновых задач можно командой /tasks.
Практический ориентир от Anthropic: если задача требует чтения более 10 файлов или включает 3+ независимые подзадачи — это сигнал к декомпозиции через subagents.
Официальная документация Anthropic объясняет, что делают subagents. Здесь разберём, как использовать их эффективно — рекомендации, собранные из практического тестирования.
Главное правило: subagent не видит контекст главного агента. Промпт должен быть полностью самодостаточным. Anthropic формулирует это так: «Brief the agent like a smart colleague who just walked into the room» — инструктируй агента, как умного коллегу, который только что вошёл в комнату и ничего не знает о контексте.
Плохой промпт:
Исправь баг, который мы обсуждали.
Subagent не знает, какой баг обсуждался. У него нет истории разговора.
Хороший промпт:
Структура эффективного промпта для subagent:
Промпт из одного предложения порождает поверхностную работу. Три-пять предложений с конкретикой дают результат, который можно использовать без доработки.
Принцип минимальных привилегий применим и к AI-агентам. Если subagent должен только исследовать код — дайте ему Read, Grep, Glob. Если должен вносить изменения — добавьте Edit и Write. Доступ к Bash — только когда нужно запускать команды.
В определении кастомного агента набор инструментов задаётся явно:
Зачем ограничивать:
Параметр isolation: "worktree" добавляет ещё один слой защиты: даже если агент вносит изменения, они изолированы от основной ветки.
Кастомные агенты определяют, кто выполняет работу. Файл CLAUDE.md определяет правила, по которым Claude решает, когда делегировать. Claude читает этот файл при старте каждой сессии, поэтому поведение остаётся консистентным между сеансами и участниками команды.
Пример политики в CLAUDE.md:
С такой политикой каждый запрос на ревью автоматически идёт через subagent — никому не нужно помнить и указывать это вручную.
Subagent может зависнуть, вернуть нерелевантный результат или упасть с ошибкой. Правильный паттерн: главный агент проверяет результат перед тем, как двигаться дальше.
Инструменты мониторинга:
/tasks — список активных фоновых задачTaskOutput — получить результат конкретной задачиTaskStop — остановить зависший subagentЕсли subagent вернул неожиданный результат — не перезапускайте с тем же промптом. Сначала разберитесь: промпт был недостаточно конкретным, задача требовала другого набора инструментов, или проблема в самих данных.
Мы протестировали несколько сценариев на внутренних проектах VibeLab.
Задача: проверить 10+ модулей после крупного обновления зависимостей. Последовательный подход — это часы работы.
Подход с subagents: параллельный запуск агентов с типом Explore на каждый модуль. Каждый агент получает конкретную инструкцию: «Проверь модуль X на совместимость с обновлённой версией библиотеки Y, найди deprecated-вызовы, предложи замены с примерами кода».
Результат: время ревью сократилось в разы по сравнению с последовательным анализом. Каждый агент работал в компактном релевантном контексте — без шума от соседних модулей.
Наблюдение: при запуске более 5-6 параллельных агентов прирост скорости начинает уменьшаться. Оптимум — 3-5 одновременных агентов.
Протестировали сценарий с двумя worktree-агентами: один рефакторил middleware авторизации, второй добавлял новый API-эндпоинт.
Что сработало: оба агента работали параллельно без конфликтов, каждый в своей ветке. Merge прошёл без проблем.
Что потребовало внимания: когда зоны изменений пересекаются (оба агента правят один файл), при merge возникают конфликты. Решение: на этапе декомпозиции чётко разделять зоны ответственности агентов. Правило простое — один файл принадлежит одному агенту.
Каждый subagent — отдельная сессия с собственным потреблением токенов. Запуск 5 параллельных агентов означает примерно пятикратное увеличение расхода за единицу времени.
Рекомендации по оптимизации:
model: haiku снижает стоимость для рутинных операций вроде поиска по коду.Когда несколько агентов работают параллельно над одним репозиторием без worktree-изоляции, возникают классические проблемы конкурентного доступа.
Паттерны решения:
| Подход | Подходит | Не подходит |
|---|---|---|
| Bash-скрипты | Детерминированные задачи: линтинг, сборка, деплой | Задачи, требующие понимания контекста |
| Tool-use цепочки | Простые последовательности: прочитай → измени → проверь | Многошаговые задачи с ветвлением логики |
| Subagents | Параллельные задачи, требующие анализа и решений | Тривиальные операции |
| Внешние оркестраторы (LangChain, CrewAI) | Кросс-модельные пайплайны, сложная маршрутизация | Задачи внутри одного Claude Code сеанса |
Subagents выигрывают там, где задача требует интеллектуального анализа и автономных решений. Bash-скрипт не определит, безопасен ли рефакторинг. Tool-use цепочка не адаптируется к неожиданным находкам. Subagent — может, потому что это полноценный агент со своим reasoning-циклом.
Subagents в Claude Code — это не просто параллельный запуск нескольких LLM-сессий. Это архитектурный паттерн: декомпозиция сложных задач на автономные единицы с изолированным контекстом, чёткими разрешениями и контролируемым результатом.
Ключевые паттерны, которые работают на практике:
Если хотите попробовать subagents — начните с простого. Откройте Claude Code и введите:
Этот промпт задействует Explore-агента и вернёт структурированный результат, не засоряя основной контекст. Дальше — наращивайте: добавьте второй параллельный агент, попробуйте worktree-изоляцию, создайте первого кастомного агента под задачи вашей команды.
Мы в VibeLab продолжаем исследовать agentic-подходы к разработке — от subagents и кастомных MCP-инструментов до полноценных AI-пайплайнов. Публикуем практические разборы по мере тестирования новых паттернов на реальных проектах.
Подписывайтесь на наш канал: @vibelogia
Поделимся опытом
8 800 201 85 68