3,583 papers
arXiv:2604.01350 74 1 апр. 2026 г. FREE

Заражение общей памяти: как чужие сессии искажают ваши ответы в командном AI-пространстве

КЛЮЧЕВАЯ СУТЬ
Ты получаешь число. Оно выглядит правильно — нужный формат, разумная величина, верный источник. Но коллега неделю назад переопределил «активный клиент» как «покупка за 7 дней», AI это запомнил, авторство стёрто. Твоя цифра — за другой период. Никакого предупреждения. Исследование описывает три типа такого заражения в командных AI-инструментах с общей памятью (ChatGPT Teams, Claude Projects, корпоративные боты). Метод позволяет защититься от молчаливых ошибок, которые выглядят как правильные ответы. Фишка: явно объяви свои определения и правила в самом начале сессии — это создаёт локальный слой соглашений, который перекрывает всё унаследованное из чужих разговоров.
Адаптировать под запрос

TL;DR

Когда несколько человек используют один AI-инструмент с общей памятью — будь то ChatGPT Teams, Claude Projects или корпоративный чат-бот — чужая сессия молча меняет результаты ваших запросов. Не потому что кто-то злоумышленник. Просто модель не умеет различать «это соглашение действует только для Марины» и «это общее правило». Она берёт то, что осталось в памяти, и применяет ко всем.

Боль конкретная: вы спрашиваете «оборот за последний месяц» — и получаете цифру. Она выглядит правильно. Но коллега неделю назад попросил считать «последний месяц» как «последние 30 дней вместо календарного», и AI подхватил это определение. Ваша цифра — за другой период. Никакого предупреждения. Молчаливая ошибка.

Исследователи выявили три типа заражения: переопределение терминов, унаследованные правила обработки данных и чужие рабочие процессы. Защита — явно объявлять свои определения и правила в начале каждой важной сессии, не позволяя унаследованным соглашениям перехватить управление.


🔬

Схема метода

Это не техника применения, а таксономия проблемы + принцип защиты:

ТИП 1: Семантическое заражение
  → Чужое определение термина становится вашим ответом
  Пример: "недавно" = 7 дней (чужое) vs 30 дней (ваши нужды)

ТИП 2: Трансформационное заражение
  → Чужое правило обработки применяется к вашим данным
  Пример: округлять до целых (чужое) vs полная точность (ваши нужды)

ТИП 3: Процедурное заражение
  → Чужой рабочий процесс становится дефолтным алгоритмом
  Пример: считать уникальных пользователей (чужое) vs все события (ваши нужды)

ЗАЩИТА: Явная декларация контекста в начале сессии
  → Переопределяет унаследованные соглашения
  → Работает как "сброс области видимости"

Работает в одном промпте, в начале разговора.


🚀

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

Задача: Команда маркетинга в компании использует общий Claude Project для аналитики. Аналитик Денис неделю назад попросил считать «активных клиентов» как тех, кто совершил покупку за последние 7 дней. Теперь руководитель Арина спрашивает статистику — ей нужны клиенты за 30 дней. AI молча применяет определение Дениса.

Промпт:

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

Мои определения для этого запроса:
— «активный клиент» = совершил хотя бы одну покупку за последние 30 дней
— «выручка» = сумма без НДС, с полной точностью до копейки, без округления
— «период» = если не указано иное, это календарный месяц (с 1-го по последнее число)

Мой вопрос: сколько активных клиентов сделали повторную покупку 
в октябре 2024, и какова их суммарная выручка?

Результат: Модель ответит по вашим определениям, а не унаследованным из предыдущих разговоров. Если в памяти системы сидит чужое определение «активный = 7 дней» — ваша явная декларация его перекроет. Вы получите цифры за нужный период с нужной точностью.


🧠

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

Слабость LLM: Модель не хранит «кому принадлежит это соглашение». В памяти лежит запись: «последний месяц = 30 дней». Контекст авторства потерян. Когда следующий пользователь спрашивает про «последний месяц» — модель применяет то, что есть, без вопросов.

Сильная сторона LLM: Модель отлично следует явным инструкциям в текущем контексте. Инструкция в промпте имеет приоритет над тем, что осталось в памяти. Это и есть рычаг.

Как защита работает: Когда вы явно определяете термины в начале запроса, вы создаёте локальный слой соглашений, который перекрывает всё унаследованное. Модель не сравнивает «чьё определение правильнее» — она просто следует последнему явному указанию. Вы побеждаете чужую сессию не борьбой, а приоритетом.

Рычаги управления: - Добавь фразу-сброс ("игнорируй предыдущие соглашения") → жёстче перекрывает унаследованное - Перечисли все неоднозначные термины → чем их больше, тем меньше риска подхватить чужое определение - Добавь проверку ("скажи, как ты понял каждое определение") → увидишь, если что-то всё равно просочилось


