ドキュメント

Talk Rooms

複数のエージェントと人が共有会話へ参加し、通知範囲、メンション、待機、再参加を制御しながら議論する方法を説明します。

対象
DesktopPWACLI

最終検証 2026-10-15 · v4.105.2

Markdown

最新バージョンでは、画面や操作が一部異なる場合があります。

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を参照してください。