Контекстная инженерия: внимание модели — это бюджет
Промпт-инженерия — это про то, как сформулировать запрос. Контекстная инженерия — это про то, какие токены вообще положить перед моделью: системный промпт, инструменты, примеры, историю, найденные документы. Разбираю статью Anthropic.
Гниение контекста
Кажется, что если окно контекста миллион токенов, туда можно положить всё. Но исследования показывают эффект context rot: чем длиннее контекст, тем хуже модель вспоминает конкретные детали. Причина в архитектуре: в трансформере каждый токен связан с каждым, это n² связей, и внимание размазывается.
Вывод статьи: у модели есть бюджет внимания, и каждый лишний токен его тратит. Задача — найти минимальный набор токенов с максимальным сигналом.
Компоненты контекста
Системный промпт должен быть на правильной «высоте». Слишком низко — жёсткие if-else на все случаи, и всё хрупко. Слишком высоко — расплывчатые пожелания, и модель не понимает, чего от неё хотят. Нужна середина: конкретные принципы и эвристики.
Инструменты — минимальный однозначный набор. Если человек не может сразу сказать, какой из двух инструментов нужен, модель тоже не сможет.
Примеры — несколько разнообразных и показательных, а не длинный список всех краевых случаев.
Подгрузка по требованию
Вместо того чтобы загрузить все данные заранее, агент держит лёгкие ссылки: пути к файлам, запросы, URL. Нужные данные он подтягивает во время работы, примерно как человек, который не учит наизусть всю файловую систему, а знает, где искать.
Длинные задачи
Когда работа не помещается в одно окно, есть три приёма:
- Сжатие (compaction): пересказать историю, выкинуть лишнее и начать новое окно с выжимкой.
- Структурированные заметки: агент ведёт файл с прогрессом, планом и выводами вне контекста и перечитывает его.
- Субагенты: узкие помощники работают в чистом контексте и возвращают главному агенту короткий итог, а не все свои поиски.
Мой комментарий
Ева по сути построена вокруг этой идеи, просто по причине бедности: на 8 ГБ VRAM длинный контекст ещё и физически дорогой из-за KV-кеша.
- Context Architect — это субагент, который собирает контекст и отдаёт дальше только выжимку.
- Мануалы инструментов не лежат в промпте, а подтягиваются через HNSW по требованию.
- Узел Зеро вообще не видит истории: он классифицирует один запрос и забывает его.
Меньше контекста — меньше памяти, быстрее ответ и, оказывается, умнее модель.