Каждый день в Telegram-канале - что нового в вайб-кодинге: инструменты, примеры, ошибки. Подпишись, чтобы быть в курсе.
Что Boris Cherny анонсировал 9 июня в Claude Code v2.1.172?
Если ты последние месяцы читал любой материал про ИИ-агентов в Claude Code, ты натыкался на одну и ту же фразу. Она есть в официальной документации, есть в моём гайде про субагентов, есть в любом разборе у конкурентов. Звучит так: «субагент не может породить другого субагента». На 11 июня 2026 эта строка ещё лежит в трёх разных местах code.claude.com/docs/en/sub-agents. Anthropic просто не успел обновить.
А 10 июня в 20:44 UTC на GitHub Releases вышел Claude Code v2.1.172. Главный пункт журнала изменений (changelog) - одна строка:
Субагенты теперь могут порождать своих субагентов, до 5 уровней глубины.
Сам Cherny в твиттере анонсировал ровно за сутки до релиза - 9 июня по тихоокеанскому времени, утром. Поэтому сообщество запомнило именно «9-е». Тон сообщения - почти личный, без маркетинговой обвязки. По разбору сообщества на claudefa.st, Cherny написал: «Только что выкатил поддержку вложенных субагентов в Claude Code. Для старта потолок depth=5. Дайте знать, что думаете». Я добавлю одну деталь, которую ты не заметишь по changelog. В этом же релизе пофиксили баг, который возможен только в режиме вложенности: фоновый субагент остаётся подсвечен как активный в панели агентов после того, как вложенный, которого он запустил, уже остановили. Это значит, Cherny не просто включил флаг - он сам гонял живые сценарии вложенности перед публикацией. Видел этот глюк своими глазами и пофиксил.
Это редкий случай, когда официальные docs ещё противоречат шиппинг-биллу. Дальше я разберу, чем вложенность отличается от параллельных субагентов, что значит «глубина 5», и в каких трёх сценариях это реально нужно сегодня.
Чем вложенные субагенты отличаются от параллельных и последовательных?
Я долго гонял эти три варианта руками и для себя сформулировал так: у делегирования есть три измерения. Ширина, длина и глубина. Каждое решает свою проблему.
Ширина - параллельные субагенты. Главный чат запускает N независимых субагентов на одном уровне. Каждый получает свою узкую задачу, работает в собственном изолированном окне, возвращает только итог. Ширина решает скорость: 5 субагентов параллельно успевают за то время, за которое один сделает по очереди. Это та модель, которую я разбирал в гайде про параллельных субагентов через worktree.
Длина - цепочка субагентов. A работает, отдаёт результат B, B работает, отдаёт C. Каждый видит вход от предыдущего. Длина решает порядок: пока B не получит данные от A, B не может стартовать. Классический пример - сначала субагент-исследователь собирает источники, потом субагент-редактор пишет статью на основе источников, потом субагент-фактчекер проверяет статью. Это плоская последовательность, главный чат держит весь сюжет.
Глубина - вложенные субагенты. A запускает B, B сам запускает C, C сам запускает D. Каждый ребёнок работает внутри родителя, в своём изолированном окне, и возвращает родителю только итог. Главный чат при этом не видит ничего, что происходит в детях, внуках и правнуках. Это новое в v2.1.172.
Главная путаница - люди думают, что глубина 5 это «можно запускать 5 субагентов одновременно». Это не так. Глубина это вертикальный уровень в дереве, а не количество одновременных детей. На каждом уровне может быть один субагент или сто. Глубина 5 значит, что цепочка делегирования может уходить вниз на 5 шагов: главный чат → внук-1 → внук-2 → внук-3 → внук-4 → внук-5. И на каждом уровне может быть веерное ветвление.
Цитата из community-разбора claudefa.st точно ставит акцент:
Два года правило было абсолютным: субагент не мог породить другого субагента.
Cherny снял ровно это.
Если ты гонишься за скоростью - тебе нужна ширина. Если у тебя жёсткий порядок выполнения - длина. Глубина нужна ровно в одном случае: когда внутри одной из задач есть подзадача с шумом (15 веб-запросов, перебор логов, чтение десятка файлов). И ты не хочешь, чтобы этот шум залил твоё главное окно.
Что значит «глубина 5 уровней» на практике?
Тут важная честность. Я провозился полдня с документацией и community-разборами, чтобы понять, что Anthropic не дал точного определения. Главное, что нужно знать.
Это потолок, а не настройка. Цитата из claudefa.st:
Потолок - пять уровней, и это жёсткий лимит. Никакая настройка его не поднимет, не опустит и не выключит.
Лимит вшит на стороне сервера. В клиенте v2.1.172 при реверс-инжиниринге не нашли константу MAX_DEPTH. Значит, проверка идёт где-то в Anthropic API, не у тебя локально. Ты не можешь сделать --max-depth 7 и сделать дерево глубже. Не можешь и --max-depth 2 и поставить безопасный потолок ниже. Единственный рычаг, который у тебя есть, это Agent(agent_type) allowlist в frontmatter - но он ограничивает типы дочерних агентов, не глубину.
Точное определение «5» Anthropic не дал. Это второе важное:
Одна неопределённость важна сама по себе: официальные источники не уточняют, означает ли depth=5 пять уровней под рутом (то есть шесть агентов в самой глубокой цепочке) или пять агентов всего, включая рут.
Сторонние интеграции пока трактуют по-разному. В ADR-147 проекта ruvnet/ruflo принимают вариант «5 уровней детей под рутом = 6 агентов в цепочке». Я в своих экспериментах считаю по тому же принципу: главный чат это уровень 0, его прямые дети - уровень 1, и так далее до уровня 5. Но в публичной документации это не зафиксировано.
Лимит уже включён, без флагов. Тебе не нужно ничего активировать. После обновления Claude Code до v2.1.172 ты можешь добавить Agent в tools дочернего агента, и он запустит ещё одного субагента. Главное - чтобы агент-родитель тебе позволял (tools: Agent(...)).
Где живёт ваше делегирование сегодня: ширина, длина или глубина?
Пройдись по своим последним 5 промптам. Сколько раз ты делал так: задача стартует, Claude начинает грепать файлы, делает 10 веб-запросов, кладёт в контекст полную портянку логов - и через 20 минут ты понимаешь, что окно забилось. Финальный ответ уже идёт на скудном бюджете токенов, потому что 70 процентов контекста съели промежуточные дампы.
Это сценарий, где тебе нужна глубина. Не параллель, не цепочка - именно глубина. Главный чат должен делегировать «исследование» одному субагенту, а тот изнутри сам запускать своих дочерних на конкретные веб-поиски, чтения файлов, грепы. Дочерние возвращают только distilled-вердикты. Внук возвращает родителю: «нашёл, подтверждаю» или «не нашёл, причина X». Родитель собирает это в одну сводку и возвращает тебе. Главный чат остаётся чистым.
Я сам до 9 июня эмулировал это руками. Открывал второй экземпляр Claude Code, копировал туда промпт «исследуй вот это», запускал, потом руками переносил итог обратно в главное окно. Эту схему я подробно описывал в гайде про Boris Cherny и 10 тысяч агентов. С v2.1.172 это можно описать прямо в системном промпте оркестратора - Claude сам построит дерево.
Хочешь не только разобраться с вложенными субагентами, но и собрать связку, которая делает Claude стабильным? Вложенность - лишь один кирпичик. На практикуме за 3 эфира собираем все три кита: ИИ-клон + Второй мозг + Контекст-инжиниринг - именно эта связка превращает Claude из «помощника с галлюцинациями» в надёжный инструмент.
В каких 3 сценариях вложенные субагенты реально нужны?
Сценарий 1. Глубокое исследование с проверкой фактов
Допустим, ты собираешь материал для статьи или коммерческого предложения. Тебе нужно сначала вытащить 5-10 тезисов из открытых источников, а потом каждый тезис проверить - найти первоисточник, убедиться, что цитата дословная, посчитать реальные цифры.
До v2.1.172 у тебя было два варианта. Либо ты делал всё это одним субагентом, и он пыхтел через 30 веб-запросов, закидывая всё в свой контекст. Либо ты разбивал руками: один промпт - извлечь тезисы, потом цикл по тезисам, каждый запускал отдельным субагентом. Главный чат у тебя обрастал портянками промежуточных списков.
С глубиной 2 это закрывается одним промптом главному чату. Главный → claim-extractor (вытаскивает тезисы, уровень 1) → каждый тезис уходит в fact-verifier (уровень 2), который внутри себя запускает web-deep-search (уровень 3) для конкретного поиска. Главный чат получает только массив верифицированных тезисов с источниками. Всё остальное - в дочерних окнах, в твой контекст не попадает.
Сценарий 2. Разбор большого репозитория
Тебе пришёл проект на 200 файлов. Надо понять архитектуру, найти главные модули, оценить технический долг. Запустишь Glob плюс десяток Read руками - забьёшь окно за 10 минут.
Глубина решает так: главный чат запускает субагента «архитектор». Архитектор изнутри спавнит трёх детей - один смотрит структуру каталогов (бежит Glob и резюмирует), второй читает 5 ключевых файлов конфигурации, третий грепает по основным паттернам. Каждый возвращает архитектору сжатую сводку. Архитектор собирает картинку и отдаёт главному чату итоговый отчёт на половину экрана. Ты получаешь карту проекта, не залив контекст портянкой cat всех файлов.
Сценарий 3. Анализ сквозной зависимости
Меняешь схему БД, контракт API или общий файл с настройками. Надо понять, где это аукнется. Эта задача убивает контекст быстрее всего, потому что зависимостей много и каждую надо посмотреть в исходниках.
Глубина: главный чат запускает «impact-analyzer» (уровень 1). Он сам запускает по одному dependency-tracer на каждый затронутый файл (уровень 2). Каждый трейсер изнутри запускает consumer-finder (уровень 3), который грепает кодовую базу на потребителей этой зависимости. Дальше каждый возвращает только верхушку: «вот эти три места ломаются». Главный чат собирает таблицу «затронутые файлы → impact», ничего не зная про grep-результаты.
В сводке digg.com это формулируется так:
Каждый субагент работает в собственном изолированном окне и возвращает родителю только сводку, что позволяет разложить большую кодовую базу или сессию отладки на многослойное делегирование, не заливая главный контекст.
Как настроить вложенные субагенты за 10 минут
Шаг 1. Убедись, что у тебя v2.1.172 или выше.
claude --versionЕсли меньше - обнови. Главная фича релиза одной строкой changelog: «Субагенты теперь могут порождать своих субагентов, до 5 уровней глубины» (полный текст).
Шаг 2. Создай родительского агента, который умеет спавнить детей.
Файл .claude/agents/research-orchestrator.md:
---
name: research-orchestrator
description: Делегирует исследование с глубоким fact-check
tools: Agent(claim-extractor, fact-verifier), Read, WebFetch
model: opus
---
Ты - оркестратор исследования. Получив тему:
1. Сначала вызови claim-extractor - он соберёт тезисы.
2. Для каждого тезиса вызови fact-verifier - он сам порождает
своих дочерних субагентов для веб-поиска и сверки.
3. Тебе fact-verifier вернёт только финальные вердикты -
не загружай в свой контекст промежуточные дампы.
Финальный отчёт - только массив { claim, sources[], confidence }.Главное - в строке tools стоит Agent(claim-extractor, fact-verifier). Это «белый список» (allowlist): оркестратор может вызвать только этих двух типов дочерних. Если он попробует вызвать что-то другое - запрос упадёт. Это защита от веера, который ушёл в неконтролируемое.
Шаг 3. Создай дочернего агента, который сам умеет спавнить внуков.
Файл .claude/agents/fact-verifier.md:
---
name: fact-verifier
description: Проверяет тезис через дочерние веб-поиски
tools: Agent(web-deep-search), Read
model: sonnet
---
Ты - факт-чекер. Получив тезис:
1. Сформулируй 2-3 поисковых запроса.
2. Для каждого запусти web-deep-search - он сам сделает
WebSearch и WebFetch, вернёт верифицированные сниппеты.
3. Сведи в один verdict: { claim, sources[], confidence }.Видишь ключевое - в tools снова стоит Agent(web-deep-search). Это значит, что fact-verifier (уровень 2 в нашем дереве) сам может запустить ещё одного субагента (уровень 3). Раньше эта строка не имела эффекта - в документации до сих пор лежит фраза:
Субагенты не могут порождать других субагентов, поэтому Agent(agent_type) не действует в определениях субагентов.
С v2.1.172 эта строка устарела. Синтаксис тот же, но теперь работает на любой глубине дерева.
Шаг 4. Создай внука.
Файл .claude/agents/web-deep-search.md:
---
name: web-deep-search
description: Делает веб-поиск и возвращает сниппеты
tools: WebSearch, WebFetch
model: haiku
---
Тебе пришёл поисковый запрос. Сделай WebSearch, выбери топ-3
релевантных URL, через WebFetch вытащи дословные подтверждения
тезиса. Верни массив { url, snippet, supports_claim: yes|no }.У внука нет Agent в tools - он не порождает дальше. Это лист дерева.
Шаг 5. Запусти оркестратор.
claude --agent research-orchestratorДальше в чат: «Найди и подтверди 5 тезисов про экономику вайб-кодинга в 2026 году». Главный чат вызовет оркестратор, который сам построит трёхуровневое дерево, прогонит, и отдаст тебе финальный отчёт. Каждый субагент - своё окно. Главный чат видит только итог.
Какие 5 антипаттернов сжигают токены и убивают наблюдаемость?
Антипаттерн 1. Задача помещается в одно окно.
Если субагент один справится без шума - не плоди уровней. Разбор сообщества на claudefa.st формулирует:
Если один субагент держит задачу без шума, вложенность добавляет цену и задержку зря.
Антипаттерн 2. Гоняешься за скоростью вместо изоляции.
Хочешь быстрее - тебе нужна параллель, не глубина. Запусти 5 субагентов одного уровня вширь, а не строй цепочку. Глубина существует для того, чтобы убрать шумную подготовительную работу в дочернее окно, не для ускорения.
Антипаттерн 3. Работа неглубокая по своей природе.
«Найди этот файл и покажи мне его» - это двухшаговый запрос, ему не нужна трёхуровневая иерархия. Вложенность стоит того, когда внутри задачи есть подзадача с большим шумом. Если шума нет - не плоди субагентов.
Антипаттерн 4. Размытые промпты на первом уровне.
Это самый опасный сценарий. Если ты дал расплывчатый промпт оркестратору на уровне 1, размытость множится. Один расплывчатый промпт на уровне 1 превращается в 4 расплывчатых промпта на уровне 2 и 16 - на уровне 3. К моменту, когда внуки начнут работать, они уже не знают, что вообще ищут.
Антипаттерн 5. Геометрический рост стоимости.
Главный экономический аргумент. Из того же разбора на claudefa.st:
Тяжёлые субагентские workflow и так едят примерно в семь раз больше токенов, чем однопоточная сессия. Вложенность умножает токены, и умножение копится с глубиной.
Грубый калькулятор: цепочка глубины 3 с веером 3 на каждом уровне - это 27 субагентов. То есть минимум в 27 раз больше токенов, чем простой запрос. На Pro-плане Claude такой расчёт сжигает дневной лимит за пару часов. Если ты на Max-плане - выжжешь недельный за день.
Бонус-антипаттерн (мой опыт): «50 агентов ерундой занимаются».
Когда я заглядываю в проекты ребят, я часто вижу так: «у меня 50 агентов работу работают». Спрашиваю - а что они делают? И вот эти 50 агентов занимаются ерундой. Они генерируют кучу ненужного, тонну сырых сводок, дубли, портянки логов. Каждый делает что-то «вообще полезное», а итог - заваленный контекст и счёт за токены, как у небольшой компании. Глубина 5 эту проблему не лечит - она её усугубляет. Если у тебя на уровне 1 уже неясно, кто что делает - глубина 5 это пять уровней неясности.
Тест перед запуском любого субагента - закрыть 4 вопроса за полминуты:
- что он конкретно делает (одним предложением),
- какие файлы он трогает,
- что он возвращает родителю,
- кто его проверяет.
Не можешь ответить за 30 секунд - этого субагента не должно быть. Это правило я расписал отдельно в гайде про параллельных субагентов.
Почему вложенность без контекст-инжиниринга это 5 уровней галлюцинаций?
Это место, где меня часто спрашивают: «Артемий, я обновил Claude Code, добавил Agent в tools, дерево строится - но финальный ответ всё ещё мимо. Почему?».
Ответ простой. Каждый субагент в Claude Code начинается с чистого листа. Из официальной документации:
Каждый субагент стартует с чистого изолированного окна. Он не видит историю разговора, скиллы, которые ты уже вызвал, файлы, которые Claude уже прочитал.
На уровне 1 это терпимо, оркестратор передаёт ребёнку короткое описание задачи. Но на уровне 3 внук получает delegation-сообщение от своего родителя, у которого тоже было только delegation. Каждый передал по чуть-чуть. К уровню 5 у тебя сидит субагент, у которого в окне есть фраза «проверь тезис X», и больше ничего. Он не знает, в каком проекте работает, какую задачу решает, на чём фокусироваться.
Без CLAUDE.md внук пятого уровня - это сотрудник, который пришёл в офис впервые в жизни и без инструктажа. Он сделает что-то, потому что задачу получил. Но это не будет то, что нужно проекту.
Поэтому связка обязательна. Глубина 5 без правильно поставленного CLAUDE.md, business/ и пайплайна скиллов - это казино. С ними - инструмент. Эту связку я разбираю на практикуме как «3 кита»: ИИ-клон + Второй мозг + Контекст-инжиниринг. Любой из трёх отдельно работает плохо, все три вместе - превращают вложенность в реальный рычаг.
Что ещё обновили в v2.1.172 кроме вложенности?
Открой полный changelog v2.1.172, и увидишь, что весь релиз - про субагентов.
Фикс 1. Фоновый субагент перестаёт «зависать» как активный в панели агентов после остановки вложенного, которого он запустил. Этот баг возможен только во вложенности. Если бы Cherny не гонял nested-сценарий руками - его бы не нашли.
Фикс 2. Ограничения availableModels теперь применяются и к субагентам тоже. Раньше если ты ограничивал, какие модели может использовать команда (например, запрещал opus в целях экономии), субагенты могли это правило обходить через override в своём конфиге. С v2.1.172 правило применяется везде.
Фикс 3. Стрелка вверх в истории промптов теперь показывает промпты текущего таба субагента, а не главного агента. Косметика наблюдаемости.
Фикс 4. Снижено потребление CPU в простое: индикатор /goal перестал перерисовывать терминал на холостом ходу с частотой 5 Гц, плюс меньше перерисовок UI при работе параллельных субагентов.
Я обращаю внимание: четыре из четырёх фиксов касаются субагентов. Это значит, Anthropic выпустил всю обвязку под вложенность одним стеком, а не одну строчку в журнале изменений. Вложенность уже жила какое-то время внутри Anthropic до публикации.
Чек-лист: когда вложенность помогает, а когда вредит
Используй вложенность, если:
- Внутри задачи есть подзадача с большим объёмом веб-запросов, грепов или чтения файлов.
- Эту подзадачу не страшно потерять (если внук вернёт «ничего не нашёл» - оркестратор продолжит).
- Промежуточные результаты тебе не нужны в главном окне.
- У тебя есть
CLAUDE.mdи собран контекст проекта, на который субагент может опереться. - Ты можешь чётко описать, что вернёт каждый уровень (вход, выход, формат).
- Ты на тарифе Max или у тебя есть запас на ×27 токенов.
Не используй вложенность, если:
- Задача решается одним субагентом без шума.
- Тебе нужны промежуточные результаты в главном окне (значит, ты хочешь параллель).
- На проекте нет CLAUDE.md или скудный business-контекст.
- Промпты на уровне 1 расплывчатые (размытость экспоненциально размножится вниз).
- Нужна скорость - параллель быстрее глубины при сравнимом результате.
- Ты на Pro-тарифе и работаешь весь день - сожжёшь лимит за пару часов.
Источники
- Claude Code Release v2.1.172 - GitHub Releases
- Create custom subagents - Claude Code Docs
- Claude Code Nested Subagents: 5 Levels Deep - claudefa.st
- Boris Cherny releases nested subagent support - Digg
- ADR-147: Integrate Claude Code nested-subagent (depth=5) - ruvnet/ruflo
- Nested-subagent workaround repository - gruckion/nested-subagent
- Claude Code is not a recursive agent - dev.to/sfrangulov
- How Boris uses Claude Code - публичные цитаты
- Subagent fork+Skill infinite recursion bug - claude-code Issues
Полная схема по вайб-кодингу за вечер: ИИ-клон + Второй мозг + Контекст-инжиниринг. 3 эфира, 2 000 ₽. Записи остаются у тебя.
Новые материалы - дайджестом, без спама
Гайды выходят регулярно. Подпишись, чтобы не пропускать: пришлю подборку в Telegram или на email. Раз в неделю или каждый день - выбираешь сам.

