3,583 papers
arXiv:2610.25852 76 19 окт. 2026 г. FREE

MASIF: неявные сбои агентов — аудит процесса, а не только итога

КЛЮЧЕВАЯ СУТЬ
Обнаружено: скрытые сбои есть в 54% успешных прогонов агента и в 75% провальных. Ответ совпал, а процесс был кривой. Метод MASIF позволяет выбрать из нескольких запусков агента самый надёжный, даже когда итоги выглядят одинаково. Фишка: судье-LLM не дают правильный ответ, он читает только лог. Он выписывает каждый неявный сбой (локальную ошибку, которая не решила исход) с шагом, типом и тяжестью. Дальше считаешь риск: сумма тяжести делится на длину лога. Берёшь прогон с минимальным риском.
Адаптировать под запрос
⚡

TL;DR

Неявный сбой (implicit failure, IF) — это локальная ошибка агента посреди работы, которая не определила исход: её исправили, обошли или протащили дальше. Идея метода в том, чтобы читать всю трассу (лог шагов агента) и отдельно фиксировать каждый такой сбой: на каком шаге, у какого агента, какого типа, как он был поглощён. Это делает LLM-судья, которому дают таксономию (список типов сбоев и способов их поглощения). Затем из нескольких прогонов выбирают тот, где меньше и легче неявных сбоев.

Главная находка: успех не значит, что процесс был чистым. Неявные сбои есть в 54% успешных и 75% провальных прогонов. Агент мог упереться в сломанный инструмент, выдумать факт или зайти не туда, а потом вывернуться. А мог не вывернуться и просто принять ложный факт как данность, даже когда ответ в итоге совпал. Смотреть только на «получилось или нет» значит не видеть, где система хрупкая. Готовые «оценщики шагов» (process reward models, PRM), обученные на одиночных агентах и математике, на трассах мультиагентных систем почти не лучше случайного выбора.

Метод простой: после каждого прогона судья-LLM читает лог без знания правильного ответа и выписывает все неявные сбои с тяжестью. Из N прогонов берут тот, где «риск» (сумма тяжести, делённая на длину трассы) ниже. Так выбор лучшего прогона стабильно не хуже PRM и в части настроек заметно лучше.


🔬

Схема метода

ШАГ 1: Запустить агента N раз на одной задаче → N трасс (логов)
ШАГ 2: Судья-LLM читает КАЖДУЮ трассу (без эталонного ответа) → 
        список IF: шаг, агент, тип сбоя, механизм поглощения, тяжесть
ШАГ 3: Считать риск трассы = сумма тяжести / длина трассы → число
ШАГ 4: Выбрать трассу с минимальным риском → итоговый результат
(необязательно) ШАГ 5: Точку сбоя в проваленном прогоне исправить локально
        и перезапустить с этого места

Шаги 2–4 можно сделать в чате или простой автоматизацией. Шаг 1 — это N обычных запусков агента.


🚀

Пример применения

Сильная зона метода: многошаговый агент с инструментами (поиск, браузер, парсинг, код) и логом, где итог трудно проверить автоматически. Для коротких одношаговых запросов метод избыточен.

Задача: Вы руководитель маркетплейс-аналитики. Агент (Claude Code или автоматизация в n8n) собирает цены на 30 товаров конкурентов с Ozon и Wildberries и составляет сводку для закупщика. Вы запустили его 4 раза. Сводки почти совпадают, но в одной цена «нашлась» там, где страница не загрузилась. Читать 4 лога по 300 строк нет времени.

Промпт (судья-аудитор, запускается на каждый лог отдельно):

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

Задача агента: собрать актуальные цены на 30 товаров конкурентов
на Ozon и Wildberries и составить сводку для закупщика.

Лог прогона:
{лог}

Просмотри лог шаг за шагом. Для каждого неявного сбоя укажи:
1. Номер шага и какой агент/инструмент задействован
2. Тип сбоя (выбери один):
   - Сбой инструмента (вызов не сработал, таймаут, мусор на выходе)
   - Неверное действие (действие не подходит к текущему состоянию)
   - Лишнее действие (повтор, пустая трата шагов)
   - Выдумка (факт, источник или результат инструмента, которых нет в логе)
   - Неполное действие (не хватило данных, формата, доведения до конца)
   - Ошибка рассуждения (неверный вывод, повтор заведомо плохой стратегии)
   - Непонимание (задачи, роли, ограничений)
   - Битый вывод (повреждён формат, но работа продолжилась)
