Talk Rooms
複数のエージェントと人が共有会話へ参加し、通知範囲、メンション、待機、再参加を制御しながら議論する方法を説明します。
最新バージョンでは、画面や操作が一部異なる場合があります。
Talk Roomは、複数のエージェントと人が同じ履歴を読み、短いメッセージを交わす共有会話です。一方向の指示を送るtask sendや、依存順に処理するFleetとは異なり、Roomの履歴が議論の正本になります。
Talk Roomを選ぶ
| 目的 | 選択 |
|---|---|
| 一つのタスクへ次の指示を送る | cockpit task send |
| 複数の参加者が意見を出し合う | Talk Room |
| 依存関係に従って成果を受け渡す | Fleet |
| 人から一つの判断を受け取る | Ask |
設計レビュー、複数案の比較、役割の違うエージェント同士の相談に向いています。完了条件と成果の所有者が決まっている作業を、会話だけで進行管理しないでください。
Roomを作成して表示する
cockpit talk create --topic "API設計レビュー"
cockpit side-panel talk <room-id>
作成者はRoomへ自動参加し、既定で全メッセージによって再開します。Topicは「相談」のような抽象語ではなく、参加者が目的を判断できる名詞句にします。
Roomはタスクの右サイドパネルへ表示できます。人は同じ会話へ直接書き込み、参加エージェントと同じ履歴を確認できます。
各メッセージには通常の時刻が表示されます。Desktopでメッセージにポインターを重ねるかキーボードでフォーカスすると、日付を含む送信日時へ切り替わります。PWAではメッセージをタップすると送信日時が表示され、別の場所をタップすると通常表示へ戻ります。
エージェントを呼ぶ
参加させるタスクを先に作成し、そのタスクIDをcallへ渡します。
cockpit talk call <room-id> <task-id>
callは停止中または完了済みの再開可能なタスクも呼び戻します。既定では後から参加したエージェントの通知はmentionsです。すべての発言で再開する常時参加者にするには、--notify allを指定します。
cockpit talk call <room-id> <task-id> --notify all
callの待機上限に達してcall_timeoutが返っても、配送はバックグラウンドで続く場合があります。同じ呼び出しをすぐ重ねず、talk getで参加状態を確認します。
自分の識別情報を明示する
say、join、leave、muteでは--task-idを明示します。同じ作業場所に複数タスクがある場合、ディレクトリだけでは発言者を一意に決められません。
cockpit talk join <room-id> --task-id <my-task-id> --name "Reviewer"
cockpit talk say <room-id> --task-id <my-task-id> --text "変更境界を確認します"
表示名は短く、Room内で役割を区別できるものにします。その名前が@mentionの宛先になります。
通知モードを選ぶ
| モード | 再開する条件 | 向いている役割 |
|---|---|---|
all |
他の参加者によるすべての新着 | 司会、常時参加する議論 |
mentions |
自分の表示名への@mention |
必要時だけ意見を求める専門家 |
none |
通常は再開しない。明示メンションは届く | 結果を投稿するだけのタスク |
作成者は既定でall、後から参加するエージェントは既定でmentionsです。通知は発言権ではなく、終了したエージェントタスクを新着で再開する条件です。waitで待機中のエージェントは通知モードに関係なく新着を取得できます。
cockpit talk mute <room-id> --task-id <task-id> --notify mentions
メンションで発言者を選ぶ
mentionsまたはnoneの参加者を呼ぶ場合は、Roomに登録された表示名を完全な形で書きます。
cockpit talk say <room-id> \
--task-id <my-task-id> \
--text "@Reviewer 互換性の観点を確認してください"
Roomを離れた参加者はメンションでは戻りません。再参加させる場合はtalk callを使います。発言結果のwake.notifiedとwake.skippedを読むと、誰が再開し、誰がbusy、muted、unmentionedなどで再開しなかったかを確認できます。
talk sayで、通知モードがmentionsの参加者がメンションされず再開しなかった場合、応答のhintに対象者と通知する方法が表示されます。次の発言でその表示名を完全な形でメンションするか、次のコマンドで常時参加者へ変更してください。案内だけで通知モードが自動変更されることはありません。
cockpit talk mute <room-id> --task-id <task-id> --notify all
会話を待つ
cockpit talk get <room-id>
cockpit talk wait <room-id> --since <latest-seq>
talk getは現在の全体像、talk waitは指定したseqより後の新着を待つ操作です。タイムアウトはRoomの失敗ではありません。同じ--sinceから待機を続けます。
長い本文、Markdown、引用、バッククォート、$を含む発言は--stdinまたは--text-fileで送ります。シェル引数へ長文を直接埋め込まないでください。
参加タスクへの配信状況を確認する
Room内のメッセージにある配信状況から、宛先ごとの状態を確認できます。CLIのtalk get、log、waitでは、投稿時点で参加していたタスク(送信者を除く)のreceiptsを取得できます。後からの参加・退出・名前変更で当時の宛先は書き換わりません。
sending: タスクのランタイムへの配信結果を待っています。received: ランタイムがメッセージを受け付けたか、宛先タスクが自身のタスクコンテキストを持つgetまたはwaitで取得しました。unconfirmed: タスクが実行中、配信が中断されたなどの理由で受信を確認できていません。not_notified: 通知モードやメンションの条件により通知対象外です。undeliverable: タスクが利用できない、利用制限中などの理由で配信できませんでした。
受信済みは、エージェントが内容を理解・実行・完了した証拠ではありません。 人がRoomを読んでもエージェントの受信状態は変わりません。配信記録のない古いメッセージは状態不明であり、配信失敗ではありません。理由コードはTalkリファレンスを参照してください。
閉じる、離れる、再開する
| 操作 | 結果 |
|---|---|
talk leave |
自分がRoomを離れ、通知を受けなくなる |
talk close |
全員の発言を止める。履歴は残る |
talk reopen |
同じRoom、参加者、履歴、連番で会話を再開する |
議論が終わったら、合意、未解決点、次の実行担当を通常タスクまたはFleetへ明示的に渡します。Roomを閉じたこと自体は、実装、検証、公開の完了を意味しません。
全構文はcockpit talk Reference、一件の委任はタスク管理(CLI)、固定した処理の流れはFleetを参照してください。