Technical reference

Подробный разбор управления сеансами

OpenClaw управляет сессиями от начала до конца в следующих областях:

  • Маршрутизация сессий (как входящие сообщения сопоставляются с sessionKey)
  • Хранилище сессий (sessions.json) и что оно отслеживает
  • Сохранение транскрипта (*.jsonl) и его структура
  • Гигиена транскрипта (исправления, специфичные для провайдера, перед запусками)
  • Ограничения контекста (контекстное окно и отслеживаемые токены)
  • Compaction (ручная и автоматическая Compaction) и где подключать работу перед Compaction
  • Тихое обслуживание (записи памяти, которые не должны создавать видимый пользователю вывод)

Если сначала нужен более общий обзор, начните с:


Источник истины: Gateway

OpenClaw спроектирован вокруг одного процесса Gateway, который владеет состоянием сессий.

  • UI (приложение macOS, веб Control UI, TUI) должны запрашивать у Gateway списки сессий и счетчики токенов.
  • В удаленном режиме файлы сессий находятся на удаленном хосте; «проверка файлов на вашем локальном Mac» не отразит то, что использует Gateway.

Два слоя сохранения

OpenClaw сохраняет сессии в двух слоях:

  1. Хранилище сессий (sessions.json)

    • Карта ключ/значение: sessionKey -> SessionEntry
    • Небольшое, изменяемое, безопасное для редактирования (или удаления записей)
    • Отслеживает метаданные сессии (текущий идентификатор сессии, последняя активность, переключатели, счетчики токенов и т. д.)
  2. Транскрипт (<sessionId>.jsonl)

    • Транскрипт только с добавлением записей и древовидной структурой (записи имеют id + parentId)
    • Хранит фактическую беседу + вызовы инструментов + сводки Compaction
    • Используется для восстановления контекста модели для будущих ходов
    • Контрольные точки Compaction являются метаданными над уплотненным последующим транскриптом. Новые Compaction не записывают вторую копию .checkpoint.*.jsonl.

Читателям истории Gateway следует избегать материализации всего транскрипта, если поверхности явно не нужен произвольный исторический доступ. История первой страницы, встроенная история чата, восстановление после перезапуска и проверки токенов/использования используют ограниченное чтение хвоста. Полные сканирования транскрипта проходят через асинхронный индекс транскрипта, который кэшируется по пути к файлу плюс mtimeMs/size и совместно используется параллельными читателями.


Расположения на диске

Для каждого агента, на хосте Gateway:

  • Хранилище: ~/.openclaw/agents/<agentId>/sessions/sessions.json
  • Транскрипты: ~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl
    • Сессии тем Telegram: .../<sessionId>-topic-<threadId>.jsonl

OpenClaw разрешает эти пути через src/config/sessions.ts.


Обслуживание хранилища и управление диском

Сохранение сессий имеет автоматические элементы управления обслуживанием (session.maintenance) для sessions.json, артефактов транскриптов и побочных файлов траекторий:

  • mode: enforce (по умолчанию) или warn
  • pruneAfter: порог возраста устаревших записей (по умолчанию 30d)
  • maxEntries: ограничение записей в sessions.json (по умолчанию 500)
  • Хранение краткоживущих пробных запусков модели Gateway фиксировано на 24h, но оно ограничено давлением: устаревшие строки строгих проб удаляются только при достижении давления обслуживания/лимита записей сессий. Это применяется только к строгим явным ключам проб, соответствующим agent:*:explicit:model-run-<uuid>, и выполняется перед глобальной очисткой/ограничением устаревших записей, когда запускается.
  • resetArchiveRetention: срок хранения архивов транскриптов *.reset.<timestamp> (по умолчанию: такой же, как pruneAfter; false отключает очистку)
  • maxDiskBytes: необязательный бюджет каталога сессий
  • highWaterBytes: необязательная цель после очистки (по умолчанию 80% от maxDiskBytes)

