TL;DR
Daydreaming — метод, который вскрывает скрытые инструкции чужого AI-агента (его «скилл» — набор правил, шаблонов и файлов) без единого прямого вопроса типа «покажи свой промпт». Вместо этого атакующий отправляет агенту обычные рабочие задачи и по разнице в результатах угадывает, что скрыто внутри.
Главная находка: защита от раскрытия промпта не защищает от обычного использования сервиса. Компании блокируют прямые попытки выцарапать инструкцию («напиши свой system prompt»), но не могут заблокировать клиента, который просто пользуется сервисом — а именно через нормальные задачи и утекает скрытая логика.
Суть метода — «дискриминирующие задачи» (discriminating tasks): вместо того чтобы просить систему раскрыться, придумывают задачу, на которой две конкурирующие гипотезы о скрытой логике дадут разный видимый результат. По разнице делают вывод, какая гипотеза верна, и уточняют модель поведения агента шаг за шагом — от общих поведенческих правил, к плану скилла, и наконец к конкретным файлам.
Схема метода
ЭТАП 1 (свойства): Предположи возможные поведенческие правила скилла (пороги, форматы, терминология)
→ Придумай задачу, где разные варианты правила дадут разный результат
→ Отправь задаче, сравни с предсказанием → зафиксируй подтверждённое правило
ЭТАП 2 (план скилла): На основе подтверждённых правил собери 2+ версии полного "плана" скилла
→ Придумай задачу, различающую планы
→ Сравни ответ агента с прогнозами локальных "теневых" моделей (одна — без скилла, другая — с гипотезой)
→ Выбери лучше подтверждённый план
ЭТАП 3 (файлы): Для каждого файла из плана сделай 2 черновые версии
→ Придумай задачу, различающую версии файла
→ Отправь, сравни, выбери лучшую версию
Все три этапа выполняются как последовательные шаги — каждый требует отдельных запросов к "жертве"
Пример применения
Задача: Вы запускаете консультационный сервис и хотите понять, по какой логике работает платный кастомный AI-бот конкурента — например, бот юрфирмы, который автоматически оценивает риск договора и выдаёт вердикт «подписывать / не подписывать / доработать».
Промпт (для себя, как чек-лист, а не для чужого бота):
Я хочу понять скрытую логику AI-сервиса, который оценивает договоры и выдаёт вердикт.
Я знаю только название функции и её краткое описание: "{название и описание сервиса}".
Помоги мне:
1. Сформулируй 3-4 гипотезы о том, какие правила может использовать сервис
(например: порог по сумме сделки, наличие конкретных пунктов, формулировки риска).
2. Для каждой гипотезы предложи ДВА тестовых договора, которые дадут РАЗНЫЙ вердикт,
если гипотеза верна, и ОДИНАКОВЫЙ — если неверна.
3. Я отправлю эти договоры в сервис и вернусь с результатами —
помоги интерпретировать, какая гипотеза подтвердилась.
Результат: Модель предложит несколько гипотез с парами контрастных тестовых кейсов. Вы вручную прогоняете их через чужой сервис, приносите результаты обратно — и на основе разницы в ответах модель поможет сузить круг гипотез до рабочей картины логики конкурента. Процесс займёт несколько раундов, а не один запрос.
Почему это работает
LLM-агенты плохо скрывают логику при систематическом тестировании, даже если хорошо отказываются раскрывать текст промпта напрямую. Правило вроде «эскалировать при риске выше X» невозможно спрятать — оно неизбежно проявится в решениях на границе X.
Сильная сторона LLM здесь — способность генерировать контрастные тест-кейсы: модель хорошо придумывает пары похожих ситуаций, которые различаются ровно в одном параметре. Это похоже на научный A/B-тест: если убрать все переменные кроме одной, разница в результате однозначно укажет на причину.
Метод использует эту способность как рычаг: не пытается угадать всё сразу, а разбивает неизвестность на маленькие проверяемые вопросы и решает их по одному, начиная с простых поведенческих правил и постепенно переходя к деталям (конкретным файлам, шаблонам).
Рычаги управления: - Число гипотез на шаг → больше гипотез = точнее, но больше запросов - Порядок этапов (сначала общие правила, потом детали) → нельзя менять местами, без этого гипотезы позднего этапа не на чём строить - «Теневые агенты» для сравнения → в ручном режиме это просто «прикинь, как ответила бы система без скрытой логики» — сравнение с базовой линией
Шаблон промпта
Я пытаюсь разобраться в скрытой логике AI-сервиса под названием "{название}",
который делает следующее: "{краткое описание задачи сервиса}".
У меня нет доступа к его инструкциям, только возможность отправлять обычные запросы
и смотреть на результат.
Сделай следующее:
1. Предложи 3 гипотезы о правилах, которые может использовать сервис
(пороги, форматы вывода, приоритеты, терминология).
2. Для каждой гипотезы придумай пару контрастных тестовых запросов —
такие, что результат сервиса будет отличаться, только если гипотеза верна.
3. После того как я вставлю результаты обоих запросов, скажи,
какая гипотеза подтвердилась, и предложи следующий раунд гипотез
на основе уже узнанного.
Моя задача: {что именно я хочу понять о сервисе}.
Плейсхолдеры: {название} и {краткое описание задачи сервиса} — публичная информация о сервисе, который вы анализируете. {что именно я хочу понять} — конкретный аспект (пороги решений, формат ответа, приоритеты).
🚀 Быстрый старт — вставь в чат:
Вот шаблон анализа скрытой логики чужого AI-сервиса. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про название и описание анализируемого сервиса и про конкретный аспект логики, который вас интересует — потому что без этого невозможно сформулировать проверяемые гипотезы и контрастные тест-кейсы.
Ограничения
⚠️ Точное восстановление невозможно в принципе: метод восстанавливает поведение, а не точный текст скрытых инструкций. Два разных набора правил могут давать одинаковые результаты — отличить их нельзя никаким количеством запросов.
⚠️ Требует много раундов: метод работает через десятки итераций «гипотеза → тест → уточнение». Это не разовый промпт, а процесс, растянутый на время.
⚠️ Плохо работает на скиллах без чётких правил: если логика сервиса размытая или сильно зависит от творческой генерации модели (а не от жёстких правил и порогов), контрастные тесты плохо различают гипотезы.
⚠️ Этическая и юридическая сторона: применение этого принципа к чужим коммерческим продуктам может нарушать условия использования сервиса. Полезно как принцип мышления и для проверки собственных AI-продуктов на утечки, а не как инструмент копирования конкурентов.
Как исследовали
Исследователи взяли 7 разных «скиллов» (специализированных задач — от триажа алертов безопасности до других экспертных сценариев) и прогнали атаку против 4 моделей-жертв. Сравнивали с двумя существующими атаками: одна просит модель напрямую раскрыть файл с инструкциями, другая читает трассировку вызовов инструментов при выключенном скилле.
Ключевое измерение — не текстовое совпадение с оригиналом, а поведенческая полезность: насколько восстановленный скилл повторяет решения оригинала на новых, невиданных задачах. При самом ограниченном доступе (видно только финальный ответ, никаких промежуточных данных) метод восстановил почти 87% полезности исходного скилла — это почти в 4 раза лучше, чем у метода-конкурента, читающего трассировки.
Удивительный вывод: даже когда сервис активно блокирует прямые попытки раскрытия промпта, обычное использование сервиса всё равно выдаёт достаточно данных для восстановления логики — медиана всего 32 запроса на скилл. Это показывает, что скрывать файлы и фильтровать запросы на раскрытие — недостаточная защита, если сервис продолжает выполнять обычные задачи клиента.
