Контекстное окно

8 октября 2026 · ~12 мин чтения

llm концепция нейросети claude-code

Контекстное окно

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

История

Идея ограниченного «поля зрения» старше нынешних чат-ботов. Ещё в языковых моделях 1990–2000-х (так называемых n-граммных) предсказание следующего слова строилось по нескольким предыдущим словам — это и было окно, только крошечное: два-пять слов.

Параллельно развивались технические приёмы, которые сделали длинные окна возможными: позиционные кодировки вроде RoPE (rotary position embedding, Су и соавторы, 2021), оптимизированное вычисление внимания (FlashAttention, Три Дао с коллегами, 2022) и разные схемы «разреженного» внимания.

Что это такое

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

Отсюда следствия.

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

Во-вторых, окно общее для входа и выхода. Если окно 200 тысяч токенов, а вы отдали 195 тысяч на входе, на ответ остаётся мало. Кроме того, у моделей есть отдельный потолок на длину одного ответа (max output), он обычно существенно меньше окна.

В-третьих, «поместилось» не значит «усвоено». Влезание в окно — необходимое условие, но не гарантия качества. Исследование «Lost in the Middle» (Нельсон Лю с коллегами, 2023) показало: модели лучше используют информацию из начала и конца длинного контекста, а то, что лежит в середине, нередко теряется. С новыми моделями ситуация лучше, но эффект «чем длиннее контекст, тем размытее внимание» полностью не исчез.

Важные пары понятий:

Аналогии из жизни

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

Оперативная память компьютера. Данные в RAM доступны мгновенно, на диск — медленно, а при выключении RAM очищается. Окно модели похоже: после окончания сессии ничего не остаётся. Где ломается: RAM адресуется точно — по адресу получаешь ровно то, что записал. Окно модели читается через внимание, то есть вероятностно: информация может быть в окне и всё равно не повлиять на ответ. Кроме того, у RAM нет понятия «стоит денег за каждое обращение» — а у окна есть.

Устный пересказ в телефонной цепочке. Когда нужно умещать долгую историю в короткий пересказ, мы сжимаем: оставляем главное, выбрасываем детали. Примерно так работает автоматическая компакция контекста. Где ломается: при пересказе человек понимает, что важно для адресата. Алгоритм сжатия может выбросить именно ту деталь (точное имя файла, число, принятое решение), которая понадобится через час.

Как это работает

Разберём цикл на примере сессии в терминальном ассистенте вроде Claude Code.

  1. Сборка запроса. Программа берёт: системный промт (инструкции производителя), описания доступных инструментов, содержимое файла с проектными правилами (например, CLAUDE.md), историю сообщений и твой новый вопрос. Всё это превращается в последовательность токенов.
  2. Отправка и чтение. Последовательность целиком уходит на сервер. Модель обрабатывает все токены входа (этап prefill — «заполнение») и только потом начинает по одному генерировать токены ответа (этап decode).
  3. Рост истории. Ответ и результаты вызова инструментов (например, прочитанный файл на 2000 строк) добавляются в историю. Следующий запрос уже длиннее.
  4. Повтор. На каждом шаге весь накопленный текст снова отправляется целиком. Поэтому стоимость и задержка сессии растут не линейно с числом шагов: чем длиннее история, тем дороже каждый следующий шаг, а суммарная стоимость растёт заметно быстрее, чем число реплик.
  5. Приближение к лимиту. Когда заполнено, скажем, больше 80–90% окна, нужно что-то делать. Варианты:
    - обрезать самое старое (просто и грубо);
    - сжать историю в краткую сводку (summarization);
    - начать новую сессию, перенеся в неё нужное вручную.

В Claude Code для этого есть несколько команд. /clear очищает историю полностью — начинаешь с чистого листа. /compact просит модель сжать диалог в сводку и продолжить уже с ней; можно подсказать, что сохранить. Кроме того, при приближении к пределу программа может запускать сжатие автоматически (auto-compact). Точные пороги и поведение меняются между версиями, смотри официальную документацию Claude Code.

Отдельная техника, которая сильно влияет на деньги и скорость, — кэширование промта (prompt caching). Идея: начало запроса (системные инструкции, файлы, старая часть истории) от шага к шагу не меняется. Сервер может запомнить уже посчитанное внутреннее состояние для этого общего префикса (оно называется KV-cache — хранилище промежуточных ключей и значений внимания) и не пересчитывать его заново. Читать из кэша дешевле и быстрее, чем обрабатывать с нуля. Но кэш живёт ограниченное время (порядок минут — часов, зависит от настроек) и работает только по совпадающему началу: если ты изменил что-то в самом начале запроса, весь кэш после этой точки сгорает.

Схема роста:

шаг 1: [система][вопрос1]                         ~ 8k токенов
шаг 2: [система][вопрос1][ответ1][файл]           ~ 20k
шаг 3: [система][вопрос1][ответ1][файл][...]      ~ 35k
...
шаг N: упёрлись в лимит -> /compact или /clear

Ещё один приём — субагенты (subagents, вспомогательные ассистенты). Основной ассистент поручает подзадачу (например, «найди в документации ответ») отдельному экземпляру. У того своё, свежее окно. Он читает много, а возвращает в основную сессию только краткий итог. Так основное окно не засоряется. Цена — дополнительные токены на самого субагента.

Где встречается в обычной жизни

Где встречается в IT и бизнесе

Кто пользуется

Практически все современные LLM-продукты: ChatGPT, Claude, Gemini, GigaChat, YandexGPT, модели Llama, Mistral, DeepSeek, Qwen. Размеры окон у разных моделей сильно различаются: от нескольких тысяч токенов у небольших локальных моделей до сотен тысяч и миллиона у крупных облачных. Конкретные цифры для текущих версий не буду выдумывать — они меняются каждые несколько месяцев, смотри страницу моделей у производителя.

Отдельно стоит упомянуть подписочные тарифы: у потребительских планов (вроде Pro за 20 долларов в месяц) есть лимиты использования, которые считаются в токенах. Длинная сессия с большим контекстом расходует лимит заметно быстрее, чем несколько коротких. Точные правила подсчёта производитель периодически меняет.

Альтернативы и конкуренты

Когда НЕ стоит использовать

Точнее — когда не стоит рассчитывать на очень длинное окно как на решение.

Автоматическое сжатие — не бесплатно

Когда история сжимается в сводку, детали теряются. Если ты принял важное решение или назвал точное число, а потом сессия сжалась, перепроверь, что оно осталось в сводке. Надёжнее записать ключевое в файл проекта.

Дорого не окно, а его повторная отправка

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

Практическая привычка

Закончил задачу — очисти контекст. Перед новой темой начни новую сессию. Если нужно сохранить итог, попроси ассистента записать его в файл, а не рассчитывай на память.

Связанные понятия

Литература и источники

Где встретилось у меня

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

Краткое резюме