Обычные записи Gateway проходят через писатель сессий для каждого хранилища, который сериализует внутрипроцессные мутации без взятия файловой блокировки времени выполнения. Вспомогательные функции исправлений на горячем пути заимствуют проверенный изменяемый кэш, пока удерживают этот слот писателя, поэтому большие файлы sessions.json не клонируются и не перечитываются при каждом обновлении метаданных. Код времени выполнения должен предпочитать updateSessionStore(...) или updateSessionStoreEntry(...); прямые сохранения всего хранилища являются инструментами совместимости и автономного обслуживания. Когда Gateway доступен, не пробные openclaw sessions cleanup и openclaw agents delete делегируют мутации хранилища Gateway, чтобы очистка попадала в ту же очередь писателя; --store <path> — это явный автономный путь восстановления для прямого обслуживания файла. Очистка maxEntries по-прежнему пакетируется для производственных лимитов, поэтому хранилище может ненадолго превысить настроенный лимит до того, как следующая очистка по верхнему порогу снова сократит его. Чтения хранилища сессий не очищают и не ограничивают записи во время запуска Gateway; используйте записи или openclaw sessions cleanup --enforce для очистки. openclaw sessions cleanup --enforce по-прежнему немедленно применяет настроенный лимит и удаляет старые неиспользуемые артефакты транскриптов, контрольных точек и траекторий, даже если дисковый бюджет не настроен.

Обслуживание сохраняет долговечные внешние указатели бесед, такие как групповые сессии и сессии чата в рамках веток, но синтетические записи времени выполнения для cron, хуков, Heartbeat, ACP и субагентов все равно могут быть удалены, когда они превышают настроенный возраст, количество или дисковый бюджет. Сессии пробных запусков модели Gateway используют отдельный срок хранения модельных запусков 24h только когда их ключ точно соответствует agent:*:explicit:model-run-<uuid>; другие явные сессии не входят в это хранение. Очистка модельных запусков применяется только при давлении лимита записей сессий. Изолированные запуски cron сохраняют собственный элемент управления cron.sessionRetention, независимый от хранения проб модельных запусков.

OpenClaw больше не создает автоматические ротационные резервные копии sessions.json.bak.* во время записей Gateway. Устаревший ключ session.maintenance.rotateBytes игнорируется, а openclaw doctor --fix удаляет его из старых конфигураций.

Мутации транскрипта используют блокировку записи сессии на файле транскрипта. Получение блокировки ожидает до session.writeLock.acquireTimeoutMs, прежде чем показать ошибку занятой сессии; значение по умолчанию — 60000 мс. Увеличивайте его только когда законная подготовка, очистка, Compaction или зеркалирование транскрипта конкурируют дольше на медленных машинах. session.writeLock.staleMs управляет тем, когда существующая блокировка может быть повторно захвачена как устаревшая; значение по умолчанию — 1800000 мс. session.writeLock.maxHoldMs управляет порогом освобождения внутрипроцессного сторожевого механизма; значение по умолчанию — 300000 мс. Экстренные переопределения env: OPENCLAW_SESSION_WRITE_LOCK_ACQUIRE_TIMEOUT_MS, OPENCLAW_SESSION_WRITE_LOCK_STALE_MS и OPENCLAW_SESSION_WRITE_LOCK_MAX_HOLD_MS.

Порядок применения очистки дискового бюджета (mode: "enforce"):

  1. Сначала удалить самые старые архивные, сиротские транскриптные или сиротские артефакты траекторий.
  2. Если все еще выше цели, вытеснить самые старые записи сессий и их файлы транскриптов/траекторий.
  3. Продолжать, пока использование не станет не выше highWaterBytes.

В mode: "warn" OpenClaw сообщает о потенциальных вытеснениях, но не изменяет хранилище/файлы.

Запустить обслуживание по требованию:

bash
openclaw sessions cleanup --dry-runopenclaw sessions cleanup --enforce

Сессии Cron и журналы запусков

Изолированные запуски cron также создают записи/транскрипты сессий и имеют выделенные элементы управления хранением:

  • cron.sessionRetention (по умолчанию 24h) удаляет старые изолированные сессии запусков cron из хранилища сессий (false отключает).
  • cron.runLog.keepLines удаляет сохраненные строки истории запусков SQLite для каждого задания cron (по умолчанию: 2000). cron.runLog.maxBytes остается допустимым для старых файловых журналов запусков.

Когда cron принудительно создает новую изолированную сессию запуска, он очищает предыдущую запись сессии cron:<jobId> перед записью новой строки. Он переносит безопасные предпочтения, такие как настройки thinking/fast/verbose, метки и явные выбранные пользователем переопределения модели/auth. Он отбрасывает окружающий контекст беседы, такой как маршрутизация канала/группы, политика отправки или очереди, повышение прав, источник и привязка времени выполнения ACP, чтобы свежий изолированный запуск не мог унаследовать устаревшую доставку или полномочия времени выполнения от старого запуска.


