3,583 papers
arXiv:2608.26218 77 26 авг. 2026 г. FREE

Detector-Intervention: явное указание на цикл ошибок почти удваивает шанс, что AI-агент доведёт задачу до конца

КЛЮЧЕВАЯ СУТЬ
43 против 72 из 169 задач решены до конца — просто научив программную обвязку (харнесс) замечать повторы. Метод позволяет AI-агенту не застревать в бесконечном повторении одной неудачной попытки. Харнесс следит за логами команд, а не за текстом ответа: заметив повтор, он вставляет жёсткое сообщение «ты повторяешь одно и то же, смени подход» прямо в контекст модели — и доля исправленных ошибок выросла с 28% до 49%.
Адаптировать под запрос

TL;DR

Исследователи взяли систему-надзирателя ("харнесс" — программную обвязку, которая решает что модель видит и когда останавливать работу) и добавили ей два простых механизма: следить за повторами (одна и та же неудачная команда, то же чтение без правок) и сжимать старые данные, оставляя подробными только последние шаги. Когда харнесс замечает, что модель гоняет по кругу, он вставляет жёсткое сообщение: "ты повторяешь одно и то же, смени подход" — и модель продолжает работу уже с этой подсказкой.

Главная находка: модель сама не замечает, что застряла. Она не помнит "я это уже пробовал 5 раз" — она просто видит очередной кусок текста и выдаёт похожий ответ на похожий контекст. Особенно это заметно, когда диалог длинный и старые детали забивают всё пространство — модель тонет в собственной истории и продолжает биться в одну стену. На тестах разница разительная: доля исправленных ошибок выросла с 28% до 49%, а число полностью решённых задач — с 43 до 72 из 169.

Метод работает в два параллельных потока. Первый: харнесс проверяет факты выполнения (не текст, а логи команд) — если команда и её результат повторились, это фиксируется как "застревание", и модель получает прямое указание сменить подход. Второй: по мере заполнения контекста старые результаты инструментов урезаются по правилу "чем старше — тем короче" (последние 4 результата остаются полными, дальше объём режется вдвое с каждым удвоением возраста), а новые данные всегда идут целиком.


🔬

Схема метода

ШАГ 1 (автоматически, в фоне): Харнесс фиксирует факты выполнения → находит повтор команды/ошибки/чтения без изменений
ШАГ 2: Если найден повтор → вставляется фиксированное сообщение "ты повторяешь то же самое, смени подход"
ШАГ 3 (параллельно, по мере роста диалога): Старые результаты инструментов урезаются по правилу "старше = короче" → новые остаются полными
ШАГ 4: Модель продолжает работу с обновлённым видом контекста → цикл проверки повторяется на каждом шаге

🚀

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

Задача: Вы дебажите Telegram-бота на Python вместе с Claude или ChatGPT. Ассистент три раза подряд предлагает одно и то же исправление кода — и три раза получает ту же ошибку.

Промпт:

Ты уже 3 раза предлагал одно и то же исправление (добавить try/except вокруг вызова API), 
и каждый раз я получал одну и ту же ошибку: "ConnectionResetError".

Не повторяй этот подход. Объясни, почему именно он не работает, и предложи принципиально 
другое решение — например, проверь, не проблема ли в самом соединении, а не в обработке ошибки.

Результат: Модель прекращает крутиться вокруг одного и того же решения. Она явно анализирует, почему предыдущие попытки провалились, и предлагает другую стратегию — например, проверить настройки таймаута соединения вместо простого перехвата исключения. По данным исследования, такое явное вмешательство в момент "застревания" резко увеличивает шанс, что задача будет решена полностью, а не заброшена на середине.


🧠

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

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

Зато модель отлично реагирует на прямо сказанные факты. Если написать текстом "ты повторяешь одно и то же", она это учитывает и меняет стратегию — потому что теперь этот факт есть в её видимом контексте, а не только в истории действий.

Метод использует эту силу напрямую: вместо того чтобы ждать, что модель сама заметит цикл, он явно фиксирует факт повторения и вставляет прямое указание. Это не какая-то магия — просто модели дают то, что она сама пропустила бы.

