18+
реклама
18+
Бургер менюБургер меню

Ранас Мукминов – Оркестрация ИИ-агентов. Claude Opus 4.7 (страница 97)

18

Модель | Что задаёт отправитель | Развязка | Детерминизм решения | Стоимость решения | Главный риск

По идентификатору | конкретного получателя | низкая | полный | минимальная | устаревший адрес, жёсткая связанность

По роли | роль | средняя | высокий | низкая | резолюция «роль — экземпляр» непрозрачна

По способности | требуемую способность | выше средней | высокий, если реестр верен | средняя | ложно объявленная способность

По содержанию | ничего, только содержание | высокая | низкий (модель классифицирует) | высокая | неверная классификация, недетерминизм

Косвенная (через доску) | ничего | максимальная | нет гарантии доставки | низкая на отправке | никто не забрал, потеря наблюдаемости

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

Модель адресации отвечает на вопрос «на каком основании». Маршрутизатор-компонент отвечает на вопрос «где и чем это основание применяется». Это не обязательно агент-роль из главы 19: решение о направлении может приниматься в нескольких разных местах системы, и архитектурно важно, где именно.

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

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

В выделенном маршрутизаторе. Отдельный компонент (агент или детерминированный код) принимает все сообщения и направляет их. Это централизованная маршрутизация: одно место, где сосредоточена логика направления, где её можно наблюдать, менять и защищать. Цена — этот компонент становится единой точкой отказа (см. главу 75) и узким местом пропускной способности (см. главу 57). Это прямой аналог маршрутизатора-роли, но рассмотренный как элемент топологии доставки.

В среде доставки. Маршрутизация — свойство шины сообщений или брокера: отправитель публикует в тему или с меткой, инфраструктура доставляет подписчикам. Решение распределено между правилами подписок, а не сосредоточено в одном агенте. Это перекладывает маршрутизацию на детерминированный слой и снимает с агентов недетерминизм направления; цена — топология доставки описана не в коде агентов, а в конфигурации шины, и о ней легко забыть при рассуждении о потоках (см. главу 28).

Распределённо, в каждом узле. В peer-to-peer-сетях (см. главу 13) единого маршрутизатора нет: каждый узел знает часть топологии и пересылает дальше. Это устраняет SPOF ценой сложности согласования маршрутных таблиц и резко возросшего риска петель.

Любой нетривиальный маршрутизатор опирается на маршрутную таблицу — отображение «признак сообщения — получатель». Это состояние, и к нему применимо всё, что книга говорит о состоянии роя (см. часть VII): оно может устаревать, рассогласовываться между узлами, отравляться.

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

Промежуточный и часто разумный режим — таблица, статическая по структуре маршрутов (какие классы сообщений к каким ролям), но динамическая по составу экземпляров внутри роли (кто из ревьюеров сейчас жив и свободен). Это разводит редкое и дорогое изменение топологии маршрутов от частого и дешёвого изменения списка экземпляров, по той же логике, по которой глава 19 разводила планирование и диспетчеризацию.

Сквозное для всей главы решение — кто принимает решение о направлении: правило или модель.

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

Маршрутизатор на языковой модели читает сообщение и решает, куда его направить, рассуждением. Он гибче — справляется с неоднозначными и нестандартными сообщениями, понимает смысл, а не только форму. Цена тройная: каждое решение о направлении стоит токенов и латентности; решение недетерминированно (одно сообщение в разных прогонах может уйти разным получателям); и маршрутизатор может ошибаться правдоподобно — направлять уверенно и неверно, как любой агент.

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

Где бы ни принималось решение о направлении, оно образует геометрию: граф, по которому ходят решения о доставке. Эту геометрию полезно рассматривать отдельно от логической топологии роя (см. часть II), потому что они не обязаны совпадать: рой может быть логически иерархическим, а адресоваться через одну плоскую шину; или логически плоским, а адресоваться через дерево маршрутизаторов. Топология адресации — это то, как устроены сами решения о направлении, а не как устроены роли.

Четыре базовые геометрии адресации повторяют топологии глав части II, но в проекции именно на доставку.

Звезда. Все сообщения проходят через один маршрутизатор. Это адресная проекция fan-out/fan-in (см. главу 8): один узел знает всю карту получателей, отправители не знают друг о друге. Достоинства — единственное место политики маршрутизации, короткие причинные цепочки, простая наблюдаемость. Недостаток — центр есть SPOF и узкое место (см. главу 75 и главу 57).

Дерево. Маршрутизаторы образуют иерархию: верхний направляет в поддерево, нижний — к листьям. Это адресная проекция иерархии агентов (см. главу 9). Дерево масштабирует маршрутизацию за пределы одного узла и локализует решения (локальный маршрутизатор знает только своих листьев), ценой того, что путь сообщения теперь проходит несколько решений, и отказ промежуточного маршрутизатора отрезает целое поддерево.

Плоскость. Общая шина или доска, где адресации в явном виде нет: отправитель публикует, получатели забирают по интересу (см. главу 11 и главу 28). Это предельная косвенная адресация. Достоинство — нет выделенного маршрутизатора-SPOF; недостаток — нет места, где видно решение о направлении, потому что решения как такового нет, есть совпадение интереса.

Ячеистая сеть. Каждый узел держит часть маршрутной карты и пересылает дальше (см. главу 13). Нет ни центра, ни корня. Это устраняет единую точку отказа целиком, но переносит всю сложность в согласование распределённых маршрутных таблиц и резко повышает риск петель и расхождения карт между узлами.

Главная ошибка проектирования здесь — молчаливое предположение, что топология адресации повторяет топологию ролей. Она не обязана. Полезно фиксировать их как два отдельных решения.

Рой может быть организован как конвейер по ответственности (см. главу 10), но адресоваться через центральный маршрутизатор, который знает порядок стадий, — тогда стадии не адресуют друг друга напрямую, и порядок можно менять конфигурацией маршрутизатора, не трогая стадии. Обратно, рой может быть логически иерархическим, но использовать плоскую шину, где субагенты публикуют результаты в общее пространство, а родитель забирает по метке. Несовпадение двух топологий — не дефект, а степень свободы: оно позволяет менять то, кто кому что говорит, не меняя того, кто за что отвечает.

Цена несовпадения — наблюдаемость. Когда топология адресации отличается от топологии ролей, причинную цепочку (кто кого вызвал) уже нельзя прочитать из структуры ролей: её надо реконструировать из записей маршрутизатора (см. главу 78). Поэтому чем сильнее топология адресации расходится с топологией ролей, тем важнее, чтобы решения о направлении были наблюдаемыми событиями, иначе посмертная сборка сессии (см. главу 81) теряет опору.