TL;DR
Исследователи Meta изучили ~43 000 реальных сессий с AI-агентом для кода и нашли, что в 30% случаев агент сбоит. Три главных типа: дрейф от задачи (игнорирует инструкции или делает незапрошенное), зацикливание (повторяет одно и то же без прогресса), ошибки с действиями (неправильно использует инструменты снова и снова). У каждого типа — своя механика и свой способ починки.
Главная боль: LLM не «держит» инструкции по мере роста разговора. Попросил отредактировать только заголовки — а модель переписала весь документ. Попросил исправить баг — агент читает один файл в третий раз и не движется вперёд. Это не случайность, это системный паттерн, и он не исчезает с переходом на более умную модель. У Opus 4.5 зависаний в петле стало больше, чем у Sonnet 4.5.
Wink — система, которая наблюдает за ходом работы агента, классифицирует тип сбоя и вставляет в контекст целевое DO/DON'T сообщение. Одна такая инъекция исправляет проблему в ~91% случаев.
Схема метода
ШАГ 1: Наблюдаем историю → выявляем тип сбоя
(Дрейф / Петля / Ошибка действия)
ШАГ 2: Генерируем коррекцию → DO/DON'T инструкция
(конкретная, адресная, про ЭТОТ сбой)
ШАГ 3: Вставляем инструкцию в контекст →
агент продолжает с поправкой
⚠️ Если сбой повторился → повторяем ШАГ 1-3 (до 80% восстановления)
Все три шага в системе Wink — автоматические. Пользователь может воспроизвести ту же логику вручную в обычном чате: увидел сбой → распознал тип → дал адресную коррекцию.
Пример применения
Сначала определи ограничения: метод работает лучше всего при чётко видимых сбоях — когда модель явно делает не то. Не подходит для оценки качества субъективного контента.
Задача: Максим готовит питч-дек для инвестора на 12 слайдов. Просит ChatGPT подправить только формулировки в разделе «Проблема» (слайды 2-3) — сделать их острее. Модель вместо этого начинает переписывать весь раздел «Решение», добавляет новые слайды, меняет структуру.
Промпт для ручной коррекции:
СТОП.
Тип сбоя: дрейф от задачи — незапрошенные изменения.
Что происходит: ты редактируешь разделы и слайды,
которые я не просил трогать.
ИСПРАВЛЕНИЕ:
НЕ трогай слайды за пределами слайдов 2 и 3.
НЕ меняй структуру, количество слайдов, раздел «Решение».
СДЕЛАЙ одно: улучши только формулировки в слайдах 2-3
так, чтобы проблема звучала острее.
Покажи ТОЛЬКО изменённый текст этих двух слайдов.
Результат: Модель получит явный стоп-сигнал с названием сбоя, описанием проблемы и конкретными границами. В ответе будут только слайды 2-3 без лишних правок. Если сбой повторился — отправь ту же структуру снова.
Почему это работает
Слабость: LLM генерирует следующий токен, опираясь на весь предыдущий контекст. Чем длиннее разговор, тем сильнее «тянет» в сторону от исходной инструкции — ранние ограничения «тонут» в общем объёме текста.
Сильная сторона: Модель хорошо реагирует на явные, свежие, конкретные инструкции в конце контекста. Последнее сообщение весит больше первого.
Как работает коррекция: Классификация сбоя + DO/DON'T команда убирает двусмысленность. Вместо «попробуй снова» — точное описание ЧТО пошло не так и КАК надо. Модель не угадывает желаемое, а следует явному переопределению задачи.
Рычаги управления: - Название типа сбоя → помогает модели активировать правильный паттерн поведения. Не "ты сделал не то", а "дрейф от задачи" - DO/DON'T формат → работает точнее, чем просто "исправь". Запрет конкретного действия снижает вероятность повтора - Граница видимого вывода ("покажи ТОЛЬКО...") → снижает вероятность дрейфа в следующем шаге
Шаблон промпта
СТОП.
Тип сбоя: {тип_сбоя}
(варианты: "дрейф от задачи", "незапрошенные изменения",
"зависание без прогресса", "игнор инструкций")
Что происходит: {описание_проблемы}
ИСПРАВЛЕНИЕ:
НЕ {что_делать_не_нужно}
СДЕЛАЙ {что_нужно_сделать}
Продолжай задачу с учётом этого исправления.
Плейсхолдеры:
- {тип_сбоя} — выбери из 3 типов (см. ниже) или опиши своими словами
- {описание_проблемы} — что конкретно сделала модель лишнего / не того
- {что_делать_не_нужно} — конкретное действие, которое нужно прекратить
- {что_нужно_сделать} — конкретное действие, которое нужно начать
Шпаргалка: три типа сбоев и сигналы
| Тип | Что видишь | Формулировка в промпте |
|---|---|---|
| Дрейф от задачи | Делает не то, что просил / переписывает лишнее | "дрейф от задачи — незапрошенные изменения" |
| Зависание | Повторяет один и тот же шаг / топчется на месте | "зависание без прогресса — повтор действий" |
| Игнор инструкций | Пропускает явное ограничение, которое ты задал | "игнор ограничений из условия задачи" |
🚀 Быстрый старт — вставь в чат:
Вот шаблон коррекции сбоев LLM. Адаптируй под мою ситуацию: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про тип сбоя и что конкретно пошло не так — потому что без этого нельзя сформулировать точную DO/DON'T инструкцию.
Ограничения
⚠️ Игнор коррекции: Почти в 40% случаев не-восстановления модель просто продолжает делать то же самое. Если после коррекции сбой повторился дважды — помогает только перезапуск с более чёткой исходной инструкцией.
⚠️ Сложные многошаговые сбои: Чем больше ошибочных шагов накопилось ДО коррекции, тем хуже восстановление (~79% против ~91%). Лучше вмешиваться рано.
⚠️ Внешние причины: Если проблема не в поведении модели, а в инструменте / системе / конфликте данных — DO/DON'T не поможет. Нужно решать причину, не симптом.
⚠️ Более умная модель ≠ меньше сбоев: У более мощного Opus 4.5 зависаний в петле стало больше, чем у Sonnet 4.5. Переход на новую модель не гарантирует исчезновения всех типов сбоев.
Ресурсы
Wink: Recovering from Misbehaviors in Coding Agents Rahul Nanda, Chandra Maddila, Smriti Jha, Euna Mehnaz Khan, Matteo Paltenghi, Satish Chandra Meta Platforms, Inc. (New York / Bellevue / Menlo Park)
Упомянутые методы: ReACT pattern, LLM-as-judge, Model Context Protocol (MCP)
