Как строится системный prompt
OpenClaw собирает собственный системный prompt при каждом запуске. Он включает:- Список инструментов + краткие описания
- Список Skills (только метаданные; инструкции загружаются по требованию через
read). Нативные ходы Codex получают компактный блок skills как ограниченные текущим ходом collaboration developer instructions; другие harness получают его в обычной поверхности prompt. Он ограниченskills.limits.maxSkillsPromptChars, с необязательным переопределением для отдельного агента вagents.list[].skillsLimits.maxSkillsPromptChars. - Инструкции по самообновлению
- Workspace + bootstrap-файлы (
AGENTS.md,SOUL.md,TOOLS.md,IDENTITY.md,USER.md,HEARTBEAT.md,BOOTSTRAP.md, когда новый, плюсMEMORY.md, когда присутствует). Нативные ходы Codex не вставляют сыройMEMORY.mdиз настроенного workspace агента, когда для этого workspace доступны инструменты памяти; они включают небольшой указатель на память в ограниченные текущим ходом collaboration developer instructions и используют инструменты памяти по требованию. Если инструменты отключены, поиск по памяти недоступен или активный workspace отличается от workspace памяти агента,MEMORY.mdиспользует обычный ограниченный путь контекста хода. Корневойmemory.mdв нижнем регистре не внедряется; это legacy-вход для исправления черезopenclaw doctor --fixв паре сMEMORY.md. Большие внедряемые файлы усекаются черезagents.defaults.bootstrapMaxChars(по умолчанию: 20000), а общий объем bootstrap-внедрения ограниченagents.defaults.bootstrapTotalMaxChars(по умолчанию: 60000). Ежедневные файлыmemory/*.mdне входят в обычный bootstrap prompt; они остаются доступными по требованию через инструменты памяти в обычных ходах, но model-запуски reset/startup могут предварять первый ход одноразовым блоком startup-контекста с недавней ежедневной памятью. Простые команды чата/newи/resetподтверждаются без вызова модели. Стартовая преамбула управляетсяagents.defaults.startupContext. Фрагменты AGENTS.md после Compaction отдельны и требуют явного opt-in черезagents.defaults.compaction.postCompactionSections. - Время (UTC + часовой пояс пользователя)
- Теги ответа + поведение Heartbeat
- Метаданные runtime (host/OS/model/thinking)
Что учитывается в окне контекста
Все, что получает модель, учитывается в лимите контекста:- Системный prompt (все разделы, перечисленные выше)
- История диалога (сообщения пользователя + ассистента)
- Вызовы инструментов и результаты инструментов
- Вложения/транскрипты (изображения, аудио, файлы)
- Сводки Compaction и артефакты pruning
- Обертки провайдеров или safety headers (не видны, но все равно учитываются)
agents.defaults.contextLimits.memoryGetMaxCharsagents.defaults.contextLimits.memoryGetDefaultLinesagents.defaults.contextLimits.toolResultMaxCharsagents.defaults.contextLimits.postCompactionMaxChars
agents.list[].contextLimits. Эти настройки
предназначены для ограниченных runtime-фрагментов и внедряемых блоков, которыми владеет runtime. Они
отдельны от bootstrap-лимитов, лимитов startup-контекста и лимитов prompt для skills.
toolResultMaxChars — это продвинутый верхний предел (до 1000000 символов). Когда он не задан, OpenClaw выбирает
актуальный лимит результата инструмента из эффективного окна контекста модели: 16000 символов
ниже 100K токенов, 32000 символов при 100K+ токенах и 64000 символов при 200K+
токенах, при этом он все еще ограничен runtime-ограничителем доли контекста.
Для изображений OpenClaw уменьшает масштаб payload изображений transcript/tool перед вызовами провайдера.
Используйте agents.defaults.imageMaxDimensionPx (по умолчанию: 1200), чтобы настроить это:
- Более низкие значения обычно уменьшают использование vision-токенов и размер payload.
- Более высокие значения сохраняют больше визуальных деталей для OCR/UI-тяжелых скриншотов.
/context list или /context detail. См. Контекст.
Как посмотреть текущее использование токенов
Используйте это в чате:/status→ статусная карточка с эмодзи с моделью сессии, использованием контекста, токенами ввода/вывода последнего ответа и оценочной стоимостью, когда локальные цены настроены для активной модели./usage off|tokens|full→ добавляет footer использования для каждого ответа к каждому ответу.- Сохраняется в рамках сессии (хранится как
responseUsage). /usage reset(aliases:inherit,clear,default) — очищает переопределение сессии, чтобы сессия снова наследовала настроенное значение по умолчанию./usage fullпоказывает оценочную стоимость только когда у OpenClaw есть метаданные использования и локальные цены для активной модели. В противном случае показывает только токены.
- Сохраняется в рамках сессии (хранится как
/usage cost→ показывает локальную сводку стоимости из журналов сессии OpenClaw.
- TUI/Web TUI:
/status+/usageподдерживаются. - CLI:
openclaw status --usageиopenclaw channels listпоказывают нормализованные окна квот провайдера (X% left, а не стоимости по каждому ответу). Текущие провайдеры usage-window: Anthropic, GitHub Copilot, Gemini CLI, OpenAI Codex, MiniMax, Xiaomi и z.ai.
input_tokens /
output_tokens, и prompt_tokens / completion_tokens, так что transport-specific
имена полей не меняют /status, /usage или сводки сессий.
Использование Gemini CLI тоже нормализуется: стандартный parser stream-json читает
assistant-события message, а stats.cached сопоставляется с cacheRead, при этом
stats.input_tokens - stats.cached используется, когда CLI не передает явное
поле stats.input. Legacy JSON-переопределения по-прежнему читают текст ответа из
response.
Для нативного трафика Responses семейства OpenAI aliases использования WebSocket/SSE
нормализуются тем же способом, а totals откатываются к нормализованным input + output, когда
total_tokens отсутствует или равен 0.
Когда текущий snapshot сессии разрежен, /status и session_status также могут
восстановить счетчики token/cache и label активной runtime-модели из
самого свежего transcript usage log. Существующие ненулевые live-значения по-прежнему имеют
приоритет над transcript fallback-значениями, а более крупные prompt-oriented
transcript totals могут победить, когда сохраненные totals отсутствуют или меньше.
Auth для использования окон квот провайдера берется из provider-specific hooks, когда
они доступны; иначе OpenClaw откатывается к сопоставлению OAuth/API-key учетных данных
из auth profiles, env или config.
Записи transcript ассистента сохраняют ту же нормализованную форму использования, включая
usage.cost, когда для активной модели настроены цены и провайдер
возвращает метаданные использования. Это дает /usage cost и статусу сессии на основе transcript
стабильный источник даже после исчезновения live runtime state.
OpenClaw держит учет использования провайдера отдельно от текущего snapshot контекста.
Provider usage.total может включать cached input, output и несколько
model-вызовов tool-loop, поэтому он полезен для стоимости и телеметрии, но может завышать
live-окно контекста. Отображение контекста и диагностика используют последний snapshot prompt
(promptTokens или последний вызов модели, когда snapshot prompt
недоступен) для context.used.
Оценка стоимости (когда показана)
Стоимость оценивается на основе вашей config цен моделей:input, output, cacheRead и
cacheWrite. Если цены отсутствуют, OpenClaw показывает только токены. Отображение стоимости
не ограничено auth через API-key: провайдеры без API-key, такие как aws-sdk, могут показывать
оценочную стоимость, когда их настроенная запись модели включает локальные цены и
провайдер возвращает метаданные использования.
После того как sidecars и channels доходят до ready-пути Gateway, OpenClaw запускает
необязательный фоновый pricing bootstrap для настроенных model refs, у которых еще
нет локальных цен. Этот bootstrap получает удаленные каталоги цен OpenRouter и LiteLLM.
Установите models.pricing.enabled: false, чтобы пропустить эти запросы каталогов
в offline или restricted networks; явные
записи models.providers.*.models[].cost продолжают определять локальные оценки
стоимости.
Влияние Cache TTL и pruning
Prompt caching провайдера применяется только в пределах окна Cache TTL. OpenClaw может необязательно запускать cache-ttl pruning: он pruning сессию после истечения Cache TTL, затем сбрасывает окно cache, чтобы последующие запросы могли повторно использовать свежезакешированный контекст вместо повторного кеширования всей истории. Это снижает затраты на cache write, когда сессия простаивает дольше TTL. Настройте это в конфигурации Gateway и см. подробности поведения в pruning сессии. Heartbeat может поддерживать cache теплым между периодами простоя. Если TTL cache вашей модели составляет1h, установка интервала heartbeat чуть меньше этого значения (например, 55m) может избежать
повторного кеширования полного prompt, снижая затраты на cache write.
В multi-agent setups можно держать один общий config модели и настраивать поведение cache
для каждого агента через agents.list[].params.cacheRetention.
Полное руководство по каждой настройке см. в Prompt Caching.
Для цен Anthropic API cache reads значительно дешевле input
tokens, тогда как cache writes оплачиваются с более высоким multiplier. Актуальные ставки и TTL multipliers см. в ценах Anthropic
для prompt caching:
https://docs.anthropic.com/docs/build-with-claude/prompt-caching
Пример: поддерживать 1h cache теплым с heartbeat
Пример: смешанный трафик со стратегией cache для каждого агента
agents.list[].params объединяется поверх params выбранной модели, поэтому можно
переопределить только cacheRetention и унаследовать остальные значения модели по умолчанию без изменений.
Anthropic 1M context
OpenClaw задает размер GA-capable моделей Claude 4.x, таких как Opus 4.8, Opus 4.7, Opus 4.6 и Sonnet 4.6, с окном контекста Anthropic 1M. Вам не нуженparams.context1m: true для этих моделей.
context1m: true, но OpenClaw больше не отправляет
retired beta header Anthropic context-1m-2025-08-07 для этой настройки и
не расширяет неподдерживаемые старые модели Claude до 1M.
Требование: credential должен иметь право на использование long-context. Если нет,
Anthropic отвечает provider-side ошибкой rate limit для этого запроса.
Если вы аутентифицируете Anthropic с помощью OAuth/subscription tokens (sk-ant-oat-*),
OpenClaw сохраняет требуемые OAuth Anthropic beta headers, удаляя при этом
retired beta context-1m-*, если он остается в старом config.
Советы по снижению нагрузки токенов
- Используйте
/compact, чтобы суммировать длинные сессии. - Обрезайте большие выводы инструментов в своих workflows.
- Уменьшите
agents.defaults.imageMaxDimensionPxдля сессий с большим количеством скриншотов. - Держите описания skills короткими (список skills внедряется в prompt).
- Предпочитайте меньшие модели для многословной исследовательской работы.