ask_user 允许代理向人类提出一到三个结构化问题,并
等待回答。它适用于真正属于用户的决策,
而不是例行确认,或代理可以从请求、
代码,或合理默认值中推导出的信息。
该工具仅在主会话中可用。子代理和其他非主
运行不会获得它。
回答问题
您可以从任何受支持的对话界面进行回答:- Web Control UI 会在输入框上方直接停靠一个问题面板。对于 多问题提示,该面板一次显示一个问题,并通过一个简短的步骤器逐步推进。解决后,面板会关闭,聊天中 只保留一个简洁的答案摘要。
- Telegram、Discord 和 Slack 会为单选、单问题提示渲染原生按钮。
- 纯文本回复适用于任何频道。您可以回复一个数字、一个选项标签, 或者您自己的答案。
Other 选项。
平台行为
答案在每个受支持的会话界面上都有效。Web Control UI 使用一个停靠式步骤器,在展开时会替代输入框;折叠后会在一条纤细的问题栏下恢复完整输入框。iOS、macOS 和 Android 显示内联卡片;多个问题会作为一种有意的、适合触控的模式叠放在一起。每个平台都会将问题到答案的摘要保留在当前聊天时间线中,不会因超时而移除,而且 Skip 在所有地方都可用。 无法使用原生按钮的提示,包括多问题和多选提示,会在各渠道降级为可读文本。Control UI 保留完整的结构化步骤器。超时和无答案
默认超时时间为 900 秒。timeoutSeconds 会被限制在
30 到 3600 秒的范围内。
如果问题在答案到达之前过期或被取消,工具会返回
status: "no_answer"。然后代理会基于自己的最佳判断继续执行。
中止的代理运行会取消其挂起的 Gateway 问题。
Gateway 问题记录包含可选的来源 runId。客户端可以
使用它将提示及其最终答案摘要与正确的代理轮次保持关联,
包括在重新连接并通过 question.list 或 question.get 恢复问题之后。
工具 schema
multiSelect: true 时,用户可以选择多个选项。每个问题的答案值都以数组形式返回。
示例已回答结果:
模型指导
面向模型的契约告诉代理要:- 仅在真正由用户决定且因此被阻塞时才提问;
- 优先只问一个问题,且最多不超过三个;
- 将推荐选项放在第一位,并在其标签后加上
(Recommended); - 省略手动编写的
Other选项,因为自由文本会自动添加; - 在
no_answer后继续依据最佳判断执行。
ask_user 来询问是否可以继续,或用于确认
其自身的计划。