SuperAPI AI 工具集

asking-user-questions

智能体与模型

查看项目

更新于 10-27 00:56

技能介绍

用途

本技能为工作流家族中 ask_user_question 工具提供共享规范:如何按轮次访谈用户、什么样的问题值得问、如何组织选项,以及答案缺席时如何降级。流程技能在需要提问的步骤引用这一概念;是否提问、答案记录在哪里,由引用它的技能决定。

主要能力

按轮次访谈,直到没有未说明的假设

把议题映射为一棵设计树:每个决策都会分出依附于它的子决策。前沿是前置条件已经确定的所有开放决策,也就是现在无需猜测尚未听到的答案就能提问的问题。

一次调用等于一轮,等于整个前沿,数量不设上限。答案依赖另一个仍开放问题的问题属于后续轮次,绝不放在同一轮。独立问题绝不拆到连续多次调用中。

调用会阻塞当前运行。答案作为本工具的结果返回。在答案到达前(可能是几秒,也可能几天),不要继续处理被阻塞的步骤,也不要假设答案。卡片打开期间发送的撰写消息会取代本轮:卡片关闭且无答案,消息作为下一条用户消息到达,应将其视为用户回复,只重新询问仍然重要的问题。

每轮之后重算前沿:答案确定分支,解锁其依赖项,并剪掉不再适用的分支。询问下一轮;绝不预先编写后续轮次。

当前沿为空时访谈结束:每个分支都已访问,没有实质内容被默默假设。然后继续引用技能的下一个步骤;没有额外的“我们是否对齐”轮次(引用技能自身的检查点仍然适用)。

深度跟随工作,而非配额:没有开放用户决策的工作为零轮;决策密集的变更可能需要多轮。

事实归自己,决策归用户

绝不向用户询问工作区、规格或网络能回答的事实。自己去查。当查询较慢时,在后台启动它(宿主提供子代理时使用子代理),同时询问前沿的其余部分;只有该查询下游的问题需要等待。

每个决策——范围、可观察行为、用户将长期承受的权衡——都交给用户。自己选一个选项继续,是在回答自己的问题,不是推断。

如果候选选项仅在内部不同——可观察行为相同——那就不是用户决策:自行决定,并在工作流产物中记录理由。

什么样的问题值得问

  • 它改变结果。每个答案都通向用户会看到或长期承受的不同结果。如果所有选项都落在同一处,删掉这个问题。
  • 它具体到当前工作。点名实际的功能、屏幕、文件或用户(“当项目在折叠状态下被重命名……”),绝不用通用模板问题。
  • 它探查人们默默假设的内容。扫过设计树常见的盲区:范围边界与非目标、空/错误/失败状态、边缘情况与限制、并发或多实例、必须迁移或保留的既有数据与行为、默认值,以及这项工作面向谁。
  • 它揭示张力。与已记录的规格决策、先前的回答或请求本身冲突时,直接提出,并引用双方。
  • 它绝不重复询问。请求、先前回答或规格已经确定的一切都已确定;在其上构建。
  • 具体场景胜过抽象原则。问“用户把文件拖到繁忙会话上——排队还是拒绝?”,而不是“并发应如何处理?”。
  • 如果问题无法靠交谈确定(某物看起来或感觉如何),在 options[].preview 中展示具体产物——原型、片段或配置——而不是描述它。

选项

推荐选项放在最前,标签后缀“(Recommended)”,并附一行 recommendedReason 说明为何推荐它而非其他选项(作为 Why: 行内联显示在选项下方)。

每个选项:简洁标签(1–5 个词,≤ 60 字符)+ 描述,承载选择它的权衡或后果。选项针对手头工作定制——绝不用通用占位符。

选项必须能被被问用户判定:以可观察行为或结果来表述(“折叠项目在重命名后保持折叠”),绝不用实现机制表述(“语义守卫”“激活引用”)。

绝不自行编写“其他”、自由文本或逃逸选项——工具会为每个问题添加自由文本行和始终可用的 Skip,保留标签会被拒绝。multiSelect 下同样如此:自由文本行保留且为附加——输入的答案与勾选选项一同到达,不替代它们。

当多个答案同时有效(功能清单)时用 multiSelect: true;确认某事或选择一条路径时用单选。

当具体产物——代码、配置、原型——展示比描述更清晰时用 options[].preview(markdown)。仅单选。

header 是短标签,≤ 16 字符。

确认推断

当你已推断出某事,需要的是“是/调整”而非开放答案时:推断陈述作为问题文本,第一项为“Looks right”(描述:“accurate as written”),第二项为真正的拒绝选项(例如“Off base — ask me directly”)。编辑通过工具自动的自由文本行到达——不要编写编辑选项。按如下方式解读回复:

  • “Looks right” → 推断成立;原样继续。
  • 自由文本微调(一个事实改变)→ 仅更新该字段;不要重新推导其他任何内容。
  • 大幅改写 → 在继续前重新推导源自该陈述的所有推断。
  • 拒绝 → 完全丢弃推断,改为提出开放式问题。

降级

跳过或拒绝的问题不是阻塞项:按推荐的答案确定它,在工作流产物中记为未确认(引用技能说明记录位置),并从该假设继续处理其依赖项——不要重新询问。

整轮跳过意味着用户想停止被访谈:不再询问后续轮次,对仍然开放的一切按已记录假设继续。

如果宿主报告没有交互界面(ask_user_question 返回 “not available”),以同样方式陈述假设,而不是阻塞。

“我不知道 / 帮我理解”是错误框架的信号,不是缺少知识的信号:用平实语言从用户可见行为重新解释,然后用行为框架的选项重新提问——不要用更多细节重复同样的技术选项。

警示信号

  • 你在依赖其答案的决策仍开放时,一轮之后就停了。
  • 你替用户选了选项而不是询问——或者问了本可查到的事。
  • 一轮中有两个问题,其中一个答案会改变另一个。
  • 问题重述了请求或先前答案已确定的内容。
  • 每个问题都适用于任何项目——没有点名当前工作的具体内容。