Поток сообщений (общий уровень)
messages.*для префиксов, постановки в очередь и поведения в группах.agents.defaults.*для стандартных настроек потоковой передачи блоков и разбиения на фрагменты.- Переопределения каналов (
channels.whatsapp.*,channels.telegram.*и т. д.) для ограничений и переключателей потоковой передачи.
Дедупликация входящих сообщений
Каналы могут повторно доставлять одно и то же сообщение после переподключений. OpenClaw хранит краткоживущий кеш с ключом по каналу/аккаунту/собеседнику/сеансу/ID сообщения, чтобы повторные доставки не запускали еще один прогон агента.Устранение дребезга входящих сообщений
Быстрые последовательные сообщения от одного и того же отправителя можно объединять в один ход агента черезmessages.inbound. Устранение дребезга ограничено областью канал + беседа
и использует самое последнее сообщение для привязки ответов к ветке/ID.
Конфигурация (глобальное значение по умолчанию + переопределения для каналов):
- Устранение дребезга применяется к сообщениям только с текстом; медиа/вложения отправляются немедленно.
- Управляющие команды обходят устранение дребезга, чтобы оставаться самостоятельными. Каналы, которые явно включают объединение DM от одного отправителя, могут сохранять DM-команды внутри окна устранения дребезга, чтобы полезная нагрузка, отправленная частями, могла попасть в тот же ход агента.
Сеансы и устройства
Сеансами владеет Gateway, а не клиенты.- Прямые чаты сворачиваются в ключ основного сеанса агента.
- Группы/каналы получают собственные ключи сеансов.
- Хранилище сеансов и стенограммы находятся на хосте Gateway.
Метаданные результата инструмента
content результата инструмента — это видимый модели результат. details результата инструмента — это
метаданные среды выполнения для отрисовки UI, диагностики, доставки медиа и Plugins.
OpenClaw сохраняет эту границу явной:
toolResult.detailsудаляется перед повторным воспроизведением у провайдера и входом Compaction.- Сохраненные стенограммы сеансов оставляют только ограниченные
details; слишком большие метаданные заменяются компактной сводкой с пометкойpersistedDetailsTruncated: true. - Plugins и инструменты должны помещать текст, который должна прочитать модель, в
content, а не только вdetails.
Тела входящих сообщений и контекст истории
OpenClaw отделяет тело промпта от тела команды:BodyForAgent: основной текст для модели в текущем сообщении. Канальные Plugins должны удерживать его сфокусированным на текущем тексте отправителя, несущем промпт.Body: устаревший резервный вариант промпта. Он может включать оболочки канала и необязательные обертки истории, но текущие каналы не должны полагаться на него как на основной ввод модели, когда доступенBodyForAgent.CommandBody: исходный пользовательский текст для разбора директив/команд.RawBody: устаревший псевдоним дляCommandBody(сохранен для совместимости).
[Сообщения чата с момента вашего последнего ответа — для контекста][Текущее сообщение — ответьте на него]
CommandBody (или
RawBody) в исходный текст сообщения и оставлять Body объединенным промптом.
Структурированная история, ответы, пересланные сообщения и метаданные канала отрисовываются как
ненадежные контекстные блоки с ролью пользователя во время сборки промпта.
Буферы истории настраиваются через messages.groupChat.historyLimit (глобальное
значение по умолчанию) и переопределения для каналов, такие как channels.slack.historyLimit или
channels.telegram.accounts.<id>.historyLimit (установите 0, чтобы отключить).
Очередь и последующие сообщения
Если прогон уже активен, входящие сообщения по умолчанию направляются в текущий прогон.messages.queue выбирает, будут ли сообщения при активном прогоне направляться, ставиться в очередь
на потом, собираться в один последующий ход или прерывать активный прогон.
- Настраивается через
messages.queue(иmessages.queue.byChannel). - Режим по умолчанию —
steer, с устранением дребезга 500 мс для пакетов управления Codex и очередей followup/collect. - Режимы:
steer,followup,collectиinterrupt.
Владение прогоном каналом
Канальные Plugins могут сохранять порядок, устранять дребезг ввода и применять транспортное обратное давление до того, как сообщение попадет в очередь сеанса. Они не должны накладывать отдельный тайм-аут вокруг самого хода агента. После маршрутизации сообщения в сеанс длительная работа регулируется жизненным циклом сеанса, инструмента и среды выполнения, чтобы все каналы единообразно сообщали о медленных ходах и восстанавливались после них.Потоковая передача, разбиение на фрагменты и пакетная обработка
Потоковая передача блоков отправляет частичные ответы по мере того, как модель создает текстовые блоки. Разбиение на фрагменты учитывает текстовые ограничения канала и избегает разделения огражденного кода. Ключевые настройки:agents.defaults.blockStreamingDefault(on|off, по умолчанию выключено)agents.defaults.blockStreamingBreak(text_end|message_end)agents.defaults.blockStreamingChunk(minChars|maxChars|breakPreference)agents.defaults.blockStreamingCoalesce(пакетирование на основе простоя)agents.defaults.humanDelay(пауза, похожая на человеческую, между блочными ответами)- Переопределения каналов:
*.blockStreamingи*.blockStreamingCoalesce(каналы, кроме Telegram, требуют явного*.blockStreaming: true)
Видимость рассуждений и токены
OpenClaw может показывать или скрывать рассуждения модели:/reasoning on|off|streamуправляет видимостью.- Содержимое рассуждений по-прежнему учитывается в использовании токенов, когда его создает модель.
- Telegram поддерживает поток рассуждений во временный черновой пузырь, который удаляется после финальной доставки; используйте
/reasoning onдля постоянного вывода рассуждений.
Префиксы, ветвление и ответы
Форматирование исходящих сообщений централизовано вmessages:
messages.responsePrefix,channels.<channel>.responsePrefixиchannels.<channel>.accounts.<id>.responsePrefix(каскад исходящих префиксов), плюсchannels.whatsapp.messagePrefix(входящий префикс WhatsApp)- Ветвление ответов через
replyToModeи значения по умолчанию для каналов
Тихие ответы
Точный тихий токенNO_REPLY / no_reply означает «не доставлять видимый пользователю ответ».
Когда в ходе также есть ожидающие медиа от инструмента, например сгенерированное TTS-аудио, OpenClaw
удаляет тихий текст, но все равно доставляет медиа-вложение.
OpenClaw разрешает это поведение по типу беседы:
- Прямые беседы никогда не получают инструкции промпта
NO_REPLY. Если прямой прогон случайно возвращает отдельный тихий токен, OpenClaw подавляет его вместо переписывания или доставки. - Группы/каналы по умолчанию допускают тишину только для автоматических групповых ответов.
В режиме видимого ответа
message_toolтишина означает, что модель не вызываетmessage(action=send). - Внутренняя оркестрация по умолчанию допускает тишину.
/verbose full.
Значения по умолчанию находятся в agents.defaults.silentReply; surfaces.<id>.silentReply
может переопределять групповую/внутреннюю политику для каждой поверхности.
Отдельные тихие ответы отбрасываются на всех поверхностях, поэтому родительские сеансы остаются тихими
вместо переписывания текста-сентинела в резервную болтовню.
Связанные разделы
- Рефакторинг жизненного цикла сообщений - целевой надежный дизайн отправки и получения
- Потоковая передача — доставка сообщений в реальном времени
- Повторная попытка — поведение повторной попытки доставки сообщений
- Очередь — очередь обработки сообщений
- Каналы — интеграции с платформами обмена сообщениями