すべてのページ
このページの内容

ask_user

エージェントがあなたの判断を必要とするときは、質問カードで尋ねます。カードには質問、選択肢ごとのボタン、自由記述で回答する欄があります。どのデバイスからでも 1 回のタップで回答でき、エージェントはその回答を受けて作業を続けます。

カードの背後には、エージェントが呼び出すツールがあります。どのツールかはプロバイダーによって異なります。独自の質問ツールを持つプロバイダーもあり、OAR はそれをカードに変換します。それ以外のプロバイダーには、OAR が ask_user というツールを提供します。プロバイダーごとの違いが名前だけにとどまらないエージェントツールは、これだけです。

表示される内容 #

  • 会話の中に、質問と選択肢を載せたカードが表示されます。選択肢は 1 回のクリックで回答になります。
  • 複数の回答を許す質問では、チェックマークと Reply with selection(選択内容で返信)ボタンが 1 つ表示されます。返信には、チェックしたすべての選択肢と、入力したテキストが含まれます。
  • 複数の値を一度に求める依頼は、値ごとに 1 つの入力欄があるフォームとして表示されます。
  • 質問のプッシュ通知をオンにしていれば、通知が届きます。
  • カードが開いている間、ターンは待機します。カードを待っているターンが停滞しているとみなされることはありません。

プロバイダー別 #

プロバイダー カードの背後にあるツール 複数の回答 1 回の呼び出しで複数の質問
Claude、Claude Cloud Claude 独自の AskUserQuestion 対応 対応、1 枚ずつ順にカードを表示
DeepSeek 0.9.17 で追加 Claude Code の AskUserQuestion(Claude と同じ) 対応 対応、1 枚ずつ順にカードを表示
GitHub Copilot と OpenAI、SDK エンジン 組み込みのツールの代わりに OAR の ask_user 対応。multi_select 0.9.3 で追加 を指定したとき、または質問に「select all that apply」とあるとき 非対応
GitHub Copilot と OpenAI、拡張機能エンジン Copilot 独自の ask_user 非対応。リストを受け付けるフォームの入力欄のみ 複数の入力欄があるフォーム
Cursor OAR の ask_user 対応、multiSelect を指定 対応、1 ~ 4 件、1 枚ずつ順にカードを表示
Grok なし

Grok には質問カードがありません。 Grok のエージェントプロトコルにはユーザーに質問する手段がないため、Grok のエージェントは返信のテキストで尋ね、次のメッセージを待つことしかできません。

Copilot の SDK エンジンでは、選択肢が 2 つ以上あるカードにはすべて Select several(複数選択)スイッチもあるので、エージェントが求めていなくても複数の回答を返せます。

カードの待機時間 #

カードは回答を 8 時間待ちます。Copilot の拡張機能エンジンでは 2 時間です。その後、エージェントには誰も回答しなかったことが伝えられ、エージェントは会話のリレーモードに従って作業を続けます。

エージェントへの指示 #

  • 質問は返信の中のプレーンテキストではなく、必ず質問ツールで行うこと。プレーンテキストの質問にはボタンが表示されず、ターンが終わってしまいます。
  • 短い選択肢のリストを示すこと。選択肢を省くのは、回答が自由記述でなければならない場合だけにすること。
  • autopilot(リレーモード)でも、あなたの入力が本当に必要なときは質問すること。

パラメーター #

Copilot の SDK エンジンでの OAR の ask_user #

パラメーター 型
question テキスト、必須 質問
choices テキストのリスト 選択肢ごとのボタン。リレーは最初の 8 件を残し、残りは捨てます
multi_select true | false 複数選べます。回答には選んだものがすべて , 区切りで入ります
{
  "question": "Which database should the new service use?",
  "choices": ["PostgreSQL", "SQLite", "Keep the current one"]
}

エージェントには User selected: PostgreSQL が返ります。自由記述の回答では User responded: … が返ります。

Cursor での OAR の ask_user #

パラメーター 型
questions 1 ~ 4 件の質問のリスト、必須
questions[].question テキスト、必須 質問
questions[].header テキスト 質問の上に表示する短いラベル
questions[].options 2 ~ 6 件のリスト、必須 それぞれ label(必須)と description を持ちます
questions[].multiSelect true | false、既定は false 複数選べます
{
  "questions": [
    {
      "header": "Database",
      "question": "Which database should the new service use?",
      "options": [
        { "label": "PostgreSQL", "description": "What the other services use" },
        { "label": "SQLite", "description": "No server to run" }
      ]
    }
  ]
}

選択肢を選ぶ代わりに、いつでも自由記述で回答できます。エージェントには、各質問がその回答とともに返ります。

プロバイダー独自のツール #

Claude の AskUserQuestion(Claude Code で動く DeepSeek のチャットでも使われます)と Copilot の組み込みの ask_user は、それぞれのプロバイダーのものです。パラメーターはプロバイダーが定義し、プロバイダーの更新で変わることがあります。OAR はプロバイダーから渡されたとおりに質問を受け取ってカードを表示し、あなたの回答をプロバイダーが期待する形式で返します。

ほかのセッションからの質問 #

エージェントがほかのセッションと連携することを許可している場合、質問カードには別のエージェントも回答できます。使うのは relay_tool の answer_question です。エージェントは、自分で判断するよう指示されていない限り、まずあなたに尋ねるよう指示されています。リレー自身の承認カード(セッションの開始やセッションの監視の承認、ask と plan の承認)には、あなただけが回答できます。