Ранас Мукминов – Оркестрация ИИ-агентов. Claude Opus 4.7 (страница 34)
Содержательно контракт делегирования на одном ребре дерева включает несколько обязательных полей. Цель подзадачи формулируется в терминах результата, а не процесса — что должно получиться, а не как это делать. Срез контекста — только то из контекста родителя, что необходимо ребёнку, плюс неизменяемая ссылка на исходную цель для сверки. Формат результата задаёт структуру возвращаемого, чтобы родитель мог его валидировать механически, а не интерпретировать заново. Инварианты перечисляют свойства, которые ребёнок обязан сохранить и проверить. Границы фиксируют, что ребёнку делать запрещено — какие инструменты, какие области, какие действия вне его подзадачи. Метаданные доверия требуют от ребёнка вернуть вместе с результатом выполненные проверки, явные допущения и обнаруженные неопределённости. Без последнего поля родитель агрегирует непрозрачные итоги и теряет способность отбраковать слабый результат до его попадания в свёртку.
Существенно, что эти поля заполняются на каждом ребре заново. В дереве глубины три от корня до листа проходит несколько контрактов, и каждый сужает контекст относительно предыдущего. Контракт ребёнка — это не копия контракта родителя, а его сужение под конкретный фрагмент. Если на каком-то ребре сужение выполнено неаккуратно — передан лишний или, наоборот, недостаточный контекст, — дефект наследуется всем поддеревом ниже. Поэтому аккуратность сужения контекста на каждом ребре важнее, чем полнота контекста в корне.
Каждая передача задачи вниз и результата вверх — это шов, на котором контекст переупаковывается. На пути вниз родитель извлекает из своего контекста срез для ребёнка: что-то опускает как нерелевантное, что-то переформулирует. На пути вверх ребёнок сжимает свою работу в результат: подробности отбрасываются, остаётся итог. Оба преобразования — с потерями. По отдельности потеря может быть мала. Проблема в том, что в иерархии потери складываются по цепочке швов, а не происходят однократно.
Если на каждом шве сохраняется доля смысла, близкая к единице, но строго меньшая, то после нескольких швов сохранённая доля — это произведение этих долей, и она убывает с глубиной мультипликативно. Это иллюстративная модель, не измеренная величина, но она верно передаёт качественный закон: деградация контекста в глубокой иерархии не линейна, она накапливается по уровням. Лист, отстоящий от корня на несколько передач, работает над задачей, которая прошла несколько независимых переформулировок и ни на одном уровне не сверялась с исходной постановкой. Это прямой аналог «испорченного телефона», и чем глубже дерево, тем сильнее эффект.
Опасность усугубляется тем, что искажение на агентном шве правдоподобно. Модель не возвращает мусор — она возвращает связную, уверенно сформулированную, но смещённую интерпретацию. Родитель, принимающий эту интерпретацию как подзадачу, не видит исходного смысла и не имеет основания усомниться. Смещение наследуется вниз и закрепляется. Это специфическая черта роя из недетерминированных узлов: ошибка не выглядит как ошибка (см. главу 67 о каскадах).
Частный, но наиболее болезненный вид деградации — дрейф намерения (intent drift). Исходная задача в корне имеет цель и ограничения. На каждом уровне субдирижёр интерпретирует полученный фрагмент в своих терминах и порождает подзадачи под свою интерпретацию. К нижним уровням намерение может сместиться так, что листья добросовестно и качественно решают задачу, которую никто наверху не ставил. Локально каждый узел корректен — он верно выполнил то, что получил. Глобально система решает не ту задачу. Это коварно тем, что не диагностируется проверкой отдельных узлов: каждый узел проходит свою проверку, а суммарный результат не отвечает исходной постановке.
Защита от дрейфа архитектурна, а не косметична. Первое средство — ограничение глубины: чем меньше швов между корнем и листом, тем меньше накопленный дрейф. Второе — передавать вниз вместе с подзадачей неизменяемую формулировку исходной цели (или её существенной части), чтобы нижние уровни сверялись не только с пересказом родителя, но и с первоисточником. Третье — верификация результата на пути вверх против контракта, а не только против ожиданий непосредственного родителя: каждый внутренний узел проверяет, что свёрнутый результат детей удовлетворяет инвариантам, которые он сам обязался обеспечить. Эти три средства не устраняют деградацию, но удерживают её в границах.
Деградация несимметрична. На пути вниз теряется и искажается задача: цель, ограничения, контекст. На пути вверх теряется обоснование результата: ребёнок возвращает итог, но не возвращает (или возвращает в сжатом, невосстановимом виде) рассуждение, которым этот итог получен. Родитель агрегирует результаты детей, не видя их внутренней работы, — и не может оценить, насколько каждый результат надёжен. Это бьёт по наблюдаемости (часть XI): ретроспективная реконструкция сессии глубокого дерева сложна именно потому, что обоснования терялись на каждом шве вверх.
Практический вывод: контракт делегирования должен фиксировать не только формат результата, но и минимально достаточное обоснование и метаданные доверия — например, выполненные проверки, обнаруженные неопределённости, явные допущения. Без этого родитель агрегирует «чёрные ящики» и не способен ни отбраковать слабый результат, ни объяснить итог. Что именно передавать через handoff, разбирает глава 47; здесь существенно, что в иерархии handoff происходит на каждом ребре дерева, и его качество умножается на число рёбер.
Из асимметрии следует и асимметрия защиты. От потери задачи вниз защищаются на входе ребёнка: ребёнок проверяет полученный контракт на внутреннюю непротиворечивость и согласованность с переданным фрагментом исходной цели, и отклоняет явно искажённую постановку, а не исполняет её. От потери обоснования вверх защищаются на выходе ребёнка: контракт обязывает вернуть достаточно метаданных, чтобы родитель мог судить о надёжности, не повторяя работу. Обе защиты привязаны к одному и тому же ребру дерева, но действуют в разных направлениях и в разные моменты, и пропуск любой из них оставляет соответствующий путь незащищённым.
Плоский fan-out параллелит подзадачи: латентность слоя воркеров — это латентность самого медленного из них, а не сумма. Иерархия частично сериализует работу по глубине. Родитель не может делегировать детям, пока сам не разобрал задачу; дети не могут начать, пока родитель не сформировал им контракты; родитель не может свернуть результат, пока дети не вернули свои. Возникает зависимость по критическому пути: задержка проходит сверху вниз через декомпозицию и снизу вверх через агрегацию.
Грубая иллюстративная оценка: латентность дерева по критическому пути имеет порядок «глубина, умноженная на стоимость одного цикла декомпозиции-и-агрегации на узле». Ветвление при этом латентность почти не увеличивает (дети одного узла работают параллельно), но глубина увеличивает её прямо пропорционально. Это фундаментальное различие: иерархия покупает масштаб декомпозиции ценой удлинения критического пути. Глубокое дерево медленнее мелкого с тем же числом листьев — и заметно медленнее, поскольку каждый уровень добавляет полный цикл вызова модели на разбор и на сборку.
Отсюда практическое правило формы дерева: при прочих равных предпочитать мелкие широкие деревья глубоким узким. Широкое дерево распараллеливает то, что глубокое сериализует. Глубина оправдана только тогда, когда задача действительно вложена по смыслу — когда подзадача не может быть сформулирована, пока не решена задача уровнем выше. Если же подзадачи независимы, их следует выносить в один широкий слой, а не выстраивать в глубину искусственно.
Координационный налог в иерархии берётся на каждом внутреннем узле и суммируется по всему дереву. Каждый внутренний узел тратит токены дважды сверх полезной работы: на декомпозицию (прочитать задачу, сформировать контракты детям) и на агрегацию (прочитать результаты детей, свернуть их). Эти расходы — чистый налог, они не производят конечного артефакта, они обслуживают координацию.
Совокупная стоимость дерева растёт с числом внутренних узлов, а число узлов в сбалансированном дереве растёт с ветвлением экспоненциально по глубине. Иллюстративно: дерево ветвления три и глубины три содержит десятки узлов, и на каждом — свой накладной расход на координацию. Если вдобавок родитель передаёт детям избыточный контекст, этот контекст оплачивается на каждом узле поддерева, помноженный на ширину. Здесь принцип минимально достаточного контекста смыкается с экономикой (часть XIV): лишний токен в контракте делегирования — это не один лишний токен, а один лишний токен на каждом узле, до которого он дотечёт.
Параметр дерева | Влияние на латентность | Влияние на совокупную стоимость
Рост глубины | Растёт линейно (критический путь) | Растёт (больше уровней координации)
Рост ветвления | Почти не растёт (параллельно) | Растёт быстро (число узлов)
Избыточный контекст в контракте | Растёт умеренно | Растёт мультипликативно по поддереву
Динамическое разрастание | Непредсказуемо | Непредсказуемо, риск неограниченного роста