Многоагентная разработка ПО как задача распределённых систем
- title
- Многоагентная разработка ПО как задача распределённых систем
- type
- summary
- summary
- Написание кода группой LLM-агентов - это задача распределённого консенсуса, упирающаяся в теорему FLP и византийские сбои
- tags
- distributed-systems, ai-agents, consensus
- sources
- log-distributed-llms
- created
- 2026-04-07
- updated
- 2026-04-07
- lang
- ru
- translation_of
- log-distributed-llms
- source_updated
- 2026-04-07
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-high
Киран утверждает, что многоагентное написание кода с помощью LLM - это не просто инженерный вызов, который решится с появлением более сильных моделей. Это задача распределённых систем, на которую распространяются доказанные теоремы о невозможности. Ограничения здесь математические, а не вопрос возможностей моделей.
Постановка задачи
Промпт на естественном языке P порождает множество допустимых реализаций Φ(P). Когда работа делится между несколькими параллельными агентами, каждый из них должен выдать код, совместимый с результатами остальных. Всем им нужно сойтись на единой согласованной интерпретации промпта. Это и есть distributed-consensus - та же самая задача, над которой базы данных, блокчейны и реплицированные автоматы состояний бьются десятилетиями.
Почему действуют теоремы о невозможности
LLM-агенты асинхронны (нельзя предсказать время ответа) и подвержены сбоям (падения, таймауты, ограничение частоты запросов). Теорема flp-impossibility 1985 года доказывает, что ни один алгоритм не может гарантировать достижение консенсуса в асинхронной системе при падении хотя бы одного процесса. Приходится жертвовать одним из трёх свойств: безопасностью / safety (никогда не принимать неверное решение), живучестью / liveness (в итоге принять решение) или отказоустойчивостью (переживать сбои).
Это означает, что не существует протокола координации - каким бы хитрым он ни был, - который гарантировал бы, что все параллельные агенты выдадут совместимый код за ограниченное время при наличии сбоев. И это останется правдой независимо от того, насколько поумнеют модели.
Византийские сбои из-за неверной интерпретации
Падения - это простой случай: видно, что агент упал, и можно повторить попытку. Сложнее, когда агент неверно понял промпт и уверенно выдал правдоподобный, но некорректный код. Это byzantine-fault - агент вроде бы работает как положено, но молча расходится с тем, чего ждут остальные.
Результат Лэмпорта гласит, что для устойчивости к f византийским узлам требуется больше 3f+1 узлов в сумме. Если один из трёх агентов неверно истолкует промпт, надёжно определить ошибку только по выданным результатам невозможно.
Практическая защита
В статье не утверждается, что многоагентное написание кода обречено. Речь о том, что эти сценарии сбоев нужно закладывать в архитектуру явно:
- Превращать византийские сбои в сбои с остановкой (crash faults) - использовать тесты, проверки типов и статический анализ в качестве внешних валидаторов. Если агент выдаёт код, не проходящий тесты, это уже явный сбой, а не скрытое расхождение.
- Встраивать обнаружение сбоев - не считать, что агент отработал успешно, только потому, что он вернул результат. Проверять всё на границах интеграции.
- Осознанно проектировать протоколы координации - не полагаться на неявное согласие между агентами. Делать протокол явным: общие интерфейсы, контрактные тесты, валидация при слиянии.
Сюда же относится human-in-the-loop как ещё одна форма внешней валидации: человек, проверяющий вывод агентов, по сути выступает оракулом консенсуса, способным разрешать спорные ситуации и замечать неверные трактовки, которые пропускают автоматические тесты.
Главный вывод
ИИ-индустрия смотрит на координацию множества агентов как на задачу масштабирования: дайте модели мощнее, и проблемы согласования исчезнут сами собой. По мнению Кирана, это всё равно что ждать, пока быстрые процессоры решат задачу двух генералов. Некоторые ограничения заложены в самой структуре системы, а не в мощности её компонентов.
Пример распределённой LLM-системы, которая обходит проблему византийского доверия за счёт предположения о собственной mesh-сети, описан в mesh-llm: там речь идёт о распределённом инференсе поверх p2p-транспорта, а не о многоагентном консенсусе.