You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -81,6 +81,7 @@ Docs: https://docs.openclaw.ai
81
81
- Telegram: support Mini App `web_app` buttons in generic message presentation payloads, allowing `openclaw message send --presentation` to render Telegram Web App inline buttons for private chats. (#81356) Thanks @jzakirov.
82
82
- Scripts: add `OPENCLAW_HEAVY_CHECK_LOCK_SCOPE=worktree` so high-capacity local worktrees can use independent heavy-check locks while shared locks remain the default. Fixes #80729. (#80734) Thanks @samzong.
83
83
- Agents/subagents: deliver native `sessions_spawn` tasks in the child session's first visible `[Subagent Task]` message instead of hiding the task in the sub-agent system prompt, keeping delegation auditable without duplicating tokens. Fixes #78592. Thanks @bradestes and @stainlu.
84
+
- Messages/queue: make mid-turn prompts steer active runs by default via `/queue steer`, preserve `/queue followup` and `/queue collect` for users who want messages to queue by default, and make `/steer` continue as a normal prompt when steering is unavailable. (#77023) Thanks @fuller-stack-dev.
84
85
- Voice Call/Telnyx: add realtime media-streaming call support for conversational voice calls. (#81024) Thanks @dynamite-bud.
85
86
- Gateway/OpenAI HTTP: honor `max_completion_tokens` and `max_tokens` on inbound `/v1/chat/completions` requests so client-provided token caps reach the upstream provider via `streamParams.maxTokens`, with `max_completion_tokens` taking precedence when both are sent. Thanks @Lellansin.
86
87
- Models/OpenAI CLI auth: make `openclaw models auth login --provider openai` start the ChatGPT/Codex account login by default, while `--method api-key` remains the explicit OpenAI API-key setup path.
|`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. |
Copy file name to clipboardExpand all lines: docs/concepts/queue.md
+14-18Lines changed: 14 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,25 +30,20 @@ When unset, all inbound channel surfaces use:
30
30
-`cap: 20`
31
31
-`drop: "summarize"`
32
32
33
-
`steer`is the default because it keeps the active model turn responsive without
34
-
starting a second session run. It drains all steering messages that arrived
35
-
before the next model boundary. If the current run cannot accept steering,
36
-
OpenClaw falls back to a followup queue entry.
33
+
Same-turn steering is the default. A prompt that arrives mid-run is injected
34
+
into the active runtime when the run can accept steering, so no second session
35
+
run is started. If the active run cannot accept steering, OpenClaw waits for the
36
+
active run to finish before starting the prompt.
37
37
38
38
## Queue modes
39
39
40
-
Inbound messages can steer the current run, wait for a followup turn, or do both:
40
+
`/queue` controls what normal inbound messages do while a session already has
41
+
an active run:
41
42
42
-
-`steer`: queue steering messages into the active runtime. Pi delivers all pending steering messages **after the current assistant turn finishes executing its tool calls**, before the next LLM call; Codex app-server receives one batched `turn/steer`. If the run is not actively streaming or steering is unavailable, OpenClaw falls back to a followup queue entry.
43
-
-`queue` (legacy): old one-at-a-time steering. Pi delivers one queued steering message at each model boundary; Codex app-server receives separate `turn/steer` requests. Prefer `steer` unless you need the previous serialized behavior.
44
-
-`followup`: enqueue each message for a later agent turn after the current run ends.
45
-
-`collect`: coalesce queued messages into a **single** followup turn after the quiet window. If messages target different channels/threads, they drain individually to preserve routing.
46
-
-`steer-backlog` (aka `steer+backlog`): steer now **and** preserve the same message for a followup turn.
47
-
-`interrupt` (legacy): abort the active run for that session, then run the newest message.
48
-
49
-
Steer-backlog means you can get a followup response after the steered run, so
50
-
streaming surfaces can look like duplicates. Prefer `collect`/`steer` if you want
51
-
one response per inbound message.
43
+
-`steer`: inject messages into the active runtime. Pi delivers all pending steering messages **after the current assistant turn finishes executing its tool calls**, before the next LLM call; Codex app-server receives one batched `turn/steer`. If the run is not actively streaming or steering is unavailable, OpenClaw waits until the active run ends before starting the prompt.
44
+
-`followup`: do not steer. Enqueue each message for a later agent turn after the current run ends.
45
+
-`collect`: do not steer. Coalesce queued messages into a **single** followup turn after the quiet window. If messages target different channels/threads, they drain individually to preserve routing.
46
+
-`interrupt`: abort the active run for that session, then run the newest message.
52
47
53
48
For runtime-specific timing and dependency behavior, see
54
49
[Steering queue](/concepts/queue-steering). For the explicit `/steer <message>`
@@ -72,9 +67,10 @@ Configure globally or per channel via `messages.queue`:
72
67
73
68
## Queue options
74
69
75
-
Options apply to `followup`, `collect`, and `steer-backlog` (and to `steer` or legacy `queue` when steering falls back to followup):
70
+
Options apply to queued delivery. `debounceMs` also sets the Codex steering
71
+
quiet window in `steer` mode:
76
72
77
-
-`debounceMs`: quiet window before draining queued followups. Bare numbers are milliseconds; units `ms`, `s`, `m`, `h`, and `d` are accepted by `/queue` options.
73
+
-`debounceMs`: quiet window before draining queued followups or collect batches; in Codex `steer` mode, quiet window before sending batched `turn/steer`. Bare numbers are milliseconds; units `ms`, `s`, `m`, `h`, and `d` are accepted by `/queue` options.
78
74
-`cap`: max queued messages per session. Values below `1` are ignored.
79
75
-`drop: "summarize"`: default. Drop the oldest queued entries as needed, keep compact summaries, and inject them as a synthetic followup prompt.
80
76
-`drop: "old"`: drop the oldest queued entries as needed, without preserving summaries.
@@ -99,7 +95,7 @@ keys.
99
95
100
96
## Per-session overrides
101
97
102
-
- Send `/queue <mode>` as a standalone command to store the mode for the current session.
98
+
- Send `/queue <steer|followup|collect|interrupt>` as a standalone command to store the queue mode for the current session.
103
99
- Options can be combined: `/queue collect debounce:0.5s cap:25 drop:summarize`
104
100
-`/queue default` or `/queue reset` clears the session override.
0 commit comments