Messages(訊息)
本頁面彙整了 OpenClaw 如何處理入站訊息、會話、佇列、串流以及推理過程的可見性。訊息流(高層級)
messages.*:用於前綴、佇列和群組行為。agents.defaults.*:用於區塊串流和分塊的預設值。- 頻道覆寫 (
channels.whatsapp.*,channels.telegram.*等):用於上限值和串流切換。
入站去重 (Inbound dedupe)
頻道在重新連線後可能會重新傳遞同一條訊息。OpenClaw 會維護一個短期的快取,以頻道/帳戶/對象/會話/訊息 ID 為鍵,這樣重複傳遞的訊息就不會觸發另一次代理運行。入站防抖 (Inbound debouncing)
來自同一個發送者的一連串訊息可以透過messages.inbound 合併為單次代理運行。防抖的作用範圍是按頻道 + 對話進行的,並使用最近的一條訊息來進行回覆線程/ID 的處理。
設定範例(全域預設 + 各頻道覆寫):
- 防抖僅適用於純文字訊息;媒體/附件會立即發送。
- 控制命令會繞過防抖,以保持其獨立性。
會話與裝置
會話由 Gateway 擁有,而不是由客戶端擁有。- 直接聊天會合併到代理的主會話鍵中。
- 群組/頻道擁有各自的會話鍵。
- 會話儲存和轉錄記錄保存在 Gateway 主機上。
入站正文與歷史上下文
OpenClaw 將提示正文 (prompt body) 與命令正文 (command body) 分開:Body:發送給代理的提示文字。可能包含頻道封裝和可選的歷史包裝。CommandBody:用於指令/命令解析的原始使用者文字。RawBody:CommandBody的舊版別名(保留用於相容性)。
[Chat messages since your last reply - for context][Current message - respond to this]
CommandBody(或 RawBody)設定為原始訊息文字,並將 Body 保持為組合後的提示。歷史緩衝區可透過 messages.groupChat.historyLimit(全域預設)和各頻道覆寫(例如 channels.slack.historyLimit)進行設定(設為 0 則停用)。
佇列與後續行動 (Followups)
如果一個任務已在運行中,入站訊息可以被加入佇列、引導至目前任務中,或者收集起來用於後續的一輪。- 透過
messages.queue(以及messages.queue.byChannel)進行設定。 - 模式:
interrupt,steer,followup,collect,以及待辦事項變體。
串流、分塊與批處理
區塊串流隨著模型產出的文字塊發送部分回覆。分塊則遵循頻道的文字限制,並避免拆分圍欄程式碼(fenced code)。 詳情請參閱:Streaming + chunking(串流與分塊)。推理過程的可見性與權杖
OpenClaw 可以顯示或隱藏模型的推理過程(reasoning):/reasoning on|off|stream控制可見性。- 當由模型產出時,推理內容仍會計入權杖 (token) 使用量。
- Telegram 支援將推理串流顯示在草稿泡泡中。
前綴、執行緒與回覆
出站訊息格式化集中在messages 中處理:
messages.responsePrefix(出站前綴)和channels.whatsapp.messagePrefix(WhatsApp 入站前綴)。- 透過
replyToMode和各頻道預設值進行回覆執行緒化。