























@@ -3,14 +3,15 @@ summary: "How active-run steering queues messages at runtime boundaries"
33read_when:
44 - Explaining how steer behaves while an agent is using tools
55 - Changing active-run queue behavior or runtime steering integration
6- - Comparing steer, queue, collect, and followup modes
6+ - Comparing steering with followup, collect, and interrupt queue modes
77title: "Steering queue"
88---
9910-When a message arrives while a session run is already streaming, OpenClaw can
11-send that message into the active runtime instead of starting another run for
12-the same session. The public modes are runtime-neutral; Pi and the native Codex
13-app-server harness implement the delivery details differently.
10+When a normal prompt arrives while a session run is already streaming, OpenClaw
11+tries to send that prompt into the active runtime by default when the queue mode
12+is `steer`. No config entry and no queue directive are required for that default
13+behavior. Pi and the native Codex app-server harness implement the delivery
14+details differently.
14151516## Runtime boundary
1617@@ -27,44 +28,40 @@ This keeps tool results paired with the assistant message that requested them,
2728then lets the next model call see the latest user input.
28292930The native Codex app-server harness exposes `turn/steer` instead of Pi's
30-internal steering queue. OpenClaw adapts the same modes there:
31-32-- `steer` batches queued messages for the configured quiet window, then sends a
33- single `turn/steer` request with all collected user input in arrival order.
34-- `queue` keeps the legacy serialized shape by sending separate `turn/steer`
35- requests.
36-- `followup`, `collect`, `steer-backlog`, and `interrupt` stay OpenClaw-owned
37- queue behavior around the active Codex turn.
31+internal steering queue. OpenClaw batches queued prompts for the configured
32+quiet window, then sends a single `turn/steer` request with all collected user
33+input in arrival order.
38343935Codex review and manual compaction turns reject same-turn steering. When a
40-runtime cannot accept steering, OpenClaw falls back to the followup queue where
41-that mode allows it.
36+runtime cannot accept steering in `steer` mode, OpenClaw waits for the active
37+run to finish before starting the prompt.
423843-This page explains queue-mode steering for normal inbound messages. For the
44-explicit `/steer <message>` command, see [Steer](/tools/steer).
39+This page explains queue-mode steering for normal inbound messages when the mode
40+is `steer`. If the mode is `followup` or `collect`, normal messages do not enter
41+this steering path; they wait until the active run finishes. For the explicit
42+`/steer <message>` command, see [Steer](/tools/steer).
45434644## Modes
474548-| Mode | Active-run behavior | Later followup behavior |
49-| --------------- | ---------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
50-| `steer` | Injects all queued steering messages together at the next runtime boundary. This is the default. | Falls back to followup only when steering is unavailable. |
51-| `queue` | Legacy one-at-a-time steering. Pi injects one queued message per model boundary; Codex sends separate `turn/steer` requests. | Falls back to followup only when steering is unavailable. |
52-| `steer-backlog` | Same active-run steering behavior as `steer`. | Also keeps the same message for a later followup turn. |
53-| `followup` | Does not steer the current run. | Runs queued messages later. |
54-| `collect` | Does not steer the current run. | Coalesces compatible queued messages into one later turn after the debounce window. |
55-| `interrupt` | Aborts the active run, then starts the newest message. | None. |
46+| Mode | Active-run behavior | Later behavior |
47+| ----------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------- |
48+| `steer` | Steers the prompt into the active runtime when it can. | Waits for the active run to finish if steering is unavailable. |
49+| `followup` | Does not steer. | Runs queued messages later after the active run ends. |
50+| `collect` | Does not steer. | Coalesces compatible queued messages into one later turn after the debounce window. |
51+| `interrupt` | Aborts the active run instead of steering it. | Starts the newest message after aborting. |
56525753## Burst example
58545955If four users send messages while the agent is executing a tool call:
605661-- `steer`: the active runtime receives all four messages in arrival order before
62- its next model decision. Pi drains them at the next model boundary; Codex
63- receives them as one batched `turn/steer`.
64-- `queue`: legacy serialized steering. Pi injects one queued message at a time;
65- Codex receives separate `turn/steer` requests.
66-- `collect`: OpenClaw waits until the active run ends, then creates a followup
67- turn with compatible queued messages after the debounce window.
57+- With default behavior, the active runtime receives all four messages in
58+ arrival order before its next model decision. Pi drains them at the next model
59+ boundary; Codex receives them as one batched `turn/steer`.
60+- With `/queue collect`, OpenClaw does not steer. It waits until the active run
61+ ends, then creates a followup turn with compatible queued messages after the
62+ debounce window.
63+- With `/queue interrupt`, OpenClaw aborts the active run and starts the newest
64+ message instead of steering.
68656966## Scope
7067@@ -73,18 +70,17 @@ session, change the active run's tool policy, or split messages by sender. In
7370multi-user channels, inbound prompts already include sender and route context, so
7471the next model call can see who sent each message.
757276-Use `collect` when you want OpenClaw to build a later followup turn that can
77-coalesce compatible messages and preserve followup queue drop policy. Use
78-`queue` only when you need the older one-at-a-time steering behavior.
73+Use `followup` or `collect` when you want messages to queue by default instead
74+of steering the active run. Use `interrupt` when the newest prompt should
75+replace the active run.
79768077## Debounce
817882-`messages.queue.debounceMs` applies to followup delivery, including `collect`,
83-`followup`, `steer-backlog`, and `steer` fallback when active-run steering is not
84-available. For Pi, active `steer` itself does not use the debounce timer because
85-Pi naturally batches messages until the next model boundary. For the native
86-Codex harness, OpenClaw uses the same debounce value as the quiet window before
87-sending the batched `turn/steer`.
79+`messages.queue.debounceMs` applies to queued `followup` and `collect` delivery.
80+In `steer` mode with the native Codex harness, it also sets the quiet window
81+before sending batched `turn/steer`. For Pi, active steering itself does not use
82+the debounce timer because Pi naturally batches messages until the next model
83+boundary.
88848985## Related
9086此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。