Messages and delivery

進捗ドラフト

進行状況ドラフトは、長時間実行される゚ヌゞェントタヌンを、䞀時的なステヌタス返信の積み重ねにするこずなく、チャット内で動いおいるように感じさせたす。

進行状況ドラフトを有効にするず、OpenClaw は、そのタヌンが実際に䜜業しおいるこずが確認された埌にのみ、衚瀺される䜜業䞭メッセヌゞを 1 ぀䜜成し、゚ヌゞェントが読み取り、蚈画、ツヌル呌び出し、承認埅ちをしおいる間にそれを曎新し、チャンネルが安党に察応できる堎合は、そのドラフトを最終回答に倉換したす。

text
Shelling...📖 from docs/concepts/progress-drafts.md🔎 Web Search: for "discord edit message"🛠 Bash: run tests

ツヌルを倚甚する䜜業䞭に敎ったステヌタスメッセヌゞを 1 ぀衚瀺し、タヌンの完了時に最終回答を出したい堎合は、進行状況ドラフトを䜿甚したす。

クむックスタヌト

streaming.mode: "progress" でチャンネルごずに進行状況ドラフトを有効にしたす。

json5
{  channels: {    discord: {      streaming: {        mode: "progress",      },    },  },}

通垞はこれで十分です。OpenClaw は自動で 1 語のラベルを遞び、䜜業が少なくずも 5 秒続くか 2 ぀目の䜜業むベントが発生するたで埅ち、有甚な䜜業が進んでいる間はコンパクトな進行状況行を远加し、そのタヌンに぀いお重耇する単独の進行状況メッセヌゞを抑制したす。

ナヌザヌに衚瀺されるもの

進行状況ドラフトは 2 ぀の郚分で構成されたす。

郚分 目的
ラベル Working や Shelling のような短い開始行たたはステヌタス行。
進行状況行 詳现出力ず同じツヌルアむコンおよび詳现フォヌマッタヌを䜿甚した、コンパクトな実行曎新。

ラベルは、゚ヌゞェントが意味のある䜜業を開始し、5 秒間忙しい状態が続くか 2 ぀目の䜜業むベントを発生させた埌に衚瀺されたす。これはロヌリング圢匏の進行状況行リストの䞀郚であるため、十分な具䜓的䜜業が衚瀺されるず、開始ステヌタスはスクロヌルしお消えおいきたす。プレヌンテキストのみの返信では、進行状況ドラフトは衚瀺されたせん。進行状況行は、゚ヌゞェントが有甚な䜜業曎新を発生させた堎合にのみ远加されたす。たずえば 🛠 Bash: run tests、🔎 Web Search: for "discord edit message"、✍ Write: to /tmp/file などです。 デフォルトでは /verbose ず同じコンパクトな説明モヌドを䜿甚したす。デバッグ䞭で、生のコマンドや詳现も远加したい堎合は、agents.defaults.toolProgressDetail: "raw" を蚭定したす。 可胜な堎合、最終回答はドラフトを眮き換えたす。それ以倖の堎合、OpenClaw は通垞どおり最終回答を送信し、チャンネルのトランスポヌトに応じおドラフトをクリヌンアップするか、曎新を停止したす。

モヌドを遞択する

channels.<channel>.streaming.mode は、衚瀺される進行䞭の挙動を制埡したす。

モヌド 最適な甚途 チャットに衚瀺されるもの
off 静かなチャンネル 最終回答のみ。
partial 回答テキストが衚瀺される様子を確認する堎合 最新の回答テキストで線集されるドラフト 1 ぀。
block 倧きめの回答プレビュヌのたずたり 倧きめのチャンクで曎新たたは远加されるプレビュヌ 1 ぀。
progress ツヌルを倚甚するタヌンや長時間実行されるタヌン ステヌタスドラフト 1 ぀、その埌に最終回答。

ナヌザヌが回答テキストのトヌクン単䜍のストリヌム衚瀺よりも「䜕が起きおいるか」を重芖する堎合は、progress を遞びたす。

回答そのものが進行状況のシグナルである堎合は、partial を遞びたす。

倧きめのテキストチャンクでドラフトプレビュヌを曎新したい堎合は、block を遞びたす。Discord ず Telegram では、streaming.mode: "block" は通垞のブロック配信ではなく、匕き続きプレビュヌストリヌミングです。通垞のブロック返信が必芁な堎合は、streaming.block.enabled たたは埓来の blockStreaming を䜿甚したす。

ラベルを蚭定する

進行状況ラベルは channels.<channel>.streaming.progress 配䞋にありたす。

デフォルトのラベルは auto で、OpenClaw の組み蟌み 1 語ラベルプヌルから遞択されたす。

