3,583 papers
arXiv:2610.10263 83 7 окт. 2026 г. FREE

Динамическая параллельность субагентов: когда подключать, а когда держать одного агента

КЛЮЧЕВАЯ СУТЬ
Парадокс: включаешь субагентов, а токенов уходит в 1,4–3,3 раза больше, и на простых багах решается меньше. Доля решённых задач на SWE-bench (тест на исправление реальных багов) у Claude Code и Kimi Code падает с 77–83% до 59%. Правила делегирования позволяют понять, когда запускать помощников и не дать главному агенту слить время впустую. Фишка: по умолчанию главный агент раздаёт всю работу, засыпает в ожидании всех и не оставляет времени на сборку. Лечится лимитом времени для субагента и заранее заданным моментом, когда раздача заканчивается. Режим называется по-разному: Dynamic Workflow, multi-agent v2, AgentSwarm.
Адаптировать под запрос
⚡

TL;DR

Динамическая параллельность — режим, в котором главный агент сам решает по ходу работы, запускать ли помощников-субагентов, что им поручить и как собрать результат. Это не заранее прописанный конвейер. В Claude Code это Dynamic Workflow, в Codex — multi-agent v2, в Kimi Code — AgentSwarm. Исследователи прогнали одни и те же задачи с включённым и выключенным режимом, при тех же модели, промпте и бюджете времени.

Главная находка: больше агентов не значит лучше. Токенов уходит в 1,4–3,3 раза больше. Качество не растёт стабильно: на задачах вроде «исправь один баг» режим часто вредит. У Claude Code и Kimi Code доля решённых задач на SWE-bench упала примерно с 77–83% до 59%. Польза проявляется на длинных многоэтапных проектах, где есть независимые куски работы. Даже там результат смешанный: у одного агента выигрыш, у другого падение на той же задаче. Типичная беда: главный агент раздал работу, «заснул» в ожидании всех помощников и не оставил времени собрать результат.

Практический вывод в три правила. Включай параллельность только для крупных задач с независимыми частями. Для маленьких задач отключай. Если включил, прописывай агенту правила: таймауты короче общего бюджета, интеграция по мере готовности, время на финальную сборку и проверку.


📌

Схема: как решать, включать ли субагентов

ШАГ 1: Оцени размер задачи
        → точечная правка / баг / одна функция  → ОТКЛЮЧИТЬ субагентов
        → большой проект, много независимых модулей → переходи к шагу 2

ШАГ 2: Проверь независимость кусков
        → части зависят друг от друга, общие файлы без чётких интерфейсов → риск конфликтов, осторожно
        → части независимы, интерфейс зафиксирован → ВКЛЮЧИТЬ

ШАГ 3: Задай правила (в инструкции агенту)
        → таймаут субагента < общего бюджета
        → не ждать весь батч целиком, собирать по мере готовности
        → зарезервировать время на сборку и тесты

ШАГ 4: Используй параллельность там, где она реально помогает
        → дополняющая работа (разные модули)
        → альтернативные решения одной задачи
        → независимая проверка кода другим агентом

🚀

Пример применения

Задача: Вы руководите небольшой студией, которая делает сервис уведомлений для интернет-магазина на российском стеке. Нужны модули: Telegram-бот, email-рассылка, SMS через SMS.ru, приём вебхуков от ЮKassa, админка, тесты. Модулей много, они друг от друга почти независимы. Это сильная зона параллельности: проект с нуля, широкий объём, чёткие границы.

Промпт (в Claude Code с включённым режимом субагентов):

Задача: собрать с нуля сервис уведомлений для интернет-магазина (Python, FastAPI).
Модули: telegram_bot, email_sender, sms_ru_client, yookassa_webhooks, admin_panel.
Общий бюджет времени: 60 минут.

Правила работы с субагентами:
1. Сначала сам напиши общее ядро: структуру проекта, интерфейс отправителя
   Notifier.send(user_id, text), конфиг, скрипт запуска. Только после этого
   раздавай модули.
2. Каждому субагенту дай один модуль, конкретные файлы и интерфейс ядра.
   Файлы других модулей трогать запрещено.
3. Максимальное время субагента — 25 минут. Не жди, пока вернутся все:
   принимай и интегрируй готовые модули по мере поступления.
4. Не позднее 40-й минуты прекращай делегирование. Оставшееся время —
   сборка, запуск тестов, исправление недостающих модулей самим.
5. Если субагент не уложился, допиши его модуль сам по заготовке.
6. В конце отдельным субагентом проверь собранный код: запусти тесты
   и составь список расхождений с интерфейсом.

