Messages and delivery
Очередь управляющих сообщений
Когда обычный запрос поступает в момент, когда выполнение сеанса уже транслируется в потоковом режиме, а режим очереди — steer (по умолчанию, настройка не требуется), OpenClaw пытается передать этот запрос в активную среду выполнения. OpenClaw и нативная обвязка app-server Codex реализуют детали доставки по-разному.
На этой странице описано управление очередью для обычных входящих сообщений в режиме steer. В режиме followup или collect обычные сообщения пропускают этот путь и ожидают завершения активного выполнения. Явная команда /steer <message> описана в разделе Управление.
Граница среды выполнения
Управление не прерывает уже выполняющийся вызов инструмента. OpenClaw проверяет наличие поставленных в очередь управляющих сообщений на границах обращений к модели:
- Ассистент запрашивает вызовы инструментов.
- OpenClaw выполняет пакет вызовов инструментов из текущего сообщения ассистента.
- OpenClaw отправляет событие завершения хода.
- OpenClaw извлекает из очереди управляющие сообщения.
- OpenClaw добавляет эти сообщения как пользовательские перед следующим вызовом LLM.
Благодаря этому результаты инструментов остаются связаны с запросившим их сообщением ассистента, а следующий вызов модели получает последние пользовательские сообщения.
Нативная обвязка app-server Codex предоставляет turn/steer вместо внутренней очереди управления среды выполнения OpenClaw. OpenClaw объединяет поставленные в очередь запросы в течение настроенного периода ожидания, а затем отправляет один запрос turn/steer со всеми собранными пользовательскими сообщениями в порядке поступления.
Ходы проверки Codex и ручной Compaction отклоняют управление в рамках того же хода. Если среда выполнения не может принять управление в режиме steer, OpenClaw ожидает завершения активного выполнения, прежде чем запустить запрос.
Режимы
| Режим | Поведение во время активного выполнения | Последующее поведение |
|---|---|---|
steer |
По возможности передаёт запрос в активную среду выполнения. | Если управление недоступно, ожидает завершения активного выполнения. |
followup |
Не выполняет управление. | Запускает поставленные в очередь сообщения позже, после завершения активного выполнения. |
collect |
Не выполняет управление. | После интервала устранения дребезга объединяет совместимые сообщения из очереди в один последующий ход. |
interrupt |
Прерывает активное выполнение вместо управления им. | После прерывания запускает самое новое сообщение. |
Пример серии сообщений
Если четыре пользователя отправят сообщения, пока агент выполняет вызов инструмента:
- При поведении по умолчанию активная среда выполнения получает все четыре сообщения в порядке поступления до следующего решения модели. OpenClaw извлекает их из очереди на следующей границе модели; Codex получает их как один пакет
turn/steer. - При
/queue collectOpenClaw не выполняет управление. Он ожидает завершения активного выполнения, а затем, после интервала устранения дребезга, создаёт последующий ход с совместимыми сообщениями из очереди. - При
/queue interruptOpenClaw прерывает активное выполнение и запускает самое новое сообщение вместо управления.
Область действия
Управление всегда направлено на текущее активное выполнение сеанса. Оно не создаёт новый сеанс, не изменяет политику использования инструментов активного выполнения и не разделяет сообщения по отправителям. Во входных запросах из многопользовательских каналов уже содержатся сведения об отправителе и маршруте, поэтому следующий вызов модели может определить, кто отправил каждое сообщение.
Используйте followup или collect, если требуется, чтобы сообщения по умолчанию помещались в очередь, а не передавались активному выполнению. Используйте interrupt, если самый новый запрос должен заменить активное выполнение.
Устранение дребезга
messages.queue.debounceMs применяется к доставке поставленных в очередь сообщений followup и collect. В режиме steer с нативной обвязкой Codex он также задаёт период ожидания перед отправкой объединённого пакета turn/steer. В OpenClaw для самого управления активным выполнением таймер устранения дребезга не используется, поскольку OpenClaw естественным образом объединяет сообщения до следующей границы модели.