Сломался агент? Дело почти никогда не в модели

Когда агент падает на проде, разбор почти всегда сваливается в один и тот же спор: модель тупит, промпт кривой, API виноват. Спорить можно долго, а инцидент тем временем живёт. Я год делаю агентов руками, и у меня накопилась своя коллекция отказов — так вот, почти все они жили не в весах модели, а в обвязке вокруг неё.
Недавно это совпало с внешней фактурой. Scale AI выпустила таксономию отказов агентов: 41 режим, и, что важнее самого числа, у каждого режима есть адрес. Не «модель плохая», а конкретное ребро между компонентами, на котором всё рвётся. Ровно то, что мы видим руками: «виновата модель» почти никогда не значит «чинить дообучением».
Отказы живут на швах, а не в весах
Разберу на тех самых отказах из моей коллекции.
Модель выдала валидный ответ — а парсер ждал другой формат и уронил шаг. С весами тут всё в порядке: ответ корректный. Порвалось на стыке между моделью и кодом, который этот ответ разбирает.
Инструмент вернул ошибку — а агент не отличил её от пустого результата и пошёл дальше как ни в чём не бывало. Модель не «ошиблась»: ей не дали различить два разных сигнала, и она честно отработала то, что видела.
Контекст не доехал до нужного шага — и модель честно ответила на то, что ей дали, просто дали не то. Классический случай, когда обвиняют модель, а виновата доставка контекста.
Роутер увёл диалог не в ту ветку. Дальше по цепочке всё может быть исправно, но разговор уже идёт не туда.
Общее у всех четырёх — одно. Сменить модель тут бесполезно: она станет сильнее, а шов, на котором рвётся, останется прежним.
Первый вопрос при разборе — не «какая модель»
Поэтому у нас на разборе инцидента первый вопрос звучит иначе: не «какая модель», а «на каком ребре порвалось». Это сразу переводит разговор из плоскости «давайте возьмём модель поумнее» в плоскость инженерии, где у проблемы есть точный адрес.
Дальше — по порядку:
- воспроизвести отказ ровно на этом шве, а не «в целом на агенте»;
- добавить проверку формата там, где парсер встречает ответ модели;
- научить агента отличать ошибку инструмента от пустого ответа;
- зафиксировать, что именно приходит на вход шага.
Ничего героического. Скучная инженерия, но контур держит именно она, а не более умная модель.
Почему это важнее выбора модели
Соблазн понятен: вышла модель посильнее — обновились, и вроде бы стало легче. Но если отказ живёт на ребре между компонентами, более сильная модель его не закрывает. Шов остаётся. А значит, тот же инцидент вернётся — просто на новых входных данных.
Отсюда простое рабочее правило: прежде чем трогать модель, найди ребро. Чаще всего чинить придётся не веса, а формат, доставку контекста, обработку ошибок инструмента и маршрутизацию. Это не так эффектно, как «поставили новую модель», зато держит.
Как этот разбор по швам выглядит на практике — на агентах, которые уже работают в проде, — можно посмотреть на trofimov-ai.ru/live.