Результат: Агент сначала напишет общее ядро, затем запустит несколько субагентов по модулям. Готовые модули он будет принимать по очереди, а не ждать всех. К 40-й минуте остановит раздачу работы и перейдёт к сборке. Отстающий модуль допишет сам. В финале отдельный субагент проверит результат и вернёт список расхождений. Расход токенов будет заметно выше, чем у одиночного агента. Это цена за скорость и независимую проверку.

Обратный пример, где параллельность не нужна: «Почини баг: после оплаты через ЮKassa статус заказа не обновляется». Это ограниченная задача. Здесь исследование показало потери качества и рост затрат. Отключайте субагентов.


🧠

Почему это работает

Слабость. Главный агент должен одновременно разбить задачу, передать контекст, ждать помощников и склеить результат. Всё это он делает в одном потоке. Любая ошибка в разбиении, в интерфейсах или в ожидании ломает общий результат. В короткой задаче накладные расходы на координацию больше, чем выигрыш от разделения труда.

Сильная сторона. У длинных проектов есть настоящие независимые куски: разные модули, команды, тесты. Модель умеет хорошо работать над одной узкой частью с чётким интерфейсом. Отдельный субагент без контекста «авторства» лучше замечает чужие ошибки.

Как метод обходит слабость. Правила делегирования переносят критичные решения в явный вид, чтобы агент не «изобретал» их на ходу: границы модулей, таймауты, момент остановки раздачи и резерв времени на сборку. Без этого агент склонен делать самое естественное: раздать всё и ждать всех.

Рычаги управления: - Таймаут субагента → короче общего бюджета, чтобы один зависший помощник не съел всё время. - Момент остановки делегирования → раньше при жёстком дедлайне, позже при щедром бюджете. - Число субагентов → меньше для экономии токенов. В исследовании число создаваемых агентов росло вместе со сложностью задачи. - Роль проверяющего → добавь отдельного субагента для независимой проверки. Это одно из условий, при которых параллельность помогла. - Альтернативные решения → попроси двух субагентов решить одну задачу разными путями, а главного — выбрать лучшее.


📋

Шаблон промпта

⚠️ В статье нет готового промпта. Исследователи включали и выключали режимы переключателями. Шаблон ниже — моя сборка правил на основе выводов и разбора провала на задаче seqtk. Это стартовая заготовка, а не проверенная авторами формулировка.

Задача: {описание_проекта}
Общий бюджет времени: {минут} минут.

Правила работы с субагентами:
1. Сначала сам создай общее ядро: {что_входит_в_ядро}
   (структура, интерфейсы, конфиг). Только затем раздавай части.
2. Раздели работу на независимые части: {список_частей}.
   Каждому субагенту — одна часть, конкретные файлы и интерфейс ядра.
   Чужие файлы трогать запрещено.
3. Таймаут субагента — {минут_на_субагента} минут (строго меньше общего бюджета).
4. Не жди все ответы сразу: принимай и интегрируй готовое по мере поступления.
5. К отметке {минута_остановки} прекращай делегирование. Остаток времени —
   сборка, запуск тестов, исправление недостающих частей самостоятельно.
6. Если субагент не вернулся вовремя — допиши его часть сам.
7. В конце запусти отдельного субагента для независимой проверки:
   прогнать тесты, сверить интерфейсы, составить список расхождений.

Если задача маленькая (одна правка, один баг) — не запускай субагентов,
работай сам.

Что подставлять: {описание_проекта} — что строим. {минут} — реальный бюджет. {список_частей} — независимые модули. {минут_на_субагента} — примерно 40% бюджета. {минута_остановки} — примерно 65–70% бюджета.

🚀 Быстрый старт — вставь в чат:

Вот шаблон правил делегирования субагентам. Адаптируй под мою задачу: [твоя задача]. 
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит про размер проекта, бюджет времени и список независимых частей. Это нужно, чтобы понять, стоит ли вообще включать субагентов, и расставить таймауты. Она возьмёт паттерн из шаблона и подстроит под вашу задачу.


⚠️

Ограничения

⚠️ Короткие задачи: на ограниченных задачах (исправление одного бага) параллельность часто вредит: качество падает, время и токены растут. Для них режим лучше отключать.

⚠️ Цена: расход токенов вырастает в 1,4–3,3 раза. На самых больших задачах это десятки миллионов токенов на один запуск.

⚠️ Нет гарантии даже на длинных задачах: на крупных проектах результат смешанный. У одного агента прирост, у другого падение на том же наборе. У Claude Code на двух из длинных наборов доля решённых задач упала. Универсального «да» нет.

