Инженерия контекста
Агентный цикл заново собирает контекст на каждом шаге. Инструкции, определения инструментов, история разговора, прочитанные файлы, результаты поиска и твоя текущая задача — всё попадает в одно окно, и модель делает предсказания на основе всего этого. От того, что попадает в окно, где размещается и когда устаревает, зависит, сможет ли модель выполнить полезную работу.
Инженерия контекста — это практика формирования контекста каждого вызова LLM так, чтобы он оптимально подходил задаче. Она применима к каждому вызову, а не только к моменту заполнения окна. Свежая сессия с понятной задачей выигрывает от такого подхода не меньше, чем разговор на миллион токенов, приближающийся к сжатию.
Шесть механизмов управляют тем, что и куда попадает в контекстное окно: файлы контекста, схемы инструментов MCP, навыки, субагенты, сжатие контекста и поиск информации. Каждый по-своему меняет родительский контекст: одни увеличивают его постоянный префикс, другие добавляют материалы для конкретной задачи, третьи заменяют накопленную историю, а четвёртые оставляют работу в отдельном окне. Этот модуль разбирает фундаментальное ограничение всех шести механизмов — почему положение в окне имеет значение — и передаёт каждый механизм отдельному модулю (Шесть механизмов контекста).
Кривая внимания: почему размещение имеет значение
Управление контекстом
Внимание сильнее всего по краям
У любого окна есть слабая середина — и увеличение окна усугубляет проблему. Внимание никогда не бывает ровным: при любом размере профиль один и тот же — сильное в начале, сильное в конце, слабое в середине. С размером меняется цена этого эффекта, а не форма: более длинное окно оставляет в середине больше содержимого. Возникают три зоны: зона первичности в начале (инструкции, файлы проекта), зона недавности в конце (твоя задача, свежие результаты) и мёртвый центр, где внимание резко ослабевает.
Внимание неравномерно — иначе и быть не может. Для каждого токена модель оценивает все предыдущие токены, а затем превращает оценки в доли, сумма которых должна составлять 100%. Этот шаг не делит внимание поровну: он чрезмерно вознаграждает самые высокие оценки и прижимает остальные к нулю.1 Это не вопрос выбора, а устройство внимания в трансформере. Поэтому бюджет внимания скапливается там, где стабильно приносит пользу: небольшая группа начальных токенов получает непропорционально большую долю (они становятся стоками внимания, attention sinks), а скользящее окно удерживает внимание на токенах непосредственно перед предсказанием, поскольку именно на них будет опираться ближайший ответ.23 Всему между этими двумя областями достаются остатки — слабое, ненадёжно распределённое внимание. Так возникает обделённая середина.
Этот бюджет не растёт вместе с окном. При 10 тысячах и миллионе токенов опорные точки остаются прежними — расширяется лишь середина. Под нагрузкой кривая становится J-образной: эффект первичности ослабевает, а эффект недавности сохраняется. Момент перехода зависит от модели, задачи и абсолютного числа токенов, а не от фиксированного процента заполнения: 80% — это 8 тысяч токенов в окне на 10 тысяч и 800 тысяч в окне на миллион. Нормализовано положение, а не абсолютная длина, поэтому сама по себе кривая не показывает, где у конкретной модели начинается J-образный профиль.4
Инженерия контекста работает в пределах этого ограничения: удерживает активную задачу там, куда модель ещё способна направлять внимание, — с помощью файлов контекста, схем, навыков, субагентов, сжатия и поиска.
Но внимание — не воспроизведение информации. Кривая внимания описывает механизм: распределение фокуса модели по окну. Кривая воспроизведения — это измеренный результат: ответ прячут где-то в окне и требуют от модели найти и воспроизвести его, проверяя весь диапазон, а не только два хорошо освещённых края. С ростом окна больше содержимого попадает туда, где внимание ослаблено, и меньше информации удаётся вернуть.
Проблема давления контекста
Ты вводишь промпт, и он оказывается в конце окна — в зоне недавности, которой внимание отдаёт предпочтение. Затем запускается агентный цикл.
Цикл заново собирает окно на каждом шаге — в этом и суть: ничто не остаётся неподвижным. Инструкции, схемы инструментов и файлы контекста расположены спереди; каждый вызов инструмента, результат и прочитанный файл, произведённые циклом, добавляются после твоего промпта; затем всё снова поступает на вход следующего шага. Промпт остаётся на своём месте в последовательности, но окружающее его окно перекомпоновывается с обеих сторон на каждом шаге. Поэтому положение задачи на кривой внимания постоянно меняется — и двигает её именно цикл.
Это движение и есть проблема давления контекста. Окно не просто заполняется: цикл активно перемещает твою задачу, и у него нет причин удерживать её там, где ты хочешь. Предоставленный самому себе цикл помещает задачу туда, где она окажется среди накопленного содержимого. В итоге она может попасть в середину окна — область, из которой внимание уходит первой, — где модели трудно действовать в соответствии с задачей.
Управление контекстом
Давление контекста перемещает задачу по окну
Инженерия контекста — это предсказание такого смещения и управление им. Цикл продолжит перемещать твою задачу и не будет удерживать её в нужном месте. Поэтому дисциплина состоит в управлении содержимым вокруг задачи: тем, что стоит перед ней, что следует за ней и что вообще никогда не попадёт в это окно.
Ключевая мысль: дело не в том, закончатся ли токены, а в том, где окажется задача. Две сессии могут занимать одинаковый объём, но вести себя по-разному, потому что цикл разместил задачу в разных местах. Ты предсказываешь это движение и затем формируешь контекст так, чтобы важное оказалось там, где модель ещё может уделить ему внимание.
Этот раздел описывает поведение авторегрессионных LLM с длинным контекстом, особенно каузальных трансформеров. Диффузионные языковые модели итеративно очищают последовательность от шума, а не генерируют слева направо, поэтому у них нет той же механики каузальной маски и недавности. Оценивай их надёжность в зависимости от положения отдельно, не предполагая ту же кривую.
Шесть механизмов контекста
Сравнивай механизмы через одну и ту же призму контекста: когда загружаются токены, куда они попадают, во что обходятся и для чего полезны. На схеме эти эффекты показаны до того, как следующие разделы разберут эксплуатационные компромиссы.
Управление контекстом
Шесть механизмов в одной системе координат контекста
Эти механизмы не располагаются на одной шкале. Файлы контекста и заранее загруженные схемы MCP увеличивают постоянный префикс. Навыки и поиск с помощью инструментов добавляют материалы тогда, когда они нужны активной задаче. Субагенты оставляют историю своей работы в другом окне и возвращают обобщённый результат. Сжатие заменяет накопленный разговор меньшим по размеру состоянием с потерями. Эффективная инженерия контекста означает выбор такого воздействия на контекст, которое соответствует знаниям и задаче.