📋

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

Зафиксируй: в этой сессии действуют только мои определения ниже. 
Если в контексте есть соглашения от других сессий — не применяй их.

Мои определения:
— «{термин_1}» = {твоё_определение_1}
— «{термин_2}» = {твоё_определение_2}

Мои правила обработки:
— Формат чисел: {точность/округление/валюта}
— Временной период: {как считать, если не указано явно}
— Приоритет данных: {что важнее при конфликте}

Мой рабочий процесс для этой задачи:
— {шаг или подход, если он важен}

Задача: {твой запрос}

Что подставлять: - {термин} — любое слово, которое может трактоваться по-разному: «активный», «недавно», «крупный», «выручка», «конверсия» - {правила обработки} — как считать, округлять, фильтровать - {рабочий процесс} — если тебе важен конкретный алгоритм, а не любой


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

Вот шаблон "Декларация контекста сессии". Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.

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

LLM спросит какие термины неоднозначны и какие правила важно зафиксировать — потому что без этих данных защита не будет точной под твою задачу.


⚠️

Ограничения

⚠️ Только текстовый контекст: Защита работает надёжно, когда общая память — это диалоги и тексты. Если система хранит исполняемый код как шаблон (как в примерах EHRAgent из исследования) — явная декларация помогает слабее: заражение живёт в самом коде, не в словах.

⚠️ Процедурное заражение устойчивее всего: Если кто-то «обучил» AI своему рабочему процессу из 10 шагов — перебить его сложнее, чем одно определение термина. Здесь помогает явное описание своего процесса пошагово.

⚠️ Не работает для одиночных аккаунтов без памяти: Если каждый участник команды использует свой отдельный чат без общей памяти — проблемы нет. Угроза возникает только при реально общем контексте.

⚠️ Не панацея при глубокой интеграции памяти: Исследователи тестировали специализированные AI-агенты с долгосрочной памятью. В таких системах заражение сохранялось на уровне 41% даже после активной очистки. Промпт-защита — хороший барьер, но не абсолютный.


🔍

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

Исследователи взяли два реальных AI-агента с разными типами общей памяти. Первый — EHRAgent, медицинский агент, который отвечает на вопросы по базе данных пациентов и хранит успешные решения как шаблоны для будущих запросов. Второй — MURMUR, командный агент для Slack-переписки с общим контекстом всей истории чата. Через оба запустили «невинных» пользователей с локальными соглашениями — и смотрели, получат ли следующие пользователи правильные ответы.

Результат удивил самих авторов: без всякого злого умысла заражение происходило в 57–71% случаев. Это не редкий баг — это системная характеристика. Особенно показателен MIMIC-III: схема базы данных там сложная (17 таблиц, много JOIN-ов), поэтому агент чаще копировал чужой код как шаблон — и заражение выживало даже после санитизации.

Самый интересный инсайт — природа заражения зависит от типа хранилища. В текстовом контексте заражение живёт в словах — его можно вычистить. В исполняемых шаблонах заражение закодировано в структуре кода, и текстовая очистка его не достаёт. Это объясняет, почему защита сработала почти идеально для Slack (57% → 6%) и слабо для медицинского агента (60% → 41%).


📄

Оригинал из исследования

Таксономия из Table 1 — самое ценное из статьи:

Types        | Definitions                                          | Examples from EHRAgent
-------------|------------------------------------------------------|------------------------
Semantic     | The agent inherits a user-specific interpretation   | "last year" is treated as
(SC)         | of an ambiguous term.                               | "past 12 months" instead
             |                                                      | of "calendar year."
-------------|------------------------------------------------------|------------------------
Transforma-  | The agent inherits a user-specific data             | Costs are rounded to the
tion (TC)    | transformation rule.                                | nearest integer, rather
             |                                                      | than with full precision.
-------------|------------------------------------------------------|------------------------
Procedural   | The agent inherits a user-specific workflow         | A unique-patient counting
(PC)         | or solution strategy.                               | rule is reused for a query
             |                                                      | that expects total occurrence
             |                                                      | counts.

Контекст: Авторы вручную создавали «источники заражения» — безобидные запросы с локальными соглашениями — и проверяли, как они влияют на следующих пользователей. Три типа выделены по механизму распространения, а не по степени вреда.


💡

Адаптации и экстраполяции

💡 Адаптация: аудит унаследованных соглашений

Перед важной задачей в общем AI-пространстве — сначала узнай, что уже сидит в памяти:

Прежде чем мы начнём: перечисли все определения, соглашения и рабочие правила,
которые ты вынес из предыдущих сессий в этом проекте.
Особенно: как ты сейчас трактуешь термины {термин_1}, {термин_2}?
Какие правила обработки данных ты считаешь "дефолтными"?

