Agentic Coding · RUПеревод редакции 7 октября 2026

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

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

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

Шесть механизмов управляют тем, что и куда попадает в контекстное окно: файлы контекста, схемы инструментов MCP, навыки, субагенты, сжатие контекста и поиск информации. Каждый по-своему меняет родительский контекст: одни увеличивают его постоянный префикс, другие добавляют материалы для конкретной задачи, третьи заменяют накопленную историю, а четвёртые оставляют работу в отдельном окне. Этот модуль разбирает фундаментальное ограничение всех шести механизмов — почему положение в окне имеет значение — и передаёт каждый механизм отдельному модулю (Шесть механизмов контекста).

Кривая внимания: почему размещение имеет значение​

Управление контекстом

Внимание сильнее всего по краям

Заполнение контекста
30%
Внимание надёжно вблизи начала и конца окна; по мере заполнения контекста первой ухудшается середина.

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

Внимание неравномерно — иначе и быть не может. Для каждого токена модель оценивает все предыдущие токены, а затем превращает оценки в доли, сумма которых должна составлять 100%. Этот шаг не делит внимание поровну: он чрезмерно вознаграждает самые высокие оценки и прижимает остальные к нулю.1 Это не вопрос выбора, а устройство внимания в трансформере. Поэтому бюджет внимания скапливается там, где стабильно приносит пользу: небольшая группа начальных токенов получает непропорционально большую долю (они становятся стоками внимания, attention sinks), а скользящее окно удерживает внимание на токенах непосредственно перед предсказанием, поскольку именно на них будет опираться ближайший ответ.23 Всему между этими двумя областями достаются остатки — слабое, ненадёжно распределённое внимание. Так возникает обделённая середина.

Этот бюджет не растёт вместе с окном. При 10 тысячах и миллионе токенов опорные точки остаются прежними — расширяется лишь середина. Под нагрузкой кривая становится J-образной: эффект первичности ослабевает, а эффект недавности сохраняется. Момент перехода зависит от модели, задачи и абсолютного числа токенов, а не от фиксированного процента заполнения: 80% — это 8 тысяч токенов в окне на 10 тысяч и 800 тысяч в окне на миллион. Нормализовано положение, а не абсолютная длина, поэтому сама по себе кривая не показывает, где у конкретной модели начинается J-образный профиль.4

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

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

Проблема давления контекста​

Ты вводишь промпт, и он оказывается в конце окна — в зоне недавности, которой внимание отдаёт предпочтение. Затем запускается агентный цикл.

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

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

Управление контекстом

Давление контекста перемещает задачу по окну

Инженерия контекста — это предсказание такого смещения и управление им. Цикл продолжит перемещать твою задачу и не будет удерживать её в нужном месте. Поэтому дисциплина состоит в управлении содержимым вокруг задачи: тем, что стоит перед ней, что следует за ней и что вообще никогда не попадёт в это окно.

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

Область применимости

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

Шесть механизмов контекста​

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

Управление контекстом

Шесть механизмов в одной системе координат контекста

Шесть механизмов контекста: куда попадают токены и когда они загружаются.

Эти механизмы не располагаются на одной шкале. Файлы контекста и заранее загруженные схемы MCP увеличивают постоянный префикс. Навыки и поиск с помощью инструментов добавляют материалы тогда, когда они нужны активной задаче. Субагенты оставляют историю своей работы в другом окне и возвращают обобщённый результат. Сжатие заменяет накопленный разговор меньшим по размеру состоянием с потерями. Эффективная инженерия контекста означает выбор такого воздействия на контекст, которое соответствует знаниям и задаче.

Примечания​

  1. Vaswani et al. (2017), Attention Is All You Need — преобразование оценок в доли выполняет softmax: он превращает набор оценок в веса, сумма которых равна 1, и усиливает наибольшие из них. ↩

  2. Xiao et al. (2023), Efficient Streaming Language Models with Attention Sinks. ↩

  3. Beltagy et al. (2020), Longformer: The Long-Document Transformer представили ограниченное скользящее окно — внимание в пределах соседнего отрезка токенов. Современные модели с длинным контекстом развивают это в гибридное внимание: DeepSeek-V4 сочетает скользящее окно со сжатым и разреженным вниманием, а GLM-5.3 Flash объединяет линейное локальное окно с разреженным глобальным поиском. ↩

  4. Liu et al. (2023), Lost in the Middle: How Language Models Use Long Contexts. ↩