AmigaОбучение ИИ
Модуль 4 · Рабочая память · урок 7 из 12

Рабочая память и контекстное окно

11 мин чтения▶ есть видеоверсия

«Я же тебе говорил в начале!» — типичная реплика в длинном диалоге с моделью. Она действительно «помнит» начало, но всё хуже с каждым сообщением, а в новом чате не помнит вовсе. Этот урок объясняет, как устроена рабочая память модели, чем она отличается от знаний и от человеческой памяти, и почему аналитику с ТЗ на сорок страниц и разработчику с трёхчасовой сессией отладки нужно об этом думать.

Два разных хранилища

В прошлом модуле речь шла о знаниях из весов: о том, что модель усвоила при обучении. Это долговременная память, и она неизменна: разговором в неё ничего не добавить. Всё, что вы говорите модели, попадает в другое место — в контекстное окно (context window).

В документации Anthropic контекстное окно определяется как весь текст, к которому модель может обращаться, генерируя ответ, включая сам ответ. Это и есть рабочая память модели. Она отличается от обучающего корпуса и работает иначе: то, что лежит в окне, модель видит прямо перед собой, а не восстанавливает по вероятностям. Поэтому данные из контекста надёжнее знаний из весов — мы видели это в прошлом модуле.

Разница с человеческой памятью принципиальна. Человек, поговорив с вами час, что-то запомнит надолго и вспомнит завтра. Модель не запоминает ничего: когда разговор закончился, контекст исчез. Следующий разговор начинается с чистого окна. Если продукт «помнит» ваши предпочтения между чатами, это продукт сохранил заметки и положил их в контекст нового разговора, а не модель что-то усвоила.

Что лежит в окне

В контекстное окно попадает больше, чем видно в чате. По документации, к окну относится всё, что есть в запросе к модели:

  • системные инструкции продукта — то, что чат или Claude Code отправляет перед вашим первым сообщением;
  • вся история разговора: ваши сообщения и ответы модели, целиком;
  • вложенные файлы, изображения, документы;
  • описания доступных инструментов и результаты их вызовов — поиск в интернете, чтение файла, ответ MCP-сервера;
  • сам ответ, который модель сейчас генерирует, включая её рассуждения, если они включены.

Это важно для понимания расходов. Разработчик в Claude Code просит «посмотри логи» — и в окно ложатся мегабайты текста. Аналитик вкладывает ТЗ, потом ещё три версии ТЗ — все четыре лежат в окне одновременно. Каждый вызов инструмента добавляет и запрос, и ответ. Окно заполняется быстрее, чем кажется по количеству ваших реплик.

Как окно заполняется

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

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

Размер окна у современных моделей — сотни тысяч токенов, у некоторых — до миллиона; точные значения по моделям есть в документации Anthropic. Этого достаточно для сотен страниц текста. Но размер — не единственное ограничение.

Почему длинные диалоги деградируют

Документация Anthropic называет это прямо: по мере роста числа токенов точность и полнота извлечения ухудшаются. Явление получило название context rot, «гниение контекста». Модель с окном на миллион токенов не работает одинаково хорошо на десятой тысяче и на девятисотой.

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

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

Практический вывод: больше контекста не значит лучше. Документация формулирует это так: отбирать, что лежит в контексте, не менее важно, чем то, сколько места есть.

Что происходит, когда окно кончается

Здесь поведение зависит от продукта, а не от модели. При работе через API, если запрос не влезает в окно, приходит ошибка. Чат-интерфейсы могут работать по принципу «первым пришёл — первым ушёл»: самые старые сообщения выпадают из окна, и модель их больше не видит — без предупреждения. Ещё один подход — уплотнение (compaction): продукт просит модель сжать раннюю часть разговора в краткое изложение и продолжает с ним. Claude Code делает так в длинных сессиях. После уплотнения детали из сжатой части сохранятся не все.

Отсюда рабочая привычка: в долгой работе важные решения фиксировать не в переписке, а в артефакте — файле, документе, заметке, — который можно положить в контекст заново. Разработчики в Claude Code для этого используют файл CLAUDE.md; аналитики — итоговую версию требований в отдельном документе вместо цепочки правок.

Как работать с окном

Несколько правил, которые следуют из сказанного.

