3,583 papers
arXiv:2610.07311 75 5 окт. 2026 г. FREE

MemTrim: защита от чрезмерного доверия к памяти агента через разбор фактов на «общее / конфликтующее / только из памяти»

КЛЮЧЕВАЯ СУТЬ
Парадокс: память агента вредит не тогда, когда она чужая, а тогда, когда она «почти своя». Задача совпала с прошлой наполовину, модель узнала знакомые факты и решила, что это то же самое. Старый вывод уже не подходит, но попадает в новый ответ, хотя память была верной и найденной по делу. MemTrim позволяет подключить память к ответу и не тащить из неё устаревшие выводы, при этом полезные данные остаются. MemTrim режет память по фактам: всё, что уже есть в запросе или спорит с ним, вычёркивается. Остаётся только новое. Если опорные факты вывода изменились, вывод снимается. Если не изменились, но вопрос другой, вывод превращается из ответа в справку: «раньше на другой вопрос отвечали так». Вред от памяти достигает пика при среднем перекрытии задач, и метод бьёт именно туда.
Адаптировать под запрос
⚡

TL;DR

MemTrim — слой между памятью агента и моделью. Когда память записывается, он разбирает её на отдельные факты в формате «параметр = значение». Когда память подтягивается в ответ, он сравнивает эти факты с новым запросом и делится на три группы: общие (уже есть в запросе), конфликтующие (тот же параметр, другое значение) и только из памяти. Общие и конфликтующие факты вычёркиваются, остаётся только то, что реально добавляет новое. Старый вывод убирается, если факты, на которых он держался, изменились.

Главная находка: память вредит не когда она чужая, а когда она «почти своя». Если новая задача совпадает с прошлой наполовину, модель видит знакомые факты, решает «это то же самое» и тянет старый вывод в новый ответ. Он при этом уже не подходит. Если задача совпадает почти полностью, память помогает. Если почти не совпадает, она слабо влияет. Пик вреда приходится на среднее перекрытие, и там же модель чаще всего портит правильный ответ. При этом память была верной, корректно сохранённой и уместно найденной.

Метод решает это в три хода. Он убирает повторяющиеся факты, чтобы они не «усиливали» старый вывод. Он убирает факты, которые противоречат запросу. Если задача изменилась, он превращает старый ответ из «ответа» в «справочный факт» с пометкой, на какой вопрос он отвечал. Полезные данные, которых нет в запросе, остаются.

🔬

Схема метода

ЗАПИСЬ В ПАМЯТЬ (один раз)
ШАГ 1: Разбить воспоминание на факты "параметр = значение" → список фактов
ШАГ 2: Записать «сигнатуру задачи» (что именно решали) → метка задачи
ШАГ 3: Отметить, на каких фактах держится вывод → «опорные факты»

ЧТЕНИЕ ИЗ ПАМЯТИ (на каждый запрос)
ШАГ 4: Разбить новый запрос так же → факты запроса + метка задачи
ШАГ 5: Разложить факты памяти на три группы:
        • общие (параметр и значение совпали) → УДАЛИТЬ
        • конфликтующие (значение другое) → УДАЛИТЬ
        • только из памяти → ОСТАВИТЬ
ШАГ 6: Решить судьбу старого вывода:
        • опорный факт изменился → УБРАТЬ вывод
        • факты целы, задача та же → ОСТАВИТЬ как прошлый ответ
        • факты целы, задача другая → ПЕРЕВЕСТИ в факт с пометкой «ответ на другой вопрос»
ШАГ 7: Отдать модели запрос + очищенный контекст

В оригинале шаги 1–2 и 4 делает инструкция для модели-«парсера», а сопоставление — программа (дерево поиска). Всё работает поверх готовых систем памяти без дообучения.

🚀

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

Задача: Вы ведёте маркетинг сети кофеен и держите в проекте Claude заметки с прошлыми разборами. В заметках лежит кейс: «Кофейня в Казани, бюджет 100 000 ₽/мес, аудитория 25–35, лето, формат «зал + навынос». Вывод: РСЯ не нужна, вкладываемся только в поисковые кампании Яндекс Директа». Сейчас вы запускаете ту же кофейню, с тем же бюджетом и той же аудиторией, но зимой и с доставкой. Это ровно «частичное перекрытие»: знакомых фактов много, а ключевые отличаются.

