3,583 papers
arXiv:2610.07376 72 5 окт. 2026 г. FREE

MemCo: общая память для агентов, где локальные детали хранятся отдельно, а переносимые рабочие схемы — отдельно

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

TL;DR

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

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

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

🔬

Схема метода

ШАГ 1 (после эпизода): разложить траекторию на записи
   → паттерны (схемы, предусловия, исправления, провалы),
     практические знания, конкретные случаи и рефлексии
ШАГ 2: у каждой переносимой записи отметить
   «подтверждает / противоречит / нет прогресса»
   → не больше одного голоса на эпизод
ШАГ 3: убрать привязку к среде (предметы → роли),
   оставить условия применимости, действия и исход
   → абстрактная запись
ШАГ 4: сложить голоса от всех агентов по одинаковым записям
   → в общую память идут записи с достаточным
   и согласованным подтверждением
ШАГ 5 (перед каждым действием): достать ≤5 локальных и ≤5 глобальных записей
   → отфильтровать противоречащие состоянию,
     ранжировать по состоянию, этапу и цели
ШАГ 6: собрать контекст из трёх блоков
   → grounding (где мы) / workflow (как делать) / reflection (чего избегать)

Всё это работает на коде (AutoGen), а не в одном промпте.

🚀

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

В статье промптов нет: метод реализован кодом. Ниже ручная версия идеи для чата или агента, это моя адаптация, не оригинал.

Задача: Вы руководите интернет-магазином. Три сотрудника работают с ассистентом (Claude, ChatGPT) по трём площадкам: Wildberries, Ozon и собственный сайт на Битриксе. У каждой свои правила и свои глюки. Хочется, чтобы удачный приём с одной площадки помогал на другой. При этом нельзя тащить туда чужие артикулы, ссылки и особенности кабинета.

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

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

ЛОКАЛЬНЫЕ (только для Ozon, с конкретикой):
- артикулы, названия полей кабинета, конкретные ошибки и их тексты.

КАНДИДАТЫ В ОБЩУЮ ПАМЯТЬ (без привязки к Ozon):
- замени конкретные названия на роли: «площадка», «кабинет», «поле категории»;
- обязательно укажи, КОГДА схема применима (условия);
- укажи шаги и результат;
- отметь для каждой: подтвердилась / не подтвердилась / не было прогресса.

Если схему нельзя отделить от Ozon — оставь её только в локальных.

Лог: {лог_сессии}

Результат: Модель выдаст два списка. В локальном будут детали, привязанные к Ozon. В списке кандидатов будут короткие схемы вида «условие → шаги → исход» без названий площадки и полей. Рядом с каждой появится пометка об исходе. Записи, которые нельзя очистить, останутся только локальными.

🧠

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

Слабость. Если складывать весь опыт в одну кучу, агент получает либо слишком конкретные записи, либо слишком расплывчатые. Конкретные тянут детали другой среды: чужой путь, чужой объект. Расплывчатые не говорят, что делать дальше. Опыт, который сработал один раз, может быть случайностью.

Сильная сторона LLM — переписывать записи под заданную структуру. Она умеет заменять конкретику ролями и формулировать условия «когда применимо». Она также неплохо проверяет, не противоречит ли запись текущей ситуации.

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

Рычаги: - Лимит записей (в статье 5 локальных + 5 глобальных) → уменьшите для коротких задач, увеличьте для долгих. - Порог подтверждения (в статье нижняя граница Вилсона ≥ 0,35 при уровне 0,05) → поднимите, если общая память засоряется, снизьте, если она пустая. - Три роли записей (grounding / workflow / reflection) → уберите «reflection», если не хотите, чтобы агент перестраховывался. - Условия применимости → чем строже, тем меньше переноса, но и меньше вреда.

📋

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

В статье готового промпта нет, он реализован кодом. Это ручной вариант того же принципа.

Промпт 1. Разбор сессии в записи (после каждой сессии):


Ты — архивариус опыта агента. Твоя задача — превратить лог работы в записи памяти двух видов:
локальные (с деталями среды) и переносимые (очищенные от деталей).



1. Каждая запись имеет тип: workflow (последовательность шагов), precondition (что должно быть истинно перед действием), repair (как исправили ошибку), failure (что не сработало), fact (конкретный факт).
2. Переносимой может быть только запись типа workflow, precondition, repair или failure.
3. Для переносимой записи: замени конкретные названия, ID, ссылки, имена на роли ({предмет}, {инструмент}, {площадка}).
4. Обязательно сохрани: условия применимости, последовательность действий, исход.
5. Если схему нельзя очистить от среды — оставь её локальной.
6. Для каждой переносимой записи пометь исход в этой сессии: ПОДТВЕРДИЛАСЬ / ПРОТИВОРЕЧИТ / НЕТ ПРОГРЕССА. Одна запись — один голос за сессию.



