OpenClawSkills
GitHub
コア概念 • 5分で読める

メッセージ

メッセージフロー、セッション、キュー、ストリーミング、reasoning の可視性。

このページでは、OpenClaw が受信メッセージ、セッション、キュー、ストリーミング、reasoning の可視性をどのように処理するかをまとめて説明します。

Tutorial.step

メッセージフロー(高レベル)

Terminal
Inbound message
  -> routing/bindings -> session key
  -> queue (if a run is active)
  -> agent run (streaming + tools)
  -> outbound replies (channel limits + chunking)

主な設定は主に設定にあります:

- ''messages.*'':プレフィックス、キュー、グループチャットの動作。

- ''agents.defaults.*'':ブロックストリーミングとチャンキングのデフォルト。

- チャネルオーバーライド(''channels.whatsapp.*''、''channels.telegram.*'' など):制限とストリーミングスイッチ。

完全なスキーマは ''Configuration'' にあります。

Tutorial.step

Inbound Dedupe

チャネルは再接続後に同じメッセージを再配信する可能性があります。OpenClaw は短期間のキャッシュを維持し(channel/account/peer/session/message id でキー付け)、重複配信が 2 回目のエージェント実行をトリガーするのを防ぎます。

Tutorial.step

受信デバウンス(Inbound Debouncing)

同じ送信者が短時間に複数のメッセージを送信した場合、''messages.inbound'' を使用してそれらを 1 回のエージェントターンにマージできます。デバウンスはチャネル + セッションでスコープされ、「最新のメッセージ」を返信スレッド/ID のソースとして使用します。

設定(グローバルデフォルト + チャネルごとのオーバーライド):

Json5
{
  messages: {
    inbound: {
      debounceMs: 2000,
      byChannel: {
        whatsapp: 5000,
        slack: 1500,
        discord: 1500
      }
    }
  }
}

Notes:

- デバウンスはプレーンテキストにのみ適用されます。メディア/添付ファイルはすぐにフラッシュされます。

- コントロールコマンドはデバウンスをバイパスし、個別のメッセージとして残ります。

Tutorial.step

セッションとデバイス

セッションはクライアントではなくゲートウェイによって保持されます。

- プライベートメッセージはデフォルトでエージェントのメインセッションキーに折りたたまれます。

- グループチャット/チャネルは独立したセッションキーを使用します。

- セッションストアとトランスクリプトはゲートウェイホストに存在します。

複数のデバイス/チャネルを同じセッションにマッピングできますが、履歴はすべてのクライアントに 100% 同期されません。推奨事項:長い会話には 1 つのプライマリデバイスを使用して、コンテキストの分岐を回避してください。コントロール UI と TUI は常にゲートウェイバックのトランスクリプトを表示するため、それらが真実のソースです。

Details: ''/concepts/session''.

ReferenceConceptsMessagesPage step 04: P7

Tutorial.step

受信ボディと履歴コンテキスト

OpenClaw はプロンプトボディとコマンドボディを区別します:

- ''Body'':エージェントに送信されるプロンプトテキスト。チャネルエンベロープとオプションの履歴ラッパーが含まれる場合があります。

- ''CommandBody'':ディレクティブ/コマンド解析に使用される生のユーザーテキスト。

- ''RawBody'':''CommandBody'' のレガシーエイリアス(互換性のために保持)。

チャネルが履歴コンテキストを提供する場合、統一されたラッパーが使用されます:

- ''[Chat messages since your last reply - for context]''

- ''[Current message - respond to this]''

非ダイレクトチャット(グループ/チャネル/ルーム)の場合、現在のメッセージボディには送信者ラベルが含まれ(履歴エントリと同じスタイル)、プロンプト内のリアルタイムメッセージをキュー/履歴メッセージとより一貫させます。

履歴バッファは保留のみです:メンションゲーティングにより実行がトリガーされなかったグループメッセージが含まれ、セッショントランスクリプトに既に書き込まれたメッセージは除外されます。

Directive stripping only applies to the ''current message'' block, ensuring history content remains unchanged. Channels wrapping history should set ''CommandBody'' (or ''RawBody'') to the raw message text and ''Body'' to the combined prompt. History buffer can be configured via ''messages.groupChat.historyLimit'' (global default) and channel overrides (e.g., ''channels.slack.historyLimit'', ''channels.telegram.accounts.<id>.historyLimit''); set to ''0'' to disable.

ReferenceConceptsMessagesPage step 05: P11

Tutorial.step

キューとフォローアップ

実行がアクティブな場合、新しい受信メッセージをキューに入れたり、現在の実行に注入してステアリングしたり、後続のターンのために収集したりできます:

- ''messages.queue''(および ''messages.queue.byChannel'')を介して構成されます。

- モード:''interrupt''、''steer''、''followup''、''collect''、およびバックログバリアント。

Details: ''/concepts/queue''.

ReferenceConceptsMessagesPage step 06: P5

ReferenceConceptsMessagesPage step 06: P6

Tutorial.step

ストリーミング、チャンキング、バッチング

ブロックストリーミングは、モデルがテキストブロックを生成するときに部分返信を送信します。チャンキングはチャネルのテキスト制限を尊重し、フェンスコードを分割しないようにします。

主な設定:

- ''agents.defaults.blockStreamingDefault''(''on|off''、デフォルトは off)

- ''agents.defaults.blockStreamingBreak''(''text_end|message_end'')

- ''agents.defaults.blockStreamingChunk''(''minChars|maxChars|breakPreference'')

- ''agents.defaults.blockStreamingCoalesce''(アイドルベースの結合)

- ''agents.defaults.humanDelay''(人間のような一時停止)

- チャネルオーバーライド:''*.blockStreaming'' と ''*.blockStreamingCoalesce''(非 Telegram チャネルには明示的な ''*.blockStreaming: true'' が必要)

Tutorial.step

Reasoning の可視性とトークン

OpenClaw はモデルの reasoning を表示または非表示にできます:

- ''/reasoning on|off|stream'' で可視性を制御します。

- reasoning コンテンツはモデルによって生成されるたびにトークン使用量にカウントされます。

- Telegram は reasoning をドラフトバブルにストリーミングすることをサポートしています。

Details: ''/tools/thinking'', ''/token-use''.

Tutorial.step

プレフィックス、スレッド、返信

送信フォーマットは ''messages'' に集中しています:

- ''messages.responsePrefix''(送信プレフィックス)と ''channels.whatsapp.messagePrefix''(WhatsApp 受信プレフィックス)

- ''replyToMode'' とチャネルごとのデフォルトを介して返信スレッドを制御

詳細:''/gateway/configuration#messages'' とチャネルごとのドキュメント。