Промпт:


Ты — аналитик, который готовит контекст из прошлых заметок перед ответом.
Прошлый вывод нельзя переносить автоматически.



Кейс: кофейня в Казани, бюджет 100 000 ₽/мес, аудитория 25–35, сезон — лето, формат — зал и навынос.
Задача, которую решали: выбрать каналы в Яндекс Директе.
Вывод: РСЯ не нужна, только поисковые кампании.
Опорные факты вывода: сезон=лето, формат=зал и навынос.



Кофейня в Казани, бюджет 100 000 ₽/мес, аудитория 25–35, сезон — зима, формат — доставка.
Какие кампании в Яндекс Директе запускать?



1. Разбей память и запрос на факты вида «параметр = значение». Определи задачу в каждом.
2. Раздели факты памяти на три группы: общие, конфликтующие, только из памяти.
3. Общие и конфликтующие факты исключи из контекста.
4. Проверь прошлый вывод: если изменился хотя бы один опорный факт — отбрось вывод.
   Если опорные факты целы, а задача другая — используй вывод только как справку с пометкой.
5. Покажи очищенный контекст, затем ответь на запрос, опираясь только на него и на запрос.

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

🧠

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

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

Сильная сторона модели. Она хорошо раскладывает текст на пары «параметр — значение» и сравнивает два списка. Это узкая, проверяемая операция. Намного надёжнее, чем просить её «учти память, но будь осторожна».

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

Рычаги управления: - Опорные факты — чем точнее вы отметите, на чём держится вывод, тем надёжнее отсев. Размытые «опорные факты» превращают метод в формальность. - Правило для старого вывода — три варианта (убрать / оставить / перевести в справку). Для рискованных задач ужесточите: убирать при любом несовпадении. - Шаг «покажи очищенный контекст» — оставьте для проверки. Уберите, если нужен только итог. - Метка задачи — важна, когда факты те же, а вопрос другой. Не пропускайте её.

📋

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

Оригинальный метод — программа вокруг памяти, поэтому это перенос его логики чтения в один промпт. Структура сохранена: факты, три группы, судьба вывода.


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



Кейс: {прошлый_кейс}
Задача, которую решали: {прошлая_задача}
Вывод: {прошлый_вывод}
Опорные факты вывода: {на_чём_держится_вывод}



{новый_запрос}



1. Разбей память и запрос на факты «параметр = значение». Определи, какую задачу решают память и запрос.
2. Раздели факты памяти на три группы:
   - ОБЩИЕ: параметр и значение совпадают с запросом;
   - КОНФЛИКТУЮЩИЕ: параметр есть в запросе, значение другое;
   - ТОЛЬКО ИЗ ПАМЯТИ: параметра нет в запросе.
3. Общие и конфликтующие факты исключи из контекста.
4. Реши судьбу прошлого вывода:
   - если изменился любой опорный факт → отбрось вывод;
   - если опорные факты целы и задача та же → оставь как «прошлый ответ»;
   - если опорные факты целы, но задача другая → оставь только как справку: «ранее на вопрос {другой вопрос} получен ответ …».
5. Выведи очищенный контекст отдельным блоком.
6. Ответь на запрос, опираясь только на запрос и очищенный контекст.

Подставьте: {прошлый_кейс} — запись из памяти или заметок; {прошлая_задача} — какой вопрос тогда решали; {прошлый_вывод} — итог; {на_чём_держится_вывод} — 2–4 факта, от которых зависел вывод; {новый_запрос} — текущий вопрос.

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

Вот шаблон MemTrim для очистки памяти перед ответом. Адаптируй под мою задачу: [твоя задача]. 
Задавай вопросы, чтобы заполнить поля.

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

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

⚠️

Ограничения

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

⚠️ Проверено на задачах с чёткими фактами: бенчмарки — проверка знаний, логика, причинные вопросы. Там факты легко разложить на пары «параметр — значение». На размытых задачах (стратегия, тексты, тон) разбор получится спорным, а польза неизвестна.