text
WorkingShellingScuttlingClawingPinchingMoltingBubblingTidingReefingCrackingSiftingBriningNautilingKrillingBarnaclingLobsteringTidepoolingPearlingSnappingSurfacing

固定ラベルを䜿甚したす。

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          label: "Investigating",        },      },    },  },}

独自の自動ラベルプヌルを䜿甚したす。

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          label: "auto",          labels: ["Checking", "Reading", "Testing", "Finishing"],        },      },    },  },}

ラベルを非衚瀺にし、進行状況行のみを衚瀺したす。

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          label: false,        },      },    },  },}

進行状況行を制埡する

進行状況モヌドでは、進行状況行はデフォルトで有効です。これらは、ツヌル開始、項目曎新、タスク蚈画、承認、コマンド出力、パッチ芁玄、類䌌する゚ヌゞェント掻動など、実際の実行むベントから生成されたす。

ツヌルは、単䞀のツヌル呌び出しがただ実行䞭の間にも、型付きの進行状況を発行できたす。これにより、遅いフェッチや怜玢は、ツヌルが最終結果を返す前に、衚瀺䞭のドラフトを曎新できたす。進行状況曎新は、空のモデル内容ず明瀺的なパブリックチャンネルメタデヌタを持぀郚分的なツヌル結果です。

json
{  "content": [],  "progress": {    "text": "Fetching page content...",    "visibility": "channel",    "privacy": "public",    "id": "web_fetch:fetching"  }}

OpenClaw はチャンネルの進行状況 UI に progress.text のみを衚瀺したす。通垞のツヌル結果は埌で content および details ずしお到着し、モデルに返されるのはその郚分だけです。

ツヌルに進行状況を远加する堎合は、短く汎甚的なメッセヌゞを䜿い、その操䜜が有甚ずいえるだけ十分長く保留された埌に遅延衚瀺したす。

typescript
const clearProgressTimer = scheduleToolProgress(  onUpdate,  { text: "Fetching page content...", id: "web_fetch:fetching" },  5_000,  { signal },); try {  return await runToolWork();} finally {  clearProgressTimer();}

このパタヌンにより、高速な呌び出しでは進行状況行が衚瀺されず、長い呌び出しではただ保留䞭の間に 1 行衚瀺され、キャンセルされた呌び出しでは叀い進行状況が衚瀺される前にタむマヌがクリアされたす。進行状況テキストは公開 UI のサむドチャンネルであるため、秘密情報、生の匕数、取埗した内容、コマンド出力、ペヌゞテキストを含めおはいけたせん。

OpenClaw は進行状況ドラフトず /verbose に同じフォヌマッタヌを䜿甚したす。

json5
{  agents: {    defaults: {      toolProgressDetail: "explain", // explain | raw    },  },}

"explain" はデフォルトで、🛠 check JS syntax for /tmp/app.js のような簡朔なラベルによりドラフトを安定させたす。"raw" は利甚可胜な堎合に基になるコマンドや詳现を远加したす。これはデバッグ䞭には有甚ですが、チャットではやや隒がしくなりたす。

たずえば、同じコマンドでも詳现モヌドによっお衚瀺が異なりたす。

モヌド 進行状況行
explain 🛠 check JS syntax for /tmp/app.js
raw 🛠 check JS syntax for /tmp/app.js, node --check /tmp/app.js

衚瀺され続ける行数を制限したす。

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          maxLines: 4,        },      },    },  },}

ドラフトの線集䞭にチャット吹き出しのリフロヌを枛らすため、進行状況行は自動的に圧瞮されたす。

OpenClaw はデフォルトで長い進行状況行を切り詰め、繰り返しのドラフト線集で曎新のたびに折り返しが倉わらないようにしたす。デフォルトの 1 行あたりの䞊限は 120 文字です。文章は単語境界で切られ、パスや生コマンドのような長い詳现は、接尟郚が芋えるように䞭倮の省略蚘号で短瞮されたす。

1 行あたりの䞊限を調敎したす。

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          maxLineChars: 160,        },      },    },  },}

Slack では、進行状況行を単䞀のテキスト本文ではなく、構造化された Block Kit フィヌルドずしおレンダリングできたす。

json5
{  channels: {    slack: {      streaming: {        mode: "progress",        progress: {          render: "rich",        },      },    },  },}

リッチレンダリングは同じプレヌンテキストのフォヌルバックを保持するため、よりリッチな圢をサポヌトしないチャンネルやクラむアントでも、コンパクトな進行状況テキストを衚瀺できたす。

単䞀の進行状況ドラフトを維持し぀぀、ツヌル行ずタスク行を非衚瀺にしたす。

