設定 Typing Indicators:讓你的 Bot 更有「人味」
開發 Bot 的時候,最怕使用者發出訊息後,面對一片死寂的對話框。如果 Bot 回應得慢一點,使用者可能會以為它掛掉了,或者重複發送一樣的問題。這種等待的焦慮感,通常只需要一個簡單的「正在輸入中…」(Typing indicator)就能解決。
這篇文會教你如何調整 OpenClaw 的打字狀態觸發時機與頻率。
需要準備的東西
Section titled “需要準備的東西”- OpenClaw 專案環境
- 基礎的 JSON5 設定檔知識
要讓你的 Bot 在處理任務時顯示打字狀態,最快的方法是在 agent 設定中加入 typingMode。
範例:讓 Bot 在開始思考時就顯示打字中,並每 6 秒更新一次狀態。
{ agent: { typingMode: "thinking", typingIntervalSeconds: 6, },}如果你想針對特定 Session 覆蓋全域設定,也可以這樣寫:
{ session: { typingMode: "message", typingIntervalSeconds: 4, },}運作模式說明
Section titled “運作模式說明”OpenClaw 提供四種 typingMode,決定打字狀態「何時」開始顯示:
never— 永遠不顯示打字狀態。message— 當第一個非靜默(non-silent)的文字內容開始串流時才顯示。這會自動忽略NO_REPLY標記。thinking— 當第一個推理內容(reasoning delta)出現時顯示。這需要你在 Run 中開啟reasoningLevel: "stream"。instant— 只要 Model loop 一開始運作就立即顯示,即使最後回傳的是靜默 Token。
觸發時間由早到晚的順序為:instant → thinking → message → never。
預設行為 (Legacy)
Section titled “預設行為 (Legacy)”如果你沒有設定 typingMode,OpenClaw 會維持舊有的預設邏輯:
- 一對一私訊:一旦 Model loop 開始就立即顯示。
- 群組對話(有提到 Bot):立即顯示。
- 群組對話(沒提到 Bot):直到文字內容開始串流時才顯示。
- Heartbeat 任務:一律不顯示。
- 為什麼設定了
thinking卻沒看到打字狀態? 請檢查你的 Run 是否有開啟reasoningLevel: "stream"。如果 Model 沒有輸出推理內容(reasoning deltas),打字狀態就不會被觸發。 - 為什麼
message模式下有時不顯示打字?message模式會忽略像NO_REPLY這種用來壓制輸出的靜默 Token。如果回覆只有靜默內容,就不會顯示打字中。 - Heartbeat 任務可以顯示打字嗎? 不可以。無論你設定哪種模式,Heartbeat 任務永遠不會顯示打字狀態。
typingIntervalSeconds是控制延遲嗎? 不是,它控制的是重新整理(refresh)的頻率。預設是 6 秒,這決定了打字狀態在長回覆過程中多久會被重新發送給 Gateway。
有任何設定上的疑問?直接問 AI Setup Assistant。
OpenClaw Expert
還是卡住了?
如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。