Урок 7

Стратегии инженерии контекста: Write, Select, Compress, Isolate

Четыре приёма управления контекстом агента

Проблема: Агент отлично работает три шага, а потом деградирует: забывает цель, повторяет вызовы инструментов и даёт ответы хуже, по мере того как окно контекста заполняется шумом. Что идёт не так и как держать контекст компактным?

Решение: Write, Select, Compress, Isolate

Инженерия контекста (context engineering) — это практика курирования наименьшего высокосигнального набора токенов, который модель видит на каждом ходе. По мере работы агента его окно контекста заполняется вызовами инструментов, извлечёнными документами и историей чата. С какого-то момента это вызывает context rot — модель менее надёжно обращает внимание на важное (эффект «lost in the middle») — или отравление контекста (poisoning), когда один неверный или вредоносный токен уводит весь оставшийся прогон. LangChain формализовала четыре приёма для борьбы с этим: Write, Select, Compress и Isolate.

Четыре приёма

Write сохраняет состояние вне окна — скретчпады, файлы или внешняя память (memory) — и подтягивает его по требованию, чтобы промпт оставался компактным. Select подтягивает только то, что релевантно прямо сейчас, через поиск (retrieval), выбор инструментов или выбор файлов. Compress суммаризирует или обрезает длинную историю и многословный вывод инструментов, чтобы оставшиеся токены были плотными. Isolate разделяет работу между отдельными контекстами суб-агентов, чтобы каждый оставался сфокусированным и шум одной задачи никогда не загрязнял другую.

Как выбрать приём

Каждый приём чинит свой режим отказа. Если промпт раздут состоянием, которое ты постоянно пересылаешь, — Write его наружу. Если запихиваешь целый корпус — Select релевантный срез. Если история и дампы инструментов съедают бюджет — Compress их. Если один агент жонглирует слишком многим — Isolate в суб-агентов. В реальных системах ты комбинируешь все четыре: выносишь состояние, выбираешь нужное, сжимаешь длинное и изолируешь параллельную работу.

Представьте это как работу за рабочим столом:

  • 1. Write: Выносить состояние во внешнюю память (скретчпады, файлы) вместо запихивания в каждый промпт
  • 2. Select: Извлекать только релевантный сейчас контекст — нужные документы, инструменты и файлы
  • 3. Compress: Суммаризировать длинную историю и обрезать многословный вывод инструментов, чтобы токены были плотными
  • 4. Isolate: Разделять задачу между суб-агентами, у каждого свой отдельный контекст

В продакшн-агентах редко применяют один приём — обычно все четыре наслаиваются вместе.

Где эти стратегии важны

  • Долгоживущие агенты: Многошаговые агенты, работающие минуты или часы, должны выносить состояние и обрезать историю, иначе окно «протухает»
  • Многоагентные системы: Isolate даёт каждому суб-агенту собственный чистый контекст, чтобы одна задача не загрязняла другую
  • RAG-приложения: Select извлекает только несколько релевантных фрагментов вместо запихивания всей базы знаний
  • Кодинг-агенты: Агенты над большими кодовыми базами используют Select для файлов и Compress для вывода инструментов, чтобы оставаться сфокусированными

Интересный факт: Формулировка из четырёх приёмов (Write / Select / Compress / Isolate) была популяризирована LangChain в 2025 году — в том же году, когда стала вирусной фраза «prompt engineering мёртв, да здравствует context engineering». Истина спокойнее: промптинг — теперь лишь одна часть большой работы по курированию контекста.

Попробуйте сами!

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

Стратегии инженерии контекста

Включай Write / Select / Compress / Isolate и смотри, сколько токенов освобождается.

Занято: 17 200 / 16 000Переполнение: +1 200
Системный промпт800
Состояние агента / скретчпад2 600
Вся база знаний5 200
Вся история чата3 400
Многословный вывод инструментов2 800
Контекст параллельной подзадачи2 400
⚠ Окно переполнено — context rot
Освобождено: 0 токенов
💡 Идея: Каждая стратегия чинит свой режим отказа. В реальных агентах их наслаивают вместе, чтобы держать окно компактным и высокосигнальным.

Частые вопросы

Что такое стратегии Write, Select, Compress и Isolate?

