ask_user
agent 需要你做決定時,會用提問卡片詢問:卡片上有問題、每個選項各一個按鈕,以及可以輸入自由文字回答的空間。你在任何裝置上點一下就能回答,agent 會帶著你的答案繼續。
卡片背後是 agent 呼叫的一個工具。是哪個工具取決於供應商:有些供應商有自己的提問工具,OAR 會把它轉成卡片;其他供應商則由 OAR 提供一個名為 ask_ 的工具。在所有 agent 工具中,只有這一個在各供應商之間的差異不只是名稱。
你會看到什麼 #
- 對話中的一張卡片,上面有問題和選項。點選一個選項就會作答。
- 允許多個答案的問題會顯示核取方塊和一個 Reply with selection(以所選內容回覆)按鈕。回覆會列出每個勾選的選項,再加上你輸入的任何內容。
- 一次要求多個值的請求會顯示成表單,每個值一個欄位。
- 推播通知,如果你已為提問開啟推播通知。
- 卡片開著時,回合會等待。等待卡片的回合絕不會被視為卡住。
依供應商 #
| 供應商 | 卡片背後的工具 | 多個答案 | 一次呼叫多個問題 |
|---|---|---|---|
| Claude、Claude Cloud | Claude 自己的 Ask |
是 | 是,一張卡片接著一張 |
| DeepSeek 0.9.17 新增 | Claude Code 的 Ask,和 Claude 上一樣 |
是 | 是,一張卡片接著一張 |
| GitHub Copilot 與 OpenAI,SDK 引擎 | OAR 的 ask_,取代內建的那個 |
是,使用 multi_ 0.9.3 新增,或問題寫著「select all that apply」時 |
否 |
| GitHub Copilot 與 OpenAI,擴充功能引擎 | Copilot 自己的 ask_ |
否;只有接受清單的表單欄位 | 有多個欄位的表單 |
| Cursor | OAR 的 ask_ |
是,使用 multi |
是,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_ |
true | false | 你可以選多個;答案會列出每個選擇,以 , 分隔 |
{
"question": "Which database should the new service use?",
"choices": ["PostgreSQL", "SQLite", "Keep the current one"]
}
agent 會收到 User selected: Postgre,如果是自由文字回答,則收到 User responded: …。
Cursor 上 OAR 的 ask_user #
| 參數 | 型別 | |
|---|---|---|
questions |
1 到 4 個問題的清單,必填 | |
questions[]. |
文字,必填 | 問題 |
questions[]. |
文字 | 問題上方的簡短標籤 |
questions[]. |
2 到 6 個的清單,必填 | 每個都有 label(必填)和 description |
questions[]. |
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 的 Ask(DeepSeek 對話也會使用,因為它們執行的是 Claude Code)和 Copilot 內建的 ask_ 屬於這些供應商;它們的參數由供應商自行定義,可能隨供應商的更新而改變。OAR 照供應商交來的樣子接收問題、顯示卡片,再以供應商預期的格式傳回你的答案。
來自其他 session 的提問 #
當你允許 agent 使用其他 session 時,提問卡片也可以由另一個 agent 回答:relay_ 的 answer_。agent 會被告知先問你,除非你已告訴它們自行決定。中繼自己的核准卡片(用於啟動 session、監看 session,以及 ask 和 plan 的核准)只能由你回答。