Context Layers

Дисциплина сборки подсказки: контекст разводится на четыре слоя с разным сроком жизни, и в подсказку попадают не все доступные данные, а только те, у которых есть понятное назначение и срок.

Суть

Контекстное окно — это ёмкость. Слои контекста — это правило, чем её заполнять. Без такого правила сборка подсказки превращается в накопление: всё, что когда-то оказалось полезным, остаётся навсегда, потому что удалять страшно и непонятно что.

Четыре слоя различаются не важностью, а временем жизни:

Слой Что содержит Живёт
Static Роль, политики, разрешённые возможности, фиксированные инструкции Всё время, меняется релизом
Session То, что относится к текущей сессии пользователя Сессия
Turn То, что относится только к текущему запросу Один шаг
Cached То, что подмешивается выборочно по необходимости По требованию

Для длинной процедуры внутри session-слоя нужна ещё одна граница по роли, а не по сроку: канонический execution state отделяется от истории сообщений. Оба живут сессию, но state определяет следующий переход и проходит валидацию перед записью, а transcript служит журналом и не обязан входить в каждый prompt (State Centric Execution). Если оставить их одним полем messages, временная классификация соблюдена формально, но session-слой всё равно растёт без ограничения.

Почему разделение практично, а не теоретично

Оно даёт правило удаления. Вопрос «можно ли выкинуть это из контекста» неразрешим, пока данные лежат одной кучей. С разделением он становится механическим: turn-контекст выбрасывается по завершении шага, session — по завершении сессии, и только static требует решения человека.

Оно совпадает с границей кэширования. Static-слой неизменен и потому кэшируется как префикс, а turn-слой меняется каждый шаг. Отсюда практическое правило порядка: неизменное идёт в начало подсказки, изменчивое — в конец, иначе кэш префикса не работает (Prompt Caching).

Оно задаёт границу доверия. Static — доверенные инструкции рантайма. Всё, что пришло из поиска, из вывода инструмента или от пользователя, — данные, а не команды, и маркируется соответственно (Prompt Injection).

Где это ломается

Типичный дефект — «слой, который вырос в архив»: session-контекст, куда складывают результаты всех вызовов инструментов за сессию. Формально это session, фактически — накопитель, который к двадцатому шагу занимает больше места, чем полезные данные, и модель начинает теряться (Agent Memory).

Лечится тем же разделением: результат инструмента по умолчанию turn-уровня. Если он нужен дальше — это осознанное решение о переводе в session или во внешнее хранилище со ссылкой в контексте, а не побочный эффект того, что его некуда деть.

Связано с

  • Context Compaction — как слои разгружаются, когда перестают помещаться
  • Context Window — ёмкость, которую эти слои заполняют
  • Agent Execution Platform — где сборка подсказки стоит среди слоёв платформы
  • Prompt Caching — почему порядок слоёв влияет на стоимость
  • Agent Memory — что делать с тем, что не помещается
  • Prompt Injection — почему граница доверия совпадает с границей слоя
  • Prompt Engineering — приёмы внутри самой подсказки
  • State Centric Execution — канонический state внутри сессии отдельно от append-only transcript