Ask
AskがAIエージェントから人へ確認と判断を安全に受け渡し、回答後に同じタスクを再開する仕組みを説明します。
最新バージョンでは、画面や操作が一部異なる場合があります。
Askは、AIエージェントが作業をいったん止め、人に確認と判断を委ねるための仕組みです。回答は元のタスクへ構造化されたイベントとして返り、その同じタスクが続きから再開します。
Askが向いている場面
- 公開、削除、購入など、実行前に人の最終判断が必要
- 複数の方針に明確なトレードオフがある
- 画像、音声、動画を見聞きしないと決められない
- 関連する複数の判断を一度にまとめて確認したい
Askは単なる通知ではありません。質問は回答されるまで保持され、Desktopの専用Askウィンドウ、PWAの「確認」、設定済みのDiscordまたはSlackから応答できます。
ほかの確認との違い
| 仕組み | 用途 | 回答後 |
|---|---|---|
| Ask | エージェントが人へ明示的な判断を委ねる | 元のタスクへ回答が返り、自動再開する |
| 通常返信 | 利用者がタスクへ次の指示を送る | 新しいターンとして進む |
| エージェント固有の質問 | 実行中のエージェントが入力を求める | そのエージェントの質問へ回答する |
| ツール実行承認 | ファイル変更やコマンドなどの実行可否を決める | 許可、常に許可、拒否の権限判断を返す |
cockpit display |
前面に情報だけを表示する | 返答を待たず、タスクを再開しない |
Askへの回答は、OSや外部サービスへの実行権限そのものではありません。権限が必要な操作では、Askによる方針確認とは別にツール実行承認が発生する場合があります。
質問と回答の形式
Askは次の形式を組み合わせられます。
- 単一選択
- 複数選択
- 自由入力
- 複数の関連質問
- 選択肢ごとの結果やトレードオフの説明
- Ask全体の説明または個別の質問に含まれる、クリック可能なHTTPまたはHTTPSのURL
- 質問への画像、音声、動画の添付
- 回答への画像、テキスト、ソースコード、JSON、CSV、PDF、音声、動画、Office文書の添付
選択肢だけで判断できない場合も、自由入力は既定で利用できます。質問文は、それだけを読んで決められるよう、対象、現在の状況、各選択の結果を含めます。
DesktopでAskのURLを選ぶと、Askウィンドウ内を移動せず、システムブラウザーで開きます。PWAでは新しいブラウザータブで開きます。DesktopのAsk画面から開けるのはhttpとhttpsのリンクだけで、ほかのURLスキームは開きません。
DesktopとPWAのAskには、質問を作成したタスクへ移動するボタンがあります。移動してもAskへの回答やクローズは行われません。質問元のタスクが削除済みの場合、このボタンは利用できません。
PWAで前後のAskへ切り替えると、質問本文は先頭、添付メディアの横並びは左端から表示されます。同じAskを表示中に更新が届いただけでは、読んでいる位置はリセットされません。
Desktopの表示を調整する
DesktopのAskウィンドウは右下のハンドルをドラッグして幅と高さを変更できます。変更したサイズは保存され、次に開くAskウィンドウにも使われます。画面の作業領域を越える大きさにはできません。
ヘッダーの「A−」と「A+」は、質問、選択肢、説明、入力欄の文字サイズを変更します。この値は「設定」→「表示」のチャット文字サイズと共通で、変更はほかのAskウィンドウとメインの会話表示にも反映されます。
回答までの流れ
- エージェントがAskを作成します。
- Cockpitが質問を保存し、DesktopとPWAへ表示します。Ask転送を有効にしている場合は、設定したDiscordまたはSlackのチャンネルにも投稿します。
- 利用者が選択、入力、必要に応じて対応ファイルを添付して回答します。
- Cockpitが
cockpit.ask.resolvedイベントを元のタスクへ渡します。 - エージェントは回答を受け取り、同じ作業を続けます。
Askを回答せずに閉じると、そのAskは削除されますが、元のタスクは自動再開しません。必要なら、後から通常のメッセージでタスクを再開します。
回答の添付はクリップボタンだけでなく、回答面へのドラッグ&ドロップでも追加できます。複数質問ではポインターの下にある質問へ、それ以外の場所では先頭の質問へ添付されます。ドロップだけで回答が送信されることはありません。
DiscordとSlackへ転送する
Desktopの「設定」→「Ask通知」では、DiscordとSlackを別々に設定し、同時に有効にできます。どちらも既定では無効で、CockpitからDiscord GatewayまたはSlack Socket Modeへ外向きに接続します。
- Discordでは、Developer PortalでBotを作成してtokenを貼り、サーバーへ招待します。Slackでは、画面からコピーしたmanifestでアプリを作成し、Bot token(
xoxb-)とconnections:writeを持つApp-level token(xapp-)を貼ります。 - 転送先のチャンネルと「回答できる人」を一人選びます。回答者が未設定の場合は転送を開始せず、サーバーやワークスペースのほかのメンバーが操作してもCockpitは回答を受け付けません。
- 必要に応じて、Askの画像・動画を転送するか、許可した回答者がチャンネルへ投稿したファイルを回答へ添付するかを切り替えます。
- 「テスト Ask」を送り、選択したサービスから回答して往復時間が表示されることを確認してから有効にします。
ボタン、選択メニュー、自由入力モーダルから回答でき、複数質問ではすべての回答を揃えてから送信します。Desktop、PWA、CLI、Discord、Slackのいずれかで回答またはクローズすると、ほかの転送先も「回答済み」または「閉じられました」へ更新されます。Discordで表示できる選択肢は先頭25件、Slackでは先頭100件までで、それを超える選択肢はCockpit画面から回答します。
状態確認と往復テストはCLIからも実行できます。
cockpit ask relay status --verbose
cockpit ask relay test discord
cockpit ask relay test slack
制約
- 一つのタスクで同時に保持できるAskは一つです。
- 完了済みタスクには作成できません。
- 再開可能なAIエージェントのタスクで使い、Terminalタスクでは使えません。
- Ask作成後、エージェントは回答を待ち、回答へ依存する作業を続けません。
- 質問の添付は最大8ファイル、1ファイル512MB、合計1GBまでです。
- 回答の添付も最大8ファイル、1ファイル512MB、合計1GBまでです。JSONは1ファイル25MBまでです。
- アーカイブと実行形式は添付できません。Cockpitは拡張子、MIME、実サイズ、内容を検証し、元のファイル名とは別のランダムな保存名を使います。
- 添付の本文はプロンプトへ自動展開されません。エージェントにはローカルパスと名前、MIME、サイズのメタデータが渡ります。
CLIからAskを作る
cockpit ask \
--summary "本番公開の準備ができました。テストはすべて成功し、変更はドキュメントだけです。公開しますか?" \
--choice "公開する" \
--choice-description "commit、push、本番デプロイへ進みます" \
--choice "修正する" \
--choice-description "公開せず、追加指示を待ちます"
cat summary.md | cockpit ask --stdin --choice "公開する" --choice "修正する"
cockpit ask --summary-file summary.md --questions-file questions.json
複数行やシェルで解釈される文字を含む説明は、--stdinまたは--summary-fileで渡します。複数質問のJSON配列は--questions-stdinまたは--questions-fileからも読み込めます。標準入力は一つだけなので、説明と質問の両方を外部入力にする場合は、片方をファイルから渡します。同じ値に対してコマンド引数、標準入力、ファイル入力を同時には指定できません。
--summary、--summary-file、または--stdinへJSONを渡した場合、Cockpitは厳密な形式に一致する内容を構造化Askへ復元します。Cockpit Ask形式ではsummaryとchoicesを含むobject、Claude Code形式ではAskUserQuestionのobjectまたはquestions配列を利用でき、コードフェンスで囲まれていても解析します。選択肢、説明、単一・複数選択を復元できないJSONや型が正しくないJSONは変換せず、そのまま説明として表示します。通常は--choiceまたは--questions-stdinを明示してください。
コマンドが成功するとAsk IDが返ります。エージェントはその時点でターンを終え、回答をポーリングしません。
CLIから未回答のAskを操作する
v4.39.0以降では、作成とは別に未回答のAskを一覧、回答、クローズできます。
cockpit ask list
cockpit ask list --task <task-id>
cockpit ask answer <ask-id> --choice "公開する"
cockpit ask answer <ask-id> --input "画像を確認してください" --attachment ./screenshot.png
cockpit ask close <ask-id>
listは質問、選択肢、添付メディアの情報を確認する操作です。answerは利用者の代理として回答し、作成元のタスクを再開します。--attachmentはローカルファイルを作成元タスクの管理領域へ取り込み、UIからの回答添付と同じ形式で渡します。複数質問では、対象の--questionの後へ添付を指定します。
音声エージェントが利用者の明示的な判断を伝える場合など、質問の文脈と回答する権限が明らかなときだけ代理回答します。メディア付きのAskは、利用者または代理回答者が実際に内容を確認するまで回答しません。
closeは未回答のAskを取り除くだけで、作成元のタスクを再開しません。古いAskを整理するための操作であり、必要な判断を省略するためには使いません。