06/Documentation
スマートフォンでのdurable agentの表示
durable agentのセクション、会話、質問、receiptの表示内容
実験的。 スマートフォン上でdurable agentが表示する内容は、今後のマイナーリリースで変更されるか、機能自体が削除される可能性があります。durable agentに存続を決定する条件が記載されています。
このページでは、ダッシュボードの行、会話リスト、質問、チャット、スターター、プッシュ通知など、スマートフォン上でdurable agentが表示されるすべての場所を説明します。durable agentで最初にdurable agentをアタッチします。
durable agentは、helloで実行可能と宣言した操作のコントロールのみを描画します。コントロールを指定している以下の行は、durable agentがそれを宣言していることを前提としています。
ダッシュボードのDurable agentsセクション
各durable agentは、スペースとは別のDurable agentsセクションに1行として表示されます。

| 行の項目 | 表示内容 |
|---|---|
| 1行目 | sources.jsonのdurable agent名、およびExperimentalバッジ |
| 2行目 | ランタイム、durable agentがhelloで自称する名前(なければdurable)。続いてlocalまたはremote |
| 右端、準備完了 | 開いている会話の数、および要対応色で表示されるユーザー待ちの会話数。2つ目のカウントは0件のときは非表示 |
| 右端、未準備 | 「Starting」、「Unreachable」、または「Version mismatch」の文字列。件数は非表示 |
ソケット、あるいはhttp://127.0.0.1またはhttp://localhost経由でアクセスされたdurable agentはlocalになります。それ以外のURLはすべてremoteになります。
このセクションはスペースの下に配置されます。ユーザーの入力を待っている会話が1つでもあるdurable agentが存在する場合はスペースの上に移動し、最後の1つに応答すると再び下に戻ります。durable agentが1つもアタッチされていない場合、このセクションは描画されません。
「要対応ペインのみ表示」が有効な場合、このセクションにはユーザー待ちのdurable agentのみが一覧表示されます。行をタップすると、状態を問わずそのdurable agentの会話リストが開きます。
会話リスト
durable agentのホームには、メッセージングアプリのチャット一覧と同じ形式で会話が一覧表示されます。

ユーザー待ちの会話が先頭に表示され、その後にその他の開いている会話が新しい順に並びます。クローズした会話は「Closed」ラベルの下に続きます。各行にはタイトル、状態マーク、最終アクティビティの時刻が表示され、その下の1行に待機中の質問(なければdurable agentのサブタイトル)が表示されます。待機中の行には、保留中の質問数も表示されます。タイトルのない行には「Untitled conversation」と表示されます。
開いている行をタップするとChatで開きます。クローズした行をタップすると読み取り専用で閲覧できます。durable agentが会話の再開に対応している場合、クローズした会話には「Reopen」ボタンが表示されます。
開いている行はダッシュボード自体のデータから取得されるため、即座に描画されます。クローズした行はdurable agentから取得され、Collieはアクセスごとに1回、および会話のオープン/クローズ時に再問い合わせを行います。毎回のポーリングで取得されることはありません。
| リストの末尾 | 表示条件 |
|---|---|
| さらに読み込む | durable agentの会話が100件を超えている場合。タップするごとに次の100件を読み込みます |
| 「このdurable agentは会話のリストを保持していません。」 | durable agentから、リストを保持していない旨の応答があった場合 |
| 「durable agentが応答しませんでした。しばらくしてから再試行してください。」 | durable agentが読み取り要求に応答しなかった場合 |
| 「durable agentのwireバージョンはv2ですが、このCollieはv1です。CollieまたはエージェントのSDKを更新してください。」 | wireバージョン(レシート)を理由にCollieがdurable agentを拒絶した場合 |
| 「会話を読み込めませんでした。再試行してください。」 | 読み取り処理が途中で失敗した場合 |
履歴を保持しない durable agent は、進行中の会話のみを表示し、Closed グループや注記は表示しません。描画済みのリストは、その後の読み込みが失敗してもそのまま表示され続けます。
スマートフォンでの質問
durable agent による質問は、対象となるツール呼び出しの下にチャット内のカードとして表示されます。

