3,583 papers
arXiv:2610.27377 71 19 окт. 2026 г. FREE

REM (Reusable Experience Memory): память кодинг-агента в виде короткого документа по четырём фазам

КЛЮЧЕВАЯ СУТЬ
Парадокс: даже вручную подобранный нужный прошлый опыт не помогает агенту, если лежит в виде лога или обычного пересказа. Решённых задач не прибавляется. Метод REM позволяет превратить длинную сессию починки кода в короткую заметку, которую агент реально использует. После задачи весь ход работы сворачивается в документ из четырёх фаз: где искал, что понял, как починил, чем проверил. Это около 270 токенов с точными именами файлов и функций. Агент использует структурированный документ почти полностью, и задач решается чуть больше при меньших затратах.
Адаптировать под запрос
⚡

TL;DR

REM — схема памяти для агента, который чинит код. После каждой задачи весь длинный ход работы сворачивается в короткий документ из четырёх фаз: где искал (localize), что понял (understand), как починил (fix), чем проверил (verify). Такой документ кладут агенту в контекст в начале новой похожей задачи. Подробные правки из старого прогона показывают только когда агент застрял (провалил проверку) и убирают сразу после одного показа.

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

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

🔬

Схема метода

ЗАПИСЬ (после каждой завершённой задачи):
  Лог работы агента → один вызов LLM → поля (файлы, функции, причина, способ починки, тесты)
  → документ из 4 фаз: localize / understand / fix / verify (~270 токенов)

ЧТЕНИЕ (новая задача):
  Поиск 5 ближайших документов → LLM выбирает один → кладём в начало контекста
  (документ остаётся в контексте до конца работы)

ВНУТРИ ЦИКЛА:
  Агент провалил проверку? → да → подмешиваем "запись реализации"
  (правки и проверки из старого прогона, до 12K символов) → один показ → удаляем

Шаги записи и чтения — отдельные вызовы LLM. Третий шаг (сигнал «застрял») встроен в цикл работы агента и требует кода.

🚀

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

Задача: Вы ведёте магазин на Ozon и Wildberries, а интеграцию остатков поддерживаете с Claude Code. Месяц назад агент полтора часа искал, почему остатки на WB обнуляются после ночной синхронизации. Нашёл: неверная обработка пустого ответа API. Теперь похожий баг случился с Ozon. Нужно сохранить опыт так, чтобы агент им воспользовался.

Промпт (в конце старой сессии):

Сессия по багу закончена. Сверни её в документ для будущих агентов.
Строго четыре раздела, всего не больше 300 слов:

 где искал и где оказался баг: файлы, функции, по каким признакам нашёл 
 первопричина одной-двумя фразами 
 как чинили: общий приём, не построчный diff 
 какие тесты и команды подтвердили починку 

Тупиковые ветки не включай. Имена файлов и функций пиши точно.

Результат: Модель выдаст короткий документ из четырёх блоков с точными путями к файлам и именами функций. Сохраните его в репозитории, например в notes/sync-stock-bug.md. Перед новой похожей задачей скажите агенту прочитать эту заметку. Она занимает пару абзацев и не вытесняет рассуждения агента, как это сделал бы лог на десятки тысяч токенов.

🧠

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

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

Сильная сторона: модель хорошо следует структуре. Когда опыт разложен по знакомым фазам диагностики (найти, понять, починить, проверить), она легко сопоставляет его со своей задачей. В исследовании агент ссылался на идентификаторы из фазового документа заметно чаще, чем из саммари и особенно из лога. Организация, а не объём, определяет, прочитан ли документ.

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

Рычаги управления: - Поля документа (файлы, функции, причина, способ, тесты) → меняйте под свою область: для SQL-ремонта или разбора инцидентов фазы те же, поля другие. - Размер документа → 200–500 токенов; больше — теряется эффект «читается целиком». - Условие «застрял» → в исследовании это первый провал проверки. Можно заменить на «два провала подряд» или «N шагов без прогресса». - Удаление после показа → в исследовании это самый стабильный выигрыш среди трёх решений.

📋

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

