Skip to content

ask_user 工具让 Gemini 代理在执行过程中向你提问,暂停执行直到你回答。支持三种问题类型:多选(choice,支持 multi-select)、自由文本(text)和是/否确认(yesno)。每次最多同时提 4 个问题。适合代理在实施前确认需求细节,避免猜错方向导致返工。

ask_user 工具参考

ask_user 工具让代理在执行过程中向你提问,收集偏好、澄清需求或请求决策。提问后代理会暂停等待你的回答,再继续执行。


参数说明

工具名称ask_user

参数

参数类型必填说明
questionsarray问题列表,1 到 4 个问题对象

每个问题对象

字段类型必填说明
questionstring完整的问题文本
headerstring简短标签(最多 16 字符),显示为 chip/tag
typestring问题类型:choice(默认)、textyesno
optionsarray条件必填choice 类型时必填,2~4 个选项对象
multiSelectbooleanchoice 类型时,是否允许多选
placeholderstring文本输入框的提示文字

选项对象options 数组中的每个元素):

字段类型必填说明
labelstring选项显示文字(1~5 个词)
descriptionstring选项简要说明

问题类型示例

单选(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 继续问。