TL;DR
Предвзятость к действию (action bias) — встроенная особенность LLM: модель выдаёт изменения и правки даже тогда, когда правильный ответ — «всё уже хорошо, ничего менять не нужно». Исследователи обнаружили это у кодовых агентов, но механизм универсален: модели обучали на задачах, где всегда требовалась какое-то действие. Поэтому «не трогать» — не часть её понятия об успехе.
Конкретная боль: просишь LLM проверить текст, план, стратегию — и она всегда что-то правит. Не потому что плохо, а потому что «ничего не изменил» воспринимается как провал задачи. Модель не умеет различить «задачу выполнена через изменение» и «задача выполнена через подтверждение что всё ок».
Исследователи нашли рабочий фикс: явно прописать бездействие как один из валидных исходов. Формула «либо исправь, либо подтверди что уже хорошо» — и модель начинает честно оценивать, а не механически редактировать.
Схема метода
БЕЗ ФИКСА (action bias активен):
ЗАПРОС: "Проверь это и улучши" / "Дай обратную связь"
↓
МОДЕЛЬ: всегда найдёт что-то менять (даже если всё хорошо)
↓
РЕЗУЛЬТАТ: правки ради правок
---
С ФИКСОМ (ABSTAIN-OR-FIX):
ЗАПРОС: "Проверь. Либо [исправь + объясни], либо [подтверди что уже хорошо]"
↓
МОДЕЛЬ: сначала проверяет → потом решает нужно ли действие
↓
РЕЗУЛЬТАТ: честная оценка — правки только если реально нужны
Оба шага — в одном запросе. Никаких дополнительных диалогов.
Пример применения
Задача: Ты написал коммерческое предложение для нового клиента. Переписывал три раза, но не уверен — уже хорошо или ещё нет. Просишь LLM проверить.
Промпт (с action bias — плохо):
Вот моё коммерческое предложение. Что можно улучшить?
[текст КП]
→ LLM найдёт 7-10 «улучшений» — потому что так устроена её логика успеха.
Промпт (ABSTAIN-OR-FIX — правильно):
Проверь коммерческое предложение ниже. Возможны два исхода —
оба считаются успешным выполнением задачи:
1. Если нашёл реальные проблемы (логика, аргументы, структура,
доверие) — опиши конкретно что не так и почему это мешает.
2. Если текст уже сильный и не требует правок — скажи прямо:
«КП готово, изменений не требует» и коротко объясни почему
считаешь его сильным.
Косметические правки ради правок не нужны.
[текст КП]
Результат: Модель сначала анализирует текст по критериям, потом принимает решение — есть ли реальная проблема. Если проблем нет, скажет об этом прямо, с обоснованием. Если есть — опишет конкретно, а не «можно было бы переформулировать».
Почему это работает
Слабость LLM — модели обучались почти исключительно на задачах, где нужно что-то сделать: написать, исправить, улучшить, сгенерировать. «Ничего не менять» в обучающих данных было редким исходом. Поэтому у модели нет чёткого сигнала, когда бездействие — правильный ответ.
Что произошло в исследовании: когда агенту говорили «воспроизведи баг, а потом исправь» — он часто обнаруживал, что баг уже исправлен. Но всё равно вносил изменения. Агент знал что всё уже работает — и всё равно что-то «улучшал». Проблема не в том, что модель не видит реальность, а в том, что она считает своим успехом.
Как фикс использует это: фраза «либо исправь, либо подтверди что уже хорошо — оба исхода валидны» переключает внутренний фрейм модели. Теперь «не трогать» — это не провал, это успех. Модель получает разрешение выдать ответ «всё хорошо» — и начинает честно оценивать вместо механического редактирования.
Рычаги управления: - «Оба исхода — успех» → ключевая фраза. Без неё даже инструкция «проверь сначала» не помогает - «Косметические правки не нужны» → снижает вероятность правок ради правок - Конкретные критерии оценки (логика, структура, аргументы) → сужает зону поиска до реальных проблем, не вкусовщины - «Объясни, если всё хорошо» → заставляет модель осознанно обосновать отсутствие правок, а не просто сказать «окей»
Шаблон промпта
Проверь {что проверяем} ниже. Возможны два исхода — оба считаются
успешным выполнением задачи:
1. Если нашёл реальные проблемы с {критерии: например, логикой /
структурой / аргументами / читаемостью} — опиши конкретно что
не так и почему это мешает {цель: например, убедить клиента /
донести идею / принять решение}.
2. Если {что проверяем} уже сильное и не требует изменений —
скажи прямо: «готово, изменений не требует» и коротко объясни
почему считаешь его сильным.
Косметические правки ради правок не нужны.
{текст / документ / план}
Что подставлять:
- {что проверяем} — текст, план, стратегия, питч, описание продукта
- {критерии} — что реально важно для этого типа документа
- {цель} — зачем этот документ нужен
- {текст / документ / план} — сам материал
🚀 Быстрый старт — вставь в чат:
Вот шаблон ABSTAIN-OR-FIX для честной проверки документов.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит что именно нужно проверить и какие критерии важны — потому что без этого она не сможет разделить «реальную проблему» от «правки ради правок».
Ограничения
⚠️ Риск гиперосторожности: Если документ действительно требует доработки (например, написан слабо), тот же промпт может заставить модель «перестраховаться» и не тронуть то, что стоило бы исправить. Это обратная сторона медали: убирая action bias, можно получить inaction bias.
⚠️ Не для задач где нужен креатив: Если цель — улучшить текст, получить идеи, развить мысль — этот фрейм мешает. ABSTAIN-OR-FIX работает только когда нужна честная оценка, а не генерация.
⚠️ Больше reasoning ≠ лучше: Исследование показало, что увеличение «глубины размышления» модели (thinking effort) почти не влияет на action bias. Больше токенов для рассуждений не помогут — важен фрейминг задачи, не вычислительная мощность.
Как исследовали
Команда из ETH Zurich создала FIXEDBENCH — 200 реальных GitHub-задач, в которых баг уже был исправлен. Агентам давали эти задачи и смотрели: поймут ли они, что делать ничего не нужно? Результат оказался удручающим — в 35-65% случаев модели всё равно вносили изменения в уже рабочий код. Исследователи тестировали четыре варианта промптов на пяти современных моделях: просто описание задачи, инструкция «редактируй», инструкция «сначала воспроизведи баг», и «воспроизведи — потом либо исправь, либо откажись». Самый интересный результат: инструкция «воспроизведи баг» без явного разрешения ничего не делать не помогала — а у одной из моделей даже ухудшила показатели. Зато формула «либо исправь, либо подтверди что уже хорошо» подняла процент правильных «воздержаний» с 60% до 88%. Дополнительно проверили: а вдруг просто нужно больше вычислений? Нет — увеличение compute почти не дало эффекта. Это подтвердило: проблема не в том, что модель плохо думает. Проблема в том, что она не знает, когда «не трогать» — это тоже успех.
Оригинал из исследования (опционально)
Исследователи использовали четыре варианта системного промпта для агентов. Вот ключевые:
ISSUE (базовый — без изменений):
Resolve the following GitHub issue in the provided codebase:
{issue_description}
EDIT (усиливает action bias):
Resolve the following GitHub issue in the provided codebase by
editing the codebase:
{issue_description}
REPRODUCE (воспроизведи, но без явного разрешения воздержаться):
Resolve the following GitHub issue in the provided codebase.
First, reproduce the issue before addressing it:
{issue_description}
ABSTAIN OR FIX (рабочий вариант):
Resolve the following GitHub issue in the provided codebase.
First, reproduce the issue. Then either address the issue or
abstain from modifying the code if the issue is already resolved:
{issue_description}
Контекст: Исследователи тестировали эти промпты на агентах (Claude Code, Codex, Gemini CLI), которые работали с реальными Python-репозиториями на GitHub, где баги были уже закрыты.
Адаптации и экстраполяции
1. Адаптация: честная обратная связь по любому контенту
Тот же принцип работает везде, где LLM склонна «найти что поправить»:
💡 Адаптация для ревью стратегии / плана / решения:
Оцени бизнес-план ниже. Два возможных исхода — оба валидны:
1. Если нашёл критические риски (рынок, финансы, операции,
конкуренция) — опиши конкретно: что именно, почему проблема,
насколько критично.
2. Если план проработан и рисков, способных его убить, нет —
скажи прямо: «план жизнеспособен» и укажи 2-3 сильные стороны.
Не ищи «точки роста» ради поиска. Оба исхода — успех.
{бизнес-план}
2. Техника: «Красный флаг или зелёный свет»
🔧 Техника: задай явные цвета исходов → острее решение
Вместо «либо исправь, либо подтверди» — попроси модель явно назвать вердикт:
В конце ответа поставь одну из двух меток:
🔴 ТРЕБУЕТ ПРАВОК — если нашёл реальные проблемы
🟢 ГОТОВО К ИСПОЛЬЗОВАНИЮ — если документ уже хорош
Дальше — только обоснование.
Явный сигнал помогает самому понять результат с первого взгляда — и не даёт модели уйти в «есть нюансы, можно было бы...».
3. Экстраполяция: комбо с роль-промптом
ABSTAIN-OR-FIX + строгая роль = особенно честная оценка:
Ты — директор по маркетингу с 15-летним опытом. Твоя работа —
не улучшать чужие тексты ради улучшения, а защищать компанию
от слабых коммуникаций.
Проверь этот email клиенту. Два исхода:
1. Если email создаёт риски (неточности, слабая позиция,
плохое впечатление) — скажи что именно и почему это риск.
2. Если email сильный и рисков нет — дай зелёный свет.
{email}
Роль «защитника от слабых коммуникаций» встраивает скептицизм нужного толка — не «найди что поправить», а «найди реальный риск».
Ресурсы
Работа: Coding Agents Don't Know When to Act (Preprint, under review)
Авторы: Thibaud Gloaguen, Niels Mündler, Mark Müller, Veselin Raychev, Martin Vechev
Организации: Department of Computer Science, ETH Zurich; LogicStar.ai
Бенчмарк: FIXEDBENCH (построен на SWE-Bench Verified)
Контакт: thibaud.gloaguen@inf.ethz.ch, niels.mundler@inf.ethz.ch