Модель покажет что осело в контексте. Ты увидишь чужие соглашения до того, как они испортят твой результат.


🔧 Техника: «Область видимости» на старте любой командной работы

Добавь к каждому рабочему промпту в общем проекте маркировку:

[ОБЛАСТЬ ВИДИМОСТИ ЭТОГО ЗАПРОСА]
Автор: {имя или роль}
Контекст: {отдел/проект/задача}
Эти определения действуют ТОЛЬКО для данного запроса:
— ...
[КОНЕЦ ДЕКЛАРАЦИЙ]

{сам запрос}

Это не техническое решение — это договорённость команды оставлять след авторства. Когда следующий человек видит чужую декларацию в контексте, он понимает: это не общее правило. И пишет свою.


🔧 Экстраполяция: одиночный пользователь с памятью

Проблема не только командная. Если у тебя включена память в ChatGPT — твои старые соглашения из прошлых месяцев могут тихо портить новые запросы. Особенно если ты менял подходы к работе.

Раз в месяц:

Что из моих прошлых инструкций и соглашений ты сейчас применяешь по умолчанию?
Есть ли дефолтные правила, которые могут быть устаревшими?

🔗

Ресурсы

Работа: No Attacker Needed: Unintentional Cross-User Contamination in Shared-State LLM Agents — препринт, на рецензии

Авторы: Tiankai Yang, Jiate Li, Yi Nian (University of Southern California) · Shen Dong (Michigan State University) · Ruiyao Xu, Kaize Ding (Northwestern University) · Ryan Rossi (Adobe Research)

Системы из исследования: EHRAgent (Shi et al., 2024), MURMUR (Patlan et al., 2025)


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

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

Ты получаешь число. Оно выглядит правильно — нужный формат, разумная величина, верный источник. Но коллега неделю назад переопределил «активный клиент» как «покупка за 7 дней», AI это запомнил, авторство стёрто. Твоя цифра — за другой период. Никакого предупреждения. Исследование описывает три типа такого заражения в командных AI-инструментах с общей памятью (ChatGPT Teams, Claude Projects, корпоративные боты). Метод позволяет защититься от молчаливых ошибок, которые выглядят как правильные ответы. Фишка: явно объяви свои определения и правила в самом начале сессии — это создаёт локальный слой соглашений, который перекрывает всё унаследованное из чужих разговоров.

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

Модель не хранит «кому принадлежит это соглашение». В общей памяти просто лежит: «последний месяц = 30 дней». Кто сказал — неизвестно. Когда ты спрашиваешь, модель берёт то, что есть, и применяет без вопросов. Инструкция в текущем промпте всегда побеждает то, что осталось в памяти системы. Ты не борешься с чужим определением — ты просто ставишь своё поверх него. Три типа заражения по нарастающей сложности: семантическое (чужое определение термина подменяет твоё) — перебивается легко; трансформационное (чужое правило обработки данных тихо применяется к твоим цифрам) — перебивается; процедурное (чужой рабочий процесс становится дефолтным алгоритмом) — самое устойчивое, требует явного описания своего процесса пошагово.

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

LLM хорошо следует явным инструкциям в текущем контексте. Плохо разбирается в том, кому принадлежит то, что лежит в памяти — и не пытается разобраться. Это и есть рычаг: явное указание рядом с вопросом громче, чем унаследованная запись в памяти системы. 41% заражения выживает даже после активной очистки памяти в специализированных AI-агентах с долгосрочным контекстом — промпт-защита не абсолютная. Но для стандартных сессий работает надёжно: твоё определение просто перекрывает чужое, модели не нужно ничего «понимать», она следует последнему явному указанию.

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

Командные AI-инструменты с общей памятью → для любого запроса где важна точность цифр или терминов, особенно когда несколько человек используют один проект или одного корпоративного бота. НЕ нужно: в личных чатах без функции памяти, когда у каждого участника команды отдельный аккаунт без пересечений, и в системах где память полностью сбрасывается после каждой сессии.

Мини-рецепт

1. Добавь фразу-сброс в начало: «Зафиксируй: в этой сессии действуют только мои определения ниже. Если в контексте есть соглашения от других разговоров — не применяй их.»

2. Перечисли неоднозначные термины: всё, что можно трактовать по-разному — «активный», «недавно», «крупный», «выручка», «конверсия», «последний период». Чем их больше в списке, тем меньше шансов что чужое определение просочится.

3. Добавь правила обработки: как считать, округлять, фильтровать — явно. «Выручка = без НДС, до копейки, без округления» вместо просто «выручка».

4. Для сложных задач — опиши свой процесс: если тебе важен конкретный алгоритм, перечисли шаги. Процедурное заражение самое устойчивое — перебить его может только явный конкурирующий процесс.

