快速开始
Steering queue
当会话运行已在流式输出时收到普通提示,并且队列模式为 steer(默认模式,无需配置),OpenClaw 会尝试将该提示发送到活动运行时。OpenClaw 与原生 Codex app-server harness 的具体交付方式不同。
本页介绍 steer 模式下普通入站消息的队列模式 Steering。在 followup 或 collect 模式下,普通消息会跳过此路径,等待活动运行结束。有关显式的 /steer <message> 命令,请参阅 Steer。
运行时边界
Steering 不会中断已在运行的工具调用。OpenClaw 会在模型边界检查排队的 Steering 消息:
- 助手请求调用工具。
- OpenClaw 执行当前助手消息中的工具调用批次。
- OpenClaw 发出轮次结束事件。
- OpenClaw 取出所有排队的 Steering 消息。
- OpenClaw 在下一次调用 LLM 前,将这些消息追加为用户消息。
这样可以让工具结果与请求这些结果的助手消息保持配对,然后让下一次模型调用看到最新的用户输入。
原生 Codex app-server harness 提供 turn/steer,而非 OpenClaw 运行时的内部 Steering queue。OpenClaw 会在配置的静默窗口内批量收集排队的提示,然后按照到达顺序,将收集到的所有用户输入通过单个 turn/steer 请求发送。
Codex 审查和手动压缩轮次会拒绝同一轮次中的 Steering。当运行时无法在 steer 模式下接受 Steering 时,OpenClaw 会等待活动运行结束,再开始处理该提示。
模式
| 模式 | 活动运行期间的行为 | 后续行为 |
|---|---|---|
steer |
在可行时将提示 Steering 到活动运行时。 | 如果 Steering 不可用,则等待活动运行结束。 |
followup |
不执行 Steering。 | 活动运行结束后再运行排队的消息。 |
collect |
不执行 Steering。 | 在防抖窗口结束后,将兼容的排队消息合并为后续的一个轮次。 |
interrupt |
中止活动运行,而不是对其执行 Steering。 | 中止后开始处理最新消息。 |
突发消息示例
如果智能体正在执行工具调用时,有四名用户发送消息:
- 在默认行为下,活动运行时会在下一次模型决策前,按照到达顺序接收全部四条消息。OpenClaw 会在下一个模型边界取出这些消息;Codex 则通过一个批量的
turn/steer接收这些消息。 - 使用
/queue collect时,OpenClaw 不会执行 Steering。它会等待活动运行结束,然后在防抖窗口结束后,用兼容的排队消息创建一个后续轮次。 - 使用
/queue interrupt时,OpenClaw 会中止活动运行并开始处理最新消息,而不是执行 Steering。
范围
Steering 始终以当前活动会话运行作为目标。它不会创建新会话、改变活动运行的工具策略,也不会按发送者拆分消息。在多用户渠道中,入站提示已包含发送者和路由上下文,因此下一次模型调用可以看到每条消息的发送者。
如果你希望消息默认排队,而不是 Steering 到活动运行,请使用 followup 或 collect。如果最新提示应该替换活动运行,请使用 interrupt。
防抖
messages.queue.debounceMs 适用于排队的 followup 和 collect 交付。在使用原生 Codex harness 的 steer 模式下,它还会设置发送批量 turn/steer 前的静默窗口。对于 OpenClaw,活动 Steering 本身不使用防抖计时器,因为 OpenClaw 会自然地批量收集消息,直至下一个模型边界。