Перейти к основному содержимому
Средний

Инженерия контекста

Инженерия промптов — про слова, которые вы выбираете. Инженерия контекста — про рабочее пространство, которое вы передаёте модели: что в нём есть, в каком порядке и что вы намеренно оставили за бортом.

Это различие важно, потому что контекстное окно — не блокнот. Это ограниченный, дорогой ресурс внимания. То, как вы его заполняете, меняет то, на чём модель фокусируется, сколько это вам стоит и остаётся ли модель полезной по мере роста сессий.

What you'll learn
  • Отличать инженерию контекста от инженерии промптов — и понимать, почему область сместилась в эту сторону
  • Относиться к контекстному окну как к бюджету внимания, а не как к складскому ящику
  • Распознавать гниение контекста и эффект 'потерянного в середине' до того, как они сорвут длинную сессию
  • Размещать инструкции там, где внимание действительно сосредоточено — наверху, в конце, и никогда не зарытыми в середине
  • Применять три рабочие тактики: уплотнение, ведение заметок и извлечение точно в срок

Бюджет контекста

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

  • Ваш системный промпт и постоянные инструкции
  • Извлечённые документы, фрагменты кодовой базы, определения инструментов
  • Историю разговора
  • Вывод модели (который тоже учитывается в окне в многоходовых сессиях)

Когда он заканчивается, чем-то приходится жертвовать. Либо старое содержимое отбрасывается, либо сессия упирается в стену.

Большинство руководств для новичков относятся к контекстному окну по принципу "чем больше, тем лучше". Инженерия контекста относится к нему как к ресурсу, который нужно распределять аккуратно: тратить его на то, что модели действительно нужно для этого хода, а не на всё, что может оказаться релевантным. Anthropic описывает всю эту дисциплину как поиск "наименьшего возможного набора высокосигнальных токенов" — каждый добавленный вами токен конкурирует за конечный бюджет внимания, что является прямым следствием того, как трансформер соотносит каждый токен с каждым другим.

Гниение контекста и эффект "потерянного в середине"

В моделях с длинным контекстом есть хорошо задокументированное явление: модели уделяют непропорционально много внимания содержимому ближе к началу и концу своего контекста, а их способность вспомнить содержимое, зарытое в середине, ухудшается. Исследователи, изучавшие этот эффект, назвали его "потерянным в середине" (lost in the middle).

Практическое следствие: если вы набьёте контекст на 100 000 токенов документами и зароете самую критичную инструкцию на позиции 60 000, модель может фактически проигнорировать её — не потому, что неспособна прочитать так далеко, а потому, что внимание распределено по окну неравномерно.

"Гниение контекста" (context rot) — более широкий паттерн: по мере роста сессии качество ответов имеет тенденцию дрейфовать. Ранние инструкции размываются. Повторяющийся обмен репликами вытесняет исходную задачу. Модель начинает осторожничать, повторяться или терять нить того, о чём вы на самом деле просили.

Это не баги, которые можно полностью устранить более удачным промптом. Это структурные свойства того, как внимание работает при масштабе. Инженерный ответ — держать контекст меньше и острее, а не набивать его и надеяться.

Порядок имеет значение

Куда вы помещаете содержимое — так же важно, как и то, что вы включаете. Устоявшаяся хорошая практика:

ПозицияЧто туда помещать
Самый верх (системный промпт)Стабильные, долгосрочные инструкции. Персона, правила, требования к формату.
После системного промптаТекущая задача, простыми словами.
Прямо перед последним ходом пользователяСамый критичный, конкретный контекст именно для этого запроса.
СерединаВспомогательные документы, извлечённые фрагменты — упорядоченные по релевантности, а не по хронологии.
История разговораТолько то, что необходимо для непрерывности. Обрезайте агрессивно.

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

"Правильная высота" для инструкций

Системный промпт может провалиться двумя противоположными способами. Слишком низко — и вы зашиваете хрупкую логику "если-это-то-то", которая ломается в тот же момент, когда реальность отличается. Слишком высоко — и вы пишете расплывчатые указания, предполагающие контекст, которого у модели нет. Anthropic называет цель "правильной высотой" — золотой серединой, которая "достаточно конкретна, чтобы эффективно направлять поведение, но при этом достаточно гибка, чтобы давать сильные эвристики". Целься туда: конкретные правила и примеры, а не дерево решений и не общее настроение.

Извлечение вместо набивки

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

Лучший подход — избирательное извлечение: определить, что модели действительно нужно для этого конкретного запроса, и впрыснуть только это. Хорошо извлечённый фрагмент нужного документа на 2 000 токенов превосходит свалку на 40 000 токенов, где ответ затерян где-то в середине.