3. Как сбой был поглощён (выбери один):
   - Самоисправление (агент сам исправил в том же или следующем ходе)
   - Обход (агент сам пошёл другим путём, не исправляя ошибку)
   - Исправление коллегой (другой агент, не руководитель)
   - Вмешательство руководителя (оркестратор перенаправил)
   - Не исправлен (ошибочное состояние принято и пошло дальше)
   - Мелочь (механический повтор, ошибка без последствий)
4. Тяжесть: 1 (мелочь), 2 (заметно), 3 (ошибка осталась в итоге
   или легла в основу следующих шагов). Не исправленные сбои и
   выдумки получают тяжесть выше.

Ответ дай таблицей. В конце: число сбоев, сумма тяжести,
число шагов в логе, риск = сумма тяжести / число шагов.
Не придумывай сбои, которых нет в логе: если сомневаешься,
пометь «под вопросом».

Результат: модель вернёт таблицу сбоев по шагам: тип, механизм поглощения, тяжесть. В конце будут итоговые числа и риск. Прогнав так все 4 лога, вы сравниваете риски и берёте сводку из прогона с наименьшим. Сразу видно и конкретные места, где агент «выдумал» цену или молча принял пустую страницу.


🧠

Почему это работает

Слабость. Итог «правильно/неправильно» скрывает процесс. Агент мог получить верный ответ случайно, обойдя ошибку, которую потом повторит. Готовые «оценщики шагов» обучены на других данных. Поэтому в мультиагентных логах они дают сигнал не лучше случайного выбора.

Сильная сторона LLM. Чтение длинного текста и поиск в нём конкретных событий по списку категорий. Судье не нужен эталон: он видит, что инструмент вернул ошибку, а агент потом сослался на результат, которого не было. Таксономия сужает поиск до восьми типов и шести способов поглощения, поэтому судья не отвечает вольно.

Как метод связывает одно с другим. Он превращает «ощущение, что процесс шаткий» в число (риск), которым можно сравнивать прогоны. Из двух прогонов с одинаковым итогом надёжнее тот, где меньше неисправленных сбоев.

Рычаги управления: - Веса тяжести → поднимайте для выдумок и неисправленных сбоев, если цена ошибки высока (цены, юридические данные). - Число прогонов N → в исследовании 4, 8 и 16. Больше прогонов — шире выбор, но дороже. - Список типов → урежьте до тех, что реально встречаются у вашего агента. Больше всего сбоев в статье приходится на сбои инструментов, неверные действия, лишние действия и выдумки (около 79% вместе). - Нормировка на длину → без неё длинные прогоны всегда выглядят хуже. - «Под вопросом» → снижает риск, что судья придумает сбой, которого нет.


📋

Шаблон промпта

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

Ты — аудитор процесса работы мультиагентной системы (или одного агента).
Тебе дан лог одного прогона. Ты НЕ знаешь правильного ответа и
НЕ оцениваешь итог. Ищешь неявные сбои: локальные ошибки по ходу
работы, которые были исправлены, обойдены или протащены дальше.

Задача агента: {задача}
Лог прогона:
{лог}

Просмотри лог шаг за шагом. Для каждого неявного сбоя укажи:
- Шаг и агент/инструмент
- Тип: {сбой инструмента | неверное действие | лишнее действие |
        выдумка | неполное действие | ошибка рассуждения |
        непонимание | битый вывод}
- Поглощение: {самоисправление | обход | исправление коллегой |
        вмешательство руководителя | не исправлен | мелочь}
- Тяжесть: 1–3 ({правило_тяжести})
- Короткая цитата из лога как доказательство

В конце:
Число сбоев: ...
Сумма тяжести: ...
Число шагов в логе: ...
Риск = сумма тяжести / число шагов: ...

Если не уверен, что это сбой, пометь «под вопросом» и не включай в сумму.

Что подставлять: - {задача} — что агент должен был сделать (одно-два предложения). - {лог} — трасса прогона целиком: шаги, вызовы инструментов, ответы. - {правило_тяжести} — например: «3 — если сбой остался в итоговом результате или стал основой следующих шагов; 2 — исправлен, но стоил нескольких шагов; 1 — мелочь».

После аудита всех N логов добавьте второй запрос:

Вот результаты аудита {N} прогонов: {таблицы}.
Выбери прогон с минимальным риском. Если риски близки,
предпочти тот, где меньше сбоев типа «выдумка» и «не исправлен».
Назови выбранный прогон и коротко объясни почему.

🚀 Быстрый старт — вставь в чат:

