channels.<channel>.streaming.mode: "progress" を設定すると、OpenClaw は実際の作業が始まった時点でメッセージを作成し、エージェントが読み取り、計画、ツール呼び出し、承認待ちを行うたびに編集して、最後に最終回答へ変えます。
Discord では、
channels.discord.streaming が未設定の場合、すでに streaming.mode: "progress" がデフォルトになっているため、設定なしで進行状況ドラフトが表示されます。他のすべてのチャンネルでは、デフォルトが partial または off です。チャンネルごとのデフォルト一覧については、ストリーミングとチャンク分割を参照してください。クイックスタート
ユーザーに表示される内容
生のツール進行状況では、エージェントが意味のある作業を開始し、初期遅延の間も作業が続いている場合にラベルが表示されます。
ラベルは更新され続ける進行状況行リストの先頭に置かれるため、具体的な作業行が十分に追加されるとスクロールして見えなくなります。ステータス見出しには、ラベルが明示的に設定されていない限り、エージェントによる平易なステータスだけが表示されます。プレーンテキストのみの返信では進行状況ドラフトは表示されません。行が表示されるのは、
🛠️ Bash: run tests、🔎 Web Search: for "discord edit message"、✍️ Write: to /tmp/file など、実際の作業更新がある場合だけです。
チャンネルで安全に処理できる場合、最終回答はドラフトをその場で置き換えます。それができない場合、OpenClaw は通常の配信方法で最終回答を送信し、ドラフトを削除するか更新を停止します(最終処理を参照)。
モードを選択する
channels.<channel>.streaming.mode は、処理中に表示される動作を制御します。
回答テキストがトークン単位でストリーミングされる様子よりも「何が起きているか」をユーザーが重視する場合は
progress、回答テキスト自体が進行状況を示す場合は partial、より大きなプレビューチャンクには block を選択します。Discord と Telegram では、streaming.mode: "block" は通常のブロック返信配信ではなく、引き続きプレビューストリーミングです。通常のブロック返信配信には streaming.block.enabled を使用してください。
ラベルを設定する
進行状況ラベルはchannels.<channel>.streaming.progress の下にあります。生のツール行で使用されるデフォルトのラベルは "auto" で、組み込みのプレーンな Working ラベルを使用します。ステータス見出しでは、この暗黙的なラベルは表示されません。その上にもラベルを表示する場合は、label: "auto" を明示的に設定してください。
label: "auto" の場合は引き続きランダムまたはシードに基づいて選択されます):
進行状況行を制御する
進行状況行は、ツールの開始、項目の更新、タスク計画、承認、コマンド出力、パッチの概要、および同様のエージェントアクティビティといった、実際の実行イベントから生成されます。 デフォルトで有効です(progress.toolProgress、デフォルト true)。
ツールは、1 回の呼び出しがまだ実行中の間に、型付きの進行状況を送出することもできます。これにより、時間のかかる取得や検索では、ツールが最終結果を返す前に表示中のドラフトを更新できます。進行状況の更新は、モデル向けの内容が空で、公開チャンネル用の明示的なメタデータを持つ部分的なツール結果です。
progress.text だけをレンダリングします。通常のツール結果は、後で引き続き content/details として到着し、モデルに返される唯一の部分となります。
ツールに進行状況を追加する場合は、短く汎用的なメッセージを送出し、操作の待機時間が表示に値する長さになるまで遅延させてください。web_fetch は、5 秒の遅延でまさにこの処理を行います。
詳細モード
OpenClaw は、進行状況ドラフトと/verbose に同じフォーマッターを使用します。
"explain" がデフォルトで、簡潔なラベルによってドラフトを安定させます。
"raw" は、利用可能な場合に基になるコマンドを追記します。デバッグ時には便利ですが、チャットでは情報量が増えます。たとえば、node --check /tmp/app.js の呼び出しは、モードによって次のように異なる形式でレンダリングされます。
コマンド/exec テキスト
streaming.progress.commandText(デフォルト "raw")は、上記の詳細モードとは独立して、exec/bash の進行状況行の横に表示するコマンドの詳細量を制御します。コマンドテキストを完全に非表示にしつつ、ツール進行状況行を表示したままにするには、"status" に設定します。
コメンタリーレーン
streaming.progress.commentary(デフォルト false)は、モデルによるツール実行前のコメンタリーや前置きの説明(💬、たとえば「確認してから…します」)を、ドラフト内のツール行と交互に表示します。チャンネル間で共通する設定形式については、ストリーミングとチャンク分割を参照してください。
コメンタリーレーンを有効にすると、前置きは交互に表示される 💬 行としてのみレンダリングされます。下のステータス見出しは表示されないため、レーンではドキュメントどおりの形式が維持されます。
ステータス見出し
Discord と Telegram の進行状況モードでは、モデルによる型付きのツール実行前の前置きが利用可能な場合、ドラフトのステータス見出しになります。他の進行状況モード対応チャンネルでは、既存のステータス動作が維持されます。見出しはデフォルトで有効であり、短いターンで通常のアクティビティゲートを迂回することはありません。streaming.progress.commentary を有効にすると、前置きは代わりに交互表示のコメンタリーレーンへ渡されます。
Discord では、明示的な utilityModel、または主要プロバイダーが宣言する小規模モデルのデフォルト(OpenAI → gpt-5.6-luna、Anthropic → claude-haiku-4-5)として、エージェント用のユーティリティモデルが解決されると、モデルが前置きを出力しない場合、または約 20 秒間出力がない場合に、平易で短い補完テキストを提供します(現在、Telegram の見出しは前置きのみです)。
streaming.progress.narration、デフォルト true)。主要モデルへのフォールバックは行われません。明示的な utilityModel、またはエージェントの主要プロバイダーが宣言したデフォルトがある場合にのみ実行されます。ユーティリティルーティングを完全に無効にするには、utilityModel: "" を設定します。ツール行はその下に蓄積され続け、両方のステータスソースが停止すると再び表示されます。ドラフトの編集では、引き続き通常のアクティビティゲートと実際のテキスト変更を待機します。これにより、短時間のターンでの一瞬の表示を回避し、活発なチャンネルでの編集回数を減らします。ユーティリティモデルによる補完だけを無効にするには、narration: false を設定します。モデルの前置き見出しは引き続き有効です。
commandText: "status" の場合は、ドラフトの表示内容に合わせて、説明用の入力から exec/bash のコマンドテキストも省略されます。
行数制限
表示される行数を制限します(デフォルトは 8)。リッチレンダリング(Slack)
Slack では、進行状況行をプレーンテキストではなく、構造化された Block Kit フィールドとしてレンダリングできます。ツール/タスク行を非表示にする
1 件の進行状況ドラフトは維持しつつ、ツール行とタスク行を非表示にします。toolProgress: false では、そのターンに対する従来の独立した
ツール進捗メッセージも引き続き OpenClaw によって抑制されます。ラベルが設定されている場合は
そのラベルを除き、最終回答までチャンネルは視覚的に静かなままです。
チャンネルの動作
安全な編集をサポートしないチャンネルでは、入力インジケーターまたは
最終回答のみの配信にフォールバックします。チャンネルごとのランタイム動作の
詳細な内訳については、ストリーミングとチャンク分割を参照してください。
最終処理
最終回答の準備ができると、OpenClaw はチャットを整然と保とうとします。- Discord の
progressモードでは、最終回答は新しいメッセージとして送信され、 小さな-#アクティビティ受領情報(例:-# 🧠 2 thoughts · 🛠️ 5 tool calls · ⏱️ 12s)が追加されます。回答が配信されると、 ステータス下書きは削除されます。メッセージの多いチャンネルでも、返信の上に 孤立したツールログは残りません。エラーとなった最終回答では、失敗したターンの 視認可能な記録として下書きが保持されます。 - 下書きを安全に最終回答へ変更できる場合(
partial/blockモード)、 OpenClaw はその場で下書きを編集します。 - チャンネルがネイティブの進捗ストリーミングを使用する場合、ネイティブ転送が 最終テキストを受け入れた時点で、OpenClaw はそのストリームを完了させます。
- それ以外の場合(メディア、承認プロンプト、明示的な返信対象、チャンクが多すぎる場合、 または編集や送信の失敗)、OpenClaw は下書きを上書きせず、通常のチャンネル配信経路で 最終回答を送信します。
トラブルシューティング
最終回答しか表示されません。 メッセージを処理したアカウントまたはチャンネルで、channels.<channel>.streaming.mode が
progress になっていることを確認してください。一部のグループまたは引用返信の経路では、
チャンネルが適切なメッセージを安全に編集できない場合、そのターンの
下書きプレビューが無効になります。
ラベルは表示されますが、ツールの行は表示されません。
streaming.progress.toolProgress を確認してください。false の場合、OpenClaw は
単一下書きの動作を維持しますが、ツールとタスクの進捗行を非表示にします。
編集された下書きではなく、新しい最終メッセージが表示されます。
これは最終処理で説明している安全のためのフォールバックです。
メディアへの返信、長い回答、明示的な返信対象、古い Telegram の下書き、
Slack のスレッド対象の欠落、削除されたプレビューメッセージ、または
ネイティブストリームの最終処理の失敗時に発生する可能性があります。
独立した進捗メッセージが引き続き表示されます。
下書きが有効な間、進捗モードはデフォルトの独立したツール進捗メッセージを抑制します。
独立したメッセージが引き続き表示される場合は、そのターンが実際に
progress モードを使用しており、streaming.mode: "off" や、そのメッセージの
下書きを作成できないチャンネル経路を使用していないことを確認してください。
Teams の動作が Discord や Telegram と異なります。
Microsoft Teams は、汎用の送信後編集プレビュー転送ではなく、個人チャットで
ネイティブストリームを使用します。また、Discord や Telegram のような
下書きプレビューのブロックモードがないため、streaming.mode: "block" を Teams の
ブロック配信に対応付けます。