TL;DR
Status Sentence — приём для циклов «модель предлагает → проверяем → записываем результат → просим предложить следующее». Перед вопросом добавляется одно предложение, которое прямо называет статус вариантов: «эти уже в работе или уже пробовались и отклонены». Список таких вариантов не просто лежит в истории, он назван отдельной строкой с их ID.
Обычно мы показываем модели историю попыток и надеемся, что она сама обойдёт провалы. В тесте на «чистом» запросе так и выходит: модель аккуратно обходит отклонённое. В реальном цикле она возвращается к своим же отклонённым фаворитам, и 28–63% итераций уходят на то, что уже проверено. Причина проста. Отклонённые варианты — это её собственные прошлые выборы, и они по-прежнему кажутся ей перспективными. Сам факт провала этого мнения не меняет. История при этом помогает не всем: у одной из трёх моделей она повторы даже увеличила.
Исправление дешёвое: одно предложение со статусом снижает повторные предложения у всех трёх протестированных моделей. Добавка «Не предлагай ни один из них» дала лишь небольшой дополнительный эффект, статистически не подтверждённый. Почти вся польза — от самой формулировки статуса.
Схема метода
ШАГ 1: Предложить вариант → модель называет один вариант из каталога
ШАГ 2: Проверить → результат записан в историю (как обычно)
ШАГ 3: Собрать ID уже принятых и отклонённых вариантов → один список
ШАГ 4: Перед вопросом вставить предложение статуса со списком ID
→ «Эти варианты уже в текущей версии или уже пробовались и отклонены: {ID}.
Эта заметка фиксирует их статус.»
ШАГ 5: Задать вопрос «что дальше?» → модель выбирает из оставшихся
Всё это работает в одном промпте, на каждой итерации заново.
Пример применения
Задача: Продавец на Ozon улучшает карточку товара (беспроводные наушники). Он составил пронумерованный каталог из 15 правок (A/B-тесты): первое фото на белом фоне, цена с «зачёркнутой», видео в слайдере, инфографика с шумоподавлением и так далее. Уже проверили три правки: A3, A7 и A12 не дали роста конверсии. Он просит ИИ выбирать следующую правку. Раньше ИИ снова советовал A7 («инфографика — это же главное!»).
Промпт:
Ты помогаешь улучшать конверсию карточки товара «Беспроводные наушники Sonic X» на Ozon.
КАТАЛОГ ПРАВОК (выбираем строго из него):
A1 — первое фото на белом фоне
A2 — фото в использовании (человек на пробежке)
A3 — зачёркнутая «старая» цена
A4 — видео 15 сек в слайдере
A5 — блок «Сравнение с AirPods» в описании
A6 — заголовок с ключом «шумоподавление»
A7 — инфографика с характеристиками на 2-м фото
A8 — отзывы с фото вынесены в начало
A9 — бейдж «Хит продаж»
A10 — набор «наушники + чехол»
A11 — размерная сетка вкладышей
A12 — гарантия 2 года в заголовке
A13 — акция «второй товар −20%»
A14 — Rich-контент: история бренда
A15 — упаковка в кадре
ИСТОРИЯ (последние попытки):
- A3 → конверсия 3.1% → 3.0%, не оставлена
- A7 → 3.1% → 3.1%, не оставлена
- A12 → 3.1% → 2.9%, не оставлена
- A9 → 3.1% → 3.4%, оставлена
Текущая версия карточки: базовая + A9. Конверсия: 3.4%.
Следующие правки уже в текущей версии или уже пробовались с ней и были отклонены: A9, A3, A7, A12. Эта заметка фиксирует их статус.
Назови ОДНУ следующую правку из каталога (только ID и название) и в одном предложении объясни, почему она может сработать.
Результат: Модель назовёт одну правку из оставшихся (A1, A2, A4–A6, A8, A10, A11, A13–A15) с коротким обоснованием. Повтор A3, A7 или A12 становится заметно реже, чем при том же промпте, где отклонённое лишь упомянуто в истории.
Почему это работает
Слабость: Модель не читает историю как запрет. Отклонённый вариант, который она сама же раньше выбрала, по-прежнему выглядит ей хорошим. Провал — это строка в контексте, а не повод передумать. Поэтому в «чистом» тесте всё хорошо: там отклонённое подобрано случайно, и оно ей не симпатично. В цикле отклонённое — её собственные любимцы.
Сильная сторона: Модель хорошо реагирует на прямое утверждение статуса: «это уже в работе или отклонено». Это не команда, а факт о состоянии мира, и модель обновляет по нему выбор. Авторы сравнили предложение статуса с нейтральным списком тех же ID («для справки, в промпте есть такие ID…»). Разница получилась заметной, а добавка слов «не предлагай» дала малое. Значит, работает не грозный тон, а ясное сообщение статуса.
Как метод использует это: Он превращает «показать историю и надеяться» в «назвать статус прямо». Рычаги управления:
- Список ID в самом предложении. Не полагайся, что модель сама вытащит отклонённое из истории.
- Позиция — прямо перед вопросом. Так проверяли авторы.
- «Не предлагай» — добавляй по желанию. Эффект малый, но вреда не показал.
- Длина записей о провалах. Удаление описаний ошибок из истории снижало повторы, но эффект сильно зависит от модели. Если повторы всё равно идут, проверь на своей модели версию с короткими записями.
- Каталог с ID — чем точнее идентификатор варианта, тем проще проверять повторы и тем яснее статус-предложение.
Шаблон промпта
{описание_задачи}
КАТАЛОГ ВАРИАНТОВ (выбираем строго из него):
{каталог_с_ID}
ИСТОРИЯ ПОПЫТОК:
{история: вариант → результат → оставлен/не оставлен}
Текущая версия: {текущая_версия}. Результат: {текущая_метрика}.
Следующие варианты уже в текущей версии или уже пробовались с ней и были отклонены: {список_ID}. Эта заметка фиксирует их статус.
Назови ОДИН следующий вариант из каталога (ID и название) и в одном предложении объясни, почему он может сработать.
Что подставлять:
- {каталог_с_ID} — закрытый список вариантов с короткими кодами: правки, гипотезы, шаги.
- {история} — одна строка на попытку, без длинных разборов.
- {список_ID} — все варианты, которые уже в версии или уже отклонены именно для текущей версии.
Варианты формулировок из статьи (проверялись отдельно):
- Со запретом (P): то же предложение + «Не предлагай ни один из них».
- Исходная (E): «НЕ ПРЕДЛАГАЙ ни одну из следующих правок. Они уже в текущей версии или уже пробовались с ней и были отклонены: …»
Обе сильнее нейтрального списка ID. Прирост запрета над чистым статусом небольшой и статистически не подтвердился.
Ограничения
⚠️ Проверено на узкой задаче: Один закрытый каталог из 40 правок для GUI-агента и точное сопоставление по названию правки. Как это работает со свободным текстом («придумай новый заголовок»), статья не проверяла.
⚠️ Не панацея: Статус-предложение снижает повторы, но не убирает их. Если важна нулевая доля повторов, нужна внешняя проверка, например фильтр, который отбрасывает уже испробованные ID.
⚠️ Эффект истории зависит от модели: Обычная история у двух моделей снижала повторы, а у третьей повышала. Не считай, что «история в контексте» всегда помогает. Проверяй на своей модели.
⚠️ Эффект удаления описаний провалов зависит от модели: Удаление текста ошибок снижало повторы в среднем, но у одной модели это связано с содержанием ошибок, у другой — в основном с объёмом текста. Универсального совета «сокращай записи» нет.
⚠️ Модели не фронтирные: Тестировали открытые модели среднего размера (Gemma-4, Mistral-Small-3.2, Qwen3-VL-32B). На ChatGPT, Claude и Gemini результат может отличаться.
⚠️ Часть деталей недоступна: Текст статьи в материале обрезан. Выводы о фразе со статусом и добавке-запрете взяты из резюме и введения, а разделы с подробными таблицами по ним не были доступны.
Как исследовали
Идея была простой: проверить, избегает ли модель отклонённого не в лабораторном тесте, а в состояниях, которые создаёт её собственный цикл. Три открытые модели по 30 итераций улучшали GUI-агента: каждый раз называли одну правку из каталога в 40 пунктов. Всего прогнали 36 циклов (3 модели × 2 варианта оформления каталога × 2 вида истории × 3 повтора). Правка принималась, если точность росла больше чем на 2 пункта. Так как у каждой правки есть точное имя, повтор определяется без догадок.
Сначала сделали «чистый» тест: показали модели список отклонённых правок, подобранный случайно, и её фаворит в нём был всего один. Две модели вообще не повторили ни одной из показанных, а третья повторила лишь изредка. В своих циклах те же модели повторяли отклонённое заметно чаще: разрыв в среднем 0,32. Доля итераций, потраченных на уже проверенные пары «версия + правка», составила 28–63%.
Дальше авторы разбирали причину. Они пересобирали состояния цикла и убирали историю целиком. Модели всё равно давали отклонённым правкам больше вероятности, чем при равномерном выборе. Эти правки — собственные прошлые выборы модели, и она к ним тянется. Затем на свежих состояниях меняли отдельно «доказательства провала» и «сам факт отклонения». Первое дало модельно-зависимые эффекты. Второе — предложение статуса — снизило повторы у всех моделей на 0,16 относительно нейтрального списка тех же ID. Всё это стоило $4,88 за платные вызовы, эксперименты зарегистрировали заранее.
Что удивило: история иногда вредит — у Mistral повторы с ней выросли. И ещё: прямой запрет добавил немногим больше, чем простое сообщение статуса.
Адаптации и экстраполяции
🔧 Техника: убрать «ожидание» из промпта → проверить на своём цикле
Прежде чем внедрять, посмотри свой журнал итераций и посчитай, как часто модель предлагает уже отклонённое. Если повторов нет, статус-предложение не нужно. Если есть, вставь его и сравни доли на 10–20 итерациях.
Экстраполяция (достройка, в статье не проверялась): агент с журналом отклонённых гипотез
Для агента, который чинит баг (Claude Code, Cursor), заведи в файле инструкций раздел «Уже пробовали». Перед каждой новой попыткой агент перечитывает его и говорит статус:
Перед каждой новой гипотезой:
1. Выпиши ID всех гипотез из раздела «Уже пробовали».
2. Напиши: «Следующие гипотезы уже проверены и отклонены: {ID}. Эта заметка фиксирует их статус.»
3. Предложи гипотезу, которой нет в этом списке.
Работает ли это на агентах так же, как на каталоге из 40 правок, нужно проверять самому.
Ресурсы
- Работа: Visible but Not Avoided: State-Dependent Re-Proposal of Rejected Candidates in Catalog-Based LLM Optimization Loops
- Авторы: Jianlin Chen, Wenhui Chen, Chi Man Vong (университеты в тексте не указаны)
- Упомянутые работы: OPRO (Yang et al., 2024), Meta-Harness (Lee et al., 2026), Gumaan (2026) о «do not repeat»
- Связанная тема: табу-списки в классическом поиске (Glover, 1986)