⚠️ Зависит от качества разбора: если модель неверно выделила факты или опорные факты, чистка отсеет не то. Метод сам не страхует от ошибок первого шага.

⚠️ Не лечит при совпадении задач: если память полностью подходит, её нужно использовать. Простые способы «обрезать память» именно здесь теряли пользу, и метод специально берёг её.

⚠️ Атаки ослабляет, но не снимает: при массовой подмене памяти качество падает у всех методов, у MemTrim — медленнее.

🔍

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

Исследователи разделили запросы на два типа: «задача та же» (память прямо помогает) и «факты те же, ответ другой» (память сбивает). Память везде была верной и корректно сохранённой, так что вред шёл не от «грязных» данных. Проверили три набора задач (изменённые факты, логика, причинные вопросы), четыре популярные системы памяти (Mem0, A-Mem, MemGPT, Graphiti) и две модели. Память помогала, когда задача совпадала, и портила правильные ответы, когда совпадала частично. Порчи ответов было заметно больше, чем исправлений.

Дальше замерили долю общих слов между запросом и памятью. Провалы кучковались в середине шкалы. Потом разложили память на факты и меняли долю повторённых в запросе, не трогая остальное. Вышла колоколообразная кривая: вред растёт до середины, потом спадает, когда запрос возвращает решающие факты. Удивительно, что вред давали не «плохие» воспоминания, а похожие.

Метод сравнили с девятью альтернативами: взять один лучший результат, удалить сохранённые ответы, сжать контекст, фильтр по схожести, «отвечай по текущему контексту», «сначала ответь сам». Все они либо теряли пользу на подходящих случаях, либо пропускали вред. Отдельно убирали компоненты метода: каждый нужен в своём типе задач. Затем проверили на трёх видах подмены памяти и замерили время работы: накладные расходы небольшие. Точных цифр в тексте нет: таблицы не пришли в разборе, поэтому величину эффекта оценить сложно.

💡

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

🔧 Техника: ответ из памяти превращаем в справку, а не в ответ → меньше слепого переноса

Самый переносимый приём из статьи — не удалять старый вывод, а переупаковать его:

Ранее на вопрос «{другой_вопрос}» был получен ответ «{ответ}». 
Это справка, а не ответ на текущий вопрос.

Экстраполяция: правило для файла инструкций агента (CLAUDE.md, AGENTS.md, системный промпт кастомного GPT)

## Работа с памятью и прошлыми решениями
Перед использованием записи из памяти:
1. Сравни её параметры с текущей задачей: что совпало, что отличается.
2. Если отличается любой параметр, от которого зависел прошлый вывод, 
   не переноси вывод. Заново реши задачу.
3. Если задача другая, а параметры те же, используй вывод только как справку 
   и так и пометь.
4. Особенно осторожно, когда совпало «примерно половина»: 
   знакомое — не значит подходящее.

Это моя экстраполяция принципа статьи, авторы такой текст не проверяли.

🔗

Ресурсы

  • Работа: Understanding and Mitigating Inference-Time Overreliance Using Agentic Memory (препринт)
  • Авторы: Luoxi Tang, Yuqiao Meng, Nilesh Auradkar, Zhaohan Xi (Binghamton University, SUNY); Muchao Ye (University of Iowa); Dazheng Zhang (Penn Medicine, University of Pennsylvania)
  • Системы памяти из исследования: Mem0, A-Mem, MemGPT, Graphiti
  • Наборы задач: RippleEdits, CounterLogic, CLADDER

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

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

Парадокс: память агента вредит не тогда, когда она чужая, а тогда, когда она «почти своя». Задача совпала с прошлой наполовину, модель узнала знакомые факты и решила, что это то же самое. Старый вывод уже не подходит, но попадает в новый ответ, хотя память была верной и найденной по делу. MemTrim позволяет подключить память к ответу и не тащить из неё устаревшие выводы, при этом полезные данные остаются. MemTrim режет память по фактам: всё, что уже есть в запросе или спорит с ним, вычёркивается. Остаётся только новое. Если опорные факты вывода изменились, вывод снимается. Если не изменились, но вопрос другой, вывод превращается из ответа в справку: «раньше на другой вопрос отвечали так». Вред от памяти достигает пика при среднем перекрытии задач, и метод бьёт именно туда.

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

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

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