Один разговор — одна задача. Не тащите в чат про оценку сроков вчерашнее обсуждение архитектуры. Новый чат стоит ничего, а чистое окно — самая точная модель.

Важное — в конце и явно. Если в длинном диалоге сменилось решение, не надейтесь, что модель поймёт по контексту. Напишите: «Итоговое решение: X. Прежние варианты не рассматриваем».

Периодически сжимайте. Попросите модель подвести итог договорённостей, проверьте его, скопируйте в новый чат и продолжайте там. Вы сделаете уплотнение сами и с проверкой.

Давайте нужное, а не всё. Тестировщику для генерации кейсов по одной форме не нужно всё ТЗ на сорок страниц, достаточно раздела. Лишний текст не просто стоит токенов, он снижает точность.

Не спрашивайте «помнишь?». Если ответ важен, приложите. Модель ответит «да, помню» и восстановит по вероятностям, а не по факту, если сообщение уже выпало из окна.

Попробуйте сами

10–15 мин на рабочем месте
  1. Начните новый чат и спросите Claude, о чём вы говорили с ним вчера. Обратите внимание, как он объясняет отсутствие памяти между разговорами — и есть ли у вашего продукта функция памяти, которая что-то подставила.
  2. Возьмите свой самый длинный недавний диалог с моделью. Попросите её кратко перечислить все принятые решения и сравните с тем, что вы помните сами. Расхождения — это и есть деградация контекста.

Подробные эксперименты — в уроке «Попробуйте сами: контекст».

Коротко

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

Видеоверсия

Сценарий озвучки · 545 слов, ≈ 4 мин

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

У модели два хранилища. Первое — знания из весов, то, что она усвоила при обучении. Оно неизменно: разговором туда ничего не добавить. Второе — контекстное окно. Документация Anthropic определяет его как весь текст, к которому модель может обращаться, когда пишет ответ, включая сам ответ. Это и есть рабочая память. И она принципиально отличается от человеческой. Человек, поговорив с вами час, что-то запомнит и вспомнит завтра. Модель не запоминает ничего. Разговор закончился — контекст исчез. Если продукт помнит ваши предпочтения между чатами, это продукт сохранил заметки и подложил их в новый разговор.

Что лежит в окне? Больше, чем видно в чате. Системные инструкции продукта. Вся история разговора целиком. Вложенные файлы и картинки. Описания инструментов и результаты их вызовов: поиск в интернете, прочитанный файл, ответ MCP-сервера. И сам ответ, который модель сейчас пишет. Разработчик просит Claude Code посмотреть логи — и в окно ложатся мегабайты текста. Аналитик вкладывает четыре версии техзадания — все четыре лежат там одновременно. Окно заполняется быстрее, чем кажется.

Как оно заполняется? Каждый ход устроен одинаково: на вход идёт вся предыдущая история плюс новое сообщение, на выходе — ответ, который становится частью истории. Ничего не забывается само. Отсюда неочевидная вещь: модель не ведёт разговор. Она каждый раз заново перечитывает весь разговор с начала и продолжает. Тридцатая реплика — это продолжение текста, в котором есть двадцать девять предыдущих. Противоречие между третьим и двадцать пятым сообщением никуда не девается: оба перед моделью одновременно.

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

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

Что происходит, когда окно кончается? Это зависит от продукта. Через API придёт ошибка. Чат может выкидывать самые старые сообщения без предупреждения. Ещё один подход — уплотнение: продукт просит модель сжать раннюю часть разговора в краткое изложение. Claude Code так делает в длинных сессиях, и часть деталей при этом теряется. Поэтому важные решения фиксируйте в артефакте — файле или документе, который можно положить в контекст заново.

И несколько правил напоследок. Один разговор — одна задача: новый чат стоит ничего, а чистое окно — самая точная модель. Важное — явно и в конце: «итоговое решение такое, прежние варианты не рассматриваем». Периодически сжимайте сами: попросите итог, проверьте, перенесите в новый чат. Давайте нужное, а не всё: для кейсов по одной форме не нужно техзадание на сорок страниц. И не спрашивайте «помнишь?» — если важно, приложите. В следующем уроке проверим всё это экспериментами.

Отметка хранится только в вашем браузере