5. Добавь проверку (опционально): «Скажи, как ты понял каждое моё определение» — увидишь, если что-то всё равно просочилось из чужой сессии.

Примеры

[ПЛОХО] : Сколько активных клиентов сделали повторную покупку в октябре и какова их суммарная выручка?
[ХОРОШО] : Зафиксируй: в этой сессии действуют только мои определения, предыдущие соглашения из контекста не применяй. Мои определения: — «активный клиент» = совершил хотя бы одну покупку за последние 30 дней — «выручка» = сумма без НДС, с полной точностью до копейки, без округления — «октябрь» = с 1 по 31 октября 2024 включительно Теперь вопрос: сколько активных клиентов сделали повторную покупку в октябре и какова их суммарная выручка? Скажи, как ты понял каждое определение.
Источник: No Attacker Needed: Unintentional Cross-User Contamination in Shared-State LLM Agents
ArXiv ID: 2604.01350 | Сгенерировано: 2026-04-03 04:32

Проблемы LLM

ПроблемаСутьКак обойти
Чужие определения из общей памяти применяются к вашим запросамКогда несколько людей используют один AI-инструмент с общей памятью, модель не хранит кому принадлежит каждое соглашение. Хранится только само соглашение. Коллега неделю назад попросил считать "активный клиент" как "7 дней". Ты спрашиваешь сегодня. Модель применяет его определение к твоим данным. Молча. Проблема касается трёх уровней: термины ("недавно", "активный"), правила обработки (округление, точность), рабочие процессы (алгоритм по умолчанию).Явно объяви свои определения в начале сессии. Добавь фразу-сброс: "в этой сессии действуют только мои определения ниже". Перечисли все неоднозначные термины и правила. Это создаёт локальный слой, который перекрывает унаследованное.

Методы

МетодСуть
Декларация контекста — защита от чужих соглашенийВставь в начало запроса блок с явными определениями. Структура: 1) фраза-сброс ("игнорируй соглашения других сессий"), 2) твои термины ("'активный клиент' = покупка за 30 дней"), 3) твои правила обработки (точность чисел, временной период), 4) твой рабочий процесс если нужен. Почему работает: явная инструкция в текущем контексте имеет приоритет над тем, что осталось в памяти. Модель не сравнивает "чьё правило правильнее" — просто следует последнему явному указанию. Когда применять: командные пространства с общей памятью, любые задачи с числами и терминами. Ограничение: процедурное заражение (чужой многошаговый алгоритм) перебивается труднее — нужно подробно описать свой процесс пошагово.
📖 Простыми словами

No Attacker Needed: Unintentional Cross-User Contamination in Shared-StateLLMAgents

arXiv: 2604.01350

Проблема в том, что современные AI-ассистенты с общей памятью — это дырявое ведро, которое смешивает мысли всех пользователей в одну кучу. Когда команда использует общий Claude Project или ChatGPT Teams, модель не понимает границ между личностями. Для неё нет «Марины» или «Дениса», есть только единый поток контекста. Если один человек установил правило, AI впитывает его как абсолютную истину и начинает навязывать остальным, даже не предупредив об этом.

Это как если бы вы пришли в коворкинг и сели за стол, где до вас работал сумасшедший математик, исписавший всё формулами. Вы пытаетесь составить список покупок, но ваш мозг непроизвольно начинает подставлять в него иксы и игреки, потому что они уже перед глазами. Модель — это тот самый мозг, который не умеет игнорировать чужие пометки на полях, превращая коллективную работу в тихий хаос.

Суть лажи в том, что у LLM напрочь отсутствует атрибуция знаний. В памяти бота оседает установка: «активный клиент — это тот, кто купил что-то вчера». Когда через неделю другой сотрудник просит отчет по активным клиентам, ожидая увидеть данные за месяц, модель выдает ему цифры «по-вчерашнему». Она не со зла — она просто потеряла автора инструкции и применила старый костыль к новому человеку. Это не взлом, а естественная деградация логики в общей среде.

Исследователи копали корпоративные чаты, но этот эффект загрязнения актуален везде, где есть «общая база знаний». Будь то база знаний стартапа, семейный аккаунт или проект в Claude — везде, где память не зачищается под ноль для каждого юзера, вы рискуете получить ответ, отравленный чужим контекстом. Приватность контекста в таких системах сейчас находится на уровне нуля, и это системный баг архитектуры, а не случайная ошибка.

Короче, пока разработчики не научат модели вешать ярлык «собственность пользователя» на каждую реплику, общие чаты будут оставаться зоной риска. Не доверяйте определениям, которые выдает бот в командном пространстве — скорее всего, он просто цитирует вашего коллегу, который накосячил в промпте три дня назад. Либо чистите историю, либо смиритесь с тем, что ваш AI — это испорченный телефон, транслирующий чужие галлюцинации.

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

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

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