Вот шаблон судьи-аудитора для логов агентов. Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

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


⚠️

Ограничения

⚠️ Приросты скромные: выбор прогона по неявным сбоям даёт единицы процентных пунктов точности. Это не «волшебная кнопка», а способ отсеивать шаткие прогоны.

⚠️ Судья — тоже LLM: он пропускает сбои. Люди нашли ещё 21 сбой, которых судья не отметил, а часть найденных судьёй сбоев отвергли. Проблемы в основном с дальними связями (ошибка в начале, последствия в конце) и с границей «ошибка или нормальный этап плана». В исследовании судьёй была сильная модель; на слабой качество аудита, скорее всего, ниже.

⚠️ Цена: нужно N прогонов агента плюс N проходов судьи по длинным логам. Для дешёвых и коротких задач это не окупается.

⚠️ Ремонт точки сбоя нестабилен: в части конфигураций исправление сбоя и перезапуск вернули много провальных прогонов, в других почти ничего. Универсального «починил шаг и всё заработало» нет.

⚠️ Смешивать с готовыми оценщиками шагов не стоит: комбинация «PRM + IF» оказалась не лучше одного IF. Слабый сигнал добавляет шум.

⚠️ Корреляция, не причина: таксономия поглощения описательная. Она не доказывает, что именно этот сбой стал причиной провала.

⚠️ RL-часть статьи не для читателя: IF-GRPO нужен для обучения модели, практику он недоступен.


🔍

Как исследовали

Команда собрала 1 828 трасс из девяти связок «мультиагентная система + бенчмарк»: Magentic-One на GAIA, MetaGPT, ChatDev, AG2 MathChat, веб-агенты и другие. На каждую трассу натравили LLM-судью (Gemini 3.1 Pro). Чтобы понять, можно ли ему верить, два человека независимо проверили 45 трасс, а ещё три модели переразметили 90 трасс. Люди сохранили около 88% найденных судьёй сбоев, и ни один не был отвергнут обоими сразу. Но люди нашли и сбои, которых судья не увидел, то есть полнота разметки не доказана.

Дальше по 45 трассам методом открытого кодирования построили две таксономии: 8 типов ошибок и 6 способов поглощения. Затем проверили, что будет, если исправить сбой: берут состояние агента в момент сбоя, подменяют шаг на исправленный и запускают дальше. В четырёх конфигурациях из семи доля «спасённых» провальных прогонов выросла на 23–46 процентных пунктов по сравнению с простым перезапуском. В остальных эффекта не было. Для сравнения с PRM взяли 4, 8 и 16 прогонов на задачу и выбирали лучший. Судья по сбоям не уступил PRM ни в одной из девяти настроек, а на Magentic-One/GAIA выиграл 3–7 пунктов. Готовые PRM, обученные на одиночных агентах и математике, оказались близки к случайному выбору.

Что удивило: больше половины успешных прогонов содержали сбои, а у четверти провальных их не было вообще. Практический вывод: итоговый балл не показывает, насколько процесс надёжен.


💡

Адаптации и экстраполяции

🔧 Техника: добавить требование журнала сбоев в инструкции агента → получить IF-разметку «из первых рук»

Этого в статье нет, это идея по мотивам. Статья разбирает чужие логи постфактум, но можно просить агента вести свой журнал.

## Журнал сбоев (CLAUDE.md / системный промпт)
Каждый раз, когда инструмент вернул ошибку, пустой результат или
ты сменил подход, добавь в конец ответа строку:
[СБОЙ] шаг: ... | что случилось: ... | как поступил: исправил / обошёл / принял как есть
Не продолжай молча. Если принимаешь непроверенные данные — пиши об этом явно.

Это превращает неявные сбои в явные. Судье-аудитору остаётся сверить журнал с логом. Агент может не заметить собственный сбой, поэтому внешний аудит всё равно нужен.

🔧 Техника: ремонт по месту → точечный перезапуск

Если аудит нашёл сбой тяжести 3 в проваленном прогоне, дайте агенту (или другому чату) такой запрос:

Вот лог. На шаге {N} произошёл сбой: {описание}.
Предложи исправленный вариант ТОЛЬКО этого шага — в той же роли и с тем же контекстом, что был до него.
Дальше я продолжу прогон с этого места.

В статье исправление генерировала сильная модель, а затем прогон возобновляли автоматически. Вручную это делается дольше, но логика та же.


🔗

