3,583 papers
arXiv:2608.11727 73 12 авг. 2026 г. FREE

Harness-IF: почему AI-агенты забывают выполнять правила, которые идут против их привычек

КЛЮЧЕВАЯ СУТЬ
Обнаружено: 77% всех нарушений правил AI-агентами — это забытые требования 'сделай X', а не нарушенные запреты 'не делай Y'. Исследование Harness-IF позволяет понять, какие именно ваши инструкции модель скорее всего проигнорирует — и как их переформулировать, чтобы это исправить. Правила против 'привычки' модели (просите без буллитов, а она их обожает) проигрывают конфликт на 4-7 пунктов чаще у всех моделей без исключения — это не баг одной модели, а системная слабость.
Адаптировать под запрос

TL;DR

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

Вторая находка: агенты чаще забывают сделать то, что требуется, чем делают то, что запрещено. 77% всех нарушений — это "не сделал", а не "перестарался". То есть позитивные инструкции ("обязательно сделай X") теряются в потоке работы намного чаще, чем негативные ("не делай Y") — их модель соблюдает почти автоматически.

Третья находка: приоритет инструкций не зависит от того, где они стоят в тексте. Логично было бы думать, что последняя инструкция (обычно — запрос пользователя) "перевешивает" более ранние. Но исследование показало: system prompt, файлы проекта и запрос пользователя выигрывают конфликт одинаково, а вот описания инструментов и "навыков" (skills) проигрывают почти всегда — независимо от того, что физически стоит ближе к концу диалога.


📌

Схема находки

