Messages and delivery

引導佇列

當訊息抵達時,如果某個工作階段執行已經正在串流,OpenClaw 可以 將該訊息送入作用中的執行階段,而不是為同一工作階段啟動另一個執行。 公開模式與執行階段無關;Pi 和原生 Codex app-server harness 會以不同方式實作傳遞細節。

執行階段邊界

導向不會中斷已經在執行的工具呼叫。Pi 會在模型邊界檢查 排入佇列的導向訊息:

  1. 助理要求工具呼叫。
  2. Pi 執行目前助理訊息的工具呼叫批次。
  3. Pi 發出回合結束事件。
  4. Pi 清空排入佇列的導向訊息。
  5. Pi 在下一次 LLM 呼叫前,將那些訊息附加為使用者訊息。

這會讓工具結果與要求它們的助理訊息保持配對, 然後讓下一次模型呼叫看見最新的使用者輸入。

原生 Codex app-server harness 會公開 turn/steer,而不是 Pi 的 內部導向佇列。OpenClaw 會在那裡調整相同模式:

  • steer 會在設定的靜默視窗內批次處理排入佇列的訊息,然後依抵達順序,將所有收集到的使用者輸入透過 單一 turn/steer 要求送出。
  • queue 會透過傳送個別的 turn/steer 要求,保留舊版的序列化形狀。
  • followupcollectsteer-backloginterrupt 會維持由 OpenClaw 擁有、圍繞作用中 Codex 回合的 佇列行為。

Codex review 和手動 Compaction 回合會拒絕同一回合導向。當某個 執行階段無法接受導向時,OpenClaw 會在該模式允許的情況下退回到後續追蹤佇列。

本頁說明一般傳入訊息的佇列模式導向。若要了解 明確的 /steer <message> 命令,請參閱導向

模式

模式 作用中執行行為 後續追蹤行為
steer 在下一個執行階段邊界一起注入所有排入佇列的導向訊息。這是預設值。 只有在導向無法使用時,才退回到後續追蹤。
queue 舊版一次一個的導向。Pi 會在每個模型邊界注入一則排入佇列的訊息;Codex 會傳送個別的 turn/steer 要求。 只有在導向無法使用時,才退回到後續追蹤。
steer-backlog steer 相同的作用中執行導向行為。 也會保留同一則訊息,以供稍後的後續追蹤回合使用。
followup 不導向目前執行。 稍後執行排入佇列的訊息。
collect 不導向目前執行。 在防彈跳視窗後,將相容的排入佇列訊息合併為一個稍後的回合。
interrupt 中止作用中執行,然後啟動最新訊息。 無。

爆發範例

如果四位使用者在代理程式正在執行工具呼叫時傳送訊息:

  • steer:作用中的執行階段會在下一次模型決策前,依抵達順序收到所有四則訊息。Pi 會在下一個模型邊界清空它們;Codex 會以一個批次的 turn/steer 收到它們。
  • queue:舊版序列化導向。Pi 會一次注入一則排入佇列的訊息; Codex 會收到個別的 turn/steer 要求。
  • collect:OpenClaw 會等到作用中執行結束,然後在防彈跳視窗後,用相容的排入佇列訊息建立後續追蹤 回合。

範圍

導向一律以目前作用中的工作階段執行為目標。它不會建立新的 工作階段、變更作用中執行的工具政策,或依傳送者分割訊息。在 多使用者頻道中,傳入提示已包含傳送者和路由內容,因此 下一次模型呼叫可以看見每則訊息是誰傳送的。

當你希望 OpenClaw 建立稍後的後續追蹤回合,以便 合併相容訊息並保留後續追蹤佇列捨棄政策時,請使用 collect。只有在需要較舊的一次一個導向行為時,才使用 queue

防彈跳

messages.queue.debounceMs 適用於後續追蹤傳遞,包括 collectfollowupsteer-backlog,以及當作用中執行導向無法使用時的 steer 退回。對 Pi 而言,作用中的 steer 本身不使用防彈跳計時器,因為 Pi 會自然地批次處理訊息,直到下一個模型邊界。對原生 Codex harness 而言,OpenClaw 會使用相同的防彈跳值作為靜默視窗,然後 傳送批次的 turn/steer

相關