Appearance
ask_user 工具让 Gemini 代理在执行过程中向你提问,暂停执行直到你回答。支持三种问题类型:多选(choice,支持 multi-select)、自由文本(text)和是/否确认(yesno)。每次最多同时提 4 个问题。适合代理在实施前确认需求细节,避免猜错方向导致返工。
ask_user 工具参考
ask_user 工具让代理在执行过程中向你提问,收集偏好、澄清需求或请求决策。提问后代理会暂停等待你的回答,再继续执行。
参数说明
工具名称:ask_user
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
questions | array | 是 | 问题列表,1 到 4 个问题对象 |
每个问题对象:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
question | string | 是 | 完整的问题文本 |
header | string | 是 | 简短标签(最多 16 字符),显示为 chip/tag |
type | string | 否 | 问题类型:choice(默认)、text、yesno |
options | array | 条件必填 | choice 类型时必填,2~4 个选项对象 |
multiSelect | boolean | 否 | choice 类型时,是否允许多选 |
placeholder | string | 否 | 文本输入框的提示文字 |
选项对象(options 数组中的每个元素):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
label | string | 是 | 选项显示文字(1~5 个词) |
description | string | 是 | 选项简要说明 |
问题类型示例
单选(choice)
json
{
"questions": [
{
"header": "数据库",
"question": "你想使用哪种数据库?",
"type": "choice",
"options": [
{
"label": "PostgreSQL",
"description": "强大的开源关系型数据库"
},
{
"label": "SQLite",
"description": "轻量级嵌入式数据库,适合本地开发"
},
{
"label": "MongoDB",
"description": "文档型 NoSQL 数据库"
}
]
}
]
}多选(choice + multiSelect)
json
{
"questions": [
{
"header": "功能",
"question": "需要包含哪些功能?",
"type": "choice",
"multiSelect": true,
"options": [
{ "label": "用户认证", "description": "登录注册和权限管理" },
{ "label": "文件上传", "description": "支持上传图片和文档" },
{ "label": "邮件通知", "description": "发送事件触发的邮件" }
]
}
]
}多选时,界面自动添加"以上全选"选项。
自由文本(text)
json
{
"questions": [
{
"header": "项目名称",
"question": "你的新项目叫什么名字?",
"type": "text",
"placeholder": "例如:my-awesome-app"
}
]
}是/否确认(yesno)
json
{
"questions": [
{
"header": "部署",
"question": "要立即部署到 staging 环境吗?",
"type": "yesno"
}
]
}同时提多个问题
最多可同时提 4 个问题,减少对话往返次数:
json
{
"questions": [
{
"header": "框架",
"question": "使用哪个前端框架?",
"type": "choice",
"options": [
{ "label": "React", "description": "Meta 开发的声明式 UI 库" },
{ "label": "Vue 3", "description": "渐进式 JavaScript 框架" }
]
},
{
"header": "CSS",
"question": "CSS 方案偏好?",
"type": "choice",
"options": [
{ "label": "Tailwind CSS", "description": "工具优先的原子 CSS 框架" },
{ "label": "CSS Modules", "description": "局部作用域的 CSS 文件" }
]
}
]
}输出格式
代理收到的答案以 JSON 字符串形式返回,按问题顺序(0-indexed)编号:
json
{
"answers": {
"0": "PostgreSQL",
"1": "some text input"
}
}使用场景
- 需求确认:在实施前让代理用此工具问清关键决策,避免猜错方向
- 选项收集:功能选择、框架选型、部署配置等需要你介入决定的场景
- 危险操作确认:执行不可逆操作前(删除数据库、清空文件)请求确认
常见问题
Q: 代理能在不问问题的情况下直接猜测并执行吗?
A: 可以。代理会根据上下文推断,对有把握的决策直接执行;只有在可能做错且代价较高时才会主动提问。如果你希望代理在每个关键步骤都确认,可以明确告诉它:执行前先问我确认。
Q: 可以跳过代理的问题直接让它继续吗?
A: 可以。直接在问题弹窗中选择关闭/跳过,或在回答框留空。代理会使用默认判断继续执行。
Q: 问题最多能问 4 个,如果代理有更多需要确认的点怎么办?
A: 代理可以分多轮提问。第一轮回答后,如果还有未确认的关键点,代理可以再次调用 ask_user 继续问。