Ключи сессий (sessionKey)

sessionKey определяет, в каком контейнере беседы вы находитесь (маршрутизация + изоляция).

Распространенные шаблоны:

  • Основной/прямой чат (для каждого агента): agent:<agentId>:<mainKey> (по умолчанию main)
  • Группа: agent:<agentId>:<channel>:group:<id>
  • Комната/канал (Discord/Slack): agent:<agentId>:<channel>:channel:<id> или ...:room:<id>
  • Cron: cron:<job.id>
  • Webhook: hook:<uuid> (если не переопределено)

Канонические правила документированы в /concepts/session.


Идентификаторы сессий (sessionId)

Каждый sessionKey указывает на текущий sessionId (файл транскрипта, который продолжает беседу).

Практические правила:

  • Сброс (/new, /reset) создает новый sessionId для этого sessionKey.
  • Ежедневный сброс (по умолчанию 4:00 AM по локальному времени на хосте Gateway) создает новый sessionId при следующем сообщении после границы сброса.
  • Истечение из-за простоя (session.reset.idleMinutes или устаревший session.idleMinutes) создает новый sessionId, когда сообщение приходит после окна простоя. Когда ежедневный сброс и простой настроены одновременно, срабатывает то, что истекает первым.
  • Возобновление после переподключения Control UI может сохранить текущую видимую сессию для одной отправки после переподключения, когда Gateway получает соответствующий sessionId от клиента операторского UI. Обычные устаревшие отправки все равно создают новый sessionId.
  • Системные события (Heartbeat, пробуждения cron, уведомления exec, служебный учет Gateway) могут изменять строку сессии, но не продлевают свежесть ежедневного сброса/сброса по простою. При переходе сброса отбрасываются поставленные в очередь уведомления системных событий для предыдущей сессии до построения свежего промпта.
  • Политика форка родителя использует активную ветку OpenClaw при создании ветки обсуждения или форка субагента. Если эта ветка слишком большая, OpenClaw запускает дочерний объект с изолированным контекстом вместо сбоя или наследования непригодной истории. Политика определения размера автоматическая; устаревшая конфигурация session.parentForkMaxTokens удаляется openclaw doctor --fix.

Деталь реализации: решение происходит в initSessionState() в src/auto-reply/reply/session.ts.


Схема хранилища сессий (sessions.json)

Тип значения хранилища — SessionEntry в src/config/sessions.ts.

Ключевые поля (не исчерпывающий список):

  • sessionId: текущий идентификатор транскрипта (имя файла выводится из него, если sessionFile не задан)
  • sessionStartedAt: временная метка начала текущего sessionId; свежесть ежедневного сброса использует ее. Устаревшие строки могут выводить ее из заголовка сессии JSONL.
  • lastInteractionAt: временная метка последнего реального взаимодействия пользователя/канала; свежесть сброса по простою использует ее, поэтому Heartbeat, cron и события exec не поддерживают сессии живыми. Устаревшие строки без этого поля откатываются к восстановленному времени начала сессии для свежести по простою.
  • updatedAt: временная метка последней мутации строки хранилища, используется для перечисления, очистки и служебного учета. Она не является источником истины для свежести ежедневного/простого сброса.
  • sessionFile: необязательное явное переопределение пути транскрипта
  • chatType: direct | group | room (помогает UI и политике отправки)
  • provider, subject, room, space, displayName: метаданные для маркировки групп/каналов
  • Переключатели:
    • thinkingLevel, verboseLevel, reasoningLevel, elevatedLevel
    • sendPolicy (переопределение для сессии)
  • Выбор модели:
    • providerOverride, modelOverride, authProfileOverride
  • Счетчики токенов (по возможности / зависят от провайдера):
    • inputTokens, outputTokens, totalTokens, contextTokens
  • compactionCount: как часто автоматическая Compaction завершалась для этого ключа сессии
  • memoryFlushAt: временная метка последней очистки памяти перед Compaction
  • memoryFlushCompactionCount: счетчик Compaction на момент последней очистки

Хранилище безопасно редактировать, но Gateway является источником истины: он может переписывать или восстанавливать записи во время выполнения сессий.


Структура транскрипта (*.jsonl)

Транскриптами управляет SessionManager из openclaw/plugin-sdk/agent-sessions.

Файл имеет формат JSONL:

  • Первая строка: заголовок сессии (type: "session", включает id, cwd, timestamp, необязательный parentSession)
  • Затем: записи сессии с id + parentId (дерево)