Именно поэтому существует генерация с дополнением извлечением (RAG) — не только чтобы преодолеть ограничения контекста, но и чтобы улучшить качество, держа контекст отобранным. Агентная версия — извлечение точно в срок: вместо предзагрузки каждого документа агент держит лёгкие идентификаторы (пути к файлам, ID, запросы) и подтягивает фактическое содержимое в контекст только в тот момент, когда оно нужно.

Для интерактивных сессий применима та же логика: вместо накопления всего периодически уплотняйте или очищайте историю, чтобы убрать содержимое, которое больше не релевантно текущей задаче. Команды /compact и /clear в Claude Code — это инструменты инженерии контекста, а не просто управление сессией. На API тот же паттерн автоматизируется через память и редактирование контекста — старые результаты инструментов вычищаются из окна, тогда как важное записывается в постоянное хранилище памяти.

Три рабочие тактики

Для долгосрочной работы три техники делают основную тяжёлую работу. Они сочетаются — большинство реальных агентов используют все три.

Guided walkthrough1 of 3
  1. Когда сессия приближается к лимиту окна, суммируйте её и переинициализируйте с дистиллированной версией. Сохраняйте несущие детали — архитектурные решения, нерешённые баги, ключевые выборы реализации — и отбрасывайте пошаговый отчёт. Именно это делает /compact в Claude Code.

Сторона затрат

Токены, которые вы отправляете, — это токены, за которые вы платите, и деньгами, и задержкой. Набивка контекста слабо релевантным материалом раздувает и то, и другое. Инженерия контекста и эффективность затрат — это одна и та же проблема.

Конкретнее:

  • Раздутый системный промпт, который вы копируете-вставляете из шаблона, оплачивается при каждом вызове.
  • Старая история разговора, которую вы тащите вперёд, потому что "вдруг пригодится", оплачивается при каждом вызове.
  • Документы, которые вы впрыскиваете "на всякий случай", оплачиваются при каждом вызове.

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

Практические тактики для пользователей Claude

В Claude.ai:

  • Используйте отдельные разговоры для отдельных задач. Не позволяйте послеобеденным отступлениям загрязнять контекст сфокусированного проекта.
  • Суммируйте длинные ветки перед тем, как задать сложный вопрос, который от них зависит. Явное резюме часто полезнее сырой истории.
  • Помещайте конкретную вещь, которую хотите, в конец длинного сообщения, а не зарывайте в середину.

В Claude Code:

  • Держите ваш файл CLAUDE.md поджарым. Каждая строка в нём впрыскивается в каждую сессию. См. CLAUDE.md и Управление контекстом.
  • Используйте /clear при переключении на по-настоящему другую задачу. Используйте /compact, когда хотите продолжить, но сессия растёт.
  • Ссылайтесь на файлы по пути, а не вставляйте их содержимое, когда полный файл не нужен для текущего шага.

На уровне API:

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

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

Инструкция первой, повторённая последней

Задача: найди каждый пункт, где этот договор ограничивает нашу ответственность, и процитируй каждый дословно с номером раздела.

[... вставьте сюда полный 40-страничный договор ...]

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

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

Сдвиг в мышлении

Инженерия промптов спрашивает: "Что мне сказать?" Инженерия контекста спрашивает: "Что модель должна увидеть, в каком порядке и что мне следует намеренно оставить за бортом?"

Второй вопрос сложнее, но именно он на самом деле определяет качество при масштабе.

Check yourself

0/3
  1. В чём ключевое различие между инженерией промптов и инженерией контекста?
  2. Вы зарываете единственную самую важную инструкцию на токене 60 000 контекста в 100 000 токенов. Каков вероятный результат?
  3. Кодовый агент вот-вот исчерпает контекст на длинной задаче. Какая тактика лучше всего сохраняет прогресс?
Закрепите словарь
Нажмите Enter или пробел, чтобы перевернуть карточку. Используйте стрелки влево и вправо для перехода между карточками.Показан термин.
1 / 6
Key takeaways
  • Контекстное окно — это бюджет внимания, а не хранилище — тратьте его только на высокосигнальные токены.
  • Позиция важнее объёма: критичные инструкции идут наверх и прямо перед финальным ходом, никогда не зарытыми в середине.
  • Уплотнение, ведение заметок и извлечение точно в срок — три тактики, которые сохраняют связность длинных агентов.
  • Отбор контекста — тот же рычаг, что и сокращение затрат: меньше токенов, лучше ответы, ниже счёт.

Связанное