Ресурсы

  • MASIF: Implicit Failures for Process Observability in Multi-Agent Systems, Yanwei Huang, Arpit Narechania (HKUST), Atanu Sinha (Adobe Research).
  • Опирается на MAST (Cemri et al., 2025) — таксономию провалов мультиагентных систем на уровне всей трассы. Бенчмарки: GAIA, WebWalkerQA, BrowseComp-Plus, MMLU, OlympiadBench, GSMPlus, SWE-Bench. Промпты судьи и ремонта приведены в приложениях статьи (Appendix A и D.2).

📋 Дайджест исследования

Ключевая суть

Обнаружено: скрытые сбои есть в 54% успешных прогонов агента и в 75% провальных. Ответ совпал, а процесс был кривой. Метод MASIF позволяет выбрать из нескольких запусков агента самый надёжный, даже когда итоги выглядят одинаково. Фишка: судье-LLM не дают правильный ответ, он читает только лог. Он выписывает каждый неявный сбой (локальную ошибку, которая не решила исход) с шагом, типом и тяжестью. Дальше считаешь риск: сумма тяжести делится на длину лога. Берёшь прогон с минимальным риском.

Принцип работы

Процесс в три хода: запуск, аудит, выбор. Агент гоняется N раз на одной задаче. Судья читает каждый лог и ищет сбои по готовому списку: 8 типов ошибок и 6 способов, как сбой был «поглощён» (агент сам исправился, обошёл, пропустил дальше и так далее). Из этого получается одно число на прогон. Из двух прогонов с одинаковым ответом надёжнее тот, где меньше неисправленных сбоев и выдумок. Это как два студента с одной пятёркой. Один решил честно. Другой списал и случайно угадал. По оценке не отличишь, а по черновику видно сразу. Длину лога учитывай обязательно. Иначе длинные прогоны всегда будут выглядеть хуже.

Почему работает

Готовые оценщики шагов (PRM) учили на одиночных агентах и математике. На логах мультиагентных систем они почти не лучше случайного выбора. Они не знают, как выглядит сломанный инструмент или выдуманная цена. У LLM-судьи другая сильная сторона: читать длинный текст и искать в нём события по списку. Судье не нужен эталон: он видит, что инструмент вернул ошибку, а агент потом сослался на результат, которого не было. Список типов сужает поиск, поэтому судья не фантазирует. Часть сбоев повторяется: около 79% приходится на четыре типа. Это сбои инструментов, неверные действия, лишние действия и выдумки. Если смешать PRM с аудитом сбоев, лучше не станет. Слабый сигнал просто добавляет шум.

Когда применять

Многошаговые агенты с инструментами (поиск, браузер, парсинг, код) → сбор данных, исследования, длинные автоматизации, особенно когда итог трудно проверить автоматически и агент ходит по 100+ шагов. Подходит и для выбора лучшего из 4-16 запусков. НЕ подходит для коротких одношаговых запросов и дешёвых задач. N запусков плюс N проходов судьи по длинным логам там не окупятся. Приросты честные: единицы процентных пунктов точности. Это сито для шаткого, а не волшебная кнопка.

Мини-рецепт

1. Запусти агента N раз: хватит 4. Сохрани логи целиком, с вызовами инструментов и ответами.
2. Возьми шаблон судьи: он без эталонного ответа ищет сбои по шагам. Подставь свою задачу и сам лог.
3. Задай правило тяжести: 3 — сбой остался в итоге или лёг в основу следующих шагов. 2 — исправлен, но стоил шагов. 1 — мелочь.
4. Разреши сомневаться: всё неуверенное судья помечает «под вопросом» и не включает в сумму. Так он не придумывает сбои.
5. Прогони каждый лог отдельно: на выходе таблица и риск = сумма тяжести / число шагов.
6. Выбери прогон с наименьшим риском: если риски близки, бери тот, где меньше выдумок и неисправленных сбоев.
7. Подгони под себя: выкинь типы сбоев, которых у твоего агента не бывает. Подними вес выдумок, если ошибка стоит дорого (цены, юридические данные).

Примеры

