messages.*для префиксов, очередей, задержки объединения входящих сообщений и поведения в группах.agents.defaults.*для потоковой передачи блоков, разбиения на части и настроек тихих ответов по умолчанию.- Переопределения каналов (
channels.telegram.*,channels.whatsapp.*и т. д.) для ограничений и переключателей потоковой передачи отдельных каналов.
Устранение дубликатов входящих сообщений
После повторного подключения каналы могут повторно доставить одно и то же сообщение. OpenClaw хранит в памяти кеш с ключом, состоящим из области агента, маршрута канала (канал + собеседник + учётная запись + ветка) и идентификатора сообщения, поэтому повторно доставленное сообщение не запускает агента второй раз. Запись кеша удаляется через 20 минут или при достижении 5000 отслеживаемых записей — в зависимости от того, что произойдёт раньше.Задержка объединения входящих сообщений
Быстро поступающие последовательные текстовые сообщения от одного отправителя можно объединить в один ход агента с помощьюmessages.inbound. Задержка объединения применяется отдельно для каждой комбинации канала и беседы, а для ветки ответа и идентификаторов используется самое последнее сообщение.
- Задержка объединения применяется только к текстовым сообщениям; мультимедиа и вложения немедленно сбрасывают накопленные сообщения.
- Управляющие команды (остановка/прерывание/состояние и т. д.) обходят задержку объединения и отправляются немедленно.
- По умолчанию отключено: у
messages.inbound.debounceMsнет встроенного значения по умолчанию, поэтому задержка объединения активируется только после её настройки (глобально или для отдельного канала). - Единственное исключение — включаемая настройка iMessage
coalesceSameSenderDms: она достаточно долго удерживает весь текст личных сообщений от одного отправителя (включая команды), чтобы разделённая Apple отправка команды и URL поступила как один ход. Групповые чаты всегда обрабатываются немедленно независимо от этой настройки.
Сеансы и устройства
Сеансы принадлежат Gateway, а не клиентам.- Личные чаты объединяются под основным ключом сеанса агента.
- Группы и каналы получают собственные ключи сеансов.
- Хранилище сеансов и расшифровки находятся на хосте Gateway.
Содержимое запросов и контекст истории
Плагины каналов заполняют несколько текстовых полей входящего контекста, перечисленных в порядке убывания предпочтительности:
Когда канал предоставляет историю, он оборачивает её следующим образом:
[Chat messages since your last reply - for context][Current message - respond to this]
BodyForCommands (либо устаревшему CommandBody / RawBody) исходный текст сообщения, а в Body сохранять объединённый запрос.
Буферы истории содержат только ожидающие сообщения: в них входят групповые сообщения, которые не запустили агента (например, сообщения, требующие упоминания), но не входят сообщения, уже находящиеся в расшифровке сеанса. Структурированная история, ответы, пересланные сообщения и метаданные канала при формировании запроса отображаются как недоверенные блоки контекста с ролью пользователя.
Размер истории настраивается с помощью messages.groupChat.historyLimit (глобальное значение по умолчанию) или переопределений для отдельных каналов, таких как channels.slack.historyLimit и channels.telegram.accounts.<id>.historyLimit (задайте 0, чтобы отключить историю).
Метаданные результатов инструментов
Полеcontent результата инструмента содержит видимый модели результат, а details — метаданные среды выполнения для отображения в интерфейсе, диагностики, доставки мультимедиа и плагинов.
toolResult.detailsудаляется перед повторной передачей провайдеру и перед вводом для Compaction.- В сохранённых расшифровках сеансов остаётся только ограниченный объём
details; слишком большие метаданные заменяются компактной сводкой с отметкойpersistedDetailsTruncated: true. - Плагины и инструменты должны помещать текст, который обязана прочитать модель, в
content, а не только вdetails.
Очереди и последующие сообщения
Если запуск уже активен, входящие сообщения по умолчанию направляются в него. Режим определяется параметромmessages.queue:
Значения по умолчанию:
messages.queue.debounceMs — 500ms (одинаково применяется к направлению в активный запуск, последующим сообщениям и пакетному сбору), messages.queue.cap — 20 сообщений в очереди, а messages.queue.drop — summarize (также доступны old и new). Переопределения для отдельных каналов настраиваются через messages.queue.byChannel и messages.queue.debounceMsByChannel.
Подробнее: Очередь команд и Очередь направления.
Владение запуском со стороны канала
Плагины каналов могут сохранять порядок, применять задержку объединения входных данных и регулировать обратное давление транспорта до поступления сообщения в очередь сеанса. Они не должны устанавливать отдельный тайм-аут для самого хода агента. После маршрутизации сообщения в сеанс жизненные циклы сеанса, инструментов и среды выполнения управляют длительными операциями, чтобы все каналы одинаково сообщали о медленных ходах и восстанавливались после них.Потоковая передача, разбиение и пакетная обработка
Потоковая передача блоков отправляет частичные ответы по мере формирования моделью текстовых блоков; разбиение учитывает ограничения канала на объём текста и не разделяет ограждённые блоки кода.agents.defaults.blockStreamingDefault(on|off, по умолчаниюoff)agents.defaults.blockStreamingBreak(text_end|message_end)agents.defaults.blockStreamingChunk(minChars|maxChars|breakPreference)agents.defaults.blockStreamingCoalesce(пакетная обработка на основе периода бездействия)agents.defaults.humanDelay(пауза, имитирующая человеческую, между ответами-блоками)- Переопределения каналов:
*.streaming.block.enabledи*.streaming.block.coalesceдля встроенных каналов; устаревшие плоские ключи переносятся с помощьюopenclaw doctor --fix. Потоковая передача блоков отключена, если её явно не включить, во всех каналах, включая Telegram. Исключение — QQ Bot: у него нет ключейstreaming.block, и он передаёт ответы-блоки потоком, еслиchannels.qqbot.streaming.modeне имеет значения"off".
Видимость рассуждений и токены
/reasoning on|off|streamуправляет видимостью.- Если модель создаёт содержимое рассуждений, оно всё равно учитывается при подсчёте использованных токенов.
- Telegram поддерживает потоковую передачу рассуждений во временный черновик сообщения, который удаляется после окончательной доставки; для постоянного вывода рассуждений используйте
/reasoning on.
Префиксы, ветки и ответы
- Каскад исходящих префиксов:
messages.responsePrefix,channels.<channel>.responsePrefix,channels.<channel>.accounts.<id>.responsePrefix. В WhatsApp также предусмотренchannels.whatsapp.messagePrefixдля входящего префикса. - Ответы в ветках через
replyToModeи значения по умолчанию для отдельных каналов.
Тихие ответы
Тихий токенNO_REPLY (без учёта регистра, поэтому no_reply также соответствует) означает «не доставлять видимый пользователю ответ». Если в ходе также ожидают доставки мультимедиа от инструмента, например созданная звуковая дорожка TTS, OpenClaw удаляет тихий текст, но всё равно доставляет мультимедийное вложение.
Политика тишины определяется типом беседы:
- Личные беседы никогда не получают инструкции запроса
NO_REPLY. Если личный запуск случайно возвращает только тихий токен, OpenClaw подавляет его, а не переписывает и не доставляет. - Группы и каналы по умолчанию допускают тишину. В режиме видимых ответов
message_toolтишина означает, что модель не вызываетmessage(action=send). - Внутренняя оркестрация по умолчанию допускает тишину.
agents.defaults.silentReply; surfaces.<id>.silentReply позволяет переопределить политику групп и внутренних операций для каждой поверхности.
OpenClaw также использует тихие ответы при общих внутренних сбоях средства запуска в чатах, отличных от личных, чтобы группы и каналы не видели стандартный текст ошибки Gateway. Классифицированные сбои с предназначенными для пользователя инструкциями по восстановлению, например уведомления об отсутствии аутентификации, ограничении частоты запросов или перегрузке, всё же могут быть доставлены. В личных чатах по умолчанию отображается краткое описание сбоя; необработанные сведения средства запуска показываются только при включённом /verbose full.
Ответы, содержащие только тихий токен, отбрасываются на всех поверхностях, поэтому родительские сеансы остаются безмолвными, а текст-маркер не преобразуется в запасную реплику.
Связанные разделы
- Рефакторинг жизненного цикла сообщений — целевая архитектура надёжной отправки и получения
- Потоковая передача — доставка сообщений в реальном времени
- Повторные попытки — поведение повторных попыток доставки сообщений
- Очередь — очередь обработки сообщений
- Каналы — интеграции с платформами обмена сообщениями