キャプションには durable agent の名前が表示されます("Needs your answer · desk")。durable agent が有効期限を設定した場合、タイトルの下の行に "Expires in 4 min"、"Expires in 40 s"、"Expired" とカウントダウンされます。期限切れ後もボタンは残り、遅れてタップされた場合は durable agent 自身が回答します。
| 種類 | カードの表示内容 | 制限 |
|---|---|---|
permission | 選択肢ごとにボタンを1つ配置します。Collie の文言(Allow、Always allow、Deny、Cancel)が使われます。durable agent 独自のラベルは控えめな2行目に表示されます | 最大6個の選択肢 |
choice | 選択肢ごとに1行。1回タップすると選択内容が送信されます。multiple の場合、"Pick any number" の下で各行の選択状態が切り替わり、Send を押すと一括送信されます | 最大8個の選択肢 |
text | 1行の入力欄、"12 of 500" などの文字数カウント、および Send | 500文字、または durable agent による上限(最大2000文字) |
form | 入力フィールドが1つの Send の下に並びます(1行テキスト、一覧から選ぶ選択肢、トグルのいずれか)。必須項目には Required と表示されます | 最大6個のフィールド |
"Always allow" には2回のタップが必要です。1回目のタップでボタンが "Tap again to always allow" とツール名に変わり、2回目で送信されます。質問にツール名が含まれていない場合、Collie はこのボタンを表示しません。
Collie が durable agent の文言を切り詰めたり整理したりした場合、全文が表示されていないため、カードに "Text shortened" と表示され "Always allow" は選択できなくなります。
この Collie が認識できない種類のカードは、その文言を表示し、"This ask cannot be answered from the phone." と表示します。会話内では最初の5件の質問がカードとして描画され、"Show N more" 行から残りを展開できます。
タップ後の動作
各タップは1つのリクエストIDを保持し、タップ操作によってのみ回答が送信されます。
| 発生した事象 | カードの表示 | 対応手順 |
|---|---|---|
| durable agent が回答を受領した | 何もなし: カードが閉じます | 何もしない |
| durable agent が先に決定した | "Decided in the durable agent." | 何もしない。チャット上にはログが1行残ります |
| 質問が先にタイムアウトしました | "Timed out before an answer." | 何もしない。チャット上にはログが1行残ります |
| 別の回答が先に行われました | "Already answered. This card goes away on the next update." | 何もしない |
| 質問がオープンになっておらず、durable agent から理由が返されませんでした | "Not taken. The question may show again in a moment." | 待機してください。再起動した durable agent が再度質問します |
| 質問内容が途中で変更されました | "This ask changed. Read it again, then tap an answer." | 新しい内容を確認し、もう一度タップしてください |
| 回答が届いていない可能性があります | "Not sure the answer arrived. Try again sends it once more." | 「Try again」をタップしてください。同一のリクエストIDが送信されるため、durable agent に重複して伝わることはありません |
| 再試行時に質問が終了していたか、変更されていました | "May already be applied. Check the chat." | チャットを確認してください |
| Collie が回答を拒否しました | Collie による理由。なければ「The answer was refused.」 | 理由を確認してください |
| durable agent のマシンで古いバージョンの Collie が実行されています | "This machine runs an older Collie and cannot take answers here. Update it, or answer in the durable agent." | 該当するマシンを更新してください |
レシート
Collie は、ユーザーが回答しなかった質問がどう終了したか、また durable agent が拒否された理由を表示します。

| 状況 | 表示内容 |
|---|---|
| 質問には有効期限があります | カードのタイトル下に残り時間が表示されます |
| durable agent が決定した後、または有効期限が切れた後にタップしました | カードが固定され、「Decided in the durable agent.」または「Timed out before an answer.」と表示されます |
| 質問がタイムアウトしたか、ユーザーが操作することなくdurable agentが決定しました | チャット内の1行: 「Timed out before an answer:」または「Decided in the durable agent:」に続き、質問のタイトルが表示されます |
| Collieはwireのバージョンが一致しないためdurable agentを拒否しました | durable agentのホームに警告ボックスが表示され、ダッシュボードの行に「Version mismatch」と表示されます |
スマートフォンから回答した質問や、ターンを停止したために終了した質問には、この行は残りません。操作したカードが既に表示されています。

