Ранас Мукминов – Оркестрация ИИ-агентов. Claude Opus 4.7 (страница 50)
Предположение о транзитивности доверия. Система верит сообщению, потому что оно пришло через доверенного посредника, не проверяя исходный источник. Это открывает отмывание доверия через цепочку (см. главу 84). В peer-to-peer доверие нетранзитивно, и каждое ребро доверия требует отдельного обоснования.
Расчёт на гарантированную сходимость. Система предполагает, что рой непременно придёт к решению, и не имеет ни ограничителя на пересогласование, ни наблюдаемости прогресса. Результат — возможный livelock, в котором рой бесконечно активен без продвижения, и никто этого не замечает, потому что снаружи он выглядит работающим (см. главу 74).
Свойство | Оркестратор-воркеры (гл. 8) | Blackboard (гл. 11) | Peer-to-peer
Единая точка отказа | Да, оркестратор | Да, доска | Нет
Где живёт состояние | В центре | В общем пространстве | Распределено, без единого источника истины
Координационный налог | Низкий–средний | Низкий, но риск гонок | Высокий: попарное или многошаговое согласование
Согласованность | Сильная через single-writer | Зависит от дисциплины доступа к доске | Обычно слабая (eventual)
Устойчивость к потере узла | Низкая для центра | Низкая для доски | Высокая: деградирует, а не падает
Наблюдаемость и отладка | Высокая: причинность через центр | Средняя: всё проходит через доску | Низкая: причинность размазана, отладка трудна
Сходимость к решению | Гарантирована центром | Зависит от доски | Не гарантирована
Главный режим отказа | SPOF оркестратора | Гонки и отравление доски | Расхождение, livelock, нерешаемая отладка
Таблица читается как обмен одного риска на другой, а не как градиент «лучше — хуже». Peer-to-peer покупает устойчивость к потере любого узла ценой высокого налога согласования, слабой согласованности, негарантированной сходимости и тяжёлой отладки. Этот обмен выгоден лишь там, где устранение единой точки отказа стоит дороже всего, что за него платится. За пределами этой узкой ниши peer-to-peer проигрывает централизованным соседям по всем осям, кроме устойчивости к потере центра.
На практике чистый peer-to-peer как самостоятельная топология роя агентов встречается ещё реже, чем рынок. Гораздо чаще децентрализация применяется дозированно, как один слой гибрида (см. главу 14). Типичный осмысленный случай — децентрализованное исполнение под централизованным наблюдением: узлы координируются между собой как равные там, где это даёт устойчивость, но поверх лежит наблюдающий контур, дающий человеку единую точку обзора и аварийной остановки (см. главы 94 и 97). Такой гибрид сохраняет главную выгоду peer-to-peer — отсутствие единой точки в исполнении — и компенсирует его главный недостаток — невозможность надзора — централизованной наблюдаемостью, не участвующей в координации и потому не являющейся узким местом.
Другой частый случай — локальная децентрализация внутри централизованной системы: оркестратор раздаёт работу, но группа воркеров, которым нужно тесно скоординироваться между собой над общим фрагментом, образует временную peer-to-peer-подсеть, не обращаясь к оркестратору на каждом шаге согласования. Здесь peer-to-peer — это вложенная топология (см. главу 14 о вложении), ограниченная небольшой группой и коротким временем, где квадратичный налог согласования мал из-за малого числа участников. Граница между централизованной внешней топологией и peer-to-peer-подсетью — это место смены модели координации, и её, как всякую границу гибрида, нужно проектировать явно: оркестратор должен получить от подсети детерминированный сигнал завершения, которого сама по себе peer-to-peer-координация не гарантирует (см. главу 14 о несовместимых моделях координации на стыке).
— Сеть равноправных агентов определяется отсутствием привилегированного узла: ни один узел не является обязательным посредником, корнем авторитета или единственным держателем истины, и потеря любого узла не останавливает координацию. Это убирает единую точку отказа, но переносит всю координацию в попарные взаимодействия между равными.
— Централизованная топология решает обнаружение, маршрутизацию и доверие неявно, самим фактом наличия центра. Peer-to-peer обязан восстановить каждую функцию отдельным распределённым протоколом: обнаружение через bootstrap-точки и gossip или распределённый реестр; маршрутизацию через многошаговую доставку или распределённую хеш-таблицу; доверие через подписи, распределённую репутацию и верификацию результата.
— Знание о составе сети в peer-to-peer принципиально неполно и устаревает, путь сообщения распределён и многошагов, а доверие нетранзитивно. Логика, предполагающая полную свежую картину состава или транзитивность доверия, в децентрализованной сети некорректна по построению.
— Согласование без центра — это распределённый консенсус со всей его тяжестью: оно стоит раундов сообщений и не гарантировано завершиться. Состояние живёт без единого источника истины, согласованность обычно слабая (eventual), а сходимость роя к решению не гарантирована — возможен livelock, в котором рой активен, но не продвигается, и этого никто не видит из-за отсутствия центра.
— Режимы отказа, специфичные для топологии, — раскол сети с расхождением, sybil-атака, отмывание доверия через посредников, эпидемическое распространение испорченного состояния и принципиально нерешаемая отладка из-за размазанной причинности. Каждый требует явной защиты, а не считается крайним случаем.
— Полная децентрализация оправдана редко: только когда требование «нет допустимой единой точки отказа» реально, состав узлов крупен и динамичен, операции над состоянием почти не требуют согласования, а команда владеет распределённым консенсусом и наблюдаемостью. При резервируемом центре, малом рое или интенсивном общем состоянии peer-to-peer проигрывает централизованным топологиям по всем осям, кроме устойчивости к потере центра.
— Чистый peer-to-peer как самостоятельная топология роя агентов редок; чаще децентрализация применяется дозированно как слой гибрида — децентрализованное исполнение под централизованным наблюдением или временная peer-to-peer-подсеть внутри централизованной системы, — где её выгода ограничена и компенсирована, а налог согласования удержан малым.
Глава 14. Гибридные топологии
Предыдущие главы этой части разбирали топологии по одной: оркестратор с воркерами, иерархия субагентов, конвейер, blackboard, рыночные модели, сети равноправных агентов. Такое изложение удобно для анализа, но создаёт ложное впечатление, будто проектирование роя сводится к выбору одной схемы из каталога. На практике так почти никогда не бывает. Как только система выходит за пределы демонстрации, она оказывается гибридом: оркестратор раздаёт работу воркерам, но каждый воркер внутри — конвейер; конвейер на одной из стадий разворачивается в fan-out; результаты сходятся не к оркестратору, а на общую доску, с которой их читает отдельный агент-сборщик.
Эта глава о том, как топологии комбинируются, почему реальные системы всегда оказываются гибридными и как составить топологию из частей так, чтобы стыки между ними не стали источником отказов. Ключевой тезис: гибрид — это не «несколько паттернов рядом», а решение о том, где проходят границы между паттернами и что происходит на этих границах. Стык двух топологий — это место смены протокола, смены модели координации и, как правило, смены носителя состояния; именно там зарождается большинство отказов, которых не было бы в чистой топологии. Поэтому гибрид нужно проектировать с явным вниманием к границам, а не получать его стихийно, наращивая систему паттерн за паттерном.
Глава не про выбор топологии под задачу — это предмет следующей главы (см. главу 15). Здесь предполагается, что отдельные паттерны уже понятны, и разбирается их соединение: каким бывает соединение, какие свойства оно сохраняет и теряет, и как не дать стыкам разрушить надёжность, которую обеспечивала каждая часть по отдельности.
Чистая топология — это идеализация, удобная для рассуждения и почти недостижимая в системе, которая решает реальную задачу. Причин несколько, и все они структурные, а не следствие недисциплинированного проектирования.
Первая причина — неоднородность задачи по уровням. Задача верхнего уровня обычно требует одной формы координации, а её подзадачи — совсем другой. «Подготовить отчёт по кодовой базе» на верхнем уровне — это fan-out по модулям: независимые куски, которые можно вести параллельно, а потом собрать. Но анализ одного модуля внутри — это последовательность: прочитать, построить модель, проверить гипотезу, описать. Параллелить шаги внутри модуля бессмысленно, они зависят друг от друга. Получается, что верхний уровень просит fan-out, а нижний — конвейер. Навязать всей системе одну топологию означает выбрать неправильную хотя бы на одном из уровней.
Вторая причина — разная природа подзадач. Часть работы хорошо описывается жёстким контрактом «вход — выход» и идеально ложится на конвейер. Другая часть требует исследования с непредсказуемым числом шагов и ветвлений — это территория оркестратора с динамическим порождением работы или blackboard. Третья часть — это выбор лучшего из нескольких независимых попыток, то есть ансамбль с голосованием. Эти формы работы сосуществуют в одной системе, и каждая тянет за собой свою топологию.