Мультиагентные системы ломаются, и дело не в промптах — а в памяти
Запускаете несколько AI-агентов параллельно — и всё летит к чёрту. Знакомо? Я разобрался, почему так происходит, и ответ оказался не в мире AI.
Симптомы, которые вы точно видели
Агент A закончил задачу. Агент B, не зная об этом, делает ту же работу с другими параметрами. Агент C получает два противоречивых результата и «галлюцинирует» компромисс. Система что-то выдаёт — но это мусор, который стоил втрое дороже нормального результата.
Исследование MAST taxonomy (Cemri et al., 2025) на 1600+ трейсах в AutoGen, CrewAI и LangGraph показало: 37% отказов мультиагентных систем — рассинхронизация между агентами. Не плохие промпты. Не слабая модель. Агенты просто не знают, что делают другие.
Это не AI-проблема. Это проблема распределённых систем
Несколько процессов конкурируют за общее состояние. Параллельные записи конфликтуют. Нет гарантии, что все видят одну версию данных.
Бэкенд-разработчики узнают эту задачу мгновенно. Distributed systems решают её десятилетиями. А мультиагентные фреймворки почему-то делают вид, что изобретают проблему заново.
Три паттерна, которые работают
Event Sourcing
Не храните текущее состояние — храните лог событий. Каждое действие агента записывается в иммутабельный append-only лог. Текущее состояние вычисляется из цепочки событий.
Если два агента одновременно обновили одни данные — это видно в логе. Можно применить стратегию разрешения конфликта вместо молчаливой перезаписи.
Eventual Consistency через CRDT
Строгая консистентность дорога. Для большинства задач достаточно «в итоге все увидят одно и то же». CRDT (Conflict-free Replicated Data Types) дают автоматическое слияние без блокировок.
Каждый агент работает с локальной копией. Периодическое слияние гарантирует сходимость.
Оптимистичные блокировки
Для критических решений — когда нельзя допустить конфликт — используйте оптимистичные блокировки.
Не блокируем заранее, а проверяем в момент записи. Если данные изменились — конфликт, повторите. Конфликты в мультиагентных системах случаются относительно редко, поэтому оптимистичный подход эффективнее распределённых мьютексов.
Почему это важно прямо сейчас
Операционные данные показывают: 50 tool calls на задачу, входные токены превышают выходные в 100 раз. Когда агенты дублируют работу из-за рассинхронизации — вы платите трижды за один результат.
Event sourcing обнаруживает дублирование. Оптимистичные блокировки предотвращают перезапись. CRDT минимизируют overhead синхронизации. Вместе — решают 80% проблем координации.
Что делать
1. Начните с event store — даже Redis Streams или SQLite append-only лог радикально улучшит наблюдаемость 2. Не гонитесь за строгой консистентностью — eventual consistency покрывает большинство сценариев 3. Добавьте оптимистичные блокировки только для точек невозврата 4. Проектируйте мультиагентную систему как распределённую — а не как чат-бот с делегированием
Кто уже запускал мультиагентные системы в продакшн — сталкивались с рассинхронизацией состояния? Как решали?