[ПЛОХО] : Вот 4 сводки по ценам конкурентов, выбери самую правильную
[ХОРОШО] : Ты аудитор процесса работы агента. Ты НЕ знаешь правильного ответа и не оцениваешь итог. Задача агента: собрать цены на 30 товаров на Ozon и Wildberries. Лог: {лог}. Найди все неявные сбои. Для каждого укажи шаг, тип (сбой инструмента, выдумка, неверное действие, лишнее действие и так далее), как он был поглощён (самоисправление, обход, не исправлен и так далее) и тяжесть 1-3. Не исправленные сбои и выдумки получают тяжесть выше. В конце: число сбоев, сумма тяжести, число шагов, риск = сумма / шаги. Сомневаешься — пометь «под вопросом». Судья вернёт таблицу по каждому логу. Ты увидишь, что в прогоне №3 агент молча принял пустую страницу и «нашёл» цену, которой там нет. Этот прогон выпадает, хотя сводка у него выглядела нормально.
Источник: MASIF: Implicit Failures for Process Observability in Multi-Agent Systems
ArXiv ID: 2610.25852 | Сгенерировано: 2026-10-20 16:10

Проблемы LLM

ПроблемаСутьКак обойти
Верный итог не значит, что агент работал надёжноАгент с инструментами делает много шагов. Проверяешь только финальный ответ. Ответ совпал, и кажется, что всё хорошо. Но по пути агент мог упереться в сломанный инструмент, выдумать факт или принять пустой результат за данные. Ошибка просто не попала в итог. В следующий раз она может попасть. Примерно в половине «успешных» прогонов такие скрытые ошибки естьСмотри не только итог, но и весь лог шагов. Отдельным запросом попроси другую модель найти локальные ошибки по ходу работы. Сравнивай прогоны по числу и тяжести этих ошибок, а не только по ответу

Методы

МетодСуть
Аудит лога судьёй с числом риска — выбор самого надёжного прогонаЧто делать: запусти агента N раз (например 4) на одной задаче. Каждый лог дай отдельному запросу-судье. Судья не знает правильного ответа и не оценивает итог. Он ищет только локальные ошибки по ходу работы. Для каждой ошибки судья пишет: шаг, тип, как её «поглотили», тяжесть 1–3 и короткую цитату из лога. Потом считай риск = сумма тяжести / число шагов. Бери прогон с меньшим риском. Типы ошибок (закрытый список): сбой инструмента, неверное действие, лишнее действие, выдумка, неполное действие, ошибка рассуждения, непонимание, битый вывод. Как поглотили: самоисправление, обход, исправление коллегой, вмешательство руководителя, не исправлен, мелочь. Почему работает: модель хорошо ищет события в длинном тексте по списку категорий. Эталон не нужен: видно, что инструмент вернул ошибку, а агент сослался на результат, которого нет. Закрытый список сужает поиск, и судья отвечает меньше «от себя». Деление на длину нужно, чтобы длинные прогоны не проигрывали только из-за длины. Пометка «под вопросом» с исключением из суммы снижает риск выдуманных сбоев. Настройки: для задач с высокой ценой ошибки (цены, юридические данные) повышай тяжесть выдумок и неисправленных сбоев. Урежь список типов до тех, что реально встречаются у твоего агента. Когда да: многошаговый агент с инструментами, итог трудно проверить автоматически. Когда нет: короткие запросы в один шаг, дешёвые задачи. Цена высокая: N прогонов плюс N проходов судьи по длинным логам. Ограничения: выигрыш в точности скромный, единицы процентных пунктов. Судья пропускает ошибки, особенно когда причина в начале, а последствия в конце. Ему трудно отличить ошибку от нормального этапа плана. Слабая модель-судья, скорее всего, справится хуже
📖 Простыми словами

MASIF: Implicit Failures for Process Observability in Multi-AgentSystems

arXiv: 2610.25852

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

Это как хирург, который во время операции уронил скальпель на пол, быстро вытер его о халат и продолжил резать. Пациент выжил, пульс в норме, формально всё прошло идеально. Но доверять такому специалисту нельзя: это чистая русская рулетка, а не надёжная работа. Стандартные тесты видят только «живого пациента» на выходе, абсолютно не понимая, какой дикий треш творился в операционной.

Фреймворк MASIF вытаскивает этот бардак наружу через детальный аудит логов. Вместо слепой проверки финала запускается LLM-судья, вооружённый чёткой таксономией типов поломок и способов их маскировки. Он построчно читает весь трейс шагов и протоколирует: какой агент накосячил, где возник баг и как именно его замели под ковёр. Когда есть пять разных прогонов одной задачи, метод выбирает не просто рабочий вариант, а тот, где меньше всего скрытых сбоев.

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

Короче: правильный результат из кривого процесса — это случайность, а не победа. Перестань оценивать сложные цепочки бинарно: внедряй аудит логов и отслеживай неявные сбои до деплоя. Иначе твой красивый пайплайн продолжит выдавать «правильные ответы» на костылях и соплях, пока в один прекрасный день не развалится к чертям.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с