Изоляция контекста, ради которой существуют подагенты, иногда оборачивается против вас. Вы час обсуждали архитектуру, разобрали три варианта, отвергли два, договорились о третьем. Теперь нужно параллельно набросать тесты. Обычный подагент стартует с чистым контекстом — и вам придётся пересказывать ему весь этот час, а половину нюансов вы всё равно упустите.
Для таких случаев есть форк: подагент, наследующий вашу беседу целиком. Он видит ту же историю, тот же системный промпт, те же инструменты и ту же модель. При этом его собственные действия наружу не выходят — назад приходит только результат. Плюс форк открывает параллельность: от одной точки можно запустить несколько веток и сравнить, к чему они приведут. После этого урока вы будете понимать, когда нужен форк, а когда обычный подагент, и как не сжечь лимиты параллельными запусками.
Что уже умеем / что добавим
Вы умеете делегировать задачи встроенным подагентам, писать собственных, ограничивать им инструменты и подключать скиллы. Вы знаете главное свойство подагента — чистый стартовый контекст.
Теперь мы разберём единственное исключение из этого правила. Добавим команду /subtask, поймём разницу между форком и обычным подагентом, научимся запускать несколько подагентов параллельно и разберёмся с лимитами: сколько их может работать одновременно и как глубоко они могут вкладываться друг в друга.
Что вы узнаете в рамках статьи
- Что такое форк беседы и чем он отличается от обычного подагента
- Как запустить форк командой
/subtaskи что он наследует - Чем
/subtaskотличается от/fork - Как запускать несколько подагентов параллельно и зачем
- Какие есть лимиты параллельности и вложенности и как их менять
Ключевые термины
- Форк (fork) — подагент, наследующий всю беседу родителя: историю, системный промпт, инструменты и модель.
/subtask— команда, запускающая форк с заданной задачей; требует версии 2.1.212 или новее.- Fork mode — режим, в котором Claude может сам запрашивать форк; в интерактивных сессиях включён по умолчанию.
- Предел параллельности — максимум одновременно работающих подагентов в сессии; по умолчанию 20.
- Глубина вложенности — сколько уровней подагентов может порождаться от главной беседы; по умолчанию три.
Форк: подагент, который всё знает
Форк — исключение из правила о чистом контексте. Он наследует беседу целиком: тот же системный промпт, ту же историю сообщений, те же инструменты и ту же модель.
Ключевое свойство сохраняется: собственные вызовы инструментов форка в вашу беседу не попадают, назад возвращается только финальный результат. То есть вы отдаёте контекст внутрь, но не получаете шум обратно.
Запускается форк командой /subtask с описанием задачи:
/subtask набросай юнит-тесты для изменений в парсере
Claude Code сам придумает форку имя по первым словам задачи. Форк появляется в панели под строкой ввода и работает в фоне — вы продолжаете работать в главной беседе. Когда он закончит, результат придёт сообщением в вашу беседу.
Отличие от /fork стоит запомнить сразу, потому что имена похожи. /subtask создаёт форк-подагента внутри текущей сессии. /fork копирует всю беседу в новую фоновую сессию со своей строкой в agent view — две полностью независимые беседы. Исторически это одна и та же команда: на версиях с 2.1.161 по 2.1.211 форк-подагент запускался как раз через /fork, а нынешнее поведение появилось позже.
Claude может запросить форк и сам — это управляется fork mode, который в интерактивных сессиях включён по умолчанию. Но /subtask работает независимо от него.
Когда форк, а когда обычный подагент
Правило простое: считайте, сколько контекста нужно передать.
Берите обычный подагент, когда задача самодостаточна и формулируется в пару предложений. Прогнать тесты, найти вызовы функции, разобрать логи — тут чистый контекст только на пользу: меньше лишнего, дешевле, быстрее.
Берите форк, когда объяснять придётся дольше, чем делать. После долгого обсуждения архитектуры, при отладке, где важна вся цепочка гипотез, при работе над задачей с накопленными за час договорённостями — форк избавляет от пересказа.
Обычный подагент подойдёт:
Используй подагента, чтобы найти все использования устаревшего
метода formatDate и вернуть список файлов
Нужен форк:
/subtask реализуй второй из обсуждённых вариантов кэширования
и проверь, не ломает ли он тесты
Во втором случае «второй из обсуждённых вариантов» существует только в вашей переписке. Обычный подагент этого не поймёт.
Параллельный запуск
Несколько подагентов могут работать одновременно. Это меняет подход к задачам, которые распадаются на независимые части.
Просто попросите об этом в одном сообщении:
Параллельно запусти трёх подагентов:
первый проверяет покрытие тестами модуля auth,
второй ищет неиспользуемые зависимости в package.json,
третий собирает список TODO старше полугода по git blame.
Верни три отдельных отчёта.
Три задачи не связаны между собой, поэтому выполняются одновременно, и вы ждёте не сумму времён, а время самой долгой.
Форки тоже параллелятся, и это даёт полезный приём: запустить из одной точки несколько подходов к одной задаче и сравнить результаты. Каждый форк стартует с одинаковым контекстом, но идёт своим путём.
Учтите главное ограничение: параллельные запуски умножают расход. Десять агентов сжигают лимиты примерно вдесятеро быстрее одного. Параллельность оправдана, когда задачи действительно независимы, а не когда хочется побыстрее.
Лимиты, о которых стоит знать
Одновременно работающих подагентов по умолчанию 20. При попытке запустить сверх лимита приходит ошибка Concurrent subagent limit reached, и Claude не повторяет попытку. Как только кто-то завершится, слот освободится. Значение меняется переменной окружения:
export CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS=5
Форк, запущенный через /subtask, занимает слот, пока работает, но самим лимитом не блокируется. Общее число подагентов за сессию не ограничено — ограничены только одновременные.
Глубина вложенности по умолчанию три уровня ниже главной беседы. То есть подагент может породить подагента, тот — ещё одного, а дальше инструмент Agent у них просто не появится. Настраивается так:
{
"env": {
"CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH": "2"
}
}
Значение 1 отключает вложенность полностью. Вложенные подагенты отображаются деревом в панели под строкой ввода со счётчиком потомков вида (+N).
Наблюдать за фоновой работой удобно через команду /tasks — она показывает всё, что выполняется в фоне текущей сессии, включая уже завершившихся подагентов.
Частые ошибки
- Путать
/subtaskи/fork. Первая создаёт форк-подагента внутри сессии, вторая копирует беседу в отдельную фоновую сессию. Проверьте версию: до 2.1.212 форк-подагент запускался через/fork. - Форкать ради простой задачи. Форк тащит с собой всю историю беседы. Если задача формулируется в одно предложение, обычный подагент дешевле и быстрее.
- Параллелить зависимые задачи. Если второй агент должен опираться на результат первого, параллельный запуск даст неверный результат: он стартует, не дождавшись данных.
- Забывать про умножение расхода. Десять параллельных агентов расходуют лимиты вдесятеро быстрее. Оценивайте выигрыш во времени против цены.
Наиболее частые вопросы
- Видит ли форк мою переписку? — Да, целиком: историю, системный промпт, инструменты и модель. Это его главное отличие от обычного подагента.
- Попадут ли действия форка в мою беседу? — Нет. Его вызовы инструментов остаются в его контексте, назад приходит только финальный результат.
- Сколько подагентов можно запустить одновременно? — По умолчанию 20; значение меняется переменной
CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS. - Может ли подагент запустить своего подагента? — Да, по умолчанию до трёх уровней вглубь. Настраивается через
CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH. - Как посмотреть, что сейчас выполняется в фоне? — Командой
/tasks: она перечисляет фоновые задачи текущей сессии, включая завершившихся подагентов.
Итоги
Прекрасно — вы освоили ту часть механики подагентов, которая на первый взгляд выглядит противоречиво. Оказалось, что изоляция контекста не догма: когда пересказ дороже самой работы, форк передаёт всю беседу целиком, при этом не пуская шум обратно. Вы научились запускать его через /subtask, отличать от /fork, распараллеливать независимые задачи и знаете, где проходят границы: 20 одновременных агентов, три уровня вложенности.
Отдельно ценно понимание цены параллельности — это тот момент, где легко увлечься и сжечь дневной лимит за полчаса. В следующем уроке мы разберём фоновые агенты и git worktree: как сделать так, чтобы несколько агентов, работающих одновременно, не наступали друг другу на файлы.