Загрузка...

Контекст-инжиниринг (Context engineering): что это и как работает

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

Anthropic в статье «Effective context engineering for AI agents» (29 сентября 2025) описывает сдвиг так: работа с языковыми моделями всё меньше сводится к подбору слов в запросе и всё больше — к вопросу, какая конфигурация контекста даст нужное поведение (Anthropic Engineering).

Что такое контекст-инжиниринг

Контекст — это все токены, которые модель получает при генерации. В него входят:

  • системные инструкции и роль;
  • история диалога и результаты предыдущих шагов агента;
  • описания инструментов и их вывод (логи, содержимое файлов, ответы API);
  • фрагменты из RAG и приложенные документы;
  • данные из MCP-серверов;
  • память между сессиями: файлы заметок, правила проекта.

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

Объём сам по себе не помогает: из-за эффекта context rot чем больше токенов в окне, тем хуже модель извлекает из него нужное. У модели есть «бюджет внимания», который тратится с каждым токеном. Поэтому «добавить ещё документов» нередко ухудшает ответ.

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

Чем отличается от промпт-инжиниринга

Критерий Промпт-инжиниринг Контекст-инжиниринг
Объект работы Текст запроса и системная инструкция Всё содержимое окна: промпт, история, файлы, вывод инструментов, RAG, память
Характер Разовая задача Итеративный процесс: контекст пересобирается на каждом шаге
Кто занимается Автор промпта, пользователь Инженер, который строит агента и его окружение
Где проявляется Качество одного ответа Устойчивость длинных задач, стоимость и скорость агента

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

Приёмы

  • Компактирование и суммаризация истории. Когда контекст близок к лимиту, историю сжимают: сохраняют решения, нерешённые проблемы и детали реализации, шумный вывод инструментов отбрасывают.
  • Изоляция в субагентах. Каждый субагент работает в своём чистом окне и возвращает главному агенту выжимку — по оценке Anthropic, обычно 1 000–2 000 токенов. В Claude Code у субагента свой системный промпт, набор инструментов и права (документация).
  • Кэширование промптов. Стабильный префикс (инструменты, системный промпт, база знаний) считается один раз, поэтому стабильное кладут в начало, переменное — в конец. Любое изменение блока до точки кэширования сбрасывает кэш. Минимальный кэшируемый префикс у моделей Claude 5.5 — 512 токенов, срок жизни по умолчанию — 5 минут (документация Anthropic). Подробнее — в статье «Кэширование промптов».
  • Выборочная подгрузка вместо «прочитай весь репозиторий». Агент хранит лёгкие идентификаторы (пути, запросы) и подгружает данные в момент нужды — just-in-time retrieval. Claude Code так и работает: CLAUDE.md загружается сразу, файлы находятся через glob и grep.
  • Структурирование блоками. Anthropic рекомендует делить промпт на секции (<background_information>, <instructions> и т. д.) и разделять их XML-тегами или markdown-заголовками: один блок — одна роль.
  • Память между сессиями. Каждая сессия начинается с пустого окна, поэтому знания переносят файлами: в Claude Code это CLAUDE.md (пишете вы) и auto memory (пишет агент); оба хранятся как markdown (документация). Файл инструкций длиннее 200 строк расходует контекст и хуже соблюдается.

Как это влияет на деньги

Контекст — это токены, а токены — это счёт. В агентном цикле входной контекст отправляется заново на каждом шаге, поэтому лишние 30 тысяч токенов истории оплачиваются столько раз, сколько шагов делает агент.

Выдержка из каталога RouterAI на момент написания (₽ за 1 млн токенов, актуальные цены смотрите в каталоге):

Модель Вход Выход Кэш: чтение
anthropic/claude-sonnet-5.5 215 ₽ 1077 ₽ 10,77 ₽
anthropic/claude-haiku-5.5 (запрос до 100K) 10,77 ₽ 53,85 ₽ 1,08 ₽
openai/gpt-5.5 538,53 ₽ 3231,17 ₽ 53,85 ₽
deepseek/deepseek-v4-flash 4,95 ₽ 16,85 ₽ 1,29 ₽

Пример: агент делает 100 шагов в день, на каждом отправляя 200 тысяч входных токенов, то есть 20 млн в сутки. На anthropic/claude-sonnet-5.5 это около 4 300 ₽ по обычной цене входа и около 215 ₽, если префикс читается из кэша. Выходные токены и запись в кэш в расчёт не входят. Разница получилась только от устройства контекста.

У кэша есть цена: у Anthropic запись на 5 минут стоит 1,25× от цены входа, чтение — 0,1×. Кэш выгоден, когда префикс переиспользуется много раз, и бесполезен, если системный промпт меняется в каждом запросе.

Инструменты и практика

  • Claude Code — CLAUDE.md (или AGENTS.md), правила в .claude/rules/, auto memory, команда /compact, субагенты. Подключение: Claude Code через RouterAI.
  • Cline — правила проекта в .clinerules/ или .cline/rules/, отдельно глобальные; читает также .cursorrules, .windsurfrules и AGENTS.md, правила можно включать по одному (документация). Подключение: Cline через RouterAI.
  • OpenHands — Context Condenser суммаризирует старую часть истории, когда она превышает порог, например CondenserSettings(enabled=True, max_size=50) (документация).

Итог

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

Что почитать