Примечательные типы записей:

  • message: сообщения user/assistant/toolResult
  • custom_message: внедренные расширением сообщения, которые попадают в контекст модели (могут быть скрыты в UI)
  • custom: состояние расширения, которое не попадает в контекст модели
  • compaction: сохраненная сводка Compaction с firstKeptEntryId и tokensBefore
  • branch_summary: сохраненная сводка при навигации по ветке дерева

OpenClaw намеренно не "исправляет" транскрипты; Gateway использует SessionManager для их чтения/записи.


Окна контекста и отслеживаемые токены

Важны два разных понятия:

  1. Окно контекста модели: жесткий лимит для каждой модели (токены, видимые модели)
  2. Счетчики хранилища сессии: скользящая статистика, записываемая в sessions.json (используется для /status и панелей мониторинга)

Если вы настраиваете лимиты:

  • Окно контекста берется из каталога моделей (и может быть переопределено через конфиг).
  • contextTokens в хранилище — это оценочное/отчетное значение времени выполнения; не считайте его строгой гарантией.

Подробнее см. /token-use.


Compaction: что это такое

Compaction сворачивает старую часть разговора в сохраненную запись compaction в транскрипте и оставляет последние сообщения без изменений.

После Compaction будущие ходы видят:

  • Сводку Compaction
  • Сообщения после firstKeptEntryId

Повторное внедрение разделов AGENTS.md после Compaction включается явно через agents.defaults.compaction.postCompactionSections; если значение не задано или равно [], OpenClaw не добавляет выдержки из AGENTS.md поверх сводки Compaction.

Compaction является постоянной (в отличие от обрезки сессии). См. /concepts/session-pruning.

Границы фрагментов Compaction и парность инструментов

Когда OpenClaw разбивает длинный транскрипт на фрагменты Compaction, он сохраняет вызовы инструментов ассистента в паре с соответствующими записями toolResult.

  • Если разбиение по доле токенов попадает между вызовом инструмента и его результатом, OpenClaw сдвигает границу к сообщению ассистента с вызовом инструмента, вместо того чтобы разделять пару.
  • Если завершающий блок результатов инструмента иначе вывел бы фрагмент за целевой размер, OpenClaw сохраняет этот ожидающий блок инструмента и оставляет несуммаризованный хвост без изменений.
  • Прерванные/ошибочные блоки вызовов инструментов не удерживают ожидающее разбиение открытым.

Когда происходит auto-compaction (среда выполнения OpenClaw)

Во встроенном агенте OpenClaw auto-compaction срабатывает в двух случаях:

  1. Восстановление после переполнения: модель возвращает ошибку переполнения контекста (request_too_large, context length exceeded, input exceeds the maximum number of tokens, input token count exceeds the maximum number of input tokens, input is too long for the model, ollama error: context length exceeded и похожие варианты в формате провайдера) → compact → retry. Когда провайдер сообщает число токенов предпринятой попытки, OpenClaw передает это наблюдаемое число в Compaction для восстановления после переполнения. Если провайдер подтверждает переполнение, но не раскрывает разбираемое число, OpenClaw передает в механизмы Compaction и диагностику синтетическое число, минимально превышающее бюджет. Если восстановление после переполнения все равно не удается, OpenClaw показывает явные инструкции пользователю и сохраняет текущее сопоставление сессии, вместо того чтобы молча ротировать ключ сессии на новый идентификатор сессии. Следующий шаг контролирует оператор: повторить сообщение, выполнить /compact или выполнить /new, когда предпочтительна новая сессия.
  2. Поддержание порога: после успешного хода, когда:

contextTokens > contextWindow - reserveTokens

Где:

  • contextWindow — окно контекста модели
  • reserveTokens — запас, зарезервированный для промптов + следующего вывода модели

Это семантика среды выполнения OpenClaw.

OpenClaw также может запускать предварительный локальный Compaction перед открытием следующего запуска, когда задан agents.defaults.compaction.maxActiveTranscriptBytes и активный файл транскрипта достигает этого размера. Это ограничитель размера файла для локальной стоимости повторного открытия, а не сырое архивирование: OpenClaw по-прежнему выполняет обычный семантический Compaction, и для него требуется truncateAfterCompaction, чтобы сжатая сводка могла стать новым транскриптом-преемником.