⚠️ Только кодинг: исследование про написание кода. Для текстов, аналитики и исследований вывод не проверяли.

⚠️ Нет рецепта в самой статье: в доступном фрагменте есть выводы и разбор провалов, но нет проверенных формулировок промптов. Правила делегирования из шаблона — мои, их нужно проверить на своей задаче. Таксономия из 28 паттернов ошибок и разбор условий пользы в этом фрагменте не раскрыты: приведены только названия категорий.

⚠️ Нужные настройки зависят от инструмента: режим включается переключателями (ultracode в Claude Code, swarm_mode в Kimi Code, multi_agent в Codex). Названия и поведение у разных продуктов различаются и могут меняться.


🔍

Как исследовали

Исследователи взяли три флагманских кодовых агента: Codex, Claude Code и Kimi Code. Каждый — в родной оболочке, на самом сильном уровне рассуждений. Агентов прогнали на 354 задачах из пяти наборов: четыре с длинными проектами (пересборка библиотек на другом языке, программы из описания, развитие репозитория на много шагов) и один с короткими задачами (SWE-bench Verified). Каждую задачу выполнили дважды: с параллельностью и без. Модель, промпт, окружение и время одинаковые. Получилось 2124 запуска примерно на $20 тыс.

Сравнивали долю полностью решённых задач и долю пройденных тестов, а также время, токены и число вызовов оболочки. Ключевой инсайт: параллельность помогает, когда проект большой и долгий. Самый заметный выигрыш был на самом длинном наборе LoopsBench: у Claude Code доля решённых задач выросла с 7,1% до 21,4%. На коротких задачах эффект нулевой или отрицательный.

Для разбора провалов вручную аннотировали полные траектории работы агентов (согласованность разметчиков — 0,77). Получилась таксономия из четырёх категорий: оркестрация задач, управление исполнением, общий контекст, общее состояние и слияние. Всего 13 подкатегорий и 28 паттернов.

Показательный случай — пересборка утилиты seqtk. Главный агент раздал 22 подкоманды 20 субагентам за раз и стал ждать всех. Таймаут ожидания он выставил на 2 часа при бюджете 40 минут. Два субагента уложились, а главный так и не вернулся к интеграции. В итоге программа собралась, но часть команд отсутствовала: пройдено 92 из 440 тестов. Удивило то, что провал вызвала не плохая идея параллелить, а отсутствие простого правила «не ждать всех».


💡

Адаптации и экстраполяции

🔧 Техника: независимая проверка → поймать ошибки главного агента

Одно из условий, при которых параллельность помогла: отдельный субагент проверяет чужую работу. Добавь в инструкцию отдельный блок:

После сборки запусти субагента-ревьюера. Он не видел процесс написания кода.
Его задача: прогнать тесты, найти расхождения с описанием задачи,
вернуть список проблем. Исправляй только то, что он нашёл.

Для небольших задач это дешевле полного режима параллельности: один дополнительный субагент вместо двадцати.

🔧 Техника: альтернативные решения → выбор лучшего

Второе условие пользы из статьи — исследование альтернативных решений. Для сложного места попроси:

Для модуля {модуль} запусти двух субагентов с разными подходами: 
первый — {подход_А}, второй — {подход_Б}. 
Сравни результаты по тестам и выбери лучший.

Экстраполяция: проверка перед включением. Перед запуском большого проекта спроси агента:

Оцени задачу: сколько в ней независимых частей и где они пересекаются
по файлам? Стоит ли использовать субагентов? Ответь «да» или «нет»
и объясни одним абзацем, исходя из стоимости (токены) и риска конфликтов.

Это моя идея, а не результат статьи. Её нужно проверить самому.


🔗

Ресурсы

  • Работа: When Sub-Agents Work in Parallel: The Promises and Pitfalls of Dynamic Concurrency in Long-Horizon Coding Tasks (2026)
  • Авторы: Han Li, HanHaoNing Li, Ziqian Jiang (Nanjing University / Central University of Finance and Economics), Yiling Lou (University of Illinois at Urbana-Champaign)
  • Изученные механизмы: Codex multi-agent v2, Claude Code Dynamic Workflow, Kimi Code AgentSwarm
  • Наборы задач: RepoZero, ProgramBench, NL2Repo, LoopsBench, SWE-bench Verified
  • Данные: авторы публикуют 2124 траектории запусков, разметку паттернов ошибок и скрипты анализа

