Messages and delivery

Очередь управляющих сообщений

Когда обычный запрос поступает в момент, когда выполнение сеанса уже транслируется в потоковом режиме, а режим очереди — steer (по умолчанию, настройка не требуется), OpenClaw пытается передать этот запрос в активную среду выполнения. OpenClaw и нативная обвязка app-server Codex реализуют детали доставки по-разному.

На этой странице описано управление очередью для обычных входящих сообщений в режиме steer. В режиме followup или collect обычные сообщения пропускают этот путь и ожидают завершения активного выполнения. Явная команда /steer <message> описана в разделе Управление.

Граница среды выполнения

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

  1. Ассистент запрашивает вызовы инструментов.
  2. OpenClaw выполняет пакет вызовов инструментов из текущего сообщения ассистента.
  3. OpenClaw отправляет событие завершения хода.
  4. OpenClaw извлекает из очереди управляющие сообщения.
  5. OpenClaw добавляет эти сообщения как пользовательские перед следующим вызовом LLM.

Благодаря этому результаты инструментов остаются связаны с запросившим их сообщением ассистента, а следующий вызов модели получает последние пользовательские сообщения.

Нативная обвязка app-server Codex предоставляет turn/steer вместо внутренней очереди управления среды выполнения OpenClaw. OpenClaw объединяет поставленные в очередь запросы в течение настроенного периода ожидания, а затем отправляет один запрос turn/steer со всеми собранными пользовательскими сообщениями в порядке поступления.

Ходы проверки Codex и ручной Compaction отклоняют управление в рамках того же хода. Если среда выполнения не может принять управление в режиме steer, OpenClaw ожидает завершения активного выполнения, прежде чем запустить запрос.

Режимы

Режим Поведение во время активного выполнения Последующее поведение
steer По возможности передаёт запрос в активную среду выполнения. Если управление недоступно, ожидает завершения активного выполнения.
followup Не выполняет управление. Запускает поставленные в очередь сообщения позже, после завершения активного выполнения.
collect Не выполняет управление. После интервала устранения дребезга объединяет совместимые сообщения из очереди в один последующий ход.
interrupt Прерывает активное выполнение вместо управления им. После прерывания запускает самое новое сообщение.

Пример серии сообщений

Если четыре пользователя отправят сообщения, пока агент выполняет вызов инструмента:

  • При поведении по умолчанию активная среда выполнения получает все четыре сообщения в порядке поступления до следующего решения модели. OpenClaw извлекает их из очереди на следующей границе модели; Codex получает их как один пакет turn/steer.
  • При /queue collect OpenClaw не выполняет управление. Он ожидает завершения активного выполнения, а затем, после интервала устранения дребезга, создаёт последующий ход с совместимыми сообщениями из очереди.
  • При /queue interrupt OpenClaw прерывает активное выполнение и запускает самое новое сообщение вместо управления.

Область действия

Управление всегда направлено на текущее активное выполнение сеанса. Оно не создаёт новый сеанс, не изменяет политику использования инструментов активного выполнения и не разделяет сообщения по отправителям. Во входных запросах из многопользовательских каналов уже содержатся сведения об отправителе и маршруте, поэтому следующий вызов модели может определить, кто отправил каждое сообщение.

Используйте followup или collect, если требуется, чтобы сообщения по умолчанию помещались в очередь, а не передавались активному выполнению. Используйте interrupt, если самый новый запрос должен заменить активное выполнение.

Устранение дребезга

messages.queue.debounceMs применяется к доставке поставленных в очередь сообщений followup и collect. В режиме steer с нативной обвязкой Codex он также задаёт период ожидания перед отправкой объединённого пакета turn/steer. В OpenClaw для самого управления активным выполнением таймер устранения дребезга не используется, поскольку OpenClaw естественным образом объединяет сообщения до следующей границы модели.

Связанные разделы

Was this useful?
On this page

On this page