Главная / Документация / Управление контекстом

Управление контекстом

Почему стоимость длительных сессий растёт нелинейно и какие подходы позволяют ограничивать размер истории.

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

Суть проблемы

Диалог из N шагов, каждый из которых добавляет примерно T токенов, суммарно требует порядка N²T/2 входных токенов вместо NT. Удвоение длины сеанса примерно вчетверо увеличивает расходы на входные токены. Поэтому агент, который казался дешёвым в течение десяти минут, через час начинает вызывать тревогу.

Четыре работающих подхода

ПодходКак работаетКомпромисс
Скользящее окноСохраняйте последние K шагов, удаляйте остальныеПолностью теряет ранний контекст
Обновляемая сводкаПериодически заменяйте старые шаги кратким изложением, созданным модельюТребует одного дополнительного вызова; сохраняет суть
Новый сеанс для каждой задачиНачинайте с чистого листа при смене темыБесплатно и обычно уместно
Внешнее хранениеХраните состояние в файлах или базе данных, загружайте только то, что нужно на текущем шагеБольше всего работы, лучший результат

Краткое изложение предыдущих шагов

def compact(history, keep=6):
    class="s">""class="s">"Replace everything but the last `keep` turns with one summary turn."class="s">""
    if len(history) <= keep:
        return history
    old, recent = history[:-keep], history[-keep:]
    summary = summarise(old)          class=class="s">"c"># one cheap Haiku call
    return [{class="s">"role": class="s">"user", class="s">"content": fclass="s">"Summary of earlier discussion: {summary}"}] + recent

Поручите создание сводки недорогой модели. Это задача сжатия, а не рассуждения.

Обычно причина — результаты инструментов

В агентных инструментах начало новой сессии при переходе между несвязанными задачами — самый дешёвый способ оптимизации. В Claude Code для этого используется /clear.