Переполнение и адаптивное сжатие контекстного окна
Инженерные паттерны предотвращения фатальных сбоев при исчерпании лимита контекста: Rolling Summaries, свертка состояний и селективное вытеснение устаревшей истории.
1. Обзор концепции и системная проблема
В длительных инженерных проектах агент может работать часами: читать файлы, запускать тесты, получать логи, исправлять ошибки. Рано или поздно даже окно на 200 000 токенов заполняется:
- Наивный подход: просто обрезать (Truncate) первые сообщения. Но вместе с ними исчезает первичная инструкция пользователя, и агент внезапно "забывает", какую именно задачу он решает.
- Другой наивный подход: остановить работу и сообщить об ошибке, заставляя пользователя вручную пересказывать все сначала.
Context Window Compaction — это техника непрерывного сжатия истории диалога на лету, которая позволяет агенту вести бесконечные рабочие сессии без падения с ошибкой переполнения и без потери начальных целей.
2. Архитектурная таксономия и ментальная модель
┌─────────────────────────────────────────────────────────────┐
│ CONTEXT COMPACTION LIFECYCLE │
├─────────────────────────────────────────────────────────────┤
│ 1. BUFFER MONITORING (Total Tokens: 165k / 200k Limit) │
│ • Порог срабатывания: 80% заполнения окна │
├─────────────────────────────────────────────────────────────┤
│ │ │
│ ▼ Trigger Compaction Worker │
├─────────────────────────────────────────────────────────────┤
│ 2. PARTITIONING & ROLLING SUMMARIZATION │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ [PINNED] System Prompt & Core Rules (Immutable) │ │
│ ├─────────────────────────────────────────────────────┤ │
│ │ [SLICED] Old Turns 1–30 ➔ Distilled into Executive │ │
│ │ State: "Auth configured, DB migrated" │ │
│ ├─────────────────────────────────────────────────────┤ │
│ │ [KEPT RAW] Fresh Turns 31–40 (Exact detail for dev) │ │
│ └─────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 3. CONTEXT RE-ASSEMBLY: New Size = 45k tokens (Fresh room!) │
└─────────────────────────────────────────────────────────────┘
3. Практические инженерные сценарии в продакшене
01. Бесконечная сессия вайбкодинга в агентском IDE
Разработчик работает в Cursor или Claude Code уже шестой час подряд. Система каждые 40 сообщений незаметно сворачивает старые логи терминала в аккуратный markdown-блок <previous_session_summary>, сохраняя сессию быстрой, дешевой и отзывчивой.
02. Сохранение артефактов решений (Architectural Decision Records)
Во время сжатия агент отдельно сохраняет отклоненные гипотезы: "Мы пытались использовать библиотеку X, но она несовместима с Windows". Это гарантирует, что через 100 сообщений агент не попытается установить библиотеку X снова.
4. Подводные камни, типовые ошибки и безопасность
- Потеря тонких деталей (Information Loss): Модель самаризации может решить, что конкретный номер порта или название редкого поля не важны, и удалить их из конспекта. Важные параметры должны сохраняться в выделенных полях JSON State, а не в свободном тексте.
- Дрейф цели при многоразовом сжатии: Если сессия длится неделями и конспект конспектируется в десятый раз, возникает эффект испорченного телефона. Первичный запрос пользователя (
User Intent) всегда должен оставаться неизменным в корне промпта.
5. Стратегический вывод для инженера 2026 года
Сжатие контекста — это ключ к созданию автономных систем длительного действия (Long-Running Agents). Умение проектировать алгоритмы ротации и подведения итогов памяти позволяет создавать агентов, которые могут работать над проектом неделями без потери фокуса.
FAQ: Переполнение и адаптивное сжатие контекстного окна
Связанные термины
Контекстное Окно (Context Window)
Максимальный рабочий объем токенов, который языковая модель может одновременно удерживать в механизме Self-Attention и памяти KV Cache во время вычисления одного инференс-запроса.
Деградация контекста (Context Rot & Attention Decay)
Системное снижение точности, следования инструкциям и логической согласованности LLM по мере накопления в рабочем окне диалогового шума, устаревших черновиков кода и выводов компилятора.
Память Агента
Комплексная подсистема хранения, фильтрации и выборки данных, которая преобразует stateless-вызов LLM в stateful-систему: от краткосрочного scratchpad-буфера до мультисессионного хранилища знаний.
Эпизодическая и Семантическая Память Агента
Архитектурное разделение памяти ИИ-агента на долгосрочную фактическую базу (Semantic Memory) и хронологический журнал событий конкретных рабочих сессий (Episodic Memory).