Рычаги управления: - Порог "сколько повторов считать застреванием" — в исследовании это 7 попыток; для простых задач можно снизить до 2-3, чтобы реагировать раньше. - Формулировка вмешательства — можно сделать мягче ("попробуй другой угол") или жёстче ("этот путь точно не работает, забудь про него"). - Что считать "старым" контекстом для сжатия — свои правила, что оставлять подробно (последние правки), что сокращать (старые логи, длинные тексты).


📋

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

Для ручного применения в чате нет XML-структуры — это принцип, который вы применяете сами, заметив зацикливание:

Ты уже {количество} раз пытался {что делал} и получал {тот же результат/ошибку}.

Не повторяй этот подход. Сначала объясни, почему он не сработал.
Затем предложи принципиально другое решение задачи: {задача}.

Можно также встроить это правило заранее, в начале длинной рабочей сессии:

Работаем над задачей: {задача}.

Если в процессе ты заметишь, что предлагаешь одно и то же решение больше {N} раз подряд 
без реального прогресса — остановись сама, скажи об этом прямо и предложи другой путь, 
не дожидаясь моего напоминания.

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

Вот принцип разрыва циклов при работе с длинными задачами. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.

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

LLM спросит, какая у вас задача и какой сценарий повтора вероятен — потому что формулировка "что считать застреванием" должна совпадать с реальным паттерном вашей работы (код, текст, анализ данных).


⚠️

Ограничения

⚠️ Эффект слабеет без давления на контекст: когда у модели достаточно места и она не тонет в старой истории, разница между "с напоминанием" и "без напоминания" почти пропадает. Метод особенно ценен в длинных, многошаговых сессиях, где контекст переполняется.

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

⚠️ Не заменяет качество модели: если модель объективно не понимает задачу, напоминание о цикле просто заставит её сменить одну неверную стратегию на другую неверную.


🔗

Ресурсы

Sydney Lewis, "Same Model, Different Harness: Different Coding-Agent Results" (2026). Харнесс Yuj (github.com/sydches/yuj). Тесты: SWE-bench Verified, SWE-bench Pro, FeatureBench. Модель: Qwen3.6-35B-A3B.


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

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

43 против 72 из 169 задач решены до конца — просто научив программную обвязку (харнесс) замечать повторы. Метод позволяет AI-агенту не застревать в бесконечном повторении одной неудачной попытки. Харнесс следит за логами команд, а не за текстом ответа: заметив повтор, он вставляет жёсткое сообщение «ты повторяешь одно и то же, смени подход» прямо в контекст модели — и доля исправленных ошибок выросла с 28% до 49%.

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

Модель не думает «я это уже пробовал 5 раз». Она смотрит на текущий контекст и выдаёт похожий ответ на похожий кусок текста — никакого внутреннего счётчика повторов у неё нет. Фишка в том, что харнесс не лечит модель, а просто вписывает факт «ты застрял» в её же видимый контекст — и этого хватает, чтобы сломать паттерн.

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

Модель отлично реагирует на прямо сказанные факты. Если текст говорит «ты повторяешься» — это теперь часть того, что она видит, а не скрытая история действий. Вот и весь секрет: LLM не помнит свои шаги, она помнит только то, что стоит перед глазами прямо сейчас. Второй механизм — старые логи режутся по правилу «чем старше, тем короче» — освобождает место, чтобы сигнал о застревании не потонул среди старого мусора.

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

Долгие рабочие сессии с LLM → дебаг кода, многошаговый анализ, итеративное редактирование текста, особенно когда диалог разросся и старые детали забивают всё пространство контекста. Не подходит, если модель объективно не понимает задачу — тогда смена стратегии просто заменит одну неверную попытку на другую неверную.

Мини-рецепт

1. Замечай повтор: если модель три раза подряд предлагает одно и то же решение с одной и той же ошибкой — это сигнал застревания.
2. Скажи прямо: Ты уже 3 раза пытался X, каждый раз получал ошибку Y. Не повторяй этот подход.
3. Проси другой путь: Объясни, почему предыдущее решение не сработало, и предложи принципиально другую стратегию.
4. Для длинных сессий — вставь правило заранее: Если заметишь, что предлагаешь одно и то же больше N раз без прогресса — остановись сама и скажи об этом прямо.

