#Выбор паттерна оркестрации
Продвинутый уровень · Урок 2 из 7 · около 20 минут · Нужно: Параллельные сессии в worktree · Сверено с Claude Code v2.1.285 (stable) 09.10.2026
#Цель
К концу урока вы сможете выбирать между основным разговором, субагентами, динамическим workflow и командой агентов исходя из того, что нужно задаче и сколько это стоит, а также запускать задачу в виде параллельных субагентов.
#Что понадобится
- Ваш репозиторий из урока 1 минимум с тремя папками верхнего уровня, в которых есть файлы, и ваша копия шаблона для практики с Node.js LTS: проверка запускается из копии. Подготовьте в репозитории папку
.practice/, как описано в уроке 1 Начального уровня, если ещё не сделали этого. - macOS, Linux или WSL 2 и
jq: журнал делегирования в задании «Ваша очередь» — это команда оболочки, которая его использует. - Расход лимита: умеренный. Каждый субагент работает в собственном окне контекста и отправляет собственные запросы, которые засчитываются в те же лимиты, что и ваш основной разговор (Create custom subagents). Чтобы запуск был легче, возьмите в разборе примера две папки, а в задаче 1 — два файла.
#Идея
Субагенты, динамический workflow и команда агентов — все они делят работу между исполнителями; различается то, у кого план (When to use a workflow). С субагентами Claude решает ход за ходом, и каждый результат возвращается в ваш разговор. Динамический workflow — это скрипт, который пишет Claude: в нём живут цикл и промежуточные результаты, поэтому он может запустить много агентов, перепроверить их находки и повторить запуск тем же способом. В команде агентов ведущий руководит участниками, которые переписываются напрямую (Choose an approach).
Любой паттерн сложнее одного разговора увеличивает расход: каждый субагент и каждый агент, запущенный workflow, отправляет собственные запросы (Why usage climbs), а команды агентов «расходуют значительно больше токенов, чем одна сессия» (When to use agent teams). Поэтому выбирайте самый дешёвый паттерн, который подходит задаче: задавайте эти вопросы по порядку и останавливайтесь на первом ответе, который всё решает.
flowchart TD
accTitle: У кого план
accDescr: Путь выбора способа разделить задачу. Если один разговор справится, не переполнившись, оставьте задачу в основном разговоре. Иначе, если исполнителям нужно общаться друг с другом, план держит ведущий в команде агентов — это экспериментальная функция. Если общаться не нужно и задача — несколько поручений на один раз, план держит Claude, а субагенты возвращают сводки. Если нужно много агентов, перепроверка находок или повторный запуск, план держит скрипт в динамическом workflow.
A["Задача"] --> B{"Справится ли один разговор, не переполнившись?"}
B -- да --> M["Основной разговор"]
B -- нет --> C{"Нужно ли исполнителям общаться друг с другом?"}
C -- да --> T["Команда агентов: план у ведущего"]
C -- нет --> D{"Нужно много агентов, перепроверка находок или повторный запуск?"}
D -- нет --> S["Субагенты: план у Claude"]
D -- да --> W["Динамический workflow: план у скрипта"]
Примечание
«Команды агентов — экспериментальная функция, по умолчанию отключённая» (Orchestrate teams of Claude Code sessions). Этот урок называет их как один из вариантов, но не запускает; это делает факультатив Команды агентов.
#Разбор примера
- Выберите в репозитории три папки верхнего уровня, например
src,testиdocs, и запуститеclaude. - Пройдите по вопросам схемы для одной задачи: сводка по каждой папке для новичка. Один разговор заполнился бы прочитанными файлами, которые больше не понадобятся, — значит, не основной разговор (Choose between subagents and main conversation). Сводкам не нужно общаться друг с другом — значит, не команда. Это три поручения на один раз — значит, субагенты.
- Попросите их, указав свои папки, как в примере параллельного исследования из документации (Run parallel research):
Research the src, test and docs folders in parallel using separate subagents, and give me two sentences on each.
По умолчанию интерактивная сессия запускает субагентов в фоне, так что ваш промпт остаётся свободным (Run subagents in foreground or background). Пока каждый работает, на панели под промптом есть его строка.
4. Пока они работают, выполните /tasks. Команда покажет каждого субагента, его состояние и модель, на которой он работает; нажмите Enter на строке, чтобы открыть его расшифровку (Check on running work, Choose a model). Claude может запустить встроенных субагентов Explore или general-purpose либо форки вашего разговора, так что строки у вас будут другими. Когда субагент успешно завершается, его строка исчезает с панели, а в нижней строке ненадолго появляется /tasks to see subagents; строка упавшего субагента задерживается на мгновение.
5. Когда придут сводки, выполните /usage. На планах Pro, Max, Team и Enterprise разбивка расхода относит недавний расход к скиллам, субагентам, плагинам и MCP-серверам и отмечает поведение, например длинный контекст, на которое приходится заметная доля (Plan usage breakdown). Блок Session, рассчитанный на пользователей API — например, вошедших через аккаунт Console, — показывает оценочную стоимость этой сессии (Using the /usage command). И то и другое — оценки.
6. Назовите, что изменило бы ответ. Одинаковая сводка для каждой папки, перепроверяемая и перезапускаемая перед каждым релизом, была бы workflow — паттерном следующего урока. Ревьюеры, которым нужно выяснить первопричину в споре между собой, были бы командой агентов.
#Ваша очередь
Задание: вот четыре задачи для вашего репозитория. Выберите паттерн для каждой исходя из того, что ей нужно и сколько это стоит, запишите свой выбор, затем выполните ту, что требует субагентов.
- Проверить три самых больших исходных файла на ошибки, которые перехватываются и игнорируются. Чтение файлов в вашем разговоре его перегрузит, а нужны вам только находки: по одному ревьюеру на файл, один раз, и короткий список в ответ.
- Выполнять ту же проверку на каждом исходном файле, сверять каждую находку с кодом до того, как она попадёт в отчёт, и перезапускать перед каждым релизом.
- Исправить опечатку в одном сообщении об ошибке.
- Три исследователя проверяют каждый свою гипотезу о нестабильном тесте, по ходу работы переписываются, оспаривая находки друг друга, и продолжают, пока не сойдутся на причине.
Критерии приёмки:
- В
.practice/a-2-choices.mdпо одной строке на задачу в формате<job number>: <pattern> because <reason>, где каждый паттерн —main conversation,subagents,workflowилиagent team. .practice/a-2-hook.jsonсодержит этот хукSubagentStart, который при старте каждого субагента дописывает его id и тип в.practice/a-2-agents.txt, — как журнал делегирования в уроке Делегируйте задачу своему субагенту:
{
"hooks": {
"SubagentStart": [
{ "hooks": [ { "type": "command", "command": "jq -r '[.agent_id, .agent_type] | @tsv' >> \"$CLAUDE_PROJECT_DIR/.practice/a-2-agents.txt\"" } ] }
]
}
}
- Задача 1 выполнена параллельными субагентами, по одному на файл, в сессии, запущенной через
claude --settings .practice/a-2-hook.json(CLI reference). - Задача 1 не изменила ни одного файла: ревьюеры только сообщают, и
git statusне показывает их изменений. - Выполнена только задача 1. Остальные три — только выбор.
#Проверка
Урок пройден, когда выполнено всё это:
-
.practice/a-2-choices.mdвыбирает для каждой задачи самый дешёвый подходящий паттерн. -
.practice/a-2-agents.txtпоказывает старт минимум двух субагентов для задачи 1:cut -f1 .practice/a-2-agents.txt | sort -uвыводит два или больше id. - Самопроверка (не тестируется): для одной реальной задачи из вашего бэклога вы можете назвать её паттерн, вопрос, который его определил, и почему более дешёвый паттерн не подошёл бы.
Запустите npm run check -- a-2 --dir <your repo> из своей копии для практики.
Если паттерн задачи выбран неверно, пройдите по вопросам схемы по порядку: подсказка проверки называет вопрос, который решает эту задачу. Если в журнале меньше двух id, запустите сессию с файлом хука и попросите по одному субагенту на файл, параллельно. Субагент, которого Claude возобновляет, записывает свой id ещё раз, поэтому он засчитывается один раз.
#Осторожно
- Запросы разрешений фонового субагента появляются в вашей основной сессии, и ответ, действующий дольше одного вызова инструмента — например разрешение до конца сессии, — распространяется на всю сессию, включая ваш основной разговор (Run subagents in foreground or background). Одобряйте каждый такой запрос только для этого одного вызова, никогда — до конца сессии, и просите ревьюеров только читать.
- Результат каждого субагента возвращается в ваш разговор, и каждый субагент, пока работает, тратит собственные токены, так что множество подробных результатов загромождает контекст и увеличивает расход. Просите короткие результаты (Run parallel research).
- Если команды агентов включены, субагент, которого называет Claude, запускается как участник команды, так что команда может сложиться, даже если вы просили субагентов. Хук также пишет строку каждый раз, когда участник, работающий внутри вашего основного терминала, обрабатывает новое сообщение (Claude spawns teammates instead of subagents, SubagentStart). Если вы включали команды, добавьте
"env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "0" }в.practice/a-2-hook.jsonкак ключ верхнего уровня рядом с"hooks". Файл--settingsпереопределяет ваши пользовательские, проектные и локальные настройки и экспорт в оболочке, а его самого переопределяют только управляемые настройки (Settings precedence).
#Что дальше
- Run agents in parallel: официальное сравнение способов, которыми Claude Code работает над несколькими задачами сразу, и как следить за каждой.
- Fork the current conversation: субагент, который наследует весь ваш разговор и разделяет его кэш промптов, — для побочной задачи, которой нужен тот же контекст.
- Agent team token costs: из чего складывается расход команды и как его сократить.
Источники: Run agents in parallel · Orchestrate subagents at scale with dynamic workflows · Orchestrate teams of Claude Code sessions · Create custom subagents · Manage costs effectively · Hooks reference · CLI reference · Settings files and precedence
← Параллельные сессии в worktree · Оглавление Продвинутого уровня · Запуск и сохранение динамического workflow → · Тема: Субагенты и параллельная работа · Застряли на уроке?