📋 Дайджест исследования

Ключевая суть

Парадокс: включаешь субагентов, а токенов уходит в 1,4–3,3 раза больше, и на простых багах решается меньше. Доля решённых задач на SWE-bench (тест на исправление реальных багов) у Claude Code и Kimi Code падает с 77–83% до 59%. Правила делегирования позволяют понять, когда запускать помощников и не дать главному агенту слить время впустую. Фишка: по умолчанию главный агент раздаёт всю работу, засыпает в ожидании всех и не оставляет времени на сборку. Лечится лимитом времени для субагента и заранее заданным моментом, когда раздача заканчивается. Режим называется по-разному: Dynamic Workflow, multi-agent v2, AgentSwarm.

Принцип работы

Работает цепочка из трёх этапов. Сначала главный агент сам пишет общее ядро: структуру и интерфейсы. Потом раздаёт независимые модули, по одному на помощника. Потом принимает готовое по мере поступления и собирает всё сам. У каждого этапа свой лимит времени, и резерв на сборку не отдаётся помощникам. Это как прораб, который разослал бригады и ушёл спать до сдачи объекта. Дом не собран, потому что никто не сказал бригадам, когда остановиться. Поэтому в правилах прописаны границы модулей, лимит на помощника, момент остановки раздачи и время на финальную проверку.

Почему работает

Главный агент делает всё в одном потоке: режет задачу, передаёт контекст, ждёт и склеивает. Ошибка на любом шаге ломает итог. В короткой задаче расходы на координацию больше выигрыша от разделения труда. Поэтому на баге в одну функцию режим проседает. На длинных проектах есть настоящие независимые куски: модули, тесты, проверка. Явные правила переносят решения, которые агент иначе принимает на ходу и плохо, в текст промпта. Отдельный субагент без «авторства» лучше замечает чужие ошибки. Это одно из условий, при которых параллельность помогла. Но не обольщайся. Даже на длинных задачах результат смешанный: у одного агента прирост, у другого падение на том же наборе. Расход токенов растёт при любом исходе.

Когда применять

Разработка → большой проект с нуля, где много независимых модулей и зафиксированный интерфейс между ними, особенно когда нужна независимая проверка кода отдельным помощником. Также подходит, если хочешь, чтобы два субагента решили одну задачу разными путями, а главный выбрал лучшее. НЕ подходит для точечных правок, одного бага или одной функции. Осторожно, если части делят общие файлы без чётких границ. Исследовали только написание кода. Для текстов и аналитики вывод не проверяли.

Мини-рецепт

1. Оцени размер: баг, одна функция или правка — субагентов отключай и работай одним агентом.
2. Проверь независимость: если модули зависят друг от друга, а интерфейсов нет, сначала зафиксируй интерфейс или не раздавай.
3. Пусть агент сам напишет ядро: структура, интерфейс, конфиг. Только после этого он раздаёт части.
4. Одна часть — один помощник: дай конкретные файлы и запрети трогать чужие.
5. Поставь лимит на помощника: строго меньше общего бюджета. Автор разбора советует примерно 40% (это его прикидка, не цифра из статьи).
6. Запрети ждать всех: готовое принимается и вливается сразу.
7. Назначь час остановки раздачи: примерно 65–70% бюджета (тоже прикидка). Остаток уходит на сборку, тесты и дописывание отставшего модуля самим.
8. Добавь проверяющего: отдельный субагент гоняет тесты и сверяет интерфейсы.
9. Следи за счётом: токенов уйдёт в 1,4–3,3 раза больше. Если задача не окупает, режим выключай.

Примеры

[ПЛОХО]: `Собери сервис уведомлений для магазина, используй столько субагентов, сколько нужно` [ХОРОШО]: `Задача: сервис уведомлений (Python, FastAPI). Модули: telegram_bot, email_sender, sms_ru_client, yookassa_webhooks, admin_panel. Бюджет 60 минут. Сначала сам напиши ядро и интерфейс Notifier.send(user_id, text). Потом отдай каждому субагенту один модуль, чужие файлы трогать запрещено. Лимит субагента 25 минут. Не жди всех, интегрируй готовое по мере поступления. После 40-й минуты не делегируй: собирай, тестируй, дописывай недостающее сам. В конце отдельный субагент прогоняет тесты и выдаёт список расхождений с интерфейсом.` [ПЛОХО]: `Почини баг: после оплаты через ЮKassa статус заказа не обновляется. Запусти помощников, пусть ищут параллельно` [ХОРОШО]: `Почини баг: после оплаты через ЮKassa статус заказа не обновляется. Субагентов не запускай, работай сам`
Источник: When Sub-Agents Work in Parallel: The Promises and Pitfalls of Dynamic Concurrency in Long-Horizon Coding Tasks
ArXiv ID: 2610.10263 | Сгенерировано: 2026-10-08 06:40