Когда в контексте лежит знакомый кейс, модель им «заражается». Совпадают в основном фоновые факты: город, бюджет, аудитория. Решающие факты (сезон, формат) могут отличаться. Повторы ещё и усиливают друг друга: модель видит факт дважды, в запросе и в памяти, и считает вывод подтверждённым. Знакомые факты работают как подпись под старым выводом: чем больше совпадений, тем сильнее модель верит, что ответ подходит. Поэтому вред максимален на середине шкалы. При полном совпадении память помогает. При нулевом она почти не влияет. Есть и сильная сторона: модель хорошо раскладывает текст на пары «параметр — значение» и сравнивает два списка. Это узкая проверяемая операция. Она надёжнее, чем просьба «учти память, но осторожно». Простые обходные способы тоже снижают вред. Это «брать только лучший результат», «выбрасывать сохранённые ответы», «сжимать контекст». Но они заодно выкидывают полезное там, где память нужна. Разбор по фактам убирает ядовитое и оставляет нужное.

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

Агенты и чаты с долгой памятью (проекты, заметки, накопленные кейсы) → задачи, которые часто повторяются с небольшими изменениями. Особенно когда вопрос звучит почти как прошлый, а решающие условия другие: сезон, формат, регион, версия продукта. Подходит для задач с чёткими фактами: аналитика, диагностика, расчёты, выбор каналов, разбор причин. НЕ подходит, если задача совпадает с прошлой полностью. Тогда память нужно использовать, а не чистить. На размытых задачах (стратегия, тон текста) разбор фактов получится спорным. Авторы проверили метод как программный слой вокруг памяти. Перенос в один промпт — это только логика метода, его эффект не измерен.

Мини-рецепт

1. Достань кейс из памяти: сам вывод, задачу, которую решали, и условия кейса.
2. Отметь опорные факты: 2-4 условия, от которых вывод зависит. Если написать размыто, метод превратится в формальность.
3. Вставь новый запрос рядом: дословно, со всеми условиями.
4. Заставь разложить факты: общие, конфликтующие, только из памяти. Пусть выведет таблицу.
5. Дай жёсткое правило для вывода: опорный факт поменялся, значит вывод долой. Для рискованных задач: любое несовпадение, значит долой.
6. Оставь шаг «покажи очищенный контекст»: так видно, что модель вычеркнула. Для финальных ответов этот шаг можно убрать.
7. Пусть отвечает только по запросу и очищенному контексту: без возврата к старому кейсу.

Примеры

[ПЛОХО] : Вот прошлый разбор для кофейни в Казани, вывод: только поиск в Яндекс Директе. Теперь запускаем зимой с доставкой, какие кампании делать? Модель видит знакомые город, бюджет и аудиторию. Она тащит старый вывод «только поиск», хотя его опорные условия (лето, зал) уже изменились.
[ХОРОШО] : Память: кофейня в Казани, бюджет 100 000 рублей в месяц, аудитория 25-35, лето, зал и навынос. Задача: выбрать каналы в Яндекс Директе. Вывод: рекламная сеть не нужна, только поиск. Опорные факты вывода: сезон=лето, формат=зал и навынос. Запрос: та же кофейня, тот же бюджет и аудитория, но зима и доставка. Какие кампании запускать? Сначала разбей память и запрос на факты «параметр = значение». Раздели факты памяти на общие, конфликтующие и только из памяти. Общие и конфликтующие исключи. Если изменился хотя бы один опорный факт, отбрось вывод. Покажи очищенный контекст и только потом отвечай. Результат: город, бюджет и аудитория попадают в «общие», сезон и формат — в «конфликтующие». Вывод про «только поиск» снимается, ответ строится под зимнюю доставку.
Источник: Understanding and Mitigating Inference-Time Overreliance Using Agentic Memory
ArXiv ID: 2610.07311 | Сгенерировано: 2026-10-07 05:40

