Messages and delivery
引導佇列
當工作階段執行已在串流處理時收到一般提示,且佇列模式為 steer(預設值,無需設定),OpenClaw 會嘗試將該提示傳送至作用中的執行環境。OpenClaw 與原生 Codex app-server 測試框架採用不同方式實作傳遞細節。
本頁說明 steer 模式下一般傳入訊息的佇列模式引導機制。在 followup 或 collect 模式下,一般訊息會略過此路徑,等待作用中的執行完成。若要瞭解明確的 /steer <message> 命令,請參閱引導。
執行環境邊界
引導不會中斷已在執行的工具呼叫。OpenClaw 會在模型邊界檢查佇列中的引導訊息:
- 助理要求呼叫工具。
- OpenClaw 執行目前助理訊息的工具呼叫批次。
- OpenClaw 發出回合結束事件。
- OpenClaw 取出佇列中的引導訊息。
- OpenClaw 在下一次 LLM 呼叫前,將這些訊息附加為使用者訊息。
這能讓工具結果與要求這些結果的助理訊息保持配對,接著讓下一次模型呼叫看到最新的使用者輸入。
原生 Codex app-server 測試框架提供 turn/steer,而非 OpenClaw 執行環境的內部引導佇列。OpenClaw 會在設定的靜默時間範圍內批次收集佇列中的提示,接著依到達順序,將所有收集到的使用者輸入以單一 turn/steer 請求傳送。
Codex 審查與手動壓縮回合會拒絕同回合引導。當執行環境無法在 steer 模式下接受引導時,OpenClaw 會等待作用中的執行完成,再開始處理該提示。
模式
| 模式 | 作用中執行的行為 | 後續行為 |
|---|---|---|
steer |
可行時,將提示引導至作用中的執行環境。 | 若無法引導,則等待作用中的執行完成。 |
followup |
不進行引導。 | 在作用中的執行結束後,稍後執行佇列中的訊息。 |
collect |
不進行引導。 | 在防彈跳時間範圍結束後,將相容的佇列訊息合併為稍後的一個回合。 |
interrupt |
中止作用中的執行,而非進行引導。 | 中止後開始處理最新的訊息。 |
突發訊息範例
如果代理程式正在執行工具呼叫時,有四位使用者傳送訊息:
- 採用預設行為時,作用中的執行環境會在下一次模型決策前,依到達順序收到全部四則訊息。OpenClaw 會在下一個模型邊界取出這些訊息;Codex 則會以單一批次
turn/steer收到這些訊息。 - 使用
/queue collect時,OpenClaw 不會進行引導。它會等待作用中的執行結束,接著在防彈跳時間範圍結束後,使用相容的佇列訊息建立後續回合。 - 使用
/queue interrupt時,OpenClaw 會中止作用中的執行並開始處理最新訊息,而非進行引導。
範圍
引導一律以目前作用中的工作階段執行為目標。它不會建立新的工作階段、變更作用中執行的工具原則,也不會依傳送者拆分訊息。在多使用者頻道中,傳入提示已包含傳送者與路由內容,因此下一次模型呼叫可以得知每則訊息的傳送者。
如果希望訊息預設排入佇列,而非引導作用中的執行,請使用 followup 或 collect。如果最新提示應取代作用中的執行,請使用 interrupt。
防彈跳
messages.queue.debounceMs 適用於佇列中的 followup 與 collect 傳遞。在搭配原生 Codex 測試框架的 steer 模式下,它也會設定傳送批次 turn/steer 前的靜默時間範圍。對 OpenClaw 而言,作用中引導本身不使用防彈跳計時器,因為 OpenClaw 會自然地批次收集訊息,直到下一個模型邊界為止。