跳到內容

設定 Typing Indicators:讓你的 Bot 更有「人味」

開發 Bot 的時候,最怕使用者發出訊息後,面對一片死寂的對話框。如果 Bot 回應得慢一點,使用者可能會以為它掛掉了,或者重複發送一樣的問題。這種等待的焦慮感,通常只需要一個簡單的「正在輸入中…」(Typing indicator)就能解決。

這篇文會教你如何調整 OpenClaw 的打字狀態觸發時機與頻率。

  • OpenClaw 專案環境
  • 基礎的 JSON5 設定檔知識

要讓你的 Bot 在處理任務時顯示打字狀態,最快的方法是在 agent 設定中加入 typingMode。

範例:讓 Bot 在開始思考時就顯示打字中,並每 6 秒更新一次狀態。

{
agent: {
typingMode: "thinking",
typingIntervalSeconds: 6,
},
}

如果你想針對特定 Session 覆蓋全域設定,也可以這樣寫:

{
session: {
typingMode: "message",
typingIntervalSeconds: 4,
},
}

OpenClaw 提供四種 typingMode,決定打字狀態「何時」開始顯示:

  1. never — 永遠不顯示打字狀態。
  2. message — 當第一個非靜默(non-silent)的文字內容開始串流時才顯示。這會自動忽略 NO_REPLY 標記。
  3. thinking — 當第一個推理內容(reasoning delta)出現時顯示。這需要你在 Run 中開啟 reasoningLevel: "stream"。
  4. instant — 只要 Model loop 一開始運作就立即顯示,即使最後回傳的是靜默 Token。

觸發時間由早到晚的順序為:instant → thinking → message → never。

如果你沒有設定 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

OpenClaw Expert

還是卡住了?

如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。