Это четыре приёма инженерии контекста, которые популяризировала LangChain. Write сохраняет состояние вне контекстного окна (скретчпады, внешняя память) и подтягивает его по требованию. Select извлекает только то, что релевантно прямо сейчас (RAG, выбор инструментов и файлов). Compress сжимает (суммаризирует или обрезает) историю и многословный вывод инструментов, чтобы токены оставались плотными. Isolate разделяет работу между отдельными контекстами суб-агентов, чтобы каждый оставался сфокусированным. Вместе они позволяют собрать наименьший набор высокосигнальных токенов, который видит модель.

Что такое context rot и как эти стратегии его лечат?

Context rot — это деградация рассуждений, которая возникает, когда контекстное окно заполняется низкосигнальными или противоречивыми токенами: нерелевантной историей, устаревшим выводом инструментов, отравленными данными. По мере роста окна модель менее надёжно обращает внимание на важное (эффект «lost in the middle») и легче отвлекается. Select оставляет в окне только релевантные токены, Compress сжимает многословные, Write выносит состояние из окна, а Isolate не даёт шуму одной задачи загрязнять другую — каждый приём повышает отношение сигнал/шум.

Чем это отличается от prompt engineering и базовой инженерии контекста?

Prompt engineering — про то, как хорошо сформулировать одну инструкцию. Инженерия контекста — более широкая дисциплина курирования всего, что видит модель. Этот урок — практический слой-плейбук: конкретные операции Write / Select / Compress / Isolate, которые применяют к работающему агенту, особенно в долгоживущих и многоагентных системах. Он опирается на вводный урок по инженерии контекста, а не повторяет его — здесь ты учишься, какой приём выбрать, когда появляется конкретный режим отказа.

Попробуй сам

Интерактивное демо этой техники

Сравнение техник
Демо режим
Предзаписанные ответы
ЗадачаПродвинутыйАнализ

Долгоживущий агент анализа кодовой базы — один раздутый контекст против четырёх стратегий

Без техники
Без техники
Промпт
[Один промпт] Вот ВСЯ кодовая база (180 файлов, ~95K токенов), вся история из 35 шагов агента и полный сырой вывод всех вызванных инструментов. Задача: найди причину утечки памяти в воркере и предложи фикс.
Ответ

Утечки памяти обычно связаны с тем, что объекты не освобождаются. Проверьте, нет ли у вас глобальных переменных, незакрытых соединений или подписок на события. Рекомендую профилировать приложение и искать растущие структуры данных.

Токены:124000/70
Время:9200ms
Качество:
С context-strategies
С техникой
Промпт
[Write] Полный план и состояние агента вынесены в скретчпад; в промпт подтянуты только цель и открытые TODO. [Select] Из 180 файлов извлечены 3 релевантных воркеру (queue.ts, worker.ts, cache.ts). [Compress] 35 шагов истории сжаты в резюме на 250 токенов; сырой вывод инструментов обрезан до ключевых полей. [Isolate] Профилирование памяти выполнено отдельным суб-агентом, который вернул только итог. Задача: найди причину утечки памяти в воркере и предложи фикс. Контекст: - Резюме: рост RSS наблюдается только под нагрузкой на очередь. - Суб-агент профилирования: неограниченный Map `cache` в cache.ts растёт на каждый job, записи не удаляются. - Релевантный код: cache.ts строки 12-40.
Ответ

Причина утечки: в cache.ts (строки 12-40) cache — это неограниченный Map, в который каждый job добавляет запись, но удаления нет. Под нагрузкой на очередь он растёт линейно — отсюда рост RSS.

Фикс: заменить Map на LRU-кэш с ограничением размера (например, lru-cache, maxSize=1000) или добавлять TTL и периодически вычищать устаревшие записи. После job, который больше не нужен, вызывать cache.delete(jobId).

👁️Write вынес состояние агента из окна — промпт перестал быть раздутым
🧠Select оставил только 3 релевантных файла, Compress сжал историю и вывод инструментов
🧠Isolate отдал профилирование суб-агенту, который вернул точный вывод вместо шума
✅Итог: окно компактное и высокосигнальное — модель указала точную строку и фикс
Токены:1800/110
Время:1400ms
Качество:
Почему это работает

Дамп всего в одно окно вызывает context rot — ответ общий и дорогой (124K токенов). Слои Write+Select+Compress+Isolate дают компактный контекст и точный ответ за ~1.8K токенов.

1 / 2

Квиз по уроку

1 из 4

1.Агент в каждом промпте пересылает весь растущий план и скретчпад, раздувая окно. Какая стратегия прямо это чинит?

Практика

Создайте бесплатный аккаунт для решения челленджей

3 челленджей с AI-проверкой для этого урока

Этот урок — часть структурированного курса по LLM.

Мой путь обучения