> ## Documentation Index
> Fetch the complete documentation index at: https://openclaw.veiseule.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Прореживание сеанса

# Прореживание сеанса

Прореживание сеанса обрезает **старые результаты инструментов** из контекста в памяти непосредственно перед каждым вызовом LLM. Оно **не** переписывает историю сеанса на диске (`*.jsonl`).

## Когда оно выполняется

* Когда `mode: "cache-ttl"` включено и последний вызов Anthropic для сеанса старше, чем `ttl`.
* Влияет только на сообщения, отправляемые модели для данного запроса.
* Активно только для вызовов Anthropic API (и моделей Anthropic через OpenRouter).
* Для наилучших результатов сопоставляйте `ttl` с вашим `cacheControlTtl` модели.
* После прореживания окно TTL сбрасывается, поэтому последующие запросы сохраняют кэш до повторного истечения `ttl`.

## Умные значения по умолчанию (Anthropic)

* Профили **OAuth или setup-token**: включить прореживание `cache-ttl` и установить heartbeat на `1h`.
* Профили **API key**: включить прореживание `cache-ttl`, установить heartbeat на `30m` и значение по умолчанию `cacheControlTtl` на `1h` для моделей Anthropic.
* Если вы явно задаёте любое из этих значений, OpenClaw **не** переопределяет их.

## Что это улучшает (стоимость + поведение кэша)

* **Зачем прореживать:** кэширование промпта Anthropic применяется только в пределах TTL. Если сеанс простаивает дольше TTL, следующий запрос повторно кэширует полный промпт, если вы не обрежете его заранее.
* **Что становится дешевле:** прореживание уменьшает размер **cacheWrite** для первого запроса после истечения TTL.
* **Почему важен сброс TTL:** после выполнения прореживания окно кэша сбрасывается, поэтому последующие запросы могут повторно использовать свежекэшированный промпт вместо повторного кэширования всей истории.
* **Чего это не делает:** прореживание не добавляет токены и не «удваивает» стоимость; оно лишь изменяет то, что кэшируется в первом запросе после TTL.

## Что может быть прорежено

* Только сообщения `toolResult`.
* Сообщения пользователя и ассистента **никогда** не изменяются.
* Последние `keepLastAssistants` сообщений ассистента защищены; результаты инструментов после этой границы не прореживаются.
* Если сообщений ассистента недостаточно для определения границы, прореживание пропускается.
* Результаты инструментов, содержащие **блоки изображений**, пропускаются (никогда не обрезаются/не очищаются).

## Оценка окна контекста

Прореживание использует оценочное окно контекста (символы ≈ токены × 4). Базовое окно определяется в следующем порядке:

1. Переопределение `models.providers.*.models[].contextWindow`.
2. Определение модели `contextWindow` (из реестра моделей).
3. Значение по умолчанию `200000` токенов.

Если задано `agents.defaults.contextTokens`, оно рассматривается как ограничение (min) для вычисленного окна.

## Режим

### cache-ttl

* Прореживание выполняется только если последний вызов Anthropic старше, чем `ttl` (по умолчанию `5m`).
* При выполнении: то же поведение мягкой обрезки + жёсткой очистки, что и ранее.

## Мягкое и жёсткое прореживание

* **Мягкая обрезка**: только для слишком больших результатов инструментов.
  * Сохраняет начало и конец, вставляет `...` и добавляет примечание с исходным размером.
  * Пропускает результаты с блоками изображений.
* **Жёсткая очистка**: заменяет весь результат инструмента на `hardClear.placeholder`.

## Выбор инструментов

* `tools.allow` / `tools.deny` поддерживают подстановки `*`.
* Отрицать победы.
* Сопоставление не чувствительно к регистру.
* Пустой список разрешений ⇒ разрешены все инструменты.

## Взаимодействие с другими ограничениями

* Встроенные инструменты уже усекaют собственный вывод; прореживание сеанса — дополнительный слой, предотвращающий накопление чрезмерного объёма вывода инструментов в контексте модели при длительных чатах.
* Уплотнение — отдельно: уплотнение суммирует и сохраняет, прореживание — временно для каждого запроса. См. [/concepts/compaction](/concepts/compaction).

## Значения по умолчанию (когда включено)

* `ttl`: `"5m"`
* `keepLastAssistants`: `3`
* `softTrimRatio`: `0.3`
* `hardClearRatio`: `0.5`
* `minPrunableToolChars`: `50000`
* `softTrim`: `{ maxChars: 4000, headChars: 1500, tailChars: 1500 }`
* `hardClear`: `{ enabled: true, placeholder: "[Old tool result content cleared]" }`

## Примеры

По умолчанию (выключено):

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  agent: {
    contextPruning: { mode: "off" },
  },
}
```

Включить прореживание с учётом TTL:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  agent: {
    contextPruning: { mode: "cache-ttl", ttl: "5m" },
  },
}
```

Ограничить прореживание конкретными инструментами:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  agent: {
    contextPruning: {
      mode: "cache-ttl",
      tools: { allow: ["exec", "read"], deny: ["*image*"] },
    },
  },
}
```

См. справочник по конфигурации: [Gateway Configuration](/gateway/configuration)
