Почему AI забывает
Обычный AI-чат забывает не потому, что модель слабая, а потому, что окно контекста — это оперативная память, а не хранилище. Всё, что вы сказали, живёт внутри одной беседы. Беседа закончилась — доска стёрта.
Забывания на самом деле два, и лечатся они по-разному.
| Внутри беседы | Между беседами | |
|---|---|---|
| Когда случается | Разговор длиннее окна, ранние реплики вытесняются | Новый чат — модель не знает о вас ничего |
| Как выглядит | «Мы же договорились двадцать сообщений назад» | «Расскажи ещё раз, кто ты и над чем работаешь» |
| Чем лечится | Окно побольше | Окно не помогает вообще |
Второе — настоящая проблема. Окно на 200 тысяч токенов даёт большую доску на одну сессию; в момент её закрытия доска стирается целиком, и увеличение доски этого не меняет. Нужен другой механизм: не «держать всё в голове», а записывать отдельно и доставать по надобности.
Память перестала быть отличием. У Claude она с 2 марта 2026 доступна на всех тарифах, включая бесплатный, и туда же завезли перенос контекста из других чатов. ChatGPT с июньского обновления синтезирует память фоново, не дожидаясь команды «запомни». Формулировка «наш ассистент вас помнит» в 2026 году не сообщает ничего.
Интересный вопрос сместился: не помнит ли, а что именно, как долго и что забывает. Про это почти никто не пишет — а именно здесь и находятся все инженерные решения.
Память — это про забывание
Звучит парадоксально, но система, которая помнит всё, бесполезна ровно так же, как система, которая не помнит ничего.
Память, которая только растёт, через год превращается в свалку: нужный факт не находится среди тысячи неважных, а счёт за токены растёт линейно по длине жизни аккаунта. Память, которая забывает слишком рьяно, теряет то, ради чего заводилась. Вся инженерия здесь — про баланс между этими двумя способами сломаться.
Отсюда четыре задачи, которые обязана решать любая честная реализация:
- Что вообще записывать — фильтр на входе.
- Как долго держать — забывание со временем.
- Что делать с повторами — дедупликация.
- Сколько показывать модели — бюджет выдачи.
Дальше — как каждая решена у нас, с числами. Числа приведены не для внушительности: без них разговор о памяти остаётся маркетингом.
1. Что записывать: три вида и фильтр на входе
Записи делятся на три вида, и вид определяет, как долго запись живёт.
| Вид | Что это | Пример | Полураспад |
|---|---|---|---|
| Факт | Устойчивое свойство: «что верно» | «Работает в финтехе», «предпочитает короткие ответы» | 180 дней |
| Эпизод | Сжатая память о разговоре: «что было» | «Обсуждали переход на новый тариф, отложили до осени» | 30 дней |
| Процедура | Выученный порядок действий | «Письма клиенту всегда начинать с итогов, потом детали» | 365 дней |
Сроки разные не на глаз. Факт о человеке остаётся верным месяцами; деталь позавчерашнего разговора — нет; выученный порядок действий держится дольше всего, потому что его подтверждает каждое повторение сценария.
Перед записью стоит структурный фильтр, намеренно грубый и консервативный: дешевле не запомнить лишнее — человек повторит, — чем засорить память навсегда. Он не решает, правда ли утверждение: это работа модели, которая факт извлекла. Он смотрит только на признаки, проверяемые без сети.
| Отсекается | Почему |
|---|---|
| Короче 12 символов | «Да», «ок», «спасибо» — записи без содержания |
| Длиннее 600 символов | Это уже не факт, а пересказ; в выдаче он вытеснит десяток фактов |
| Вежливости | «Привет», «спасибо», «пока» — реплика, а не содержание |
| Сиюминутное | «Сейчас», «сегодня», «в данный момент» — верно пять минут и вредно завтра |
Последняя строка — самая недооценённая. Запомнить «сейчас работаю над релизом» значит через месяц уверенно сообщить человеку позавчерашнее состояние дел как текущее. Это хуже, чем не помнить ничего: неверный контекст выглядит как знание.
2. Как долго держать: живучесть по четырём признакам
Запись не удаляется по таймеру — у неё считается живучесть, и ниже
порога 0,15 она перестаёт участвовать в выдаче. Порог не нулевой
намеренно: экспонента до нуля не доходит никогда, и без порога забывание не
наступало бы вовсе.
Живучесть складывается из четырёх признаков, и каждый отвечает за свой вид ошибки:
- Возраст — иначе разовая оговорка живёт вечно наравне с профессией.
- Вид записи — деталь разговора устаревает быстрее свойства человека.
- Подтверждения — сказанное трижды забывать нельзя, даже если давно. Каждое повторение продлевает полужизнь.
- Важность — «у меня аллергия на пенициллин» не должно выветриваться в один срок с «предпочитает тёмную тему».
Важность умножала саму живучесть. «Аллергия» и «тёмная тема» на девяноста днях давали 0,167 против 0,125 — обе забывались в один и тот же день, просто с разной высоты
Важность продлевает СРОК, а не поднимает значение: при максимальной важности полужизнь удваивается. Это единственное, что действительно означает «забывается медленнее»
Разница между «важное держится дольше» и «важное начинает с более высокой отметки» видна только на графике, но именно она определяет поведение системы через полгода. Во второй схеме вся память забывается синхронно, и важность влияет лишь на порядок в выдаче за день до общего обнуления. Такую ошибку невозможно заметить на демонстрации — она проявляется у пользователя, который прожил с продуктом сезон.
Отдельный сигнал — явная просьба. Когда человек говорит «запомни, что…», важность выставляется в максимум: короткая бытовая фраза, о которой попросили прямо, не должна выветриться наравне со случайной репликой.
3. Повторы: дубль — это не мусор, а подтверждение
Дубли появляются сами: человек повторяет одно и то же разными словами, и каждая беседа добавляет копию. Через месяц выдача на «где я работаю» состоит из пяти вариантов одной фразы, вытеснивших всё остальное.
Ключевое решение: повторение — сигнал важности, а не повод выбросить. Слияние увеличивает счётчик подтверждений и обновляет момент последнего обращения, а не молча теряет одну из копий. Сравнение идёт на двух уровнях: точное по нормализованному тексту — ловит буквальные повторы и стоит ноль, — и близкое по векторам, которое ловит «работаю в финтехе» против «моя работа — финтех».
На 0,8 в один куст слипались «люблю кофе» и «люблю чай» — противоположные по смыслу утверждения, и слияние стирало одно из них. Порог поднят до 0,92 именно после этого: лучше оставить два похожих факта, чем молча заменить один другим.
4. Что происходит, когда памяти слишком много
Вспоминание конкурирует за место с самим разговором. Без потолка память ведёт себя как утечка: чем дольше живёт аккаунт, тем длиннее системный слой, тем дороже каждый ход и тем меньше остаётся окна под собственно диалог.
Поэтому у блока памяти два предела сразу:
| Предел | Значение | Зачем нужен отдельно |
|---|---|---|
| Объём | ~2000 символов (примерно 500–700 токенов) | Блок стоит в КАЖДОМ ходе, и его цена умножается на длину беседы |
| Количество | 12 записей | Двадцать коротких фактов формально влезают, но модель перестаёт их различать — выдача превращается в шум |
То есть в промпт попадает не вся ваша память, а десяток самых уместных записей. Это не экономия ради экономии: ограничение — условие того, что ассистент вообще продолжит работать через год.
Есть и вторая половина задачи, менее очевидная. Память пишет реплику целиком — «посчитай, сколько времени заняли мои встречи за месяц» ложится в базу как есть. На горячем пути это разумно: лишний вызов модели на каждом ходу удвоил бы цену диалога. Но накопленное из-за этого состоит не из фактов о человеке, а из его команд, и выдача тратит места на разовые просьбы.
Поэтому раз в сутки по накопленному проходит отдельный разбор и для каждой записи решает: выбросить (разовая просьба, устаревшая мелочь) или переписать в самостоятельный факт — «работает над собственной RAG-системой». Переписанное переиндексируется, иначе поиск продолжил бы находить старый текст. Работа не на горячем пути, поэтому её делает модель попроще и подешевле, чем та, что ведёт диалог.
Что мы намеренно не запоминаем
Столь же важно, что в память не попадает.
- Вежливости и односложные реплики — отсекаются фильтром.
- Сиюминутные состояния — «сейчас», «сегодня», «в данный момент».
- Длинные пересказы — режутся до записи, иначе выдача превращается в стену текста.
- Сомнительное — фильтр работает fail-closed: если запись не проходит проверку однозначно, она не сохраняется.
Отдельно: разговоры в режиме no-logs не сохраняются вовсе — ни транскрипт, ни ответы модели, — поэтому и памяти из них не возникает.
Как этим управлять
Память бесполезна, если её нельзя посмотреть и поправить. Список воспоминаний доступен через ассистента, как и удаление конкретной записи. Удаление — необратимое действие, поэтому оно всегда требует подтверждения и показывает серверный предпросмотр охвата: сколько именно записей будет стёрто, посчитано по реальным аргументам, а не пересказано моделью. Механика подтверждений разобрана в статье про агента, который действует.
Списка, впрочем, мало. Несколько десятков строк вида «работает в финтехе», «просил отвечать короче», «обсуждали миграцию» никто не читает целиком — а вопрос, с которым человек открывает раздел, звучит иначе: каким Leo меня видит. На него отвечает сводка: тот же набор записей, пересказанный связным абзацем. Пересчитывается она не по расписанию, а по содержимому — пока память не менялась, текст отдаётся из кэша; появилась запись — следующее открытие соберёт сводку заново.
Рядом живёт личный контекст — короткий текст о вас, который вы пишете сами и который подставляется в каждый запрос. Разница простая: контекст вы контролируете вручную, память набирается сама и забывается по правилам выше.
Ограничения и компромиссы
Четыре места, где решение сознательно неидеально.
Важность оценивается грубо. Без обращения к модели содержательность приближается длиной текста: очень короткие записи чаще обрывки, очень длинные — пересказ. Точнее в чистом домене не сделать, а тянуть туда модель — значит платить за каждую запись.
Фильтр сиюминутного пришлось учить каждому языку отдельно. Сначала он знал только русский и английский, и на остальных четырнадцати «сейчас работаю над релизом» спокойно уходило в память. Чинилось это не переводом списка слов: в китайском, японском и тайском границы слова нет в принципе, а в деванагари и арабском комбинирующие знаки не считаются буквой, поэтому обычная проверка «отдельное ли это слово» там не срабатывает никогда. Пришлось развести два списка — со словесной границей и без неё. Сейчас покрыты все шестнадцать языков.
Двенадцать записей — это мало для длинной истории. Порог выбран в пользу качества выдачи, но на большом объёме памяти какие-то уместные факты в промпт не попадут.
Забывание необратимо. Запись, ушедшая ниже порога, не возвращается сама. Если факт снова стал важен, его нужно подтвердить в разговоре — тогда счётчик подтверждений продлит ему жизнь.
Частые вопросы
Чем память отличается от окна контекста?
Окно контекста — рабочая память одной беседы: всё, что в нём есть, доступно сейчас и исчезает с концом сессии. Долговременная память хранится отдельно от беседы и достаётся по надобности в следующих. Увеличение окна решает забывание внутри разговора и никак не решает забывание между разговорами.
Почему AI забывает, если у него окно на 200 тысяч токенов?
Потому что размер окна отвечает за один разговор. Новая беседа начинается с пустой доски независимо от того, насколько доска большая.
Что именно ассистент запоминает обо мне?
Устойчивые факты, сжатые эпизоды прошлых бесед и выученные порядки действий. Не запоминаются вежливости, односложные реплики и сиюминутные состояния.
Можно ли попросить запомнить что-то конкретное?
Да, и явная просьба — сильнейший сигнал: такой записи выставляется максимальная важность, поэтому короткая бытовая фраза не выветрится наравне со случайной репликой.
Как долго живёт воспоминание?
Зависит от вида и от того, подтверждалось ли оно. Базовая полужизнь: 180 дней у факта, 30 у эпизода, 365 у процедуры. Каждое повторение продлевает срок, высокая важность удваивает его.
Могу ли я удалить то, что ассистент обо мне помнит?
Да, поштучно и с подтверждением. Перед удалением показывается, сколько записей будет стёрто — это число считает сервер, а не модель.
Что с этим делать
Если вы выбираете ассистента с памятью, спрашивайте не «помнит ли он», а три вещи: что он отказывается запоминать, как быстро забывает и сколько попадает в промпт за раз. Продукт, у которого нет ответов на эти вопросы, скорее всего просто копит всё подряд — и вы увидите последствия через полгода, а не на демонстрации.
Наши ответы — выше, с числами. Посмотреть, как это работает на вашем контексте, можно за один разговор: заведите аккаунт, расскажите ассистенту о себе пару фактов и вернитесь через день в новой беседе.