Инженерия контекста
Инженерия промптов — про слова, которые вы выбираете. Инженерия контекста — про рабочее пространство, которое вы вручаете модели: что в нём, в каком оно порядке и что вы намеренно оставили снаружи.
Это различие важно, потому что контекстное окно — не блокнот. Это ограниченный, дорогой ресурс внимания. То, как вы его заполняете, меняет, на чём модель фокусируется, сколько это вам стоит и остаётся ли она полезной по мере роста сессий.
Бюджет контекста
У каждой модели есть максимальный размер контекста — жёсткий потолок, измеряемый в токенах. Считайте его бюджетом. Вы тратите его на:
- Ваш системный промпт и постоянные инструкции
- Найденные документы, фрагменты кодовой базы, определения инструментов
- Историю разговора
- Вывод модели (который в многоходовых сессиях тоже идёт в зачёт окна)
Когда вы исчерпываете лимит, чем-то приходится поступиться. Либо старое содержимое отбрасывается, либо сессия упирается в стену.
Большинство руководств для начинающих относятся к контекстному окну по принципу «больше — лучше». Инженерия контекста относится к нему как к ресурсу, который надо распределять аккуратно: тратьте его на то, что модели действительно нужно для этого хода, а не на всё, что может оказаться релевантным.
Гниение контекста и «потеря в середине»
В LLM с длинным контекстом есть хорошо задокументированное явление: модели уделяют непропорционально много внимания содержимому у начала и конца контекста, а их способность вспоминать содержимое, погребённое в середине, ухудшается. Исследователи, изучавшие этот эффект, назвали его «потерей в середине» (lost in the middle).
Практическое следствие: если вы набьёте контекст на 100 000 токенов документами и закопаете самую критичную инструкцию на позиции 60 000, модель может фактически её проигнорировать — не потому, что не способна читать так далеко, а потому, что внимание распределено по окну неравномерно.
«Гниение контекста» (context rot) — это более широкий паттерн: по мере роста сессии качество ответов склонно дрейфовать. Ранние инструкции размываются. Повторяющийся обмен репликами вытесняет исходную задачу. Модель начинает осторожничать, повторяться или терять нить того, о чём вы на самом деле просили.
Это не баги, которые можно полностью устранить более удачным промптом. Это структурные свойства того, как внимание работает в масштабе. Инженерный ответ — держать контекст меньше и острее, а не набивать его и надеяться.
Порядок имеет значение
Где вы размещаете содержимое, столь же важно, как и то, что вы включаете. Устоявшаяся хорошая практика:
| Позиция | Что туда класть |
|---|---|
| Самый верх (системный промпт) | Стабильные, долговечные инструкции. Персона, правила, требования к формату. |
| После системного промпта | Текущая задача, простыми словами. |
| Прямо перед последним ходом пользователя | Самый критичный, конкретный контекст именно для этого запроса. |
| Середина | Вспомогательные документы, найденные фрагменты — упорядоченные по релевантности, а не по хронологии. |
| История разговора | Только то, что необходимо для непрерывности. Подрезайте агрессивно. |
Общее правило: чем ближе к текущему ходу, тем больше внимания. Критичные инструкции, живущие только в середине длинной истории, под угрозой.
Извлечение вместо набивания
Соблазн — засунуть всё: все документы, всю кодовую базу, весь разговор. Сопротивляйтесь ему.
Лучший подход — избирательное извлечение: определите, что модели действительно нужно для этого конкретного запроса, и впрысните только это. Удачно извлечённый фрагмент нужного документа на 2000 токенов превосходит свалку на 40 000 токенов, где ответ где-то в середине.
Именно для этого существует генерация с дополнением извлечением (RAG) — не просто чтобы преодолеть лимиты контекста, но чтобы повысить качество, удерживая контекст отобранным.
Для интерактивных сессий действует та же логика: вместо того чтобы накапливать всё, периодически уплотняйте или очищайте историю, удаляя содержимое, которое больше не релевантно текущей задаче. Команды /compact и /clear в Claude Code — это инструменты инженерии контекста, а не просто управления сессией.
Угол затрат
Токены, которые вы отправляете, — это токены, за которые вы платите, и деньгами, и задержкой. Набивание контекста слабо релевантным материалом раздувает и то, и другое. Инженерия контекста и эффективность затрат — это одна и та же проблема.
Конкретнее:
- За раздутый системный промпт, который вы копируете из шаблона, вы платите при каждом вызове.
- За старую историю разговора, которую вы тащите дальше, потому что «вдруг пригодится», вы платите при каждом вызове.
- За документы, которые вы впрыскиваете «на всякий случай», вы платите при каждом вызове.
Обрезка того, чему там быть не нужно, одновременно лучше для качества и дешевле в эксплуатации.
Практические приёмы для пользователей Claude
В Claude.ai:
- Используйте отдельные разговоры для отдельных задач. Не позволяйте послеобеденным отступлениям засорять контекст сфокусированного проекта.
- Резюмируйте длинные ветки перед тем, как задать сложный вопрос, зависящий от них. Явная сводка часто полезнее сырой истории.
- Кладите конкретное, что вам нужно, в конец длинного сообщения, а не закапывайте в середину.
В Claude Code:
- Держите файл
CLAUDE.mdлаконичным. Каждая строка в нём впрыскивается в каждую сессию. См. CLAUDE.md и Управление контекстом. - Используйте
/clearпри переключении на по-настоящему другую задачу. Используйте/compact, когда хотите продолжить, но сессия растёт. - Ссылайтесь на файлы по пути, а не вставляйте их содержимое, когда полный файл для текущего шага не нужен.
На уровне API:
- Проектируйте системные промпты так, чтобы они содержали только то, что действительно нужно каждому запросу. Перенесите инструкции под конкретную задачу в ход пользователя.
- Для сценариев с большим объёмом документов извлекайте и впрыскивайте релевантные фрагменты, а не загружайте весь корпус.
- Структурируйте промпт так, чтобы стабильный, переиспользуемый префикс шёл первым — это также включает кэширование промптов, естественного спутника инженерии контекста.
Сдвиг в мышлении
Инженерия промптов спрашивает: «Что мне сказать?» Инженерия контекста спрашивает: «Что модель должна увидеть, в каком порядке и что мне стоит намеренно держать снаружи?»
Второй вопрос труднее, но именно он на самом деле определяет качество в масштабе.