所有页面
本页内容

ask_user

当智能体需要你做出决定时,它会用提问卡片提问:问题本身、每个选项一个按钮,以及可以输入自由文本回答的地方。你在任何设备上轻点一下即可作答,智能体会根据你的回答继续。

卡片背后是智能体调用的一个工具。具体是哪个工具取决于提供商:有些提供商自带提问工具,OAR 会把它变成卡片;对其他提供商,OAR 提供一个名为 ask_user 的工具。在所有智能体工具中,只有这一个在各提供商之间的差异不止于名称。

你会看到什么 #

  • 对话中的一张卡片,包含问题及其选项。点击一个选项即可作答。
  • 允许多个答案的问题会显示复选标记和一个 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 没有提问卡片。 它的智能体协议没有向用户提问的途径,因此 Grok 智能体只能在回复文本中提问,并等待你的下一条消息。

在 Copilot 的 SDK 引擎上,每个有两个或更多选项的卡片还有一个 Select several(多选)开关,因此即使智能体没有要求,你也可以给出多个答案。

卡片等待多久 #

一张卡片等待回答 8 小时;在 Copilot 的扩展引擎上为 2 小时。超时后,智能体会被告知无人回答,并按照对话的中继模式继续。

智能体被告知什么 #

  • 通过提问工具提问,绝不以回复中的纯文本提问。纯文本中的问题不会显示按钮,而且会结束该轮。
  • 提供简短的选项列表,只有当答案必须是自由文本时才省略选项。
  • 当真正需要你的输入时,即使在 autopilot(中继模式)下也要提问。

参数 #

OAR 在 Copilot SDK 引擎上的 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: …。

OAR 在 Cursor 上的 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 的批准)只能由你来回答。