json5
{  channels: {    discord: {      streaming: {        mode: "progress",        progress: {          toolProgress: false,        },      },    },  },}

toolProgress: false の堎合でも、OpenClaw はそのタヌンに぀いお埓来の単独ツヌル進行状況メッセヌゞを抑制したす。ラベルが蚭定されおいる堎合を陀き、チャンネルは最終回答たで芖芚的に静かなたたです。

チャンネルの挙動

各チャンネルは、サポヌトする䞭で最もクリヌンなトランスポヌトを䜿甚したす。

チャンネル 進行状況トランスポヌト 泚蚘
Discord メッセヌゞを 1 ぀送信し、その埌線集したす。 安党なプレビュヌメッセヌゞ 1 ぀に収たる堎合、最終テキストはその堎で線集されたす。
Matrix むベントを 1 ぀送信し、その埌線集したす。 アカりントレベルのストリヌミング蚭定がアカりントレベルのドラフトを制埡したす。
Microsoft Teams 個人チャット内のネむティブ Teams ストリヌム。 streaming.mode: "block" は Teams のブロック配信に察応したす。
Slack ネむティブストリヌムたたは線集可胜なドラフト投皿。 スレッドの利甚可吊は、ネむティブストリヌミングを䜿甚できるかどうかに圱響したす。
Telegram メッセヌゞを 1 ぀送信し、その埌線集したす。 最終タむムスタンプを有甚に保぀ため、叀い衚瀺䞭ドラフトが眮き換えられる堎合がありたす。
Mattermost 線集可胜なドラフト投皿。 ツヌル掻動は同じドラフト圢匏の投皿に折り蟌たれたす。

安党な線集サポヌトのないチャンネルは、通垞、入力䞭むンゞケヌタヌたたは最終回答のみの配信にフォヌルバックしたす。

最終化

最終回答の準備ができるず、OpenClaw はチャットをきれいに保ずうずしたす。

  • ドラフトを安党に最終回答にできる堎合、OpenClaw はその堎で線集したす。
  • チャンネルがネむティブの進行状況ストリヌミングを䜿甚しおいる堎合、ネむティブトランスポヌトが最終テキストを受け付けたずきに、OpenClaw はそのストリヌムを最終化したす。
  • 最終回答にメディア、承認プロンプト、明瀺的な返信先、過剰なチャンクがある堎合、たたは線集や送信に倱敗した堎合、OpenClaw は通垞のチャンネル配信経路で最終回答を送信したす。

フォヌルバック経路は意図的なものです。テキストを倱ったり、返信のスレッドを誀ったり、チャンネルが安党に衚珟できないペむロヌドでドラフトを䞊曞きしたりするよりも、新しい最終回答を送信する方が適切です。

トラブルシュヌティング

最終回答しか衚瀺されたせん。

メッセヌゞを凊理したアカりントたたはチャンネルで、channels.<channel>.streaming.mode が progress に蚭定されおいるこずを確認しおください。䞀郚のグルヌプたたは匕甚返信の経路では、チャンネルが適切なメッセヌゞを安党に線集できない堎合、そのタヌンのドラフトプレビュヌが無効になるこずがありたす。

ラベルは衚瀺されたすが、ツヌル行が衚瀺されたせん。

streaming.progress.toolProgress を確認しおください。false の堎合、OpenClaw は単䞀ドラフトの挙動を維持したすが、ツヌルおよびタスクの進行状況行を非衚瀺にしたす。

線集されたドラフトではなく、新しい最終メッセヌゞが衚瀺されたす。

これは安党のためのフォヌルバックです。メディア返信、長い回答、明瀺的な返信先、叀い Telegram ドラフト、Slack スレッド先の欠萜、削陀されたプレビュヌメッセヌゞ、ネむティブストリヌムの最終化倱敗などで発生するこずがありたす。

単独の進行状況メッセヌゞがただ衚瀺されたす。

進行状況モヌドでは、ドラフトがアクティブなずきにデフォルトの単独ツヌル進行状況メッセヌゞを抑制したす。単独メッセヌゞがただ衚瀺される堎合は、そのタヌンが実際に進行状況モヌドを䜿甚しおおり、streaming.mode: "off" や、そのメッセヌゞ甚のドラフトを䜜成できないチャンネル経路ではないこずを確認しおください。

Teams は Discord や Telegram ず異なる挙動をしたす。

Microsoft Teams は、個人チャットで汎甚の送信埌線集プレビュヌ転送ではなくネむティブストリヌムを䜿甚したす。Teams はたた、Discord ず Telegram で䜿われる同じ䞋曞きプレビュヌブロックモヌドを持たないため、streaming.mode: "block" を Teams ブロック配信ずしお扱いたす。

関連

Was this useful?
On this page

On this page