Проблемы LLM

ПроблемаСутьКак обойти
Главный агент раздаёт работу помощникам и ждёт всех сразу. На сборку времени не остаётсяВключаешь режим, где агент сам запускает помощников (субагентов). Без правил он делает самое естественное. Раздаёт всё и ждёт, пока вернутся все. Один зависший помощник съедает бюджет времени. Результаты не собраны, проверки нет. Работа сделана, но итога нетПропиши правила делегирования прямо в запросе. Задай лимит времени на помощника, короче общего бюджета. Требуй принимать готовое по мере поступления. Зарезервируй время на сборку и проверку. Подробности в методе ниже

Методы

МетодСуть
Правила делегирования с лимитами времени — агент успевает собрать результатРазбей бюджет времени на три части и впиши их в запрос. Лимит помощника — около 40% бюджета. Прекращай раздачу работы к 65–70% бюджета. Остаток — сборка и тесты. Добавь: Принимай готовое по мере поступления, не жди всех. И ещё: Не вернулся вовремя — допиши часть сам. Перед раздачей пусть агент сам напишет общее ядро: структуру, интерфейсы, конфиг. Каждому помощнику — одна часть и запрет трогать чужие файлы. Почему работает: без правил агент придумывает критичные решения на ходу: границы частей, момент остановки, резерв времени. Явные правила убирают эти решения из импровизации. Когда да: большой проект, много независимых частей, жёсткий дедлайн. Когда нет: маленькая правка или один баг. Там лучше работать одним агентом. Проценты — стартовая прикидка, проверяй на своей задаче

Тезисы

ТезисКомментарий
Несколько агентов окупаются только на крупных задачах с независимыми частямиКоординация сама стоит ресурсов. Главный агент делит задачу, передаёт контекст, ждёт и склеивает. Всё это в одном потоке. На маленькой задаче накладные расходы больше выигрыша. Токенов уходит в 1,4–3,3 раза больше, а качество может упасть. На длинных проектах с чёткими границами выигрыш возможен, но не гарантирован. Данные получены на задачах по коду. Применяй: перед включением помощников спроси себя, есть ли независимые части с зафиксированным интерфейсом. Нет — работай одним агентом
📖 Простыми словами

When Sub-AgentsWork in Parallel: The Promises and Pitfalls of Dynamic Concurrency in Long-Horizon Coding Tasks

arXiv: 2610.10263

Когда кодинг-агент захлёбывается в огромной задаче, в игру вступает динамическая параллельность. Это режим, где ведущая модель сама решает по ходу пьесы: "так, я один не вывожу, найму-ка субподрядчиков". В Claude Code эту фичу называют Dynamic Workflow, а в Kimi Code — AgentSwarm. Модель на лету дробит проект, раскидывает куски по субагентам и надеется потом без багов собрать всё в единый рабочий билд.

Это как неопытный тимлид, который нанял толпу стажёров на простейшую задачу. Вместо того чтобы быстро набросать скрипт самому, он полдня строчит ТЗ для пятерых, ждёт коммитов и разруливает конфликты слияния. В коротких тасках накладные расходы на координацию просто убивают выхлоп — система тратит ресурсы не на код, а на пустой менеджерский булшит.

Но подход реально тащит на проектах с нуля с изолированными модулями. Собираешь шлюз уведомлений — отдай одному субагенту Telegram-бота, второму интеграцию с SMS.ru, третьему приём вебхуков ЮKassa. У них чёткие границы, нет пересечений по коду и ноль конфликтов. Здесь разделение труда даёт кратный выигрыш по времени, потому что процессы идут параллельно и без блокировок.

Опасность кроется в том, что координатор рулит процессом в одном узком потоке. Если главный агент ошибся в контрактах или криво нарезал контекст, проект моментально ломается. Иллюзия полной автономности быстро разбивается: любая скрытая зависимость между частями системы превращает параллельную работу субагентов в несобираемый спагетти-код.

Короче: мультиагентность без изоляции — верный способ слить бюджет. Не включай параллельный режим на мелких правках или плотно связанной архитектуре, иначе модель просто спалит токен-лимиты на управление собственным хаосом. Нарезай параллельно только то, что изначально проектируется независимыми кусками и способно жить в изоляции.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с