Concept internals

輸入中指示器

輸入指示器會在執行中的 run 作用期間傳送到聊天頻道。使用 agents.defaults.typingMode 控制輸入會在何時開始,並使用 typingIntervalSeconds 控制它多久重新整理一次。

預設值

未設定 agents.defaults.typingMode 時,OpenClaw 會保留舊有行為:

  • 直接聊天:模型迴圈一開始,輸入就會立即開始。
  • 有提及的群組聊天:輸入會立即開始。
  • 沒有提及的群組聊天:只有在訊息文字開始串流時,輸入才會開始。
  • Heartbeat 執行:如果解析後的 heartbeat 目標是支援輸入指示器的聊天,且輸入未停用,則會在 heartbeat 執行開始時開始輸入。

模式

agents.defaults.typingMode 設為下列其中之一:

  • never - 永遠不顯示輸入指示器。
  • instant - 模型迴圈一開始就開始輸入,即使該執行稍後只回傳靜默回覆 token。
  • thinking - 在第一個推理差異時開始輸入(該執行需要 reasoningLevel: "stream")。
  • message - 在第一個非靜默文字差異時開始輸入(忽略 NO_REPLY 靜默 token)。

「觸發得多早」的順序: nevermessagethinkinginstant

設定

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

你可以依每個工作階段覆寫模式或節奏:

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

注意事項

  • 當整個 payload 是精確的靜默 token(例如 NO_REPLY / no_reply, 以不區分大小寫的方式比對)時,message 模式不會為只有靜默的回覆顯示輸入。
  • thinking 只有在該執行串流推理時才會觸發(reasoningLevel: "stream")。 如果模型沒有發出推理差異,輸入就不會開始。
  • Heartbeat 輸入是解析後傳遞目標的存活訊號。它會在 Heartbeat 執行開始時開始,而不是遵循 messagethinking 串流時機。設定 typingMode: "never" 可停用它。
  • target: "none"、無法解析目標、該 Heartbeat 的聊天傳遞已停用,或頻道不支援輸入時,Heartbeat 不會顯示輸入。
  • typingIntervalSeconds 控制的是重新整理節奏,不是開始時間。 預設值為 6 秒。

相關內容