TL;DR
Большинство AI-систем с памятью работают как пассивная стенография: модель видит диалог и записывает всё подряд. MemReader вводит другой подход — перед тем как что-либо сохранить, модель отвечает на три вопроса: стоит ли это помнить, понятно ли без контекста, достаточно ли полная информация. На основе ответов выбирается одно из четырёх действий: записать, придержать, поискать в памяти или проигнорировать.
Главная проблема пассивных систем — память засоряется. Модель запоминает "привет, как дела?" с той же старательностью, что и "я хочу уволиться через три месяца". При длинных проектах контекст превращается в свалку: важное тонет в незначительном, устаревшая информация конфликтует с новой, местоимения висят без привязки к конкретному.
MemReader решает это через явный цикл "подумать → выбрать действие → получить результат": сначала модель рассуждает о ценности, полноте и однозначности информации, потом выбирает из четырёх конкретных операций. Принцип — не "записать всё", а поддерживать актуальное состояние.
Схема метода
ВХОД: новое сообщение от пользователя
ШАГ 1 — Оценка (3 вопроса, в одном блоке рассуждений):
Q1: ЦЕННОСТЬ — это важное (решение, предпочтение, ограничение)?
Или болтовня / общие знания / уточняющий вопрос?
Q2: ОДНОЗНАЧНОСТЬ — есть ли местоимения / ссылки без контекста?
Нужна история, чтобы понять смысл?
Q3: ПОЛНОТА — достаточно данных для осмысленной записи?
Или нужно дождаться продолжения?
ШАГ 2 — Действие (4 варианта, на основе оценки):
ADD → ценное + полное + однозначное → записать в долгосрочную память
BUFFER → ценное, но неполное/неоднозначное → придержать до уточнений
SEARCH → есть ссылка на прошлое → сначала найти контекст, потом решить
IGNORE → низкая ценность → пропустить, не сохранять
Оба шага выполняются в одном промпте. Цикл повторяется при каждом новом сообщении.
Пример применения
Задача: Вы ведёте долгий проект с Claude — разрабатываете контент-стратегию для телеграм-канала. Разговор идёт уже несколько сессий: обсуждали аудиторию, потом рубрики, потом спорили о тональности. Claude начинает путаться: что финальное решение, а что черновик.
Промпт:
Ты — менеджер памяти для нашего проекта по контент-стратегии телеграм-канала.
После каждого моего сообщения выполняй оценку перед тем, как что-то сохранить:
Q1 ЦЕННОСТЬ: Это решение, предпочтение, ограничение или дедлайн?
Или это вопрос, уточнение, болтовня, общеизвестный факт?
Q2 ОДНОЗНАЧНОСТЬ: Есть ли "это", "он", "мы решили" без привязки к конкретному?
Нужен контекст, чтобы понять смысл?
Q3 ПОЛНОТА: Достаточно ли данных для чёткой записи прямо сейчас?
Или нужно дождаться продолжения?
На основе ответов выбери одно действие:
ADD → ценное + полное + однозначное
→ добавь в [ПАМЯТЬ]: {ключ}: {значение}
BUFFER → ценное, но неполное или неоднозначное
→ добавь в [БУФЕР]: {запись} | ждёт уточнения: {что именно}
SEARCH → есть ссылка на прошлое решение
→ сначала проверь [ПАМЯТЬ], потом ADD или BUFFER
IGNORE → низкая ценность → пропусти, ничего не сохраняй
После каждого сообщения показывай актуальное состояние:
[ПАМЯТЬ]: ...
[БУФЕР]: ...
Стартовое состояние:
[ПАМЯТЬ]: пусто
[БУФЕР]: пусто
Первое сообщение: мы решили, что канал будет для малого бизнеса, не для корпораций
Результат: Модель покажет внутреннее рассуждение по трём вопросам: это ценное (решение по аудитории) + однозначное (конкретная формулировка) + полное (достаточно для записи) → выберет ADD. В [ПАМЯТЬ] появится запись вида "целевая аудитория: малый бизнес, не корпорации". При следующих сообщениях модель будет явно показывать весь цикл: что оценивает, почему выбирает то или иное действие, что уходит в буфер. Итог — структурированный живой реестр решений вместо хаотичной истории чата.
Почему это работает
Без инструкций LLM работает как ксерокс. Модель генерирует следующий токен, не рефлексируя над тем, что стоит помнить, а что нет. Попросишь "запомни важное" — она запомнит то, что статистически чаще помечалось важным в обучающих данных. Это не то же самое, что ваш реальный приоритет в конкретном проекте.
Модель хорошо следует явным алгоритмам ветвления. Если задать структуру "если X → делай Y, иначе → делай Z" с конкретными условиями — она следует ей надёжно. Три вопроса + четыре действия — это такой алгоритм. Он убирает двусмысленность: не "решай сам", а "пройди по этим шагам".
Четыре выхода вместо одного создают систему предохранительных клапанов. Когда у модели только один вариант (записать) — она записывает всё. Когда есть BUFFER — она может честно придержать неполное. Когда есть IGNORE — явно обозначить, что выбросила. Рассуждение становится прозрачным, и вы видите что происходит с каждым кусочком информации.
Рычаги управления: - Категории для Q1 → добавьте свои типы важного: "финансовые ограничения", "дедлайны", "договорённости с клиентом", "стоп-слова" - Формат записи в ADD → задайте шаблон: дата + ключ + значение + уровень уверенности - Условие сгорания буфера → укажите через сколько сообщений буфер должен требовать уточнения или удаляться - Триггер для SEARCH → добавьте ключевые слова, при которых модель обязана проверить историю: "мы договорились", "как я говорил", "по-прежнему"
Шаблон промпта
Ты — менеджер памяти для нашего проекта: {описание_проекта}.
После каждого сообщения выполняй оценку:
Q1 ЦЕННОСТЬ: Это {список_важных_категорий}?
Или это вопрос / уточнение / болтовня / общеизвестный факт?
Q2 ОДНОЗНАЧНОСТЬ: Есть ли местоимения или ссылки без контекста?
Q3 ПОЛНОТА: Достаточно ли данных для чёткой записи прямо сейчас?
Выбери действие:
ADD → ценное + полное + однозначное
→ [ПАМЯТЬ]: {ключ}: {значение}
BUFFER → ценное, но неполное или неоднозначное
→ [БУФЕР]: {запись} | ждёт: {что уточнить}
SEARCH → есть ссылка на прошлое
→ проверь [ПАМЯТЬ], потом ADD или BUFFER
IGNORE → низкая ценность → пропусти
После каждого сообщения показывай:
[ПАМЯТЬ]: ...
[БУФЕР]: ...
Стартовое состояние:
[ПАМЯТЬ]: {начальное_состояние_или_пусто}
[БУФЕР]: {начальный_буфер_или_пусто}
Плейсхолдеры:
- {описание_проекта} — тема и цель: "разработка стратегии для телеграм-канала", "подготовка к переговорам с инвесторами"
- {список_важных_категорий} — что считать важным: "решение, ограничение, предпочтение, дедлайн, договорённость"
- {начальное_состояние} — если продолжаете старую сессию, вставьте накопленную память
🚀 Быстрый старт — вставь в чат:
Вот шаблон менеджера памяти. Адаптируй под мою задачу: {опиши свой проект}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про тип проекта и что считать "важным" — потому что без этого Q1 работает на общих критериях, а не на ваших конкретных приоритетах.
Ограничения
⚠️ Только для длинных проектов: Метод окупается при работе на 10+ сообщений. Для разовых вопросов и ответов — избыточен.
⚠️ SEARCH ограничен текущей сессией: Полную силу метод раскрывает только с системами долгосрочной памяти (Claude Projects, ChatGPT с памятью). В обычном чате SEARCH видит только историю текущего разговора.
⚠️ Реестр памяти разрастается: При очень длинных разговорах сам блок [ПАМЯТЬ] начинает занимать место в контексте. Периодически просите модель сжать его в компактный список.
⚠️ Q1 требует калибровки: Если плохо прописали категории важного — модель пропустит нужное или сохранит лишнее. Потратьте 2 минуты на список приоритетных типов данных для своего проекта.
Ресурсы
MemReader: From Passive to Active Extraction for Long-Term Agent Memory Авторы: Jingyi Kang, Chunyu Li (равный вклад), Ding Chen, Bo Tang, Feiyu Xiong, Zhiyu Li Организации: MemTensor (Shanghai) Technology; China Telecom Research Institute Связанные системы: Mem0, Zep, MemOS, MemGPT (фон, на котором строится критика) Базовые модели: Qwen3-0.6B, Qwen3-4B
