> ## Documentation Index
> Fetch the complete documentation index at: https://openclaw.zhcndoc.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Steering 队列

当一个会话运行已经在流式输出时，若此时有一个普通提示到达，并且队列模式为 `steer`（默认模式，无需配置），OpenClaw 会尝试将该提示发送到活动运行时。OpenClaw 和原生 Codex app-server harness 在传递细节上的实现方式不同。

本页介绍在 `steer` 模式下，普通入站消息的队列模式 steering。对于 `followup` 或 `collect` 模式，普通消息会跳过此路径，并等待当前活动运行完成。关于显式的 `/steer <message>` 命令，请参见 [Steer](/tools/steer)。

## 运行时边界

Steering 不会中断已经在运行的工具调用。OpenClaw 运行时会在工具启动边界以及模型边界进行检查：

1. 助手请求工具调用。
2. 在顺序模式下，OpenClaw 会在每次调用开始前立即检查，包括异步解析、验证和执行前钩子之后。
3. 正在运行的调用完成。如果此后有待处理的 steer，则会跳过尚未开始的顺序尾部调用。
4. 在并行模式下，OpenClaw 会先准备调用，然后在启动已准备调用前立即检查一次。已经越过该检查点的调用会继续一起执行。
5. 每个被跳过的调用都会收到成对的工具开始/结束事件，以及一个合成的错误结果（`Skipped due to queued user message.`），顺序与助手源代码中的顺序一致。
6. OpenClaw 会在下一次 LLM 调用前追加已准确排出的 steering 消息。

这样既能确保每个请求的工具调用都与结果配对，又能确保已接受的 steering 在任何后续工具启动前对模型可见。

原生 Codex app-server harness 暴露的是 `turn/steer`，而不是 OpenClaw 运行时内部的 steering 队列。OpenClaw 会在配置的静默窗口内批量收集排队的提示，然后按照所有用户输入的到达顺序，发送一个包含这些输入的 `turn/steer` 请求。Codex 的上游回合调度器负责其工具调度，并在下一个模型边界消费已接受的 steering；OpenClaw 不会向该运行时添加逐工具抢占机制。

Codex review 和手动压缩回合会拒绝同回合 steering。当运行时无法在 `steer` 模式下接受 steering 时，OpenClaw 会等待当前运行完成后再开始提示。

## 工具启动边界

OpenClaw 区分已开始的工作和已请求的工作：

* 已经在运行的顺序调用会完成。后续调用尚未开始，因此 OpenClaw 会为它们返回合成的跳过结果，并让模型在可见的引导消息下重新考虑。
* 并行批次具有一个原子启动检查点。在该检查点之前出现的引导消息会抑制所有已准备的调用；在该检查点之后到达的引导消息不会撤回任何调用。
* 在并行检查点之前已确定的验证或策略结果仍然真实有效。只有尚未开始执行的调用才会收到引导跳过结果。
* 记录保持仅追加且结构成对：助手工具调用、真实或合成的工具结果，然后是引导用户消息。

停止已经在运行的工作，与重定向未来的工作是不同的意图。当最新消息应中止当前运行而不是对其进行引导时，请使用 `/queue interrupt`（或 `/stop`）。

## 模式

| 模式          | 活跃运行行为                  | 后续行为                        |
| ----------- | ----------------------- | --------------------------- |
| `steer`     | 在可以的时候将提示 steer 到活跃运行时。 | 如果 steering 不可用，则等待活跃运行结束。  |
| `followup`  | 不 steer。                | 在活跃运行结束后稍后运行已排队的消息。         |
| `collect`   | 不 steer。                | 在去抖窗口之后，将兼容的已排队消息合并为一次后续回合。 |
| `interrupt` | 中止活跃运行，而不是 steering 它。  | 在中止后开始处理最新消息。               |

## 突发示例

如果在代理执行工具调用时有四个用户发送消息：

* OpenClaw 保留运行时配置的引导排空模式和 FIFO 顺序。逐条处理的消费者会将后续消息留到之后的边界；`all` 消费者会将排队的 FIFO 批次一起注入。Codex 会将其静默窗口期间收集的消息作为一个批次的 `turn/steer` 接收。
* 使用 `/queue collect` 时，OpenClaw 不会进行引导。它会等待活动运行结束，然后在防抖窗口之后，使用兼容的排队消息创建一个后续回合。
* 使用 `/queue interrupt` 时，OpenClaw 会中止活动运行，并启动最新消息，而不是进行引导。

## 作用范围

引导始终针对当前活动的会话运行。它不会创建新会话、不会更改活动运行的工具策略，也不会按发送者拆分消息。在多用户频道中，传入的提示已经包含发送者和路由上下文，因此下一次模型调用可以看到每条消息的发送者。

当你希望消息默认进入队列而不是引导当前活动运行时，请使用 `followup` 或 `collect`。当最新提示应替换活动运行时，请使用 `interrupt`。

## 去抖

内置的队列去抖适用于排队的 `followup` 和 `collect` 投递。在使用原生 Codex harness 的 `steer` 模式下，它还会设置发送批量 `turn/steer` 之前的静默窗口。OpenClaw 的主动转向不使用去抖计时器；在工具启动和模型边界处，它会根据运行时配置的转向排空模式按 FIFO 顺序排空。

## 相关内容

* [命令队列](/concepts/queue)
* [Steer](/tools/steer)
* [消息](/concepts/messages)
* [代理循环](/concepts/agent-loop)
