Стратегии инженерии контекста: 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 и смотри, сколько токенов освобождается.
Частые вопросы
Что такое стратегии 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, которые применяют к работающему агенту, особенно в долгоживущих и многоагентных системах. Он опирается на вводный урок по инженерии контекста, а не повторяет его — здесь ты учишься, какой приём выбрать, когда появляется конкретный режим отказа.
Попробуй сам
Интерактивное демо этой техники
Долгоживущий агент анализа кодовой базы — один раздутый контекст против четырёх стратегий
Утечки памяти обычно связаны с тем, что объекты не освобождаются. Проверьте, нет ли у вас глобальных переменных, незакрытых соединений или подписок на события. Рекомендую профилировать приложение и искать растущие структуры данных.
Причина утечки: в cache.ts (строки 12-40) cache — это неограниченный Map, в который каждый job добавляет запись, но удаления нет. Под нагрузкой на очередь он растёт линейно — отсюда рост RSS.
Фикс: заменить Map на LRU-кэш с ограничением размера (например, lru-cache, maxSize=1000) или добавлять TTL и периодически вычищать устаревшие записи. После job, который больше не нужен, вызывать cache.delete(jobId).
Дамп всего в одно окно вызывает context rot — ответ общий и дорогой (124K токенов). Слои Write+Select+Compress+Isolate дают компактный контекст и точный ответ за ~1.8K токенов.
Создайте бесплатный аккаунт для решения челленджей
3 челленджей с AI-проверкой для этого урока
Этот урок — часть структурированного курса по LLM.
Мой путь обучения