Для встроенных запусков OpenClaw agents.defaults.compaction.midTurnPrecheck.enabled: true добавляет явный ограничитель цикла инструментов. После добавления результата инструмента и перед следующим вызовом модели OpenClaw оценивает давление на промпт с помощью той же логики бюджета предварительной проверки, которая используется в начале хода. Если контекст больше не помещается, ограничитель не выполняет Compaction внутри хука transformContext среды выполнения OpenClaw. Он выдает структурированный сигнал предварительной проверки в середине хода, останавливает текущую отправку промпта и позволяет внешнему циклу запуска использовать существующий путь восстановления: обрезать слишком большие результаты инструментов, когда этого достаточно, или запустить настроенный режим Compaction и повторить попытку. Опция по умолчанию отключена и работает как с режимом Compaction default, так и с safeguard, включая safeguard Compaction на базе провайдера. Это не зависит от maxActiveTranscriptBytes: ограничитель по размеру в байтах выполняется до открытия хода, а предварительная проверка в середине хода выполняется позже во встроенном цикле инструментов OpenClaw после добавления новых результатов инструментов.


Настройки Compaction (reserveTokens, keepRecentTokens)

Настройки Compaction среды выполнения OpenClaw находятся в настройках агента:

json5
{  compaction: {    enabled: true,    reserveTokens: 16384,    keepRecentTokens: 20000,  },}

OpenClaw также применяет нижнюю границу безопасности для встроенных запусков:

  • Если compaction.reserveTokens < reserveTokensFloor, OpenClaw повышает значение.
  • Нижняя граница по умолчанию — 20000 токенов.
  • Установите agents.defaults.compaction.reserveTokensFloor: 0, чтобы отключить нижнюю границу.
  • Если значение уже выше, OpenClaw оставляет его без изменений.
  • Ручной /compact учитывает явно заданный agents.defaults.compaction.keepRecentTokens и сохраняет точку отсечения недавнего хвоста среды выполнения OpenClaw. Без явного бюджета сохранения ручной Compaction остается жесткой контрольной точкой, а восстановленный контекст начинается с новой сводки.
  • Установите agents.defaults.compaction.midTurnPrecheck.enabled: true, чтобы запускать необязательную предварительную проверку цикла инструментов после новых результатов инструментов и перед следующим вызовом модели. Это только триггер; генерация сводки по-прежнему использует настроенный путь Compaction. Это не зависит от maxActiveTranscriptBytes, который является ограничителем размера активного транскрипта в байтах в начале хода.
  • Установите agents.defaults.compaction.maxActiveTranscriptBytes в значение в байтах или строку вроде "20mb", чтобы запускать локальный Compaction перед ходом, когда активный транскрипт становится большим. Этот ограничитель активен только когда также включен truncateAfterCompaction. Оставьте значение незаданным или установите 0, чтобы отключить.
  • Когда включен agents.defaults.compaction.truncateAfterCompaction, OpenClaw ротирует активный транскрипт в сжатый JSONL-преемник после Compaction. Действия контрольных точек branch/restore используют этот сжатый преемник; старые файлы контрольных точек до Compaction остаются читаемыми, пока на них есть ссылки.

Почему: оставить достаточно запаса для многотактного "служебного обслуживания" (например, записей памяти), прежде чем Compaction станет неизбежным.

Реализация: applyAgentCompactionSettingsFromConfig() в src/agents/agent-settings.ts (вызывается из путей хода embedded-runner и настройки Compaction).


Подключаемые провайдеры Compaction

Plugins могут зарегистрировать провайдера Compaction через registerCompactionProvider() в API Plugin. Когда agents.defaults.compaction.provider установлен в идентификатор зарегистрированного провайдера, расширение safeguard делегирует суммаризацию этому провайдеру вместо встроенного конвейера summarizeInStages.

  • provider: идентификатор зарегистрированного Plugin провайдера Compaction. Оставьте незаданным для стандартной LLM-суммаризации.
  • Настройка provider принудительно включает mode: "safeguard".
  • Провайдеры получают те же инструкции Compaction и политику сохранения идентификаторов, что и встроенный путь.
  • Safeguard по-прежнему сохраняет контекст суффикса последних ходов и разделенного хода после вывода провайдера.
  • Встроенная суммаризация safeguard заново дистиллирует предыдущие сводки с новыми сообщениями вместо сохранения полной предыдущей сводки дословно.
  • Режим safeguard по умолчанию включает аудиты качества сводки; установите qualityGuard.enabled: false, чтобы пропустить поведение повторной попытки при некорректном выводе.
  • Если провайдер завершается с ошибкой или возвращает пустой результат, OpenClaw автоматически откатывается к встроенной LLM-суммаризации.
  • Сигналы abort/timeout пробрасываются повторно (не подавляются), чтобы уважать отмену вызывающей стороны.

