TL;DR
ConflictGuard — исследование того, что AI-агенты (программы, которые кликают по экрану, заполняют формы, выполняют команды за вас) почти никогда не останавливаются, даже когда инструкция бессмысленна или противоречит тому, что видно на экране. Учёные выяснили это на агентах, управляющих интерфейсами приложений, но механика касается любых агентных сценариев — от кастомных ассистентов с функциями до Claude Computer Use и ChatGPT Operator.
Главная находка жёсткая: на обычных задачах агенты справляются в 70-80% случаев, а вот заметить, что задача невыполнима — например, «нажми красную кнопку», когда на экране только синие — они смогли меньше чем в 10% случаев. Хуже того: иногда агент пишет в рассуждениях «здесь нет такой кнопки», а потом всё равно тыкает куда-то — то есть понимание проблемы никак не связано с решением действовать. Это называют разрывом между осознанием и действием.
Решение звучит обманчиво просто: перед тем как агент выберет действие, заставить его явно пройти проверку — логична ли инструкция сама по себе, и подтверждается ли она тем, что реально на экране. Если хоть один пункт не проходит — не действовать, а остановиться и назвать конкретное противоречие. Авторы также предложили более сложный метод — прямое вмешательство в внутренние активации модели (то есть требует доступа к весам модели, недоступно в обычном чате), но именно текстовая проверка перед действием сама по себе дала резкий прирост без всякого кода.
Схема метода
ШАГ 1: Проверить логику инструкции → противоречит ли она сама себе / своей цели? (да/нет)
ШАГ 2: Проверить контекст → подтверждается ли инструкция тем, что видно сейчас на экране? (да/нет)
ШАГ 3: Если хоть один "нет" → СТОП. Не выполнять действие, а сообщить, в чём именно конфликт.
Если оба "да" → выполнять действие как обычно.
Все три шага — это одна системная инструкция, которая ставится перед каждым решением агента о действии. Один промпт, без отдельных запросов.
Пример применения
Задача: вы используете агентный режим (Claude Computer Use, ChatGPT Operator или аналог) для автоматической обработки возвратов в личном кабинете Wildberries или Ozon.
Промпт (системная инструкция агенту):
Перед тем как выполнить любое действие на экране (клик, ввод текста, отправка формы),
сначала проверь:
1. Логика: не противоречит ли текущая команда своей собственной цели или другой части инструкции?
2. Контекст экрана: подтверждается ли команда тем, что реально видно на экране прямо сейчас?
Если хотя бы один пункт не проходит проверку — НЕ выполняй действие.
Вместо этого останови работу и напиши точно, в чём противоречие:
между какими частями инструкции, или между инструкцией и тем, что на экране.
Только если оба пункта пройдены — переходи к выполнению.
Задача пользователя, отправленная агенту: «Найди заказ #48213 и отклони возврат, чтобы вернуть деньги клиенту».
Результат: агент должен заметить, что «отклонить возврат» противоречит цели «вернуть деньги», и остановиться с сообщением о конфликте вместо слепого клика на кнопку «Отклонить». Без такой системной инструкции агент, скорее всего, просто выполнил бы клик, потому что «отклонить возврат» — понятное, исполнимое действие.
Почему это работает
LLM-агенты по умолчанию настроены на доведение задачи до конца — это встроенный уклон в сторону действия. Если явно не разрешить модели остановиться, она ищет способ хоть как-то выполнить команду, даже нелогичную. Причём даже если модель в своих рассуждениях замечает нестыковку, это осознание никак не связано с финальным выбором действия — то есть «подумать» и «сделать» у модели работают почти независимо друг от друга.
Сильная сторона LLM — она неплохо умеет сравнивать два факта, если её явно попросить это сделать структурированно, а не оставить на самотёк. Проверка «логично ли это» и «подтверждается ли это контекстом» — задача, которую модель решает достаточно точно, если задать её как отдельный шаг до генерации действия, а не полагаться на то, что модель сама вставит эту проверку в свободные рассуждения.
Метод работает именно за счёт порядка: сначала вывод явной верификации, потом — и только потом — решение о действии. Это меняет структуру генерации так, что найденное противоречие реально влияет на выбор, а не остаётся комментарием в стороне.
Рычаги управления: - Формулировку «останови и сообщи о конфликте» можно заменить на «спроси уточнение у пользователя» — если вам важнее диалог, а не жёсткая остановка. - Можно добавить третий пункт проверки под свою задачу (например, «не противоречит ли действие правилам компании») — структура «проверка → условие → стоп/действие» останется той же. - Если задачи в основном простые и конфликты редки — не нужно ставить эту проверку перед каждым действием, достаточно один раз на старте многошаговой задачи.
Шаблон промпта
Перед тем как выполнить любое действие ({тип_действий}), сначала проверь:
1. Логика: не противоречит ли текущая команда своей собственной цели
или другой части инструкции пользователя?
2. Контекст: подтверждается ли команда тем, что реально доступно/видно
в текущей ситуации ({источник_контекста})?
Если хотя бы один пункт не проходит проверку — НЕ выполняй действие.
Вместо этого останови работу и объясни точно, в чём противоречие.
Только если оба пункта пройдены — переходи к выполнению.
Задача: {задача}
Подставляй: {тип_действий} — что делает агент (клики, отправка писем, редактирование таблицы); {источник_контекста} — что считать «реальностью» (текущий экран, содержимое файла, данные CRM); {задача} — сама инструкция пользователя.
🚀 Быстрый старт — вставь в чат:
Вот шаблон проверки перед действием для AI-агента. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, какие именно действия выполняет агент и что считать «источником правды» (экран, файл, база данных) — потому что без этого проверка контекста не сработает. Она возьмёт паттерн из шаблона и адаптирует под вашу задачу.
Ограничения
⚠️ Побочный эффект — ложные отказы: явная проверка резко снижает слепое выполнение конфликтных команд, но у части моделей заметно увеличивает отказы и на нормальных, выполнимых задачах. Модель начинает «перестраховываться».
⚠️ Промпт решает не всё: даже с явной проверкой некоторые модели продолжают путать осознание и действие — пишут о проблеме, но всё равно действуют. В исследовании для надёжного результата авторы дополнительно использовали вмешательство во внутренние активации модели — это требует доступа к весам и коду, недоступно в обычном чате.
⚠️ Проверено только на управлении интерфейсами: выводы получены на агентах, которые кликают по экрану. Перенос принципа на другие агентные задачи (код, работа с файлами) логически напрашивается, но напрямую не проверялся.
Ресурсы
Do GUI Agents Know When Not to Act? Enabling Conflict-Aware Termination for Multimodal GUI Agents — Zhaoyuan Huang, Tianjie Ju, Pengzhou Cheng и др., Shanghai Jiao Tong University и Ant Group. Код и датасет CONFLICTGUI: github.com/serein356/ConflictGuard.