警告ボックスには双方が対応するwireバージョンが表示されます (例: 「Program speaks wire v2, this Collie speaks v1. Update Collie, or the durable agent's SDK.」)。古い方を更新してください。ルールについてはバージョンを参照してください。
チャット
durable agentの会話は、唯一のビューであるChatで開きます。
| durable agentからのアイテム | Chatの描画内容 |
|---|---|
user | ユーザー自身の行 |
reply | エージェントの回答 |
thinking | エージェントの思考プロセス |
notice | スレッド内の短いメモ |
markdown | レンダリングされたMarkdown: 見出し、リスト、強調、コード、リンク。生のHTMLはテキストとして表示されます |
code | コードブロック (durable agentが言語を指定した場合は言語名付き) |
link | ラベル付きのリンク行 (ラベルがない場合はアドレス)。https://リンクのみ |
tool | ツール呼び出し: 実行中、出力完了、失敗、または拒否 |
生成中のreply、thinking、notice、markdownアイテムには末尾にカーソルが表示され、時刻は表示されません。最終テキストを受信するとカーソルは消えます。停止したターンには「stopped」というメモが残ります。
ユーザー自身の行
[送信] をタップした瞬間に、小さな時計アイコンとともに入力行がスレッドに表示されます。durable agent自身のコピーが到着すると、その行と置き換わります。
| 状態 | 行の表示内容 |
|---|---|
| 送信中、または送信済み | 時計アイコン。durable agentが受け取ると、入力欄に「Sent」と表示されます |
| 応答がありませんでした | 「Sending, not confirmed」。再送信すると同じリクエストIDでリトライします |
| 拒否されたか、ターンが次に進みました | 「Not sent」と表示され、入力したテキストが入力欄に戻ります |
リクエストIDをエコーバックしないdurable agentは、30秒以内の同一テキストによって照合されます。durable agentが書き戻さなかった行は、10分後に表示されなくなります。
スレッド内でユーザーの行が最新であり、durable agentがまだ応答していない間は、3つのドットが処理中であることを示します。
ヘッダー
ヘッダーは2行で構成されます。1行目には会話のタイトルとExperimentalバッジが表示されます。
| 2行目の表示内容 | 表示条件 |
|---|---|
| 「Step 2 of 3: Save a note」 | durable agentがステップを報告しており、そのうち1つが実行中である場合 |
| 「42%: uploading」 | durable agentがパーセント値とラベルを報告している場合 |
| durable agentのサブタイトル | 進行状況がないか、すべてのステップが完了している場合 |
| ワークスペース | durable agentがこれらを1つも設定していない場合 |
進行状況は、会話の処理中またはユーザーの入力を待っている間にのみ表示されます。
ベルト
ベルトにはSteerとStopが配置され、続いてdurable agent固有のボタンが最大4つまで配置されます。
Steerは、新しいターンを開始する代わりに実行中のターンにテキストを送信します。Stopは実行中のターンを終了します。現在操作できないボタンはその場でグレーアウトされるため、位置がずれることはありません。
| durable agentのボタン | 規則 |
|---|---|
| ラベル | 最大16文字 |
| アイコン | 次の12種類のいずれか: play、pause、check、x、refresh、archive、flag、star、send、note、search、more。これら以外の名前を指定した場合はアイコンが表示されません |
| ビジー状態 | スピナーが表示され、タップできなくなります |
| 無効状態 | グレーアウトされ、タップできなくなります |
タップすると、スマートフォン側で最後に確認されたターンが指定されます。すでに会話が進んでいた場合は何も実行されず、スマートフォンに「The conversation moved on, so the action did not run.」と表示されます。内容を確認し、実行を継続したい場合はもう一度ボタンをタップしてください。
durable agentペインに含まれない要素
durable agentには画面がないため、そのペインにはTerminalビュー、タブストリップ、ペインストリップ、Keys/Type/Quickボタンがありません。メニューにもHistory、Pane settings、Pin to top rowはありません。メニュー内のCloseは「Close conversation」と表示されます。
New conversationとスターター
durable agentのNewページは「New conversation」というタイトルになり、durable agentのスターターが一覧表示されます。
スターターはフォルダーやテキストを受け取りません。作業場所はdurable agent側が決定します。スターターをタップすると、durable agentが新しい会話を開きます。このページからマシンのagent、シェル、コマンドを指定することはできません。スターターが存在しないdurable agentの場合、「This machine's durable agent offers no starters yet.」と表示されます。
プッシュ通知
durable agentごとの上限内であれば、質問をスマートフォンにプッシュ通知できます。
| 上限 | 制限 | 超過時 |
|---|---|---|
| 単一ペイン | 毎分3回のプッシュ通知 | 質問はスマートフォン上に表示され、プッシュ通知は送信されません |
| 単一マシン上の単一durable agent | 毎分10回のプッシュ通知 | 同上 |
| 単一マシン上の単一durable agent | 毎時30回のプッシュ通知 | 「A durable agent on {host} is raising many asks」というプッシュ通知が1回送信され、その後1時間はそのdurable agentからのプッシュ通知は行われません |
プッシュ通知には「Permission needed in」とペイン名が表示されます。durable agentは、最大60文字の独自のタイトルと最大120文字の1行を追加できます。Collieはマシン、durable agent、ツール呼び出しごとに質問を1回プッシュ通知するため、再起動後に再度尋ねられた質問は表示のみが行われ、プッシュ通知は送信されません。詳細はdurable agentからのプッシュ通知を参照してください。
マスキング
シークレットマスキングが有効な場合(COLLIE_REDACT、デフォルトで有効)、Collieはdurable agentの会話リストのタイトルとサブタイトルに含まれるシークレットをマスクします。
crew内
leadのダッシュボードには、crewの各マシンに対応するDurable agentsセクションが1つずつあります。メンバーのdurable agentは2行目にメンバー名を追加し(例: pi-durable, local, workshop)、lead自身のdurable agentにはマシン名が付きません。いずれかのマシンで質問が発生すると、その該当セクションがスペースの上に移動します。誰が何に応答するかについてはcrew内のdurable agentを参照してください。