Источник: src/plugins/compaction-provider.ts, src/agents/agent-hooks/compaction-safeguard.ts.


Поверхности, видимые пользователю

Вы можете наблюдать Compaction и состояние сессии через:

  • /status (в любой чат-сессии)
  • openclaw status (CLI)
  • openclaw sessions / sessions --json
  • Логи Gateway (pnpm gateway:watch или openclaw logs --follow): embedded run auto-compaction start + complete
  • Подробный режим: 🧹 Auto-compaction complete + счетчик Compaction

Тихое служебное обслуживание (NO_REPLY)

OpenClaw поддерживает "тихие" ходы для фоновых задач, когда пользователь не должен видеть промежуточный вывод.

Соглашение:

  • Ассистент начинает свой вывод с точного тихого токена NO_REPLY / no_reply, чтобы указать "не доставлять ответ пользователю".
  • OpenClaw удаляет/подавляет это на уровне доставки.
  • Подавление точного тихого токена не зависит от регистра, поэтому NO_REPLY и no_reply оба учитываются, когда весь payload состоит только из тихого токена.
  • Это предназначено только для настоящих фоновых ходов без доставки; это не сокращенный путь для обычных пользовательских запросов, требующих действия.

Начиная с 2026.1.10, OpenClaw также подавляет потоковую передачу черновика/набора текста, когда частичный фрагмент начинается с NO_REPLY, поэтому тихие операции не раскрывают частичный вывод в середине хода.


"Сброс памяти" перед Compaction (реализовано)

Цель: перед auto-compaction выполнить тихий агентный ход, который записывает долговременное состояние на диск (например, memory/YYYY-MM-DD.md в рабочей области агента), чтобы Compaction не мог стереть критически важный контекст.

OpenClaw использует подход предпорогового сброса:

  1. Отслеживать использование контекста сессии.
  2. Когда оно пересекает "мягкий порог" (ниже порога Compaction среды выполнения OpenClaw), выполнить тихую директиву агенту "запиши память сейчас".
  3. Использовать точный тихий токен NO_REPLY / no_reply, чтобы пользователь не видел ничего.

Конфиг (agents.defaults.compaction.memoryFlush):

  • enabled (по умолчанию: true)
  • model (необязательное точное переопределение провайдера/модели для хода сброса, например ollama/qwen3:8b)
  • softThresholdTokens (по умолчанию: 4000)
  • prompt (сообщение пользователя для хода сброса)
  • systemPrompt (дополнительный системный промпт, добавляемый для хода сброса)

Примечания:

  • Стандартные prompt/system prompt включают подсказку NO_REPLY для подавления доставки.
  • Когда задан model, ход сброса использует эту модель без наследования цепочки fallback активной сессии, поэтому локальное служебное обслуживание не откатывается молча к платной разговорной модели.
  • Сброс выполняется один раз за цикл Compaction (отслеживается в sessions.json).
  • Сброс выполняется только для встроенных сессий OpenClaw (CLI-бэкенды его пропускают).
  • Сброс пропускается, когда рабочая область сессии доступна только для чтения (workspaceAccess: "ro" или "none").
  • См. Память для схемы файлов рабочей области и шаблонов записи.

OpenClaw также предоставляет хук session_before_compact в API расширений, но логика сброса OpenClaw сегодня находится на стороне Gateway.


Контрольный список устранения неполадок

  • Неверный ключ сессии? Начните с /concepts/session и подтвердите sessionKey в /status.
  • Несоответствие хранилища и транскрипта? Подтвердите хост Gateway и путь хранилища из openclaw status.
  • Спам Compaction? Проверьте:
    • окно контекста модели (слишком маленькое)
    • настройки Compaction (reserveTokens слишком велик для окна модели и может вызывать более ранний Compaction)
    • раздувание результатов инструментов: включите/настройте обрезку сессии
  • Утечка тихих ходов? Подтвердите, что ответ начинается с NO_REPLY (точный токен без учета регистра), и что вы используете сборку с исправлением подавления потоковой передачи.

Связанные материалы

Was this useful?
On this page

On this page