Technical reference
Использование токенов и расходы
OpenClaw отслеживает токены, а не символы. Токены зависят от модели, но для большинства моделей в стиле OpenAI среднее значение для английского текста составляет ~4 символа на токен.
Как формируется системный промпт
OpenClaw формирует собственный системный промпт при каждом запуске. Он включает:
- Список инструментов + краткие описания
- Список Skills (только метаданные; инструкции загружаются по требованию с помощью
read). Нативные ходы Codex получают компактный блок Skills в виде ограниченных текущим ходом инструкций разработчика по совместной работе; другие среды выполнения получают его в обычной части промпта. Размер ограничиваетсяskills.limits.maxSkillsPromptChars, с необязательным переопределением для каждого агента вagents.list[].skillsLimits.maxSkillsPromptChars. - Инструкции по самообновлению
- Рабочая область + файлы начальной загрузки (
AGENTS.md,SOUL.md,TOOLS.md,IDENTITY.md,USER.md,HEARTBEAT.md,BOOTSTRAP.mdдля новых рабочих областей, а такжеMEMORY.mdпри наличии). Большие внедряемые файлы обрезаются согласноagents.defaults.bootstrapMaxChars(по умолчанию:20000); общий объём внедряемых данных начальной загрузки ограничиваетсяagents.defaults.bootstrapTotalMaxChars(по умолчанию:60000).- Нативные ходы Codex не вставляют необработанное содержимое
MEMORY.md, когда для этой рабочей области доступны инструменты памяти; вместо этого они получают небольшой указатель на память в ограниченных текущим ходом инструкциях разработчика по совместной работе и используют инструменты памяти по требованию. Если инструменты отключены, поиск по памяти недоступен или активная рабочая область отличается от рабочей области памяти агента,MEMORY.mdвозвращается к обычному ограниченному пути контекста хода. - Корневой файл
memory.mdв нижнем регистре никогда не внедряется. Это устаревший вход для исправления с помощьюopenclaw doctor --fix, который переносит его вMEMORY.md. - Ежедневные файлы
memory/*.mdне входят в обычный промпт начальной загрузки; в обычных ходах они остаются доступными по требованию через инструменты памяти. Запуски модели при сбросе или старте могут предварять первый ход одноразовым блоком контекста запуска с недавней ежедневной памятью; это регулируетсяagents.defaults.startupContext. Сообщения чата, состоящие только из/newили/reset, подтверждаются без вызова модели. - Фрагменты
AGENTS.mdпосле Compaction обрабатываются отдельно и требуют явного включения черезagents.defaults.compaction.postCompactionSections.
- Нативные ходы Codex не вставляют необработанное содержимое
- Время (UTC + часовой пояс пользователя)
- Теги ответа + поведение Heartbeat
- Метаданные среды выполнения (хост/ОС/модель/мышление)
Полное описание см. в разделе Системный промпт.
При документировании учётных данных или фрагментов аутентификации используйте Соглашения о заполнителях секретов, чтобы избежать ложных срабатываний сканера секретов в изменениях, затрагивающих только документацию.
Что учитывается в окне контекста
Всё, что получает модель, учитывается в ограничении контекста:
- Системный промпт (все разделы выше)
- История разговора (сообщения пользователя + ассистента)
- Вызовы инструментов и их результаты
- Вложения/расшифровки (изображения, аудио, файлы)
- Сводки Compaction и артефакты сокращения
- Обёртки провайдера или заголовки безопасности (не видны, но всё равно учитываются)
Для ресурсоёмких поверхностей среды выполнения предусмотрены собственные явные ограничения в
agents.defaults.contextLimits (переопределения для отдельных агентов находятся в
agents.list[].contextLimits):
| Ключ | Назначение |
|---|---|
memoryGetMaxChars |
Максимальное число символов, возвращаемых memory_get до обрезки. |
memoryGetDefaultLines |
Стандартное окно строк memory_get, если в запросе не указано lines. |
toolResultMaxChars |
Расширенный предел для одного результата активного инструмента (до 1000000 символов). |
postCompactionMaxChars |
Максимальное число символов из AGENTS.md, сохраняемых при обновлении после Compaction. |
Это ограниченные фрагменты среды выполнения и внедряемые блоки, которыми владеет среда выполнения; они отделены от ограничений начальной загрузки, контекста запуска и промпта Skills.
По умолчанию toolResultMaxChars не задан, поэтому OpenClaw вычисляет предел
результата активного инструмента на основе эффективного окна контекста модели: 16000 символов
при менее чем 100K токенов, 32000 символов при 100K+ токенов, 64000 символов при 200K+ токенов.
Ограничитель доли контекста среды выполнения по-прежнему ограничивает один результат инструмента 30%
окна контекста, даже если явно настроен более высокий предел.
Для изображений OpenClaw уменьшает разрешение изображений из расшифровок и результатов инструментов
перед вызовами провайдера. Настройка выполняется с помощью agents.defaults.imageMaxDimensionPx (по умолчанию:
1200):
- Меньшие значения сокращают расход токенов зрения и размер полезной нагрузки.
- Большие значения сохраняют больше визуальных деталей для снимков экрана с большим объёмом OCR/UI.
Для практической детализации (по каждому внедрённому файлу, инструментам, Skills и размеру
системного промпта) используйте /context list или /context detail. См.
Контекст.
Как просмотреть текущее использование токенов
В чате:
/status-> насыщенная эмодзи карточка состояния с моделью сеанса, использованием контекста, числом входных/выходных токенов последнего ответа и оценочной стоимостью, если для активной модели настроены локальные цены./usage off|tokens|full-> добавляет к каждому ответу нижний колонтитул с данными об использовании. Сохраняется для сеанса (хранится какresponseUsage)./usage reset(псевдонимы:inherit,clear,default) удаляет переопределение сеанса, чтобы снова наследовалось настроенное значение по умолчанию./usage tokensпоказывает сведения о токенах и кэше хода./usage fullпоказывает компактные сведения о модели, контексте и стоимости; оценочная стоимость отображается только тогда, когда у OpenClaw есть метаданные использования и локальные цены для активной модели. Пользовательские макетыmessages.usageTemplateмогут включать поля токенов и кэша.
/usage cost-> локальная сводка стоимости из журналов сеансов OpenClaw.
Другие поверхности:
- TUI/Web TUI: поддерживаются
/statusи/usage. - CLI:
openclaw status --usageиopenclaw channels listпоказывают нормализованные окна квот провайдера (X% left, а не стоимость отдельных ответов). Текущие провайдеры окон использования: Claude (Anthropic), ClawRouter, Copilot (GitHub), DeepSeek, Gemini (Google Gemini CLI), MiniMax, OpenAI, Xiaomi, Xiaomi Token Plan и z.ai.
Перед отображением поверхности использования нормализуют распространённые собственные псевдонимы
полей провайдера. Для трафика Responses семейства OpenAI это включает как
input_tokens/output_tokens, так и prompt_tokens/completion_tokens, поэтому
названия полей, зависящие от транспорта, не изменяют /status, /usage или сводки
сеансов. Использование Gemini CLI также нормализуется: стандартный анализатор stream-json
считывает события ассистента message, а stats.cached сопоставляется с
cacheRead; если CLI не предоставляет явное поле stats.input,
используется stats.input_tokens - stats.cached. Устаревшие переопределения JSON по-прежнему считывают текст ответа
из response.
Для нативного трафика Responses семейства OpenAI псевдонимы использования WebSocket/SSE
нормализуются таким же образом, а итоговые значения вычисляются как сумма нормализованных входных
и выходных значений, если total_tokens отсутствует или имеет значение 0.
Если текущий снимок сеанса содержит мало данных, /status и session_status
могут восстановить счётчики токенов/кэша и метку активной модели среды выполнения из
последней записи об использовании в расшифровке. Существующие ненулевые активные значения
по-прежнему имеют приоритет над резервными значениями из расшифровки, а более крупные
итоги расшифровки, ориентированные на промпт, могут иметь приоритет, если сохранённые итоги
отсутствуют или меньше.
Данные аутентификации для окон квот провайдера сначала поступают из специализированных хуков провайдера; если у провайдера нет хука (или хук не получает токен), OpenClaw использует подходящие учётные данные OAuth/API-ключа из профилей аутентификации, переменных среды или конфигурации.
Записи ассистента в расшифровке сохраняют ту же нормализованную структуру использования,
включая usage.cost, если для активной модели настроены цены и
провайдер возвращает метаданные использования. Это предоставляет /usage cost и
состоянию сеанса на основе расшифровки стабильный источник данных даже после
исчезновения активного состояния среды выполнения.
OpenClaw учитывает использование провайдера отдельно от текущего снимка контекста.
Показатель провайдера usage.total может включать кэшированные входные данные, выходные данные и
несколько вызовов модели в цикле инструментов, поэтому он полезен для расчёта стоимости и телеметрии,
но может завышать размер активного окна контекста. Для context.used средства отображения
и диагностики контекста используют последний снимок промпта (promptTokens или последний вызов
модели, если снимок промпта недоступен).
Оценка стоимости (когда отображается)
Стоимость оценивается на основе конфигурации цен модели:
models.providers.<provider>.models[].costЭто доллары США за 1M токенов для input, output, cacheRead и
cacheWrite. Если цены отсутствуют, /usage full не показывает стоимость; используйте
/usage tokens или пользовательский messages.usageTemplate, если сведения
о токенах/кэше нужны в каждом ответе. Отображение стоимости не ограничивается аутентификацией
с помощью API-ключа: провайдеры без API-ключа, такие как aws-sdk, могут показывать оценочную
стоимость, если их настроенная запись модели содержит локальные цены, а провайдер
возвращает метаданные использования.
После того как вспомогательные процессы и каналы достигают состояния готовности Gateway, OpenClaw запускает
необязательную фоновую начальную загрузку цен для настроенных ссылок на модели, у которых ещё
нет локальных цен. В ходе этой загрузки запрашиваются удалённые каталоги цен OpenRouter и
LiteLLM. Установите models.pricing.enabled: false, чтобы пропустить эти запросы
каталогов в автономных или ограниченных сетях; явные записи
models.providers.*.models[].cost по-прежнему используются для локальной оценки стоимости.
Влияние TTL кэша и сокращения
Кэширование промпта провайдером применяется только в пределах окна TTL кэша. OpenClaw может дополнительно выполнять сокращение по TTL кэша: после истечения TTL кэша он сокращает сеанс, а затем сбрасывает окно кэша, чтобы последующие запросы повторно использовали недавно закэшированный контекст вместо повторного кэширования всей истории. Это снижает стоимость записи в кэш, когда сеанс бездействует дольше TTL.
Настройте это в разделе Конфигурация Gateway, а подробности поведения см. в разделе Сокращение сеанса.
Heartbeat может поддерживать кэш прогретым во время периодов бездействия. Если TTL кэша
модели равен 1h, установка интервала Heartbeat немного меньше этого значения (например, 55m) может
предотвратить повторное кэширование всего промпта и снизить стоимость записи в кэш.
В конфигурациях с несколькими агентами можно использовать одну общую конфигурацию модели и настраивать
поведение кэша для каждого агента с помощью agents.list[].params.cacheRetention.
Полное описание всех параметров см. в разделе Кэширование промпта.
Для API Anthropic чтение из кэша значительно дешевле входных токенов, тогда как запись в кэш оплачивается с более высоким коэффициентом. Актуальные тарифы и коэффициенты TTL см. в информации Anthropic о стоимости кэширования промпта: https://docs.anthropic.com/docs/build-with-claude/prompt-caching
Пример: поддержание кэша на 1h прогретым с помощью Heartbeat
agents: defaults: model: primary: "anthropic/claude-opus-4-6" models: "anthropic/claude-opus-4-6": params: cacheRetention: "long" heartbeat: every: "55m"Пример: смешанный трафик со стратегией кэширования для каждого агента
agents: defaults: model: primary: "anthropic/claude-opus-4-6" models: "anthropic/claude-opus-4-6": params: cacheRetention: "long" # стандартная базовая настройка для большинства агентов list: - id: "research" default: true heartbeat: every: "55m" # поддерживать долгосрочный кэш прогретым для глубоких сеансов - id: "alerts" params: cacheRetention: "none" # избегать записи в кэш для всплесковых уведомленийagents.list[].params накладывается поверх params выбранной модели, поэтому можно
переопределить только cacheRetention, сохранив остальные значения модели по умолчанию
без изменений.
Контекст Anthropic на 1M
OpenClaw использует контекстное окно Anthropic на 1M для поддерживающих его общедоступных моделей Claude 4.x, таких как Opus 4.8, Opus 4.7, Opus
4.6 и Sonnet 4.6. Для этих моделей
params.context1m: true не требуется.
agents: defaults: models: "anthropic/claude-opus-4-6": alias: opusВ старых конфигурациях можно сохранить context1m: true, но OpenClaw больше не отправляет
устаревший бета-заголовок Anthropic context-1m-2025-08-07 для этой настройки и
не расширяет контекст неподдерживаемых старых моделей Claude до 1M.
Требование: учётные данные должны поддерживать использование длинного контекста. В противном случае Anthropic возвращает для этого запроса ошибку ограничения частоты на стороне провайдера.
При аутентификации в Anthropic с помощью токенов OAuth или подписки
(sk-ant-oat-*) OpenClaw сохраняет бета-заголовки Anthropic, необходимые для OAuth,
но удаляет устаревший бета-заголовок context-1m-*, если он остался в
старой конфигурации.
Советы по снижению нагрузки токенов
- Используйте
/compactдля суммаризации длинных сеансов. - Сокращайте большой вывод инструментов в рабочих процессах.
- Уменьшите
agents.defaults.imageMaxDimensionPxдля сеансов с большим количеством снимков экрана. - Делайте описания навыков краткими (список навыков добавляется в промпт).
- Для многословной исследовательской работы предпочитайте модели меньшего размера.
Точную формулу накладных расходов на список навыков см. в разделе Skills.