name: ask-user description: 用于有效与用户交互以收集信息或获取决策的模式。当需要用户输入时使用。 allowed-tools: AskUserQuestion
询问用户技能
用于有效用户交互的模式。
何时加载此技能
- 您需要澄清需求
- 您需要用户做出决策
- 您有选项需要呈现
原则
1. 具体明确,而非开放式提问
不佳示例:“你想要什么?” 良好示例:“身份验证应该使用JWT还是会话?”
2. 尽可能提供选项
AskUserQuestion(
questions: [
{
question: "我们应该使用哪种身份验证方法?",
header: "身份验证方法",
options: [
{ label: "JWT", description: "无状态,适用于API" },
{ label: "会话", description: "有状态,适用于Web应用" }
],
multiSelect: false
}
]
)
3. 提供上下文
解释您询问的原因:
- 哪些决策取决于此
- 存在哪些权衡
- 您的建议及原因
4. 批量处理相关问题
将相关问题一起询问:
questions: [
{ question: "身份验证方法?", ... },
{ question: "令牌过期时间?", ... },
{ question: "刷新令牌?", ... }
]
何时询问 vs 自行决定
询问时机:
- 存在多种具有不同权衡的有效方法
- 用户偏好很重要
- 范围不明确
- 存在工作浪费的风险
自行决定时机:
- 存在明确的最佳实践
- 低影响选择
- 易于撤销
- 适用标准惯例
问题类型
澄清
“您提到‘快速’——是指响应时间<100毫秒,还是仅比当前更快?”
确认
“我理解您需要X、Y和Z。这是正确的吗?”
决策
“选项A具有[优点/缺点]。选项B具有[优点/缺点]。您更喜欢哪一个?”
范围
“这应该处理[相关情况]还是仅处理[原始请求]?”