ask_user
当智能体需要你做出决定时,它会用提问卡片提问:问题本身、每个选项一个按钮,以及可以输入自由文本回答的地方。你在任何设备上轻点一下即可作答,智能体会根据你的回答继续。
卡片背后是智能体调用的一个工具。具体是哪个工具取决于提供商:有些提供商自带提问工具,OAR 会把它变成卡片;对其他提供商,OAR 提供一个名为 ask_ 的工具。在所有智能体工具中,只有这一个在各提供商之间的差异不止于名称。
你会看到什么 #
- 对话中的一张卡片,包含问题及其选项。点击一个选项即可作答。
- 允许多个答案的问题会显示复选标记和一个 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 没有提问卡片。 它的智能体协议没有向用户提问的途径,因此 Grok 智能体只能在回复文本中提问,并等待你的下一条消息。
在 Copilot 的 SDK 引擎上,每个有两个或更多选项的卡片还有一个 Select several(多选)开关,因此即使智能体没有要求,你也可以给出多个答案。
卡片等待多久 #
一张卡片等待回答 8 小时;在 Copilot 的扩展引擎上为 2 小时。超时后,智能体会被告知无人回答,并按照对话的中继模式继续。
智能体被告知什么 #
- 通过提问工具提问,绝不以回复中的纯文本提问。纯文本中的问题不会显示按钮,而且会结束该轮。
- 提供简短的选项列表,只有当答案必须是自由文本时才省略选项。
- 当真正需要你的输入时,即使在 autopilot(中继模式)下也要提问。
参数 #
OAR 在 Copilot SDK 引擎上的 ask_user #
| 参数 | 类型 | |
|---|---|---|
question |
文本,必填 | 问题 |
choices |
文本列表 | 每个选项一个按钮;中继保留前 8 个并丢弃其余 |
multi_ |
true | false | 你可以多选;答案列出每个所选,以 , 分隔 |
{
"question": "Which database should the new service use?",
"choices": ["PostgreSQL", "SQLite", "Keep the current one"]
}
智能体得到 User selected: Postgre,对于自由文本答案则得到 User responded: …。
OAR 在 Cursor 上的 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" }
]
}
]
}
你始终可以用自由文本作答,而不必选择一个选项。智能体会得到每个问题及其答案。
各提供商自带的工具 #
Claude 的 Ask(运行 Claude Code 的 DeepSeek 对话也使用它)和 Copilot 内置的 ask_ 属于这些提供商;它们的参数由它们自行定义,并可能随提供商更新而改变。OAR 按提供商交来的原样接收问题,显示卡片,并以提供商期望的形式返回你的回答。
来自其他会话的问题 #
当你允许智能体与其他会话协作时,提问卡片也可以由另一个智能体回答:relay_ 的 answer_。智能体会被告知先问你,除非你已让它们自行决定。中继自己的审批卡片(用于启动会话、监视会话,以及 ask 和 plan 的批准)只能由你来回答。