LOCAL:
- [тип] {запись с деталями}
GLOBAL_CANDIDATES:
- [тип] Когда: {условия} | Шаги: {действия} | Исход: {результат} | Голос: {ПОДТВЕРДИЛАСЬ/ПРОТИВОРЕЧИТ/НЕТ ПРОГРЕССА}


Лог сессии: {лог_сессии}
Среда: {название_среды}

Промпт 2. Продвижение в общую память (раз в неделю или после нескольких сессий):

Вот кандидаты в общую память из сессий {список_сред}.
1. Объедини записи, у которых совпадают тип, условия, шаги и исход.
2. Для каждой объединённой посчитай: сколько голосов ПОДТВЕРДИЛАСЬ, сколько ПРОТИВОРЕЧИТ.
3. В общую память включай запись, только если:
   — подтверждений не меньше 2 и противоречий нет, ИЛИ
   — подтверждений минимум 3 из 4 голосов.
4. Остальные оставь в списке «ждут подтверждения» с текущим счётом.
5. Удали из общей памяти записи, которые больше не проходят порог.

Кандидаты: {кандидаты}
Текущая общая память: {общая_память}

Пороги в промпте 2 — моя ручная прикидка под параметры статьи (расчёт нижней границы Вилсона). Это не цифры из статьи.

Промпт 3. Использование перед задачей:

Задача: {задача}. Текущая ситуация: {состояние}.
Из локальной памяти ({локальная}) и общей ({общая}) выбери не более 5 записей из каждой.
Отбрось записи, чьи условия противоречат текущей ситуации.
Собери три блока:
1. ГДЕ МЫ — факты и детали из локальной памяти.
2. КАК ДЕЙСТВОВАТЬ — схемы и предусловия.
3. ЧЕГО ИЗБЕГАТЬ — провалы и исправления.
Затем действуй.

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

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

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

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

⚠️

Ограничения

⚠️ Нужен код: в статье память собрана программно, на AutoGen. В обычном чате метод получится только в ручном варианте. Автоматического хранилища, ранжирования и подсчёта голосов там не будет.

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

⚠️ Очистка от деталей настраивается вручную: замена конкретного на роли опирается на сопоставление «предмет → роль», заданное под каждый бенчмарк. В новой области его придётся придумывать самому.

⚠️ Только симуляторы: проверяли на учебных средах: домашние задачи ALFWorld, планирование PDDL, проверка фактов FEVER. Переносимость на реальные рабочие процессы не показана.

⚠️ Не всегда лучший: на одной из слабых моделей MemCo в двух из шести замеров не был первым по точности. Часть текста статьи, включая ScienceWorld и разбор вклада отдельных частей, недоступна, поэтому какой из блоков важнее — неизвестно.

🔍

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

Авторы взяли четыре среды: ALFWorld (бытовые задачи в симуляции), PDDL (планирование), FEVER (проверка утверждений) и ScienceWorld. Каждому агенту дали свою среду: четыре агента для ALFWorld и PDDL, два для FEVER, десять для ScienceWorld. Память строили на одних задачах, а проверяли на других. Для ALFWorld отдельно проверяли знакомые и новые планировки комнат.

С MemCo сравнивали обычный промпт без памяти (ICL) и четыре конкурирующих подхода: A-Mem, MemRL, MemSkill и G-Memory. Тестировали три модели (Qwen3-4B, GPT-4o-mini, Qwen3-32B), по три прогона. Измеряли долю решённых задач и число шагов.

MemCo получил лучшую точность в 10 из 12 сочетаний «модель × задача» и самые короткие траектории в 9 из 12. Сильнее всего он выиграл на ALFWorld. У Qwen3-4B точность на новых планировках выросла с 46% до 83%, а шаги сократились с 22 до 14. У Qwen3-32B точность выросла с 80% до 97%, шаги — с 17,5 до 11,2. На FEVER у GPT-4o-mini точность выросла с 63% до 71%, а число шагов упало с 6,3 до 2,6.

Эффект сильнее у маленьких и средних моделей и на новых средах. Это вписывается в идею авторов: чужой опыт полезнее всего там, где модели самой не хватает знаний и где свои детали ещё не накоплены. Конкурент G-Memory на ALFWorld иногда выигрывал. Авторы объясняют это тем, что он не умеет отфильтровывать опыт, не подходящий под текущую ситуацию.

💡

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