Примеры

[ПЛОХО] : Почему код всё ещё не работает? (после третьей одинаковой ошибки, без указания на повтор)
[ХОРОШО] : Ты уже 3 раза предлагал добавить try/except вокруг вызова API, и каждый раз я получаю ту же ConnectionResetError. Не повторяй этот подход — объясни, почему он не сработал, и предложи другое решение, например проверь настройки таймаута соединения.
Источник: Same Model, Different Harness: Different Coding-Agent Results
ArXiv ID: 2608.26218 | Сгенерировано: 2026-08-28 04:34

Проблемы LLM

ПроблемаСутьКак обойти
Модель не замечает, что зациклиласьМодель не хранит счётчик повторов. Она не помнит "я это уже пробовал 5 раз". Видит похожий контекст — выдаёт похожий ответ. Так модель может биться в одну и ту же стену десятки раз, пока ты не укажешь на это прямоЯвно напиши текстом: "ты уже N раз пытался сделать X и получал ту же ошибку. Не повторяй этот подход, объясни почему он не сработал и предложи другой"
Старый контекст перегружает диалог и снижает фокусКогда история длинная, старые детали занимают столько же места, сколько новые. Модель "тонет" в объёме старых логов и деталей. Из-за этого хуже видит, что реально происходит сейчас, и продолжает старые ошибочные паттерныПериодически сокращай старые сообщения/результаты в диалоге вручную. Оставляй подробными только последние 3-4 шага, остальное — сжимай в короткое резюме

Методы

МетодСуть
Прямое указание на цикл — разрыв застреванияЗаметив, что модель повторяет одну и ту же неудачную стратегию (та же команда, тот же результат, то же чтение без изменений), явно напиши об этом текстом: "ты повторяешь одно и то же, смени подход". Ты уже {N} раз пытался {действие} и получал {результат}. Не повторяй. Объясни почему не сработало и предложи другое решение. Почему работает: модель реагирует на то, что явно есть в видимом ей контексте, а не на скрытую историю своих же действий. Факт зацикливания, проговорённый текстом, становится частью контекста — и модель его учитывает. Когда применять: долгие многошаговые сессии (дебаг, итеративное редактирование, анализ), где заметен повтор 2-3+ раз. Когда не работает: короткие диалоги без реального застревания — эффект почти пропадает, если модели не тесно в контексте
Прогрессивное сжатие старого контекстаПо мере роста диалога сокращай старые сообщения по правилу "чем старше — тем короче": последние несколько результатов оставляй полными, дальше урезай объём вдвое с каждым удвоением возраста сообщения. Новые данные всегда оставляй целиком. Почему работает: старые детали редко нужны в исходном объёме, но занимают место и отвлекают модель от текущего шага. Сжатие освобождает "внимание" модели для актуального контекста. Когда применять: долгие сессии с накоплением логов, кода, промежуточных результатов. Когда не работает: короткие задачи, где весь контекст критичен и терять детали нельзя
📖 Простыми словами

SameModel, Different Harness: Different Coding-AgentResults

arXiv: 2608.26218

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

Это как упорный комар, который со всей дури бьётся в стекло прямо рядом с открытой форточкой. Каждый удар для него как первый, потому что в голове просто нет истории провалов. Ему бесполезно сочувствовать — нужен внешний щелбан, который физически собьёт траекторию и заставит взглянуть на проблему шире.

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

Тестировали на написании кода, но паттерн абсолютно универсален. Точно так же на ровном месте лажают поисковые агенты, боты для техподдержки или парсеры данных. Проблема почти всегда не в модели, а в кривой среде, которая позволяет агенту наступать на одни и те же грабли. Грамотный контроль поверх нейросети даёт куда больше профита, чем переход на более дорогую модель.

Главный вывод: перестань ждать от нейросетей человеческой осознанности — её там нет и не будет. Умный надзиратель важнее размера сетки. Настрой отслеживание повторов, сжимай контекст и вовремя бей агента по рукам, иначе твоя разработка превратится в бесконечный и дорогой день сурка.

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

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

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