Точный промпт авторов в доступной части текста не приведён. Состав полей и четыре фазы описаны, ниже шаблон по этому описанию.

Вот ход работы над завершённой задачей: {лог_или_описание_сессии}

Сверни его в документ для будущих агентов. Четыре раздела, не больше {число_слов} слов:


Где искали. Файлы: {файлы}. Функции: {функции}. По каким признакам нашли место проблемы.


Первопричина — одной-двумя фразами.


Общий приём починки (не построчный diff).


Какие тесты и команды {тесты} подтвердили результат.


Правила: тупиковые ветки не включай. Имена файлов и функций — точно, как в коде.
Не пересказывай ход работы — только структуру решения.

Подставьте: - {лог_или_описание_сессии} — выжимка сессии или сама сессия; - {число_слов} — 200–300 слов; - поля в и — под вашу область: для текстов или аналитики это источники и способ проверки.

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

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

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

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

⚠️

Ограничения

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

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

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

⚠️ Полная версия требует кода: сигнал «провалил проверку», подмена контекста посреди работы, векторный поиск и переранжирование — это инженерия. В чате и в Claude Code вы повторите только форму документа и ручное правило «читай подробности, когда застрял».

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

🔍

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

Команда Amazon и Йеля взяла 99 реальных багов из SWE-ContextBench Lite. К ним прилагался пул из 300 уже решённых траекторий и разметка: какая траектория относится к какой задаче. Один и тот же агент (Claude Sonnet 4.5) решал все задачи в разных режимах: без памяти, с саммари, с сырой траекторией, с фазовым документом. Часть режимов гоняли с «оракулом», то есть агенту вручную давали правильную траекторию. Так отделили качество поиска от эффекта самого опыта.

Результат удивил. Саммари и сырой лог не добавили решённых задач, даже когда лежал нужный опыт. Фазовый документ из той же траектории добавил. REM нашёл нужную траекторию в 68,7% случаев против 55,6% у лучшей из готовых систем памяти (Mem0, LangMem и др.), решил 27,6% задач против 24,9% без памяти и потратил на 17% меньше токенов. В каждом из трёх повторов REM был не хуже, но статистической значимости на одном сравнении нет.

Затем измерили, что агент реально берёт из подсказки: какие имена файлов и функций из неё он потом упоминает. Фазовый документ использовался на ~69%, саммари на 46–53%, сырая траектория на ~27%. Документ в 270 токенов читается лучше саммари в 390. Значит, роль играет организация, а не объём.

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

💡

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

🔧 Техника: двухуровневые заметки → короткое «всегда», подробное «по требованию». Это не метод авторов, а перенос принципа в инструкции агента (CLAUDE.md или AGENTS.md):

Перед задачей прочитай notes/{тема}.md (короткий фазовый документ).
Файл notes/{тема}.detail.md не открывай, пока тесты не упали дважды.
Если открыл — используй как подсказку, затем не опирайся на него в следующих шагах.

Принцип тот же: краткое — в начале, подробное — только при реальной трудности. Нигде не проверено, что текстовое «забудь» работает как настоящее удаление из контекста. Для реального удаления нужен код или новая сессия.

🔧 Техника: не давать память сильной модели → проверить A/B. Прогоните одну типовую задачу с заметкой и без неё на самой мощной доступной модели. Если качество не растёт, не раздувайте контекст.

🔗

Ресурсы

  • REM: What to Store, When to Recall, What to Forget in Experience Memory for Coding Agents — Xinyi Lisa Chen (Yale University), Pedro Herrero-Vidal, Xiaohan Chen, Xiaojing Yu, Cris Liu, Bingqing Song, Bin Xu, Suleiman A. Khan, You-Lin Chen (Amazon). NeurIPS 2026 Workshop: Continual Learning for Enterprise AI Agents.
  • Бенчмарк: SWE-ContextBench Lite (Zhu et al., 2026).
  • Сравнивали с системами памяти: Mem0, LangMem, Supermemory, OpenViking.
  • Фреймворк агента: Strands; модели семейства Claude.

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

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

