Concept internals
入力中インジケーター
入力中インジケーターは、実行がアクティブな間、チャットチャネルへ送信されます。
agents.defaults.typingMode で入力中表示を開始するタイミングを制御し、typingIntervalSeconds
で更新する頻度を制御します。
デフォルト
agents.defaults.typingMode が未設定の場合、OpenClaw は従来の動作を維持します。
- ダイレクトチャット: モデルループが開始するとすぐに入力中表示が始まります。
- メンション付きのグループチャット: 入力中表示がすぐに始まります。
- メンションなしのグループチャット: メッセージテキストのストリーミングが始まったときだけ入力中表示が始まります。
- Heartbeat 実行: 解決された Heartbeat ターゲットが入力中表示に対応したチャットであり、入力中表示が無効化されていない場合、Heartbeat 実行の開始時に入力中表示が始まります。
モード
agents.defaults.typingMode を次のいずれかに設定します。
never- 入力中インジケーターを一切表示しません。instant- 実行が後でサイレント返信トークンだけを返す場合でも、モデルループが開始した直後に入力中表示を始めます。thinking- 最初の推論デルタで入力中表示を始めます(その実行にreasoningLevel: "stream"が必要です)。message- 最初の非サイレントテキストデルタで入力中表示を始めます(NO_REPLYサイレントトークンは無視します)。
「どれだけ早く発火するか」の順序:
never → message → thinking → instant
設定
{
agent: {
typingMode: "thinking",
typingIntervalSeconds: 6,
},
}
セッションごとにモードや間隔を上書きできます。
{
session: {
typingMode: "message",
typingIntervalSeconds: 4,
},
}
注記
messageモードでは、ペイロード全体が正確なサイレントトークン(たとえばNO_REPLY/no_reply。大文字小文字を区別せずに照合)だけである場合、サイレントのみの返信では入力中表示は表示されません。thinkingは、実行が推論をストリーミングする場合(reasoningLevel: "stream")にのみ発火します。モデルが推論デルタを出力しない場合、入力中表示は始まりません。- Heartbeat の入力中表示は、解決された配信ターゲットに対するライブネスシグナルです。
messageやthinkingのストリームタイミングに従うのではなく、Heartbeat 実行の開始時に始まります。無効化するにはtypingMode: "never"を設定します。 - Heartbeat は、
target: "none"の場合、ターゲットを解決できない場合、Heartbeat のチャット配信が無効化されている場合、またはチャネルが入力中表示をサポートしていない場合、入力中表示を表示しません。 typingIntervalSecondsは更新間隔を制御するものであり、開始時刻ではありません。デフォルトは 6 秒です。