Проблемы LLM

ПроблемаСутьКак обойти
Прошлый кейс в контексте вредит сильнее всего, когда он «почти свой»В контексте лежит старая заметка, пример или прошлый диалог. Она верная и уместная. Новая задача совпадает с ней наполовину. Модель видит много знакомых фактов и решает: «это то же самое». Тянет старый вывод в новый ответ, а он уже не подходит. Если задача совпадает почти полностью, память помогает. Если почти не совпадает, она слабо влияет. Пик вреда на середине. Повторяющиеся факты усиливают друг друга: модель видит их дважды, в запросе и в памяти, и считает вывод подтверждённым. Совпадают обычно фоновые факты (город, бюджет), а решающие (сезон, формат) отличаютсяНе проси просто «учти прошлое, но будь осторожна». Очисти контекст по фактам до ответа. Разбей память и запрос на пары параметр = значение. Убери общие и конфликтующие факты. Старый вывод держи только с пометкой, на чём он стоял (см. метод ниже)

Методы

МетодСуть
Очистка прошлого контекста по фактам — убирает ложное подтверждениеЧто делать. Перед ответом дай модели шаги. 1) Разбей прошлый кейс и новый запрос на пары параметр = значение. 2) Запиши, какую задачу решали тогда и какую решаем сейчас. 3) Раздели факты памяти на три группы: общие (параметр и значение совпали), конфликтующие (параметр тот же, значение другое), только из памяти (в запросе такого параметра нет). 4) Общие и конфликтующие факты убери. Остаются только те, что добавляют новое. 5) Реши судьбу старого вывода. Если изменился хотя бы один опорный факт (тот, на котором вывод держится), отбрось вывод. Если опорные факты целы и задача та же, оставь как «прошлый ответ». Если факты целы, а задача другая, оставь как справку: «ранее на вопрос X получен ответ Y». 6) Покажи очищенный контекст отдельным блоком. Потом отвечай, опираясь только на запрос и этот блок. Почему работает: Общие факты убраны, поэтому их нечему усиливать. Конфликтующие убраны, поэтому они не тянут к старому решению. Вывод превращён из «ответа» в «справку», поэтому его не принимают за готовый. Модель хорошо делает узкую проверяемую операцию: разложить текст на пары и сравнить два списка. Это надёжнее, чем общая просьба «будь осторожна». Полезные данные, которых нет в запросе, остаются. Заранее отметь опорные факты: 2–4 факта, от которых зависел вывод. Если они размыты, метод станет формальностью. Для рискованных задач: отбрасывай вывод при любом несовпадении. Когда применять: повторяющиеся задачи с историей, заметки в проекте, прошлые кейсы и примеры в контексте, память агента. Когда не работает: задача и память совпали почти полностью (там память нужна целиком). Размытые задачи (тон, стратегия, тексты), где факты трудно разложить на пары. Если модель ошиблась в разборе, чистка уберёт не то. Перенос в один промпт проверяй на своих данных
📖 Простыми словами

Understanding and Mitigating Inference-Time OverrelianceUsingAgenticMemory

arXiv: 2610.07311

У языковых моделей есть мерзкая привычка: когда они видят в памяти похожий прошлый кейс, они тупо ленятся думать. В исследовании это называют inference-time overreliance — слепое доверие к прошлому опыту. Если совпало 3 фоновых параметра из 5, вроде города и бюджета, сетка ловит фиксацию и намертво вцепляется в старый вывод. Внимание модели замыкает на знакомых фактах, а решающие отличия запроса превращаются для неё в невидимый мусор.

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

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

Разработчики гоняли метод на маркетинговых кейсах, но принцип универсален для всей агентской разработки. Это критично для кодинг-ассистентов, которые натягивают прошлогодний костыль на изменившийся фреймворк, и для финансовых консультантов, путающих стратегии из-за одинаковых названий фондов. Везде, где прикручен RAG или долгая память, модель рискует выдать фатальный сбой на автопилоте.

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

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

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

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