Парадокс: даже вручную подобранный нужный прошлый опыт не помогает агенту, если лежит в виде лога или обычного пересказа. Решённых задач не прибавляется. Метод REM позволяет превратить длинную сессию починки кода в короткую заметку, которую агент реально использует. После задачи весь ход работы сворачивается в документ из четырёх фаз: где искал, что понял, как починил, чем проверил. Это около 270 токенов с точными именами файлов и функций. Агент использует структурированный документ почти полностью, и задач решается чуть больше при меньших затратах.

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

Три решения, и у каждого своя задача. Что хранить: документ из четырёх фаз. Не лог и не россыпь фактов. Когда показывать: коротко в начале. Подробные правки из старого прогона только после провала проверки. Что забывать: подробности убирают сразу после одного показа. Лог на сотни тысяч символов агент читает вполсилы. В нём тонут тупики и пробы. В обычном пересказе размыты имена файлов и функций. Организация определяет, прочитан ли документ, а не объём. Это как шпаргалка по билету. Она работает, потому что короткая и разложена по полочкам. Конспект всего семестра так не работает. Удаление после показа дало самый стабильный выигрыш из трёх решений. Иначе подробности тянут каждый следующий ход к чужому решению.

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

Модель хорошо следует знакомой структуре. Диагностика всегда идёт так: найти, понять, починить, проверить. Агент легко накладывает такой документ на свою задачу. В исследовании он ссылался на идентификаторы из фазового документа заметно чаще, чем из пересказа и особенно из лога. Лишний контекст вытесняет собственные рассуждения агента, а компактный документ оставляет решение и выбрасывает поиск. Теперь честно про цифры. Прирост решённых задач около трёх пунктов. На 99 задачах в паре сравнений он не дотягивает до значимости. Уверенно выиграли поиск нужного опыта и стоимость запуска. Подробная запись почти не нужна: без неё результат почти тот же. Главный выигрыш даёт форма документа.

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

Кодинг-агенты → исправление багов в репозиториях → особенно когда похожие поломки повторяются, а сессии длинные и шумные. Форму документа можно перенести на разбор инцидентов, SQL-ремонт или аналитику. Меняйте поля под свою область, фазы остаются теми же. Для текстов и продаж перенос проверен не был, это ваша догадка. НЕ подходит для самых сильных моделей. На них любая память снижала долю решённых задач, у одной из топовых заметно. Помогает средним по возможностям агентам. Проверено на одном бенчмарке и фактически одной основной модели. Полная версия (сигнал «провалил проверку», подмена контекста, векторный поиск) требует кода. В чате и в Claude Code повторяется только форма документа.

Мини-рецепт

1. Сверни сессию: сразу после закрытой задачи попроси модель собрать документ из четырёх блоков. Не больше 300 слов.
2. Сохрани рядом с кодом: например, в notes/sync-stock-bug.md. Держи 200-500 токенов. Длиннее эффект «читается целиком» пропадает.
3. Дай прочитать в начале: перед похожей задачей скажи агенту открыть заметку. Одну, самую близкую, а не пять.
4. Подробности только при провале: первая заметка идёт в начале. Старые правки и тесты показывай, когда проверка провалена. Условие «застрял» можно сделать жёстче: два провала подряд или N шагов без прогресса.
5. Убери после показа: один раз показал и вычистил из контекста. Иначе агент прилипнет к чужому решению.
6. Сравни с запуском без памяти: если модель и так сильная, заметка может только навредить.

Примеры

[ПЛОХО]: `Вот лог прошлой сессии на 3000 строк. Прочитай и почини похожий баг с остатками на Ozon` [ХОРОШО] (в конце старой сессии про баг с обнулением остатков на Wildberries): `Сессия по багу закончена. Сверни её в документ для будущих агентов. Строго четыре раздела, не больше 300 слов: где искал и где оказался баг: файлы, функции, по каким признакам нашёл первопричина одной-двумя фразами как чинили: общий приём, не построчный diff какие тесты и команды подтвердили починку Тупиковые ветки не включай. Имена файлов и функций пиши точно.` [ХОРОШО] (в новой сессии): `Прочитай notes/sync-stock-bug.md. Там разбор похожего бага с пустым ответом API на Wildberries. Остатки на Ozon обнуляются после ночной синхронизации. Начни с тех же функций и проверь ту же причину.` Свёрнутая заметка занимает пару абзацев. Лог на десятки тысяч токенов вытеснил бы рассуждения агента.
Источник: REM: What to Store, When to Recall, What to Forget in Experience Memory for Coding Agents
ArXiv ID: 2610.27377 | Сгенерировано: 2026-10-21 13:20

Проблемы LLM

ПроблемаСутьКак обойти
Модель плохо использует прошлый опыт, даже если он точно по темеДаёшь модели записи прошлой работы: сырой лог или обычное саммари. Задач решается не больше. Лог длинный. Нужные имена файлов, функций и выводы тонут в тупиках и пробах. Модель читает его вполсилы. В обычном саммари идентификаторы размыты. Пропадает связь «где искал → что понял → как исправил». Длинный контекст ещё и вытесняет собственные рассуждения модели. Проблема касается любых задач, где модели передают итоги прошлой работыНе передавай лог и свободный пересказ. Сверни опыт в короткий документ по фазам работы. Подробности смотри в методе «Фазовый документ» ниже. Размер документа держи в пределах 200–500 токенов

Методы

МетодСуть
Фазовый документ вместо лога — опыт, который модель реально используетПосле завершённой задачи попроси модель свернуть работу в короткий документ по этапам. Для починки кода это четыре раздела: где искал, что понял, как починил, чем проверил. , , , . Правила в запросе: не больше 300 слов, тупики не включать, имена файлов и функций писать точно, общий приём вместо построчных правок. Такой документ кладут в начало контекста новой похожей задачи. Почему работает: этапы знакомы модели. Она легко сопоставляет их со своей задачей. Тупики отброшены, идентификаторы сохранены. Читается весь документ, а не его часть. Поля меняй под область. Для SQL или разбора инцидентов фазы те же, поля другие: таблицы, источники, команды проверки. Когда да: повторяющиеся задачи одного типа, средняя по силе модель. Когда нет: одна разовая задача. Очень сильная модель — лишний опыт может ей мешать. Не включай память по умолчанию, сначала сравни с запуском без неё
Подробности только при застревании и один показДержи два уровня памяти. Первый — короткий документ, он всегда в контексте. Второй — подробные правки и проверки из старого прогона, до 12 000 символов. Второй уровень показывай, только когда агент застрял, например провалил проверку. Можно взять условие «два провала подряд» или «N шагов без прогресса». После одного показа убери подробности из контекста. Почему работает: подробности в начале отвлекают от текущей задачи. Если оставить их, каждый следующий шаг тянется к чужому решению. Когда да: агент работает в цикле с проверками, есть код для управления контекстом. Когда нет: обычный чат. Там можно лишь вручную написать «подробности смотри, только если застрял». Эффект от второго уровня небольшой, основной выигрыш даёт сам короткий документ. Удаление после показа — самая стабильная часть
📖 Простыми словами

REM: What to Store, When to Recall, What to Forget in Experience Memory for Coding Agents

arXiv: 2610.27377

LLM-агенты моментально тупеют от собственной истории. Запихни в контекст полный лог вчерашней починки бага — и модель захлебнётся в мусоре, блужданиях и ложных гипотезах. Контекстное окно забивается шлаком, вытесняя рассуждения, а обычное текстовое саммари превращает имена функций в неразборчивую кашу. Метод REM решает главную проблему памяти: агенту нужен не пересказ драмы, а строгий каркас решения, разбитый на четыре фазы.

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

Что реально работает: метод REM сжимает прошлый опыт в формулу из четырёх шагов — localize, understand, fix и verify. Этот компактный документ кладут в контекст сразу, задавая правильное направление. А вот детальные куски старого кода показывают только если агент застрял и завалил тесты. Показали конкретную правку ровно на один шаг — и сразу выкинули из памяти, чтобы не захламлять рассуждения.

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

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

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

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

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