Ранас Мукминов – Оркестрация ИИ-агентов. Claude Opus 4.7 (страница 11)
Эти пять свойств — не достоинства, которыми можно пренебречь, а актив, который оркестрация тратит. Переход к рою означает, что инженер добровольно отказывается от единого контекста, последовательной согласованности, единой ответственности, простой наблюдаемости и предсказуемой стоимости — и берётся восстанавливать каждое из них уже на уровне системы: протоколами handoff, координацией изменений, агрегацией результатов, распределённой трассировкой, бюджетированием токенов. Это и есть координационный налог в его конкретном выражении; его природа и источники подробно разбираются в главе 5. Здесь достаточно зафиксировать принцип решения.
Переход к мультиагентной системе оправдан тогда и только тогда, когда выгода от разбиения строго превышает сумму координационного налога и прироста поверхности отказа. Во всех прочих случаях правильный выбор — один агент.
Формула проста на словах и трудна на практике, потому что обе её части плохо измеряются заранее. Выгода от разбиения часто переоценивается (агенты редко ускоряют работу в N раз — см. закон Амдала для роёв в главе 56), а налог недооценивается, потому что он распределён по многим местам и проявляется не на демонстрации, а на нетипичных случаях. Поэтому вместо попытки точно посчитать обе стороны полезнее проверять набор качественных критериев: они отвечают на вопрос, есть ли у задачи структура, при которой выгода в принципе может превысить налог.
Ни один критерий по отдельности не делает мультиагентность оправданной. Это условия, которые повышают вероятность, что разбиение окупится; чем больше их выполнено и чем сильнее, тем увереннее решение в пользу роя. Каждый критерий сформулирован так, чтобы его можно было проверить на конкретной задаче, а не оценить «на глаз».
Главное условие любого полезного параллелизма — наличие подзадач, которые можно вести независимо, с малым обменом информацией между ними. Если задачу удаётся разбить на части, каждая из которых имеет чёткий вход и выход и почти не нуждается в результатах остальных по ходу работы, разбиение имеет смысл. Если же подзадачи плотно переплетены — каждая требует промежуточных результатов другой, — то их «параллельное» исполнение выродится в постоянный обмен и ожидание, и выигрыша не будет.
Проверочный признак: можно ли описать границы подзадач так, чтобы интерфейс между ними был узким (несколько артефактов с понятной схемой), а не широким (постоянная сверка состояния). Узкий интерфейс — зелёный свет, широкий — красный. Детально декомпозиция и измерение связанности разбираются в части V; здесь важно, что без слабой связанности остальные критерии вторичны.
Один системный промпт удерживает ограниченный объём специализации. Когда задача требует существенно разных режимов поведения — например, исследование источников, написание кода, состязательная проверка результата, — попытка вложить все режимы в одного агента ухудшает каждый из них: промпт становится размытым, инструментов слишком много, права слишком широки. Здесь специализированные роли (см. часть III) дают реальный прирост качества: каждый агент настроен под свой режим, видит только нужные инструменты и работает в узких границах прав.
Признак выполнения: режимы поведения не просто «разные темы», а разные дисциплины с разными критериями успеха и разными рисками. Написать функцию и проверить её на уязвимости — это не одна задача в двух частях, а две дисциплины; разделение исполнителя и ревьюера здесь оправдано не ради параллелизма, а ради независимости взгляда (см. главу 65). Если же «специализации» отличаются лишь формулировкой подзадачи, разделение даёт издержки без выгоды.
Прямое следствие пределов одного агента. Когда материал, необходимый для задачи, превышает практический объём контекста — большая кодовая база, длинная история, множество документов, — один агент вынужден работать с фрагментами, теряя целостную картину. Разбиение позволяет каждому исполнителю держать в окне только свой срез, а общую картину собирать на уровне системы.
Здесь нужна осторожность. Само по себе превышение объёма контекста не предписывает рой — оно предписывает работу с контекстом: компрессию, выборку, индексацию. Мультиагентность оправдана, когда контекст естественно распадается на слабо связанные срезы (то есть критерий 1 тоже выполнен), а не когда он просто велик. Большой, но плотно связанный контекст плохо делится: каждый агент будет постоянно запрашивать чужие куски, и система выродится в распределённое чтение одной и той же базы. Распределённое состояние при этом становится источником рассогласования (см. часть VII), а не решением.
Иногда задача линейно разбивается на N почти независимых частей, и одновременное их исполнение действительно сокращает время до результата. Это законный мотив — но только при двух оговорках. Первая: выигрыш ограничен последовательной долей работы (декомпозиция, агрегация, разрешение конфликтов остаются последовательными), и эта доля у агентов велика, поэтому ускорение почти никогда не линейно (см. главу 56). Вторая: сокращение времени должно иметь ценность. Если результат всё равно проверяет человек в своём темпе, выигрыш в несколько минут на этапе генерации может не стоить усложнения.
Признак выполнения: время до результата — измеримое ограничение задачи (есть дедлайн, есть стоимость ожидания), а не абстрактное «быстрее лучше». Параллелизм ради скорости, которая никому не нужна, — частный случай антипаттерна, разбираемого ниже.
Отдельный класс задач выигрывает от множественности не потому, что работу можно поделить, а потому, что полезно иметь несколько независимых взглядов на один и тот же результат. Состязательные конфигурации — генератор и критик, дебаты, голосование нескольких агентов — улучшают качество там, где ошибка одного агента систематична и её ловит другой агент с иным промптом или иной моделью (см. главы 64 и 63). Это мультиагентность не ради разделения работы, а ради разнообразия.
Критерий выполняется, когда ошибки агентов слабо коррелированы: разные модели, разные промпты, разные источники. Если же все «независимые» проверяющие — копии одного агента с одним промптом, их суждения скоррелированы, и ансамбль не добавляет надёжности, лишь умножает стоимость (см. главу 63 о коррелированных ошибках). Это важная ловушка: видимость множественности без реальной независимости.
Иногда агенты разделяются не ради скорости и не ради качества, а ради надёжности и безопасности. Если задача включает действия с разным уровнем риска, разделение их между агентами с разными правами ограничивает радиус поражения: компрометация или ошибка агента с широким доступом к чтению не даёт прав на запись, потому что запись — отдельный агент в отдельном отсеке (см. главы 71 и 88). Аналогично изоляция нестабильной части работы в отдельный контур не даёт её отказу обрушить остальную систему.
Признак выполнения: разделение проходит по линии разных уровней доверия или разных профилей отказа, а не по произвольным «функциональным» границам. Изоляция как мотив сильна именно тогда, когда без неё один отказ или одна инъекция распространяются на всю задачу.
Критерий | Что проверяем | Чему служит
Слабая связанность | Узкий интерфейс между подзадачами | Параллелизм, надёжность
Разная специализация | Разные дисциплины, не разные темы | Качество, управляемость
Контекст не помещается | Контекст делится на слабо связанные срезы | Преодоление предела контекста
Полезный параллелизм | Время до результата — реальное ограничение | Скорость
Независимость суждения | Ошибки агентов слабо коррелированы | Качество, надёжность
Изоляция | Разделение по уровням доверия или отказа | Безопасность, надёжность
Ни одна строка не является достаточным условием. Сильный сигнал — это несколько критериев, выполненных одновременно и по существу, а не по форме. Один слабо выполненный критерий чаще всего перевешивается налогом.
Симметрично положительным существуют признаки, при которых мультиагентность не просто бесполезна, а активно вредит: добавляет стоимость, увеличивает число отказов и ухудшает результат по сравнению с одним агентом. Эти признаки важнее положительных, потому что их легче не заметить под давлением желания «сделать по-современному».
Если части задачи постоянно нуждаются в промежуточных результатах друг друга, разбиение превращает работу в распределённый диалог с большим обменом и ожиданием. То, что один агент сделал бы линейно в едином контексте, рой делает через handoff, сериализацию состояния, повторную загрузку контекста и согласование. Каждая передача — это потеря (что-то не передалось или передалось искажённо, см. главу 47) и задержка. Высокая связанность — главная причина, по которой «параллельная» система оказывается медленнее и хуже одиночного агента.
У координации есть фиксированная стоимость входа: построить план разбиения, поднять воркеров, передать им контекст, собрать и проверить результат. Если сама задача невелика, эта фиксированная стоимость превышает выгоду. Запускать рой ради того, что один агент делает за несколько шагов, — чистый убыток: налог платится полностью, а делить почти нечего. Граница нечёткая, но принцип ясен: чем мельче задача, тем сильнее перевес в пользу одного агента.