Ранас Мукминов – Оркестрация ИИ-агентов. Claude Opus 4.7 (страница 23)
Главный failure mode — каскад отказов. Отказ одного агента переводит зависящих от него в состояние ожидания или ошибки, те — своих зависимых, и локальный сбой становится системным. Защита — изоляция отсеками (bulkhead, см. главу 71) и размыкание цепи (circuit breaker, см. главу 70): отказавший агент изолируется, его задача переназначается или система деградирует с частичным результатом, но соседи продолжают работу. Второй критический сбой — оркестратор как SPOF: в централизованной топологии падение координатора останавливает всё (см. главу 75), что замыкает надёжность обратно на уровень топологии.
Наблюдаемость отвечает на вопрос: можно ли понять, что система делает и почему, изнутри по её выходным сигналам. Без наблюдаемости все остальные уровни слепы: нельзя диагностировать отказ, который не видно, и нельзя оптимизировать координацию, издержки которой не измерены.
Сюда входят: что вообще наблюдать в рое (в отличие от одного агента); распределённая трассировка через несколько агентов (спаны, проброс контекста трассировки); корреляция событий и восстановление причинности между агентами; метрики уровня системы (пропускная способность, координационные издержки, исход); отладка эмерджентных и недетерминированных сбоев (тех, что возникают только в рое и не воспроизводятся на одном агенте); посмертная реконструкция сессии роя; и постмортемы многоагентных инцидентов. Этому посвящена часть XI.
Наблюдаемость роя сложнее наблюдаемости одного агента качественно, а не количественно. У одного агента есть линейная история: наблюдение, действие, результат, по шагам. У роя действия параллельны, причинность нелинейна (действие агента А повлияло на агента Б через общую память, а не через прямой вызов), а сбой может быть эмерджентным — не локализованным ни в одном агенте, а возникшим из их взаимодействия. Поэтому распределённая трассировка и корреляция причинности здесь не удобство, а необходимое условие отладки. Без сквозного идентификатора, связывающего действия разных агентов в одну причинную цепочку, посмертный разбор инцидента превращается в гадание.
Главный failure mode самого уровня наблюдаемости — слепые зоны на стыках. Каждый агент логирует свои действия, но передача между агентами (через общую память, через артефакт, через очередь) не записана как единое событие с сохранением контекста трассировки, и причинная цепочка рвётся именно там, где проходит граница агентов, — то есть именно там, где чаще всего зарождаются специфически многоагентные сбои. Проектирование наблюдаемости должно покрывать в первую очередь стыки, а не внутренности агентов.
Безопасность отвечает на вопрос: как защитить систему, когда часть её может быть скомпрометирована или враждебна. Рой увеличивает поверхность атаки в разы по сравнению с одним агентом: больше узлов, больше каналов, больше границ доверия, и компрометация может распространяться между агентами.
Сюда входят: модель угроз роя (активы, противники, границы доверия); распространение компрометации между агентами (латеральное движение, отмывание доверия); недоверие по умолчанию (zero trust в рое, проверка на стыках); prompt injection и его распространение через handoff и общую память; компрометация оркестратора как ключевой цели; изоляция и least privilege по ролям; аудит как защита; и безопасность общих ресурсов. Этому посвящена часть XII.
Безопасность — уровень, наиболее тесно сцепленный со всеми остальными, потому что почти каждое решение верхних уровней имеет следствие для безопасности. Топология задаёт границы доверия и наличие единой точки компрометации. Роли задают единицы least privilege. Коммуникация — каналы, по которым распространяется инъекция. Состояние — общую память, которую можно отравить. Безопасность нельзя спроектировать отдельно; её проектируют как сквозное свойство, перечитывая каждый верхний уровень с вопросом «а что, если этот агент враждебен или захвачен».
Ключевая специфика роя — распространение компрометации. У одного агента prompt injection компрометирует один контур. В рое инъекция, попавшая в одного агента, передаётся дальше: скомпрометированный агент пишет вредоносную инструкцию в общую память или в handoff, следующий агент принимает её как легитимную (он же доверяет своему «коллеге»), и компрометация движется по системе латерально. Хуже того, происходит отмывание доверия: данные из ненадёжного источника, пройдя через цепочку агентов, на выходе выглядят как результат работы доверенной системы. Защита — недоверие на стыках (см. главу 85): агент не должен слепо доверять входу от другого агента только потому, что тот «свой». Это прямой перенос принципа zero trust из сетевой безопасности в архитектуру роя.
Главный failure mode уровня — неявная транзитивность доверия. Система спроектирована так, что доверие к одному компоненту автоматически распространяется на всё, до чего он дотягивается, и одна точка компрометации даёт доступ ко всему рою. Компрометация оркестратора особенно опасна (см. главу 87): он по построению имеет связь со всеми воркерами и часто — повышенные права, поэтому его захват эквивалентен захвату системы.
Человек отвечает на вопрос: где в системе остаётся человек, что нельзя делегировать рою и как человек сохраняет контроль над многими параллельными агентами. Это не «уровень над архитектурой» в смысле необязательного дополнения — это полноправный уровень проектирования, потому что решения о том, где стоит человек, так же влияют на надёжность и безопасность, как и решения о топологии.
Сюда входят: роль человека в рое и неделегируемые решения; уровни одобрения (на уровне роя против отдельного агента); надзор за параллельными агентами; интерфейсы оркестрации (дашборды, очереди, графы исполнения); калибровка доверия к системе (а не к агенту); усталость оператора при масштабе; и вмешательство, аварийная остановка, kill-switch роя. Этому посвящена часть XIII.
Человек — уровень, который масштабируется хуже всех остальных и потому часто становится настоящим узким местом системы. Можно добавить сто агентов; нельзя добавить сто единиц человеческого внимания. По мере роста роя надзор за каждым агентом в отдельности становится невозможным физически, и точка одобрения вынужденно поднимается с уровня отдельного действия на уровень роя в целом — что меняет природу контроля: человек одобряет не «этот шаг этого агента», а «эту стратегию всей системы». Калибровка доверия тоже смещается: оператор учится доверять или не доверять системе как целому, потому что отслеживать надёжность каждого узла не успевает (см. главы 95 и 96).
Главный failure mode уровня — иллюзия контроля при усталости оператора. Интерфейс показывает, что человек «в контуре» и всё одобряет, но при десятках параллельных агентов и потоке запросов на одобрение человек штампует «да», не вникая, — контур формально замкнут, фактически разомкнут. Это опаснее честного отсутствия человека, потому что создаёт ложную уверенность. Проектирование этого уровня — это в значительной мере проектирование того, что НЕ показывать и что НЕ выносить на одобрение, чтобы внимание человека тратилось на действительно важные решения, а не размывалось на поток рутины. Сюда же — kill-switch: возможность остановить весь рой одним действием, не разбираясь с каждым агентом по отдельности (см. главу 97).
Уровни не лежат в вакууме — между ними есть устойчивые зависимости, которые определяют порядок проектирования и пути распространения сбоев. Зависимости двух типов: нисходящие (решение на верхнем уровне ограничивает нижний) и сквозные (уровень пронизывает все остальные).
Нисходящая цепочка проектирования выглядит так. Топология определяет, какие роли нужны и какие коммуникационные паттерны возможны. Роли и коммуникация задают, как устроена декомпозиция (кто берёт какие подзадачи и как передаёт результаты). Декомпозиция определяет, сколько общего состояния возникает, а значит — насколько тяжела координация. Состояние и координация вместе определяют, какие отказы возможны, то есть формируют требования к надёжности. Это не жёсткий конвейер — итерации и возвраты неизбежны, — но это полезный порядок первого приближения: проектировать сверху вниз, пересматривая верх, когда низ упирается в стену.
Сквозными являются три нижних уровня и десятый. Наблюдаемость, безопасность и отчасти надёжность — это не отдельные подсистемы, которые можно построить после, а свойства, которые либо заложены в каждое решение верхних уровней, либо отсутствуют. Нельзя «добавить безопасность» к рою, спроектированному без учёта границ доверия; нельзя «добавить наблюдаемость» к системе, в которой стыки агентов не оставляют следов. Человек как уровень тоже сквозной: точки одобрения и вмешательства должны быть предусмотрены в топологии, ролях и координации с самого начала, иначе их некуда встроить потом.
Таблица ниже сводит уровни: основной вопрос, характерный отказ и часть книги, которая разворачивает уровень.
Уровень | Основной вопрос | Характерный failure mode | Часть
1. Топология | Какова форма системы, где центр | Выбор формы по моде, а не по задаче; скрытый SPOF | II
2. Роли | Что делает каждый агент, чем отличается | Зазоры и перекрытия ответственности; ложная специализация | III