Забывание в длинном чате · механика и практика
Нейросеть забывает контекст: 2 причины и что делать
Ты сказал боту правило в начале разговора, он час его держал, а потом как будто забыл. Это не глюк и не капризы конкретной модели: внутри длинного чата с историей происходит одна из 2 вещей - либо старые сообщения физически сжимаются в короткий пересказ, либо нужная инструкция оказывается зажата где-то в середине огромного текста, а модели надёжнее держат начало и конец
К концу статьи ты будешь знать: что именно происходит с текстом внутри длинного разговора, чем сжатие истории отличается от простой «забывчивости», какие правила переживают это сжатие, а какие теряются первыми, и что сделать уже сегодня, чтобы твои инструкции держались дольше одного вечера. Я лично прогнал эксперимент 05 сентября 2026 года и покажу его честный результат - без округления в пользу красивой истории. Если тебе нужно, что именно писать в файле правил - у меня есть отдельный разбор 4 правил Karpathy для CLAUDE.md, здесь же речь про другое: почему любое правило, даже хорошо написанное, может исчезнуть из памяти бота на середине разговора
2 причины забывания: сжатие истории стирает сказанное вслух, а позиция инструкции в середине текста снижает точность больше чем на 30% даже без сжатия. Открой новый чат, как только заметишь потерю правила, и держи ключевые инструкции не в реплике, а в отдельном файле памяти (CLAUDE.md в Claude Code, кастомные инструкции в других системах): такой файл перечитывается заново после каждого сжатия, а сказанное просто вслух - нет. Дальше в статье - что именно происходит внутри чата и мой собственный прогон на живом примере
Что на самом деле происходит внутри длинного чата
У любой нейросети есть окно - место, куда помещается весь текст разговора разом: твои сообщения, ответы бота, файлы, которые он читал. У модели, на которой работает Claude Code, это окно держит 200 000 токенов - это примерно 150 000 слов, то есть целая толстая книга текста. Пока разговор в это окно помещается, всё идёт как обычно: и первое твоё сообщение, и сотое лежат внутри одного окна одновременно
Проблема начинается, когда разговор перестаёт помещаться. У бота есть ровно два выхода из этой ситуации, и они принципиально разные
Первый - сжатие истории (компакция). Старые сообщения не выбрасываются молча, а пересказываются одним коротким текстом, который заменяет собой десятки исходных реплик. Это как если бы секретарь час записывал совещание дословно, а потом свернул всё в три абзаца пересказа - смысл в целом сохранён, но точные формулировки потеряны, а какие-то детали пересказчик посчитал неважными и выкинул
Второй - инструкция «потеряна в середине». Даже если сжатия ещё не было, а окно просто очень длинное, модели надёжнее держат начало и конец разговора, чем его середину. Правило, сказанное на пятой минуте часового разговора, физически лежит в контексте, но модели труднее до него дотянуться, чем до того, что было сказано только что
Это две разные причины одного и того же симптома «бот тупеет к середине разговора» - и лечатся они по-разному
Почему сжатие стирает именно правила, а не факты
Официальная документация Claude Code прямо объясняет, что происходит при сжатии истории, и там есть таблица «что выживает после компакции». Смысл в одной фразе: выживает то, что физически лежит ФАЙЛОМ на диске и перечитывается заново, а не то, что было просто сказано словами в разговоре
Вот что перечитывается заново после сжатия, а что уходит в общий пересказ вместе со всей остальной историей (дословный перевод таблицы документации):
| Что было в разговоре | Что происходит после сжатия |
|---|---|
| Файл правил проекта (CLAUDE.md) | Перечитывается заново с диска |
| Заметки, которые бот сохранил сам о тебе | Перечитываются заново с диска |
| План, составленный заранее | Перечитывается заново с диска |
| Файлы, которые бот открывал по ходу работы | Перечитываются заново, но только 5 последних |
| Правило, просто сказанное тобой в реплике | Пересказывается вместе со всей остальной историей |
Таблица прокручивается вбок →
Смысл в одной строке: файл - это адрес, по которому бот приходит заново и читает исходный текст. Реплика в чате - это просто часть истории, и при сжатии она превращается в чей-то пересказ вместе со всем остальным. Пересказ может сохранить общую идею («пользователь просил быть кратким»), но потерять точную формулировку («не больше двух предложений на ответ») - а для правила именно точная формулировка и была всем смыслом
Официальная справка по самому файлу правил добавляет важную оговорку: даже файл - это не железная команда. «Claude reads it and tries to follow it, but there's no guarantee of strict compliance» - бот читает файл и старается следовать написанному, но гарантии стопроцентного соблюдения нет, особенно если формулировка расплывчатая или правила в разных местах противоречат друг другу. Файл сильно надёжнее устной реплики, но не абсолютная гарантия
Сколько теряется на самом деле - и почему круглая цифра «83%» неточная
Ходит популярная формулировка «83% инструкций теряются при сжатии контекста» - она недалека от правды, но подана нечестно: без ссылки на источник и в перевёрнутом виде. Я нашёл первоисточник - научную работу под названием «Lost in Compaction: Evaluating Side-Constraint Loss under Context Compaction» (Zhiqi Wang, Yichi Zhang, Dongwon Lee, Yuchen Yang, опубликована в конце июля 2026 года). Дословная цифра оттуда другая и сформулирована как раз наоборот - не через потери, а через то, что осталось:
«Current compactors retain only 17% of injected SCs on average» - действующие механизмы сжатия сохраняют в среднем только 17% явно заданных пользователем ограничений (правил вида «не делай X, пока я не разрешу»). Если считать в обратную сторону, теряется около 83% - число почти совпадает с ходящей по сети формулировкой, но у неё нет ни автора, ни точной методики, а у 17% - есть
Авторы того же исследования предложили дополнительный модуль, который работает рядом с механизмом сжатия и поднимает удержание правил выше 90% - то есть проблема решаема, просто обычный сжиматель истории её пока не решает сам
Собственный прогон: я специально попробовал сломать своё же правило
Чтобы не пересказывать чужие цифры без проверки, я прогнал свой эксперимент 05 сентября 2026 года через Claude Code (версия 2.1.251, headless-режим, без файла правил - только устная инструкция в первом сообщении). Я задал правило текстом: «каждый твой ответ должен заканчиваться строкой ПРАВИЛО-ОК» - и стал наращивать разговор шумовыми репликами, чтобы посмотреть, на каком объёме правило перестанет соблюдаться
Честный результат, без натяжки в сторону красивой истории: на 46 000 токенов истории правило держалось. На 119 000 - держалось. На 173 000, почти у самой границы 200-тысячного окна - держалось тоже. Правило перестало срабатывать не из-за забывания, а потому что дальнейший прогон уткнулся в защитный фильтр на повторяющемся синтетическом тексте раньше, чем в реальное сжатие истории
Вывод из своего же прогона я делаю честно, а не притягиваю к красивому числу: пока сжатия НЕ произошло, инструкция держится практически до конца всего окна. Забывание - это не медленное угасание от одной лишь длины разговора, а конкретное событие: либо срабатывает сжатие истории, и тогда устная инструкция уходит в общий пересказ, либо инструкция оказывается похоронена в середине текста и эффект «потерян в середине» снижает точность больше чем на 30% - это отдельный, независимо изученный эффект, не связанный со сжатием напрямую
Мой прогон по шагам, реальные числа
- 46 000 токенов истории правило «ПРАВИЛО-ОК» в конце каждого ответа - держится
- 119 000 токенов истории правило держится, разговор уже больше половины окна
- 173 000 токенов истории правило держится на самом подходе к границе окна
- 215 000 токенов (за пределами окна) сессия остановилась защитным фильтром раньше, чем реальным переполнением - до сжатия так и не дошло
Честно отмечу и границу метода: командная строка Claude Code умеет разово запускать сжатие истории по команде, но в этом одноразовом автоматическом режиме такая команда не срабатывает как настоящее сжатие - она рассчитана на живой интерактивный разговор. Поэтому у меня не получилось за один присест показать сам МОМЕНТ сжатия вживую, только подтвердить официальным замером и документацией, что происходит в этот момент по устройству системы
Второй эффект без всякого сжатия: инструкция «потерялась в середине»
Даже если бот ни разу не сжимал историю, у длинного текста есть своя ловушка. Независимые исследования (в том числе научная работа про эффект «Lost in the Middle») показывают: модели держат начало и конец разговора надёжнее, чем середину, и точность падает больше чем на 30%, когда важная инструкция оказывается зажата где-то посередине длинного текста
Практический смысл простой: если ты дал важное правило в начале часового разговора, а потом сто раз переключался между темами, к концу это правило физически всё ещё «в окне» бота, но он реже до него «дотягивается» - оно похоронено между более свежими сообщениями. Смягчается это одним рабочим приёмом: повторять ключевую инструкцию заново каждые несколько сообщений, а не полагаться, что сказанного один раз хватит на весь разговор
| Позиция инструкции в разговоре | Насколько надёжно бот её держит |
|---|---|
| Начало разговора (первые сообщения) | Надёжно, особенно пока не случилось сжатие истории |
| Середина длинного разговора | Ненадёжно - падение точности больше 30% по независимым замерам |
| Конец разговора (последние сообщения) | Надёжно - самая свежая часть истории |
Таблица прокручивается вбок →
Шаг 1. Замечаешь первые признаки забывания
Бот вдруг перестаёт делать то, что ты явно просил в начале, хотя ты не менял правило и не отменял его. Часто это выглядит как: раньше отвечал коротко, теперь снова расписывается на полстраницы, или раньше держал определённый формат, а теперь сбился
Что увидишь: разница в поведении на пустом месте, без твоей команды её менять. Это тебе даёт сигнал, что дело не в капризе модели, а в устройстве памяти разговора
Шаг 2. Проверяешь, где живёт правило
Задай себе один вопрос: это правило я написал в отдельном файле проекта, или просто сказал вслух в одной из реплик? В Claude Code файл называется CLAUDE.md и кладётся в корень проекта - его можно открыть обычным текстовым редактором и посмотреть, что в нём записано
Что увидишь: если правило было только в реплике - его больше нигде не найти, кроме истории разговора. Это тебе даёт понимание, почему конкретно это правило пропало, а не абстрактное «нейросеть подводит»
Шаг 3. Переносишь ключевые правила в файл
Открой файл памяти проекта (в Claude Code это CLAUDE.md, в других системах - раздел кастомных инструкций или системный промпт) и коротко впиши туда правило, которое обязано держаться весь разговор. Официальная рекомендация - держать такой файл короче 200 строк: чем он компактнее, тем надёжнее бот его соблюдает
Что увидишь: после следующего сообщения бот снова начинает вести себя по правилу - файл был перечитан заново с диска, а не восстановлен по памяти из середины пересказанной истории. Это тебе даёт правило, которое переживает и сжатие истории, и переключение между темами внутри одного разговора
Шаг 4. Начинаешь новый чат под новую задачу
Если правило снова начало «плыть» посреди огромного разговора, не нужно уговаривать бота вспомнить - проще открыть новый чат. Новый чат начинается с чистого листа и заново читает файл правил проекта, вместо того чтобы тащить весь накопленный пересказ прошлого разговора
Что увидишь: с первого же сообщения в новом чате правило снова соблюдается точно, потому что оно только что было прочитано с диска, а не извлечено из середины давнего пересказа. Это тебе даёт быстрый и надёжный способ «перезагрузить» поведение бота без долгих объяснений заново
Как это устроено не только в Claude Code
Механика одна и та же у любого чат-бота с историей разговора, не только у Claude Code - просто название файла и команды у каждого свои. Разница только в деталях интерфейса
| Инструмент | Файл или раздел правил | Команда сжатия истории |
|---|---|---|
| Claude Code | CLAUDE.md в корне проекта | /compact |
| ChatGPT | кастомные инструкции в настройках | новый чат (сжатия нет, есть отдельная долгосрочная память) |
| Gemini | системные инструкции проекта | новый чат в рамках проекта |
| Другой ИИ-агент | системный промпт или файл конфигурации | зависит от инструмента, принцип тот же |
Таблица прокручивается вбок →
Смысл таблицы один: где бы ты ни работал, вопрос всегда один и тот же - лежит правило файлом, который система перечитывает заново, или оно живёт только в истории разговора, которую рано или поздно придётся сжать или начать заново
Что ещё стоит знать про формат разговора
Файл правил - это не единственный рычаг. Полный разбор того, как писать сам промпт по новым официальным правилам Anthropic и как ведут себя команды очистки и сжатия истории - в отдельном гайде Claude отвечает хуже, чем может: новые правила контекста, там детальнее про сами команды /clear и /compact. Если тебя интересует не память ВНУТРИ одного разговора, а долгосрочная память между разными чатами (например, в обычном приложении Claude, не в Claude Code) - это устроено иначе и подробно разобрано в гайде Память Claude в 2026: как посмотреть и стереть за 4 шага. А что конкретно писать внутри самого файла правил - 4 рабочих принципа с живым примером разобраны в гайде CLAUDE.md Karpathy: 210K звёзд и 4 правила простыми словами
Памятка: 4 шага, чтобы правило не терялось
Собери итог всей статьи в одну шпаргалку - на случай, если правило снова начнёт «плыть» посреди работы, а разбираться в механике заново будет некогда
Что ещё почитать про память и контекст нейросетей
Вся тема памяти и контекста нейросетей на сайте собрана в разделе Нейросети и ИИ-инструменты - там разборы конкретных инструментов, а не только механика вроде этой статьи
- Claude отвечает хуже, чем может: новые правила контекста - официальные правила промптинга для Claude 5, поведение команд
/clearи/compact - CLAUDE.md Karpathy: 210K звёзд и 4 правила простыми словами - что конкретно писать в файле правил, разбор одного вирального примера
- Память Claude в 2026: как посмотреть и стереть за 4 шага - долгосрочная память между разными чатами в приложении Claude, другой продукт и другой механизм
- CLAUDE.md: памятка для ИИ, 4 прогона и замок на важное - как завести свой файл правил с нуля, если его ещё нет
- Память ChatGPT: вскрыть и стереть свой профиль за 6 промптов - тот же вопрос долгосрочной памяти, но у другого сервиса
- Как усилить Claude в 10 раз: 7 настроек вместо промптов - рычаги настройки жёстче обычного текстового файла правил
- Claude Code установка из России: скачать, оплатить подписку Pro и Max - если инструмента, о котором эта статья, у тебя ещё нет
- Что делать после установки Claude Code: первые шаги - с чего начать сразу после установки
- Настройка Claude Code бесплатно: запуск с нуля и выбор модели по ОЗУ - бесплатный вариант запуска
- Как сделать свой Skill в Claude за 5 шагов: живой прогон 2026 - переиспользуемый навык вместо файла-инструкции на каждый раз
- Скиллы для Claude: что это, как установить и 7 готовых под контент - готовый набор навыков поверх обычных правил
- Claude MCP: как подключить свой первый сервис за 10 минут - подключение к внешним сервисам, третий рычаг поведения бота
- MCP сервер простыми словами: 12 готовых серверов на выбор - готовые варианты такого подключения
- Большой проект в Claude Code: схема из 4 звеньев без хаоса - как держать порядок, когда проект и его правила растут
- Мультиагентные системы простыми словами: 6 схем и 5 поломок - что происходит с памятью и правилами, когда ботов уже несколько
- Cursor или Claude Code в 2026 году: разница в 6 раз на тесте - сравнение с похожим инструментом
- Goose или Claude Code: 2 способа получить ИИ-агента в 2026 - ещё один похожий инструмент
- Ultracode в Claude Code: 2 способа включить режим workflow - заранее заданный порядок действий вместо разовой просьбы
- Агент говорит «готово»: 4 шага, чтобы доделать до конца - смежная болезнь длинной работы с ботом, не про память, но про то же доверие к его словам
- DeepSeek vs Claude Code в 2026: ИИ-кодинг дешевле в 5 раз - сравнение с другой моделью на похожих задачах
Источники
- arXiv: Lost in Compaction - Evaluating Side-Constraint Loss under Context Compaction - научная работа, метод COMPINT, цифра 17% удержания правил
- Официальная документация Claude Code: Context window - таблица «что выживает после сжатия», размер окна 200 000 токенов
- Официальная документация Claude Code: Memory - как загружается файл правил CLAUDE.md, почему это не жёсткая команда
- arXiv: Lost in the Middle - An Emergent Property from Information Retrieval Demands in LLMs - эффект позиции инструкции в контексте, падение точности больше 30%
- Anthropic: Acceptable Use Policy - правила использования, на которые сослался защитный фильтр в момент моего собственного прогона
Памятка: почему бот забывает и что сделать за 4 шага
Короткая шпаргалка на случай, когда правило снова начнёт «плыть» посреди разговора
Сохрани себе
- Забывание - это не капризы модели, а два разных явления: сжатие истории (компакция) и позиционный эффект «потерян в середине»
- При сжатии выживает то, что лежит ФАЙЛОМ на диске и перечитывается заново - файл правил, заметки бота о тебе, заранее составленный план
- Правило, сказанное только вслух в реплике, при сжатии уходит в общий пересказ вместе со всей остальной историей и может потерять точную формулировку
- Механизмы сжатия в среднем сохраняют около 17% явных пользовательских ограничений по независимому научному замеру - это и есть честная цифра вместо круглых «83%» без источника
- Даже без сжатия точность падает больше чем на 30%, если инструкция оказалась зажата в середине длинного разговора
- Ключевые правила переносятся в отдельный файл проекта короче 200 строк, а не оставляются одной репликой в чате
- Правило снова «поплыло» - проще открыть новый чат, чем уговаривать старый вспомнить
Порог входа
Файл правил уже стоит, дальше - три дня бесплатно
Три дня, бесплатно, начать можно сегодня. Ставить и докупать ничего не надо: хватит того самого Claude Code, в котором ты только что завёл файл правил
Заявка в закрытый канал, одобряю сразу. Бот сам напишет первым и покажет, как забрать три дня Лагеря. Бесплатно
Частые вопросы
Почему нейросеть вдруг перестаёт соблюдать правило, которое я дал в начале разговора?
Потому что либо история разговора была сжата в короткий пересказ (и устное правило туда просто не попало дословно), либо инструкция физически оказалась в середине огромного текста, а модели надёжнее держат начало и конец разговора, чем середину
Правда ли, что теряется 83% инструкций при сжатии контекста?
Дословная цифра из первоисточника (научная работа «Lost in Compaction», июль 2026) другая и сформулирована наоборот: механизмы сжатия сохраняют в среднем 17% явных пользовательских ограничений. Если считать в обратную сторону, теряется около 83% - но честная подача называет источник и точную формулировку, а не круглое число без ссылки
Файл правил (CLAUDE.md) гарантированно защищает от забывания?
Нет полной гарантии, но защита намного выше устной реплики. Файл перечитывается заново с диска после каждого сжатия истории, а сказанное просто вслух - нет. При этом даже файл - это подсказка, которой бот старается следовать, а не жёсткая команда, особенно если формулировка расплывчатая
Помогает ли просто начать новый чат?
Да, и это самый быстрый способ. Новый чат заново читает файл правил проекта с чистого листа, вместо того чтобы тащить накопленный пересказ старого разговора, где нужное правило могло быть похоронено или сжато
Как понять, что мой разговор уже близок к пределу окна?
В официальном интерфейсе Claude Code размер окна и текущее заполнение видны прямо в интерактивной странице документации - там же указан общий ориентир в 200 000 токенов на разговор. На практике это ощущается как момент, когда бот начинает путать детали, которые раньше держал точно
Достаточно ли просто написать правило один раз в файл, и больше не думать об этом?
Для правил, которые должны действовать всегда, - да, файл решает основную часть проблемы. Но если инструкция важна именно СЕЙЧАС, посреди активной работы (не постоянное правило проекта, а разовое требование к текущей задаче), её стоит время от времени повторять внутри разговора - это защита от эффекта «потерян в середине», который не связан со сжатием истории напрямую