所有頁面
本頁內容

ask_user

agent 需要你做決定時,會用提問卡片詢問:卡片上有問題、每個選項各一個按鈕,以及可以輸入自由文字回答的空間。你在任何裝置上點一下就能回答,agent 會帶著你的答案繼續。

卡片背後是 agent 呼叫的一個工具。是哪個工具取決於供應商:有些供應商有自己的提問工具,OAR 會把它轉成卡片;其他供應商則由 OAR 提供一個名為 ask_user 的工具。在所有 agent 工具中,只有這一個在各供應商之間的差異不只是名稱。

你會看到什麼 #

  • 對話中的一張卡片,上面有問題和選項。點選一個選項就會作答。
  • 允許多個答案的問題會顯示核取方塊和一個 Reply with selection(以所選內容回覆)按鈕。回覆會列出每個勾選的選項,再加上你輸入的任何內容。
  • 一次要求多個值的請求會顯示成表單,每個值一個欄位。
  • 推播通知,如果你已為提問開啟推播通知。
  • 卡片開著時,回合會等待。等待卡片的回合絕不會被視為卡住。

依供應商 #

供應商 卡片背後的工具 多個答案 一次呼叫多個問題
Claude、Claude Cloud Claude 自己的 AskUserQuestion 是 是,一張卡片接著一張
DeepSeek 0.9.17 新增 Claude Code 的 AskUserQuestion,和 Claude 上一樣 是 是,一張卡片接著一張
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 個,一張卡片接著一張
Grok 無

Grok 沒有提問卡片。 它的 agent 協定沒有向使用者提問的方式,所以 Grok agent 只能在回覆文字中提問,然後等你的下一則訊息。

在 Copilot 的 SDK 引擎上,每張有兩個以上選項的卡片也有 Select several(多選)開關,所以即使 agent 沒有要求,你也可以給出不只一個答案。

卡片會等多久 #

卡片會等待回答 8 小時;在 Copilot 的擴充功能引擎上是 2 小時。之後 agent 會被告知沒有人回答,並依對話的中繼模式繼續。

agent 會被告知什麼 #

  • 透過提問工具提問,絕不在回覆中以純文字提問。純文字的問題不會顯示按鈕,而且會結束回合。
  • 提供簡短的選項清單,只有在答案必須是自由文字時才省略選項。
  • 即使在 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"]
}

agent 會收到 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" }
      ]
    }
  ]
}

你隨時可以改用自由文字回答,而不挑選選項。agent 會收到每個問題及其答案。

供應商自己的工具 #

Claude 的 AskUserQuestion(DeepSeek 對話也會使用,因為它們執行的是 Claude Code)和 Copilot 內建的 ask_user 屬於這些供應商;它們的參數由供應商自行定義,可能隨供應商的更新而改變。OAR 照供應商交來的樣子接收問題、顯示卡片,再以供應商預期的格式傳回你的答案。

來自其他 session 的提問 #

當你允許 agent 使用其他 session 時,提問卡片也可以由另一個 agent 回答:relay_tool 的 answer_question。agent 會被告知先問你,除非你已告訴它們自行決定。中繼自己的核准卡片(用於啟動 session、監看 session,以及 ask 和 plan 的核准)只能由你回答。