Мультиагентные ИИ-системы чаще всего ломаются не из-за кода, а из-за неточных инструкций и отсутствия жёстких схем данных. Инженеры GitHub проанализировали опыт работы с такими системами в Copilot и внутренних автоматизациях.
Основная проблема — агенты делают неявные предположения о состоянии системы и порядке выполнения задач. В результате один агент может закрыть задачу, которую только что открыл другой, или отправить изменения, которые провалят проверки.
Главные причины отказов
Команды используют мультиагентные системы для обслуживания кодовой базы, обновления зависимостей, автоматических проверок качества кода и обработки pull request'ов. Но без явных ограничений и интерфейсов эти сценарии работают нестабильно.
Первая причина отказов — обмен данными на естественном языке или в непоследовательном JSON. Названия полей меняются, типы данных не совпадают, форматирование сбивается, и ничто не контролирует согласованность.
Вторая причина — расплывчатые намерения. Инструкция «проанализируй эту задачу и помоги команде предпринять действия» звучит понятно, но разные агенты могут закрыть задачу, назначить исполнителя, эскалировать или вообще ничего не делать.
Рецепт надёжности
GitHub предлагает использовать типизированные схемы для всех данных, которыми обмениваются агенты. Вместо угадывания по логам разработчики получают чёткое сообщение о нарушении конкретной схемы.
Для действий нужны схемы с ограниченным набором операций. Например, агент должен вернуть одно из четырёх действий: запросить дополнительную информацию, назначить исполнителя, закрыть как дубликат или не предпринимать действий. Всё остальное — ошибка валидации.
Мультиагентные системы ведут себя больше как распределённые системы, чем как чат-интерфейсы. Это означает применение тех же принципов: явные контракты, обработка ошибок и мониторинг состояния.
Внедрение таких подходов снижает количество непредсказуемых отказов в мультиагентных системах на порядок — с проверкой каждого звена цепочки вместо гадания на кофейной гуще.