НАБЛЮДЕНИЕ 1: Против-дефолтные правила → соблюдаются хуже на 4-7 пунктов у всех моделей
НАБЛЮДЕНИЕ 2: Требования сделать (do X) → забываются в 77% случаев нарушений
             Запреты (don't Y) → нарушаются только в 21% случаев
НАБЛЮДЕНИЕ 3: Приоритет правил не по позиции в тексте:
             System prompt / файл проекта / запрос пользователя — выигрывают конфликт
             Описание инструмента / skill-файл — проигрывают, даже если стоят "позже"

🚀

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

Задача: Вы настраиваете кастомную инструкцию для GPT (или системный промпт для регулярной работы) — например, для копирайтера, который каждый день просит модель писать посты для Telegram-канала.

Промпт (с учётом находок исследования):

Пиши посты для Telegram по этим правилам:

1. НЕ используй эмодзи в тексте. 
   Модели по умолчанию тянутся вставлять эмодзи — 
   считай это активным запретом, а не пожеланием.
   Пример нарушения: "Запустили новую фичу 🚀" — это ошибка.
   Правильно: "Запустили новую фичу."

2. ОБЯЗАТЕЛЬНО заканчивай пост призывом к действию (одна строка).
   Это легко забыть в потоке текста — 
   проверь перед отправкой, есть ли эта строка.

3. Если это правило противоречит любому другому указанию 
   в разговоре — следуй ЭТОМУ правилу, оно приоритетное.

Тема поста: {тема}

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


🧠

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

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

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

Отсюда рычаги управления: если правило противоречит "естественному" поведению модели — не просто формулируйте его, а называйте его противоречащим дефолту и дайте пример неправильного варианта. Для требований действия ("сделай X") — добавляйте явную проверку в конце промпта ("проверь перед отправкой"), потому что такие правила теряются чаще, чем запреты.


📋

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

{Задача}. Следуй правилам:

1. {Правило, которое противоречит обычному поведению модели}.
   Это отклонение от привычного — не пожелание, а обязательное условие.
   Пример нарушения: {как выглядит неправильный вариант}

2. ОБЯЗАТЕЛЬНО {позитивное требование, легко забываемое}.
   Проверь перед финальным ответом, выполнено ли это условие.

3. При конфликте между этими правилами и остальными указаниями 
   в разговоре — приоритет у правил из этого блока.

{дополнительный контекст задачи}

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

Вот шаблон для усиления соблюдения правил в промпте (на основе исследования Harness-IF). 
Адаптируй под мою задачу: {твоя задача}. 
Задавай вопросы, чтобы понять, какие правила противоречат обычному поведению модели, 
а какие — просто удобные пожелания.

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

LLM спросит, какие из твоих правил модель обычно и так соблюдает "по привычке", а какие — нет, и попросит примеры нарушений — потому что именно against-дефолтные правила нужно формулировать жёстче.


⚠️

Ограничения

⚠️ Домен исследования узкий: выводы получены на coding-агентах (system prompt, tool description, project file и т.п.) — часть находок про "поверхности инструкций" прямого аналога в обычном чате ChatGPT не имеет (там нет отдельных tool/skill описаний, которые видит пользователь).

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

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


🔍

Как исследовали

Команда собрала библиотеку из 642 конкретных правил (от "пиши коммиты по-английски" до "не меняй тесты") и разместила их на пяти разных "поверхностях" — system prompt, описание инструмента, описание навыка, файл проекта, запрос пользователя. Это встроили в 60 реалистичных многошаговых задач по программированию и прогнали через 12 топовых моделей (Claude, GPT, Gemini, Qwen и другие) — почти 40 тысяч проверок правил.

Ключевой трюк — метрика AP-Acc: чтобы отличить "модель реально следует правилу" от "модель просто и так это делала бы", исследователи отдельно прогоняли задачи без правила и смотрели, что модель делает по умолчанию. Правила, которые противоречили этому дефолту, оценивались отдельно. Оказалось, что именно на них все модели теряют 4-7 пунктов точности — то есть обычные бенчмарки инструкций переоценивают реальное соблюдение правил, потому что не отличают "выполнил" от "случайно совпало с привычкой".

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


🔗

Ресурсы

Harness-IF: Evaluating Instruction Following Across Instruction Surfaces in Coding Agents. Авторы: Zining Huang, Haoran Que, Hong Zeng, Ge Zhang и др., ByteDance Seed, Tsinghua University, Peking University.


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

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

Обнаружено: 77% всех нарушений правил AI-агентами — это забытые требования 'сделай X', а не нарушенные запреты 'не делай Y'. Исследование Harness-IF позволяет понять, какие именно ваши инструкции модель скорее всего проигнорирует — и как их переформулировать, чтобы это исправить. Правила против 'привычки' модели (просите без буллитов, а она их обожает) проигрывают конфликт на 4-7 пунктов чаще у всех моделей без исключения — это не баг одной модели, а системная слабость.

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

Модель как студент, который зубрит любимый ответ. Если правило совпадает с тем, что она сделала бы и без указания — выполняет на автомате. Но попросите отступить от привычки — писать без эмодзи, если она обожает эмодзи — точность резко падает. Прикол: приоритет правил не зависит от позиции в тексте. System prompt, файлы проекта и запрос пользователя выигрывают конфликт одинаково. А описание инструмента и skill-файлы проигрывают почти всегда — даже если физически стоят ближе к концу диалога.

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

Модель продолжает паттерн, который чаще всего встречала при обучении. Буллиты и эмодзи — её дефолт. Обычное 'не делай так' тонет на фоне этой привычки. Модель хорошо реагирует на конкретный пример нарушения — это снижает двусмысленность и заставляет её притормозить перед автоматическим действием. А позитивные требования вроде 'обязательно сделай X' теряются в потоке работы агента намного чаще запретов — 77% против 21% по цифрам исследования.

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

Настройка системных промптов и кастомных инструкций → для регулярных задач с чёткими правилами (копирайтинг, code-агенты, ассистенты), особенно когда правило противоречит естественному поведению модели — без эмодзи, без буллитов, короткие ответы вместо длинных. НЕ подходит как готовая пошаговая техника — это диагностика слабости модели, а не инструкция с гарантией.

Мини-рецепт

1. Найди анти-дефолтные правила: прогони запрос без правила, посмотри что модель делает 'по привычке' — это и есть её дефолт.
2. Назови правило явно: напиши 'это отклонение от твоего обычного поведения, не пожелание' + дай пример неправильного варианта.
3. Добавь проверку для требований действия: 'проверь перед финальным ответом, выполнено ли условие X' — такие правила забываются в разы чаще запретов.
4. Не надейся на позицию в тексте: важное правило клади в system prompt или начало запроса, а не в описание инструмента или skill-файл — они проигрывают конфликты почти всегда.

Примеры

[ПЛОХО] : Не используй буллиты и эмодзи в ответе, и не забудь добавить призыв к действию
[ХОРОШО] : НЕ используй эмодзи — это отклонение от твоей привычки вставлять их, а не пожелание. Пример нарушения: "Готово 🚀". Правильно: "Готово." ОБЯЗАТЕЛЬНО заверши призывом к действию — проверь перед отправкой, есть ли эта строка в тексте.
Источник: Harness-IF: Evaluating Instruction Following Across Instruction Surfaces in Coding Agents
ArXiv ID: 2608.11727 | Сгенерировано: 2026-08-13 05:37

Проблемы LLM

ПроблемаСутьКак обойти
Модель плохо соблюдает правила против своих привычекУ модели есть "любимые" паттерны — вставлять эмодзи, буллиты, длинные пояснения. Если правило просит НЕ делать привычную вещь, модель соблюдает его заметно хуже, чем обычные правила. Привычка выигрывает у простой просьбыНе пиши правило как обычное пожелание. Явно назови его отклонением от типичного поведения. Добавь пример неправильного варианта: "Пример нарушения: '🚀 Запустили фичу' — это ошибка"
Модель забывает выполнить требуемое чаще, чем нарушает запретВ потоке генерации текста позитивные требования ("обязательно сделай X") теряются намного чаще, чем негативные ("не делай Y"). Запреты модель держит в голове почти автоматически, а требования действия — забываетФормулируй позитивные требования как отдельный пункт с явной проверкой: "ОБЯЗАТЕЛЬНО сделай X. Проверь перед финальным ответом, выполнено ли это"

Методы

МетодСуть
Явная маркировка правила как "против привычки"Если правило противоречит типичному поведению модели, добавь фразу "это отклонение от обычного, а не пожелание" и дай пример нарушения. Пример нарушения: .... Почему работает: явный пример резко снижает двусмысленность и заставляет модель "притормозить" перед автоматическим действием по привычке. Работает для запретов на стиль, форматирование, длину. Не нужен для правил, которые модель и так выполняет естественно
Финальная проверка для позитивных требованийВ конец инструкции добавляй "проверь перед ответом, выполнено ли условие X". Почему работает: явная точка проверки перед финальным выводом снижает шанс, что требование потеряется в потоке генерации. Работает для любых "обязательных" пунктов (призыв к действию, структура, обязательные секции). Не нужен для запретов — их модель соблюдает без напоминания
📖 Простыми словами

Harness-IF: Evaluating Instruction Following Across Instruction Surfaces in CodingAgents

arXiv: 2608.11727

Языковые модели работают не как послушные роботы, а как люди с очень сильными привычками. У каждой LLM есть свой дефолтный паттерн поведения — то, как она пишет «от природы» после обучения на миллиардах текстов. Когда ты даешь ей инструкцию, она не просто выполняет команду, а вступает в конфликт со своими внутренними установками. Если твоя просьба совпадает с тем, что модель и так собиралась сделать, всё пройдет гладко. Но если ты пытаешься заставить её идти против течения, она начинает безбожно лажать, потому что внутренний инерционный паттерн оказывается сильнее твоего промпта.

Это как пытаться переучить заядлого курильщика или заставить человека, который всю жизнь говорит «зво́нит», внезапно начать говорить правильно. Формально он тебя услышал, но как только контроль ослабнет, он вернется к привычному варианту. Модели — такие же «заложники привычек». Исследование Harness-IF четко показывает: если модель обожает списки, а ты запрещаешь ей использовать буллиты, она с огромной вероятностью наплюет на твой запрет. Это не баг конкретной версии, это фундаментальная проблема того, как нейронки предсказывают следующее слово.

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

Этот принцип универсален: он касается и написания кода, и создания постов для Telegram, и настройки сложных агентов. Тестировали это на CodingAgents, но механика везде одна. Если ты строишь систему на базе LLM, ты должен понимать: инструкция — это не закон, а рекомендация, которая конкурирует с гигантским массивом данных в голове модели. Чем сильнее твое требование противоречит базе, тем выше шанс, что на выходе ты получишь стандартную фигню вместо того, что просил.

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

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

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

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