🔧 Техника: ограничить число записей → меньше шума. В статье агент получает не больше 5 локальных и 5 глобальных записей. В ручном варианте добавьте в промпт 3 строку «не больше 5 из каждой памяти; если сомневаешься, бери меньше». Это защищает контекст от лишних советов.

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

Экстраполяция — файл правил агента. Идею можно перенести в CLAUDE.md: два раздела, «Локальное для проекта» и «Переносимые правила». Новое правило попадает во второй раздел только после того, как подтвердилось в двух разных проектах:

## Правила переноса
- В «Переносимые» добавляй правило, только если оно сработало минимум в двух разных проектах и не противоречило ни разу.
- У каждого правила пиши: «Когда: …» и «Не применять, если: …».
- Пути, имена сервисов и ключи — только в «Локальное».

Это моё продолжение идеи, в статье такого эксперимента нет.

🔗

Ресурсы

  • MemCo: Memory-Centric Collaboration for Generalizing LLM Agents to Unseen Environments
  • Авторы: Xinting Liao, Siyan Liu, Rabab K. Ward, Holger R. Roth, Xiaoxiao Li. The University of British Columbia, Vector Institute, NVIDIA
  • Код: https://github.com/SYannL/nvdamas
  • Сравнивали с: G-Memory, MemRL, MemSkill, A-Mem, Reflexion
  • Среды: ALFWorld, PDDL, FEVER, ScienceWorld

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

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

Парадокс: общая память вредит агентам, когда подтягивает опыт не того размера. Запись «чайник на второй полке» тащит чужие детали в новую среду. Запись «подготовь предмет» не подсказывает следующий шаг. Метод MemCo позволяет нескольким агентам в разных средах делиться опытом и не ломать друг другу работу. Фишка: в общую память идёт не сам опыт, а очищенная схема с условиями, когда она применима. Конкретный предмет заменяется ролью («предмет», «инструмент»). Запись пускают в общую память только после подтверждения в нескольких эпизодах. Одной удачи мало. Всё это работает на коде (AutoGen), а не в одном промпте.

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

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

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

Одна общая куча даёт два вида мусора. Слишком конкретные записи тянут чужой путь и чужой объект. Слишком расплывчатые не говорят, что делать дальше. Опыт, который сработал один раз, вообще может быть случайностью. LLM хорошо переписывает записи под заданную структуру. Она заменяет конкретику ролями и формулирует «когда применимо». Она же проверяет, не противоречит ли запись текущей ситуации. Запись проходит двойное сито: сначала очистка от деталей, потом голоса разных эпизодов и агентов. Случайная удача не проходит. Чужие артикулы и чужие полки тоже. Честно: громких цифр вроде «+40%» в доступной части статьи нет. На одной из слабых моделей MemCo в двух из шести замеров не стал первым. Проверяли только на симуляторах: домашние задачи ALFWorld, планирование PDDL, проверка фактов FEVER. Рычаги: - Лимит записей (в статье 5 локальных + 5 глобальных). Для коротких задач уменьшите, для долгих увеличьте. - Порог подтверждения (в статье нижняя граница Вилсона ≥ 0,35). Общая память засоряется — поднимите порог. Она пустая — снизьте. - Три блока контекста. Уберите «чего избегать», если агент начинает перестраховываться. - Условия применимости. Чем строже условия, тем меньше переноса и тем меньше вреда.

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

Несколько агентов или несколько сессий в похожих, но разных средах → перенос приёмов между площадками, клиентами или проектами, особенно когда в каждой среде свои артикулы, ссылки и глюки. НЕ подходит, если у вас одна-две сессии: общая память останется пустой. Без кода метод получится только в ручном варианте, без автоматического хранилища, ранжирования и подсчёта голосов. Очистку от деталей («предмет → роль») в статье задавали вручную под каждый тест. В новой области её придётся придумывать самому.

Мини-рецепт

1. Заведи две стопки: локальные записи (с деталями среды) и кандидаты в общую память (без деталей).
2. Разбирай сессию сразу: после работы скорми лог ассистенту и попроси выписать записи двух видов.
3. Режь привязку: конкретные названия, ID и ссылки замени ролями: <роль>площадка, <роль>кабинет, <роль>поле категории.
4. Сохрани главное: условия применимости, шаги и исход. Если схему не отделить от среды, оставь её локальной.
5. Ставь пометку: для каждой схемы отметь «подтвердилась / противоречит / нет прогресса». Один голос на сессию.
6. Продвигай по голосам: раз в неделю переноси в общую память только записи с 2+ подтверждениями и без противоречий. Эти пороги моя ручная прикидка, в статье их нет.
7. Перед новой задачей подгрузи до 5 записей из каждой стопки. Выкинь те, чьи условия не подходят к ситуации. Собери три блока: «где мы», «как действовать», «чего избегать».

Быстрый старт, вставь в чат: Вот шаблон «разбор сессии → записи памяти». Адаптируй под мою задачу: {твоя задача}. Задавай вопросы, чтобы заполнить поля.

Примеры

[ПЛОХО] : Запомни всё, что мы сегодня делали на Ozon, и используй это на Wildberries (В общую кучу попадают чужие артикулы, названия полей и тексты ошибок. На другой площадке ассистент будет искать то, чего там нет.)
[ХОРОШО] : Ниже лог моей сессии по загрузке карточек на Ozon. Выпиши записи двух типов. ЛОКАЛЬНЫЕ (только для Ozon): артикулы, названия полей кабинета, тексты ошибок. КАНДИДАТЫ В ОБЩУЮ ПАМЯТЬ (без привязки к Ozon): замени названия ролями «площадка», «кабинет», «поле категории»; обязательно укажи, КОГДА схема применима; укажи шаги и результат; отметь: подтвердилась / не подтвердилась / не было прогресса. Если схему нельзя отделить от Ozon, оставь её только в локальных. Лог: {лог_сессии} Результат: артикулы и тексты ошибок остаются в локальном списке. В кандидатах появляются короткие схемы вида «условие → шаги → исход» без названий площадки. Их можно показать ассистенту, который работает с Wildberries или Битриксом.
Источник: MemCo: Memory-Centric Collaboration for Generalizing LLM Agents to Unseen Environments
ArXiv ID: 2610.07376 | Сгенерировано: 2026-10-07 05:10

Проблемы LLM

ПроблемаСутьКак обойти
Общий опыт вредит, если записан на неподходящем уровне детализацииТы даёшь модели накопленный опыт из прошлых задач или других сред. Слишком конкретная запись ("чайник на второй полке", "поле X в кабинете Y") тащит чужие детали в новую ситуацию. Модель повторяет чужие ошибки. Слишком общая запись ("сначала подготовь предмет") не подсказывает следующий шаг. Польза нулевая. Проблема касается примеров в запросе, заметок, памяти агента и любых баз знанийХрани опыт на двух уровнях. Детали среды оставляй в отдельной локальной записи. В общую запись пускай только очищенную схему: "условие → шаги → исход". Конкретные названия замени ролями: "площадка", "инструмент", "предмет". Условия применимости обязательно сохрани

Методы

МетодСуть
Двухуровневая память с очисткой и проверкой — опыт переносится без чужих деталейЧто делать. После каждой сессии попроси модель разложить опыт на два списка. Первый: локальные записи с конкретикой (названия, ID, тексты ошибок). Второй: кандидаты в общую память. У кандидата заменяй имена ролями ({площадка}, {инструмент}). Оставляй формат Когда: условия \| Шаги: действия \| Исход: результат. Для каждой записи проси пометку: подтвердилась, противоречит или нет прогресса. Если схему нельзя отделить от среды, она остаётся локальной. Продвижение. Запись попадает в общую память только после нескольких независимых подтверждений без противоречий. Один удачный раз может быть случайностью. Использование. Перед задачей бери несколько записей из каждого уровня (около 5). Отбрось те, чьи условия не совпадают с текущей ситуацией. Собери контекст из трёх блоков: "где мы" (локальные факты), "как действовать" (схемы), "чего избегать" (провалы и исправления). Почему работает: модель хорошо переписывает текст под заданную структуру и заменяет конкретику ролями. Условия применимости превращают запись в правило, которое можно проверить. Порог подтверждений отсекает случайные успехи. Когда да: несколько похожих сред или проектов, много сессий, опыт нужно переносить. Когда нет: одна-две сессии (общая память останется пустой), задача разовая. В чате всё делается вручную, без автоматического хранилища и подсчёта голосов
📖 Простыми словами

MemCo: Memory-Centric Collaboration for GeneralizingLLMAgentsto Unseen Environments

arXiv: 2610.07376

LLM-агенты моментально тупеют в новых средах, потому что их память обычно устроена как свалка. Если валить весь опыт в одну кучу, модель либо тащит мусор из старых задач, либо выдаёт бесполезную абстрактную кашу. Архитектура MemCo решает эту проблему разделением опыта на два независимых слоя: локальную память под сиюминутные детали и глобальную память под чистые рабочие эвристики. В итоге агент не путает контекст чужой среды с общей логикой мира.

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

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

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

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

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

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

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