コンテンツにスキップ

エージェントとチャット

このガイドでは、スペース内でエージェントと協働する方法を説明します。

  1. サイドバーの スペース に移動します
  2. 「スペース」見出しの横にある + ボタンをクリックします
  3. 名前 を入力します — これは必須です。空の名前は拒否され、 ダイアログは開いたままになります
  4. 任意で、ワークスペースからエージェントを追加します
  5. ワークスペースにリポジトリが 1 つでもある場合は、リポジトリ選択ツールが 表示されます。最初はすべてのリポジトリが選択されています。このスペースが ワークツリーをプロビジョニングする対象を絞り込みます(リポジトリを 1 つだけ 外すことも含みます)
  6. 確定します

Control Center はスペースを開き、選択された各リポジトリに対してコピーオンライトの ワークツリーのプロビジョニングをバックグラウンドで開始します。

コンポーザーにメッセージを入力して Enter を押します。エージェントがディスパッチされ、 応答のストリーミングが始まります。

スペースがまだプロビジョニング中の場合、メッセージは失われず保留されます — コンポーザーがそれを保持し、ワークツリーの準備が整い次第自動的に送信します。

エージェントが作業する間、そのターンがストリーミングされる様子がわかります。 推論セグメント、ツール呼び出し(ファイルの読み取り、書き込み、シェルコマンド)、 回答テキストが、すべて 1 つのエージェントターンのメッセージ内に表示されます。

エージェントが作業している間、通常の会話テキストは新しいターンをキューに入れません。 それはコンポーザーの上にあるストリップ内の、キューに入った軌道修正カードとなり、 次のターン境界で稼働中の実行に注入されます。トーストは表示されません — カード自体がフィードバックです。

この動作を変えるのは次の 3 つです:

  • @メンション を含むメッセージは常にメッセージとして送信され、軌道修正として 扱われることはありません
  • スラッシュコマンド で始まるメッセージは常にそのコマンドとして処理されます
  • 添付ファイル を含むメッセージは常にメッセージとして送信されます — 軌道修正 キューはテキストのみです
  • 稼働中の実行がすべてすでに終了している場合、テキストはそのまま通り抜けて通常の メッセージとして送信されます

エージェントがガードレールでゲートされる操作 — 破壊的なコマンド、特権ツール — に 達すると、サーバーは実行をブロックし、接続中のすべてのクライアントに承認 リクエストを発行します。その会話を開いていれば、リクエストはコンポーザーの上の チャット内に、ask_user で使われるのと同じ番号付きオプションのカードとして 表示されます(拒否、承認、および任意で 8 時間の承認)。スキップはありません。 ブロックされたエージェントは判断を待っています。

アプリ内の別の場所にいる場合でも、シェルの常に最前面に表示されるパネルに 待機中のものが一覧表示されるので、スペースを探し回らなくてもエージェントの ブロックを解除できます。オーバーレイは、そのスペースの会話が画面に表示された 瞬間にリクエストを非表示にするので、同じプロンプトに二度答えることはありません。

タイムアウトはありません。ブロックされたエージェントは誰かが判断するまで待ちます。 同じリクエストは受信トレイの要対応ストリップとスマートフォンクライアントにも 表示されます。

好み、不足している要件、または真の分岐が必要なエージェントは、必ず ask_user を呼び出します。質問をチャットメッセージとして書くとターンが終了し、 再度プロンプトを出す必要があります。このツールは会話内に番号付きのカードを 表示し(オプション、任意の自由テキスト、またはその両方)、実行はあなたの回答を 待ちます。

単一のオプションをタップすると送信されます(末尾の番号はホバー時に矢印になり ます)。複数選択とテキスト入力の回答では 続行(⌘↵ / Ctrl↵)を使います。 スキップ は、エージェントに妥当なデフォルトを選ばせ、再度質問しないよう 指示します。

これは上記の承認カードとは別の仕組みです。承認は「これをやってもよいか?」であり、 質問は「どれのことか?」です。質問は内蔵ハーネスのすべてのモード(何も変更しない ため、読み取り専用のものを含みます)で利用でき、意図的に承認プロンプトでラップ されていません — ダイアログの前にダイアログがあると、承認者が接続されていない 状態でフェイルクローズしてしまうからです。表示先の会話がない実行では、この ツールは単に提供されません。

実行が稼働中の間、コンポーザーの送信ボタンは 停止 ボタンになります。 コンポーザーを空にして押すと、その会話で実行中のすべてのエージェントが停止します。

スペースのヘッダーには停止コントロールはなく、そのためのキーボードショートカット もありません。複数が稼働中に 1 つの実行だけを停止するには、その実行のアクティビティ タブを開きます — そのヘッダーには実行単位の一時停止/再開と停止があります(停止は 確認を求めます)。オブザーバビリティ → ライブ には、ワークスペース内のすべての 実行中エージェントが同じコントロールとともに一覧表示されます。

停止した実行は停止済みとしてマークされます。再度ディスパッチするには新しい メッセージを送信します。

コンポーザーで / を入力するとコマンド一覧が表示されます。会話の動作を変える ものは次のとおりです:

コマンド 動作
/plan スペースをプランモードに切り替えます。/plan だけの場合はモードを待機させるだけです。/plan <request> はモードを待機させ、残りをあなたのメッセージとして送信します
/goal <text> 会話の作業目標を記録します
/loop <text> タスクが完了するまで反復します
/compact 古い履歴をアンカー付きの要約に畳み込み、圧縮されたコンテキストで続行します
/todo … この会話の永続化された ToDo リストを表示および編集します

スキルは同じ一覧に独自の skill: 名前空間で表示されるため、上記のコマンドと 衝突しません — plan や compact という名前のスキルも引き続き利用できます:

コマンド 実行内容
/skill:<name> ワークスペースにインストールされたスキル、またはエージェントに添付されたスキル
/skill:<repo>:<name> このスペースにチェックアウトされたリポジトリのいずれかが提供するスキル

リポジトリのスキルには、それが由来するリポジトリのバッジが付きます。名前だけでは どのサービスの規約をエンコードしているかがわからず、2 つのリポジトリがそれぞれ testing を提供している可能性があるからです。スキルを見つけるのにプレフィックスを 入力する必要はありません。スキル名だけを入力しても、名前空間付きのエントリに 一致します。

エージェントは、現在作業しているリポジトリのスキルだけを常に保持します — リポジトリ単位のスキル を参照してください。コンポーザーはそのようにスコープされていません。任意の リポジトリのスキルを名前で指定して呼び出せます。

/compact と /todo はクライアントによってインターセプトされ、メッセージとして 永続化されることはありません — トランスクリプト内の /compact 行は、次の圧縮の カット位置を 1 ターン分後ろにずらしてしまうからです。/plan はテキストとして 送られるのではなく、スペースの保存されたモードを切り替えます。したがってこの 3 つはいずれも「エージェントに送るメッセージ」ではありません。履歴に表示される ことは期待しないでください。

複雑な変更の前に、/plan、コンポーザーツールバーのモードドロップダウン、または Shift+Tab でスペースをプランモードに切り替えます。するとエージェントは読み取り 専用で調査し、作業が始まる前にあなたが承認する型付きのプランを提示します。 プランモードを使うを参照してください。

専用のスペースなしでエージェントに到達する

「専用のスペースなしでエージェントに到達する」というセクション

エージェントごとにスペースを用意する必要はありません。どのスペースでも次のように 入力します:

@alice can you look at the failing tests in src/auth_test.dart?

メンションされたエージェントはスペースに追加され、そのスペースのコンテキストで ディスパッチされます。名前の照合方法については エージェントを @メンション を参照してください。