Экспресс-курс · No. 26
LLM блестяща и пуста: между вызовами она не помнит ничего, а в каждом вызове знает только текст, что ты кладёшь перед ней. Инженерия контекста — это дисциплина собирать в это окно ровно нужный текст: инструкции, факты, историю, инструменты — не больше и не меньше. Здесь и живёт качество LLM, и это в основном не про хитрую формулировку.
18 понятий · схема у каждого · шпаргалка в конце
Всё в этом курсе следует из одного факта о том, как работает языковая модель: у неё нет памяти, и вся её осведомлённость в любом вызове — это текст, что ты ей шлёшь. Пойми это, и остальное очевидно.
Карта: 18 понятий в семи группах
Карта метро: сначала видишь линии целиком, потом едешь по станциям.
Курс идёт по семи группам. Сначала — окно: что модель вообще знает. Потом — сдвиг от формулировки промпта к сборке контекста. Дальше — из чего собрано окно, и три силы, которые его портят: нерелевантность, бюджет и гниение со временем. В конце — практика: строить окно нарочно и мерить результат.
Как читать каждое понятие
Паспорт: одинаковые поля у всех, поэтому их легко сравнивать.
У каждого понятия дальше одно и то же: английское название (запомни его — так это называют в документации и статьях), образ из жизни, схема и карточка с полями вроде проблема, идея, пример, цена и связи. Главная мысль курса: качество LLM решается тем, что ты кладёшь в окно, а не хитрой формулировкой.
Stateless Model — модель не помнит ничего между вызовами
Блестящий консультант с полной амнезией — на каждой встрече ты заново вручаешь ему все документы, потому что с прошлого раза он не помнит ничего.
Языковая модель без состояния — это и есть понятие Stateless Model: она не держит ничего между запросами. Иллюзия чат-бота, что помнит твой разговор, — это просто вся история, переотправляемая каждый раз. Сама модель стартует с чистого листа в каждом вызове, зная лишь то, что прямо перед ней.
Так что «что модель знает?» — это никогда не про модель, а целиком про то, что ты выбрал включить на этот раз.
- Что это
Модель не хранит ничего между запросами: каждый вызов — с чистого листа.
- Как работает
Чат «помнит» разговор только потому, что приложение заново отправляет всю историю в каждом вызове.
- Пример
Третий вопрос в чате уходит в модель вместе с первыми двумя вопросами и двумя ответами.
- Подвох
Ждать, что модель «помнит» правило из прошлой сессии, — если его нет в этом вызове, его нет.
- Связи
Поэтому всё решает Context Window; растущая история ведёт к Context Budget и Context Rot.
Context Window — её единственная рабочая память
Работник, что может действовать только по заметкам, приколотым к доске перед ним, — сотри доску, и будто ничего и не было.
Окно контекста (context window) — это блок текста, что модель видит в вызове: твои инструкции, разговор, любые данные, инструменты. Это вся её рабочая память, и у него конечный размер. Если факта, правила или прошлого сообщения нет в окне, модель его просто не знает.
Всё, о чём модель может рассуждать, она рассуждает из окна — что делает окно тем, что ты на самом деле инженеришь.
- Что это
Весь текст, который модель видит в одном вызове: инструкции, история, данные, инструменты.
- Как работает
Модель рассуждает только из окна. У окна есть максимальный размер в токенах.
- Пример
Бот поддержки не знает правил возврата, если их текст не положили в окно этого вызова.
- Подвох
«Модель должна это знать» — нет: если этого нет в окне, для модели этого нет.
- Связи
Окно собирают через Context Assembly; его размер — это Context Budget.
Так что качество решается тем, что ты кладёшь
Гений, отвечающий только из той единственной папки, что ты ему вручил, — дай нужную папку, и ответ блестящ; дай не ту, и он уверенно бесполезен.
Поскольку модель работает только из окна, качество её вывода в основном решается до того, как модель запустится, — тем, что ты собрал. Одна и та же модель даёт отличный ответ или безнадёжный целиком в зависимости от того, был ли нужный контекст перед ней. Это переосмысляет всю работу: ты не выманиваешь интеллект из модели, ты курируешь то, что ей дают увидеть. Это курирование и есть инженерия контекста.
Модель без состояния и знает только своё окно контекста. Качество вывода решается тем, что ты собираешь в это окно, — так что окно, а не модель, ты и инженеришь.
Люди говорят об «инженерии промптов», но по мере того как приложения становятся серьёзными, настоящее ремесло переезжает в другое место — от формулировки запроса к сборке нужной информации вокруг него. Этот сдвиг — сердце курса.
Prompt Engineering vs Context Engineering — формулировка против сборки
Юрист побеждает не хитрой фразой, а вручая судье ровно нужные документы, в нужном порядке, без ничего лишнего, — дело в бумагах, а не в речи.
Инженерия промптов (prompt engineering) — это про то, как ты формулируешь инструкцию. Инженерия контекста (context engineering) — бо́льшая работа: собрать всю информацию, что нужна модели, — нужные факты, историю, примеры, инструменты — в окно на каждый вызов.
По мере роста приложений формулировка значит меньше, а сборка — больше. Большинство моментов «AI дал плохой ответ» — это не плохая фраза, а модель, которой не хватило контекста, что ей ни разу не дали.
- Проблема
Качество «подкручивают» формулировкой промпта, а модели не хватает самих фактов.
- Идея
Инженерить всё окно: системные правила, факты, историю, примеры, инструменты — на каждый вызов.
- Пример
Вместо «ответь подробно и точно!» — положить в окно нужный документ и ключевое правило.
- Цена
- Нужен код, который собирает окно, и дисциплина решать, что входит.
- Когда брать
- Как только LLM-фича выходит за пределы одного демо-промпта.
- Связи
Prompt engineering — его часть; на практике это Context Assembly и Deliberate Assembly.
Missing Context — большинство проблем качества это проблемы контекста
Ассистент, что даёт неверный ответ, потому что ты забыл упомянуть одно ограничение, что меняло всё, — не глупый, просто неосведомлённый.
Когда LLM-фича недорабатывает, инстинкт — подкрутить формулировку промпта или винить модель. Куда чаще настоящая причина — отсутствующий или неверный контекст (missing context): нужный документ не извлёкся, ключевое правило не включили, устаревшая история запутала.
Прежде чем что-то переформулировать, спроси, что у модели реально было перед ней. Починка контекста чинит больше багов, чем починка формулировки когда-либо.
- Проблема
Модель отвечает плохо, и команда переписывает промпт снова и снова — без толку.
- Идея
Сначала смотреть, что было в окне на плохом вызове, и только потом трогать формулировку.
- Пример
Бот советует старый тариф: в окне лежала устаревшая история, а нового прайса не было.
- Типичные причины
Документ не извлёкся, правило не включили, устаревшая история запутала.
- Связи
Лечится Context Assembly и Curation; проверяется Context Evals.
Модель хороша ровно настолько, насколько её вход
Лучший повар может готовить только из ингредиентов на столе — вручи ему не те, и мастерство не спасёт блюдо.
Способная модель с плохим контекстом проигрывает слабой модели с отличным контекстом. Поэтому инженерия контекста, а не выбор модели, обычно самое рычажное место тратить усилия: вывод той же модели дико колеблется с тем, что ты ей скармливаешь. Ты не получаешь ответ лучше, требуя сильнее, — ты получаешь его, кладя в окно лучший, острее, релевантнее материал. Вход — это рычаг.
Инженерия промптов — это формулировка; инженерия контекста — это сборка нужной информации. Вторая — где живёт качество, а большинство плохих ответов это нехватка контекста, а не плохая фраза.
Часть того, что идёт в окно, долговечна, а часть — на каждый запрос, и несколько конкретных ингредиентов делают бо́льшую часть работы. Знать, что это, делает сборку контекста конкретной.
System Prompt — постоянное поведение против разового запроса
Постоянная политика ресторана — «мы вегетарианские, закрываемся в десять» — против конкретного заказа на сегодня. Одно обрамляет всё; другое — это просьба.
Системный промпт (system prompt) держит долговечные инструкции, что применяются ко всему взаимодействию: роль модели, правила, которым следовать, тон, формат вывода. Пользовательское сообщение (user message) — это конкретный запрос.
Положить персону, guardrails и постоянные правила в системный промпт держит их стабильными, пока вопросы пользователя меняются. Это разница между тем, кто модель есть в каждом вызове, и тем, о чём её просят в этот раз.
- Что это
Долговечные инструкции на всё взаимодействие: роль, правила, тон, формат вывода.
- Против чего
- User message — конкретный запрос этого раза.
- Пример
Система: «Ты бот поддержки магазина, отвечай кратко, не обещай скидок». Пользователь: «Где мой заказ?»
- Подвох
Смешать постоянные правила с запросом — и они будут «плавать» от вопроса к вопросу.
- Связи
Первый кусок в Context Assembly; формат вывода часто лучше показать через Few-shot.
Few-shot Prompting — покажи, а не только скажи
Научить кого-то формату, показав три готовых примера, быстрее и яснее, чем описывать словами и надеяться, что он верно вообразит.
Часто самый надёжный способ получить нужную форму вывода — включить пару примеров ввода и идеального вывода прямо в контекст. Это паттерн few-shot prompting. Модель сопоставляет примеры по шаблону куда лучше, чем следует абстрактному описанию.
Два-три острых примера могут побить абзац инструкций, и они часто самая быстрая починка, когда модель почти делает то, что ты хочешь, но не совсем.
- Проблема
- Модель почти делает нужное, но форма вывода «плывёт».
- Идея
Положить в окно 2–3 пары «вход → идеальный выход» — модель повторит шаблон.
- Пример
Три примера «отзыв → JSON с тональностью и темой», потом новый отзыв — и ответ в том же JSON.
- Цена
- Примеры занимают токены в каждом вызове — это часть Context Budget.
- Когда брать
- Когда важна форма, а абзац инструкций не помогает.
- Связи
- Один из кусков Context Assembly; дополняет System Prompt.
Context Assembly — собирай окно из частей
Упаковать портфель на встречу: повестка, два релевантных отчёта, заметка об ограничениях — выбрано нарочно, а не весь твой шкаф документов, опрокинутый внутрь.
Реальное окно контекста собирается из кусков на каждый вызов: системный промпт, релевантная история, извлечённые факты (RAG), примеры, доступные инструменты и наконец запрос пользователя. Это и есть сборка контекста (context assembly): решать, нарочно и каждый раз, какие куски входят, а какие остаются снаружи.
Думать об окне как о том, что ты строишь из частей, а не просто как о промпте, что печатаешь, — вот ментальный сдвиг, после которого всё остальное щёлкает.
- Проблема
- Окно — это «просто промпт», и в нём оказывается что попало.
- Идея
Собирать окно кодом из частей: system prompt, история, RAG-факты, примеры, инструменты, запрос.
- Пример
Вопрос о заказе: правила бота + последние 3 сообщения + данные этого заказа + вопрос. Без всего каталога.
- Цена
- Каждую часть надо выбрать и обосновать — это работа, а не магия.
- Связи
Части — System Prompt, Few-shot; фильтр — Curation; привычка — Deliberate Assembly.
Системный промпт задаёт долговечное поведение; пользовательское сообщение — это запрос; few-shot-примеры показывают нужную форму. Окно собирается из этих частей, нарочно, на каждый вызов.
Крупнейшая ошибка новичка в инженерии контекста — думать, что больше лучше. Верно обратное: каждый нерелевантный токен, что ты добавляешь, активно делает ответ хуже.
Relevance over Completeness — больше контекста не значит лучше
Брифинг в одну острую страницу бьёт свалку в 200 страниц — читатель находит сигнал вместо того, чтобы в нём тонуть, и решает быстрее и лучше.
Соблазнительно напихать в окно всё возможно релевантное «на всякий случай». Но больше — не лучше, обычно хуже. Принцип relevance over completeness — релевантность важнее полноты: каждый токен соревнуется за внимание модели, и нерелевантный материал разбавляет сигнал.
Навык — выбрать те немногие вещи, что важны, а не включить всё, что может.
- Проблема
- В окно кладут всё подряд «на всякий случай».
- Идея
- Цель — не дать модели всё, а дать ей ровно достаточно.
- Пример
Вместо всей базы знаний — три абзаца, которые реально отвечают на этот вопрос.
- Цена
- Нужно уметь отбирать: хороший поиск, обрезка, решения «что выкинуть».
- Связи
Почему — Context Dilution; как — Curation; ещё и экономит Context Budget.
Context Dilution — шум поднимает шанс неверного ответа
Спрячь один релевантный факт внутри горы в основном нерелевантной бумаги — и даже внимательный читатель начнёт цитировать не ту страницу: шум сам и вызывает ошибку.
Длинный, набитый контекст не просто тратит место; он активно ухудшает качество. Это разбавление контекста (context dilution): погребённое в нерелевантном материале, внимание модели размазывается, и в длинных контекстах это измеримо поднимает долю галлюцинаций и ошибок — она уверенно использует то, что и не задумывалось ответом.
Добавление контекста «на всякий случай» может быть ровно тем, что вызывает сбой. Меньше, острее контекст — это надёжнее контекст.
- Что это
- Нерелевантные токены разбавляют внимание модели к нужному сигналу.
- Чем грозит
В длинных контекстах растёт доля галлюцинаций и ошибок: модель берёт не тот кусок.
- Пример
В окне 20 похожих документов — модель цитирует соседний договор вместо нужного.
- Подвох
Контекст «на всякий случай» кажется безвредным — а может быть самой причиной сбоя.
- Связи
Лечится Curation; окно побольше (Long Context Windows) его не отменяет.
Curation — курируй безжалостно под этот вызов
Хороший редактор не добавляет — он режет, вручая тебе лишь те строки, что отрабатывают своё место на этой странице.
Дисциплина — безжалостное курирование (curation): для этого конкретного вызова включи те немногие вещи, что модели правда нужны, и оставь всё остальное снаружи. Это значит извлекать только самые релевантные чанки, обрезать историю до важного, выбрасывать контекст, что сделал своё дело.
- Проблема
- Окно растёт само: всё, что попало под руку, уходит в модель.
- Идея
На каждый вызов: только самые релевантные чанки, обрезанная история, ничего отработанного.
- Пример
Поиск находит 50 кусков, в окно идут лучшие 3; вывод инструмента, который уже разобран, — выбрасывается.
- Цена
- Можно отрезать нужное — поэтому изменения проверяют Context Evals.
- Связи
Воплощает Relevance over Completeness; родня Trim & Summarize и Compaction.
Больше контекста — не лучше: нерелевантные токены разбавляют внимание и поднимают галлюцинации. Курируй безжалостно: дай модели ровно то, что нужно этому вызову, и ничего больше.
Помимо качества, окно — конечный, оплачиваемый ресурс. Относиться к нему как к скудному бюджету, а не бесконечной свалке, — вот что отделяет игрушку от продукта.
Context Budget — окно конечно, и каждый токен стоит
Чемодан с пределом веса и платой за килограмм — ты пакуешь то, что реально понадобится, а не весь гардероб, потому что есть жёсткий потолок и цена.
У окна контекста максимальный размер, и каждый токен в нём стоит задержки и денег — бо́льшие контексты медленнее и дороже на каждом вызове. Так что контекст — не свободное место для заполнения; это бюджет контекста (context budget), который ты тратишь.
Фича, что набивает окно на каждый запрос, медленна и дорога в масштабе, ещё до того как страдает качество. Окно — это ресурс для распределения, а не пустота для заполнения.
- Что это
Окно — конечный и платный ресурс: потолок по размеру и цена за каждый токен.
- Чем платишь
- Задержкой и деньгами — на каждом вызове, умноженном на трафик.
- Пример
Фича шлёт в каждый запрос всю историю и весь справочник — медленно и дорого ещё до проблем с качеством.
- Когда думать
- С первого дня, как фича идёт к реальным пользователям.
- Связи
Тратится с умом через Trim & Summarize; не отменяется Long Context Windows.
Trim & Summarize — трать окно на то, что отрабатывает место
Тесный бюджет поездки вынуждает реальные выборы — ты тратишь на то, что важно для поездки, и пропускаешь остальное, и поездка лучше от этой дисциплины.
Относиться к окну как к бюджету меняет то, как ты строишь: ты обрезаешь (trim) историю разговора, суммируешь (summarize) старые ходы вместо того, чтобы нести их дословно, и извлекаешь только релевантное сейчас, а не всё, что у тебя есть. Каждый токен должен заработать свой слот.
Это та же дисциплина, что производительность или кэширование, — трать скудный ресурс нарочно, на то, что реально двигает исход.
- Проблема
- История разговора растёт, и каждый ход едет в окне дословно.
- Идея
Старые ходы — коротким резюме, свежие — как есть; извлекать только то, что нужно сейчас.
- Пример
Вместо 40 сообщений чата — резюме «клиент хочет вернуть заказ №…, уже прислал фото» + 2 последних сообщения.
- Цена
- Резюме может потерять деталь — проверяй на эвалах.
- Связи
Тратит Context Budget с умом; в долгих задачах переходит в Compaction.
Long Context Windows — окно побольше не кончает дисциплину
Аренда грузовика побольше не значит, что надо набить его хламом, — больше ёмкости это место для большего числа полезных вещей, а не лицензия перестать паковать аккуратно.
Модели продолжают выпускать бо́льшие окна контекста (long context windows) — миллион токенов, больше, — и соблазнительно думать, что проблема бюджета уходит. Не уходит. Окно побольше всё равно стоит дороже и медленнее на токен, и, что критично, более полное окно всё равно разбавляет внимание и приглашает ошибки.
Больше ёмкости — не разрешение вываливать; это просто больше места, что тебе всё равно надо тратить с умом. Дисциплина курирования окна переживает любой рост размера.
- Что это
- Модели с окнами в миллион токенов и больше.
- Соблазн
- Думать, что раз всё влезает, курировать больше не нужно.
- Пример
Залить весь репозиторий в окно «потому что влезает» — дорого, медленно, и модель путается.
- Подвох
Полнее окно — сильнее Context Dilution и больше места для Context Rot.
- Связи
Расширяет потолок Context Budget, но не отменяет Relevance over Completeness.
Окно конечно, и каждый токен стоит задержки и денег. Трать его как бюджет — обрезай, суммируй, извлекай только нужное — и не дай окну побольше кончить дисциплину.
В длинных, многошаговых взаимодействиях контекст не просто лежит — он накапливается и распадается. Управлять этим распадом — самая трудная и важная часть инженерии контекста в масштабе.
Context Rot — длинные контексты копят устаревшее и противоречивое
Игра в испорченный телефон вдоль длинной цепочки — к концу сообщение тихо мутировало, и все уверенно повторяют что-то слегка неверное.
За долгий разговор или многошаговую задачу агента окно наполняется историей: ранние ходы, выводы инструментов, недоделанное рассуждение. Со временем эта куча становится неряшливой — устаревшие факты сидят рядом со свежими, противоречия накапливаются, исходная цель уплывает из фокуса.
Индустрия зовёт получающийся распад качества гниением контекста (context rot): та же модель становится менее надёжной по мере того, как её собственный накопленный контекст становится шумнее.
- Что это
Распад качества по мере того, как накопленный контекст становится шумнее.
- Как выглядит
Устаревшие факты рядом со свежими, противоречия, исходная цель уплывает из фокуса.
- Пример
Агент на 30-м шаге опирается на версию файла, которую сам же переписал на 10-м.
- Подвох
- Окно побольше делает хуже: даёт гнили больше места копиться.
- Связи
- Лечится Compaction и Goal Re-anchoring.
Compaction — сжимай по ходу
Хороший конспектист не держит каждое слово долгого совещания — он дистиллирует его до решений и открытых вопросов, неся вперёд вывод, а не транскрипт.
Лекарство — активно сжимать контекст по мере роста. Это compaction: суммировать завершённые шаги в короткое текущее состояние вместо того, чтобы тащить вперёд весь транскрипт, выбрасывать выводы инструментов, как только извлёк важное, держать тугую рабочую сводку, а не сырую историю.
Модель несёт вывод, а не каждое слово, что его произвело. Так долгоиграющие агенты остаются связными — они управляют своим контекстом, а не дают ему копиться.
- Проблема
- Долгий агент тащит за собой весь транскрипт и начинает путаться.
- Идея
Завершённые шаги — в короткое текущее состояние; отработанные выводы инструментов — выбросить.
- Пример
Вместо 200 строк лога тестов — «тесты падают в
auth.ts, причина: истёкший токен».- Цена
- Сжатие может выкинуть важное — сводку надо делать аккуратно.
- Связи
Продолжение Trim & Summarize для агентов; в паре с Goal Re-anchoring против Context Rot.
Goal Re-anchoring — переякоривай цель
На долгом, извилистом походе ты регулярно перепроверяешь карту и пункт назначения — иначе дрейфуешь, по одному разумно выглядящему повороту за раз, прочь оттуда, куда метил.
За много шагов исходная задача размывается под весом всего, что случилось с тех пор. Так что ты её переякориваешь (re-anchoring): переформулируй цель и ключевые ограничения в окне на каждом шаге, чтобы модель оставалась нацелена на настоящую мишень, а не дрейфовала с разговором.
Окно побольше делает это хуже, а не лучше, — оно даёт дрейфу больше места копиться. Активное управление, а не сырая ёмкость, — вот что держит долгую задачу на курсе.
- Проблема
За много шагов цель размывается, и модель дрейфует вместе с разговором.
- Идея
- Заново класть цель и ключевые ограничения в окно на каждом шаге.
- Пример
Каждый шаг агента начинается с блока «Цель: перенести API на v2, не меняя публичных методов».
- Цена
- Пара строк токенов на шаг — дёшево по сравнению с дрейфом.
- Связи
Работает вместе с Compaction; первая строка рабочей сводки — это цель.
Длинные контексты гниют — устаревшее, противоречивое состояние накапливается и качество распадается. Сжимай завершённые шаги в текущую сводку и переякоривай цель, потому что окно побольше лишь даёт дрейфу больше места.
Инженерия контекста, сделанная хорошо, — это намеренная сборка, измеренная, как и всё остальное. Вся практика сводится к тому, чтобы строить окно нарочно и проверять, что это помогло.
Deliberate Assembly — строй окно нарочно, а не случайно
Повар выкладывает блюдо нарочно — каждый элемент помещён по причине — вместо того, чтобы наскрести на тарелку что попало со стола.
Ключевая привычка — намеренная сборка (deliberate assembly): относиться к окну как к тому, что ты конструируешь нарочно. Реши, что держит системный промпт, какую историю оставить или суммировать, что извлечь, какие примеры показать, какие инструменты выставить.
Многие LLM-приложения собирают контекст случайно — что попало под руку, то и шлётся. Строить его нарочно, с обоснованной каждой частью, — вот бо́льшая часть того, что отделяет надёжную фичу от флакающей.
- Проблема
- Контекст собирается случайно — и фича работает через раз.
- Идея
По каждой части принять решение: system prompt, история, извлечение, примеры, инструменты.
- Пример
Агенту дают 5 нужных инструментов вместо всех 40 — и короткую сводку вместо всей истории.
- Цена
- Время на проектирование окна — окупается надёжностью.
- Связи
- Привычка поверх Context Assembly; проверяется Context Evals.
Context Evals — меряй контекст, как меряешь код
Ты не гадаешь, помогло ли изменение, — ты тестируешь. То же и с тем, что кладёшь в окно: ответ стал лучше или хуже, и ты должен знать какой.
Изменения контекста — реальные изменения, так что проверяй их: когда подстраиваешь, что идёт в окно — больше примеров, другое извлечение, обрезанная история, — проверь эффект эвалами (evals), не просто окинь глазом один вывод.
Инженерия контекста без измерения — это настройка на ощупь, и так «безобидное» добавление тихо ухудшает качество. Относись к содержимому окна как к тому, что тестируешь, — та же дисциплина, что курс об эвалах.
- Проблема
Изменение окна «на глаз» выглядит лучше — а на деле тихо ухудшило качество.
- Идея
Каждое изменение контекста — прогон на фиксированном наборе тестов и сравнение счёта.
- Пример
Обрезали историю до 5 сообщений — прогнали 100 тестовых диалогов и увидели, стало лучше или хуже.
- Цена
- Нужно собрать набор тестов и гонять его — это работа.
- Связи
Проверяет Curation, Trim & Summarize, Compaction; подробно — курс об эвалах.
- Всё ли, что нужно модели, в окне — или ты ждёшь, что она будет знать то, что ты ей не дал?
- Системное против пользовательского — долговечные правила в системном промпте, запрос в пользовательском сообщении?
- Помогут ли примеры — это случай, где few-shot бьёт больше инструкций?
- Каждый ли кусок релевантен — или набивка разбавляет внимание и поднимает ошибки?
- В бюджете ли ты — обрезаешь и суммируешь, а не вываливаешь всё?
- Для долгих задач — сжимаешь ли и переякориваешь ли против гниения контекста?
- Ты чинишь плохие ответы, проверяя, что в окне, прежде чем переформулировать промпт.
- Долговечные правила живут в системном промпте; ты тянешься к few-shot-примерам, когда важна форма.
- Ты курируешь безжалостно — релевантность важнее полноты — вместо набивки окна.
- Ты относишься к окну как к бюджету, обрезая и суммируя, а не вываливая.
- Для долгих задач ты сжимаешь и переякориваешь и меряешь изменения контекста вместо гадания.
Как всё связано
Схема метро целиком: теперь видно, где линии пересекаются.
Модель без состояния → значит, всё решает окно → значит, окно надо инженерить. Окно собирается из частей (системный промпт, примеры, факты). Три силы его портят: нерелевантность, бюджет и гниение со временем. У каждой — своя практика: курирование, обрезка и резюме, сжатие с переякориванием. А эвалы проверяют, что каждое изменение помогло.
Шпаргалка: все 18 понятий
Окно
- Stateless Modelмодель без состояния
Ничего не помнит между вызовами; «память» чата — это переотправка истории.
- Context Windowокно контекста
Весь текст вызова — единственная рабочая память модели. Нет в окне — нет вообще.
Сдвиг
- Context Engineeringпротив prompt engineering
Не формулировка запроса, а сборка всей нужной информации в окно.
- Missing Contextнехватка контекста
Большинство плохих ответов — не плохая фраза, а то, чего не было в окне.
Сборка окна
- System Promptvs user message
Долговечные роль, правила, тон, формат — против разового запроса.
- Few-shot Promptingпримеры в контексте
Покажи 2–3 пары «вход → выход» — модель повторит форму.
- Context Assemblyсборка из частей
Окно собирается кодом на каждый вызов: правила, история, факты, примеры, инструменты, запрос.
Релевантность
- Relevance over Completenessрелевантность важнее полноты
Дать модели не всё, а ровно достаточно.
- Context Dilutionразбавление шумом
Нерелевантные токены размазывают внимание и поднимают галлюцинации.
- Curationкурирование
Только лучшие чанки, обрезанная история, ничего отработанного.
Бюджет
- Context Budgetбюджет контекста
Окно конечно; каждый токен стоит задержки и денег в каждом вызове.
- Trim & Summarizeобрезать и суммировать
Старые ходы — резюме, свежие — как есть; каждый токен зарабатывает место.
- Long Context Windowsокна 1M+ токенов
Больше места — не разрешение вываливать; шум и цена остаются.
Гниение и дрейф
- Context Rotгниение контекста
Долгий контекст копит устаревшее и противоречивое — качество падает.
- Compactionсжатие по ходу
Завершённые шаги — в короткую рабочую сводку вместо транскрипта.
- Goal Re-anchoringпереякоривание цели
Заново класть цель и ограничения в окно на каждом шаге.
Практика
- Deliberate Assemblyнамеренная сборка
У каждой части окна есть решение и причина — не «что попало под руку».
- Context Evalsэвалы контекста
Каждое изменение окна проверяется тестами, а не на глаз.
Инженерия контекста — это намеренная сборка окна: нужные правила, нужные факты, нужные примеры, скурированные до релевантности, удержанные в бюджете и управляемые против гниения, — построенные нарочно и измеренные, а не напечатанные и понадеянные.