ask-questions-if-underspecified
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAsk Questions If Underspecified
需求不明确时请提问
Goal
目标
Ask the minimum set of clarifying questions needed to avoid wrong work; do not start implementing until the must-have questions are answered (or the user explicitly approves proceeding with stated assumptions).
提出最少必要的澄清问题以避免无效工作;在必须澄清的问题得到解答(或用户明确同意基于所述假设推进)之前,不要开始实施。
Workflow
工作流程
1) Decide whether the request is underspecified
1) 判断请求是否需求不明确
Treat a request as underspecified if after exploring how to perform the work, some or all of the following are not clear:
- Define the objective (what should change vs stay the same)
- Define "done" (acceptance criteria, examples, edge cases)
- Define scope (which files/components/users are in/out)
- Define constraints (compatibility, performance, style, deps, time)
- Identify environment (language/runtime versions, OS, build/test runner)
- Clarify safety/reversibility (data migration, rollout/rollback, risk)
If multiple plausible interpretations exist, assume it is underspecified.
如果在研究如何执行工作后,发现以下部分或全部内容不清晰,则认为该请求需求不明确:
- 明确目标(哪些需要更改,哪些保持不变)
- 定义「完成」标准(验收标准、示例、边缘情况)
- 定义范围(涉及哪些文件/组件/用户,排除哪些)
- 定义约束条件(兼容性、性能、风格、依赖项、时间)
- 确认环境(语言/运行时版本、操作系统、构建/测试运行器)
- 明确安全性/可逆性(数据迁移、部署/回滚、风险)
如果存在多种合理的解读,则视为需求不明确。
2) Ask must-have questions first (keep it small)
2) 优先提出必须澄清的问题(控制数量)
Ask 1-5 questions in the first pass. Prefer questions that eliminate whole branches of work.
Make questions easy to answer:
- Optimize for scannability (short, numbered questions; avoid paragraphs)
- Offer multiple-choice options when possible
- Suggest reasonable defaults when appropriate (mark them clearly as the default/recommended choice; bold the recommended choice in the list, or if you present options in a code block, put a bold "Recommended" line immediately above the block and also tag defaults inside the block)
- Include a fast-path response (e.g., reply to accept all recommended/default choices)
defaults - Include a low-friction "not sure" option when helpful (e.g., "Not sure - use default")
- Separate "Need to know" from "Nice to know" if that reduces friction
- Structure options so the user can respond with compact decisions (e.g., ); restate the chosen options in plain language to confirm
1b 2a 3c
首次提问控制在1-5个问题。优先选择能够排除大量无效工作方向的问题。
让问题易于回答:
- 优化可读性(简短的编号问题;避免大段文字)
- 尽可能提供多项选择
- 适当的时候建议合理的默认选项(明确标记为默认/推荐选项;在列表中加粗推荐选项,或者如果在代码块中展示选项,在块上方添加加粗的「推荐」行,并在块内标记默认选项)
- 提供快速回复路径(例如,回复以接受所有推荐/默认选项)
defaults - 在有帮助的情况下加入低门槛的「不确定」选项(例如,「不确定 - 使用默认选项」)
- 如果能减少沟通成本,将「必须知道」和「最好知道」的问题分开
- 结构化选项,让用户可以用简洁的方式回复(例如,);用平实的语言重述用户选择的选项以确认
1b 2a 3c
3) Pause before acting
3) 行动前暂停
Until must-have answers arrive:
- Do not run commands, edit files, or produce a detailed plan that depends on unknowns
- Do perform a clearly labeled, low-risk discovery step only if it does not commit you to a direction (e.g., inspect repo structure, read relevant config files)
If the user explicitly asks you to proceed without answers:
- State your assumptions as a short numbered list
- Ask for confirmation; proceed only after they confirm or correct them
在必须澄清的问题得到解答之前:
- 不要运行命令、编辑文件或制定依赖未知信息的详细计划
- 仅在不会让你锁定某个方向的情况下,执行明确标记的低风险探索步骤(例如,检查仓库结构、阅读相关配置文件)
如果用户明确要求你在没有答案的情况下推进:
- 将你的假设整理成简短的编号列表
- 请求确认;仅在用户确认或修正后再推进
4) Confirm interpretation, then proceed
4) 确认解读,然后推进
Once you have answers, restate the requirements in 1-3 sentences (including key constraints and what success looks like), then start work.
一旦得到答案,用1-3句话重述需求(包括关键约束和成功标准),然后开始工作。
Question templates
问题模板
- "Before I start, I need: (1) ..., (2) ..., (3) .... If you don't care about (2), I will assume ...."
- "Which of these should it be? A) ... B) ... C) ... (pick one)"
- "What would you consider 'done'? For example: ..."
- "Any constraints I must follow (versions, performance, style, deps)? If none, I will target the existing project defaults."
- Use numbered questions with lettered options and a clear reply format
text
1) Scope?
a) Minimal change (default)
b) Refactor while touching the area
c) Not sure - use default
2) Compatibility target?
a) Current project defaults (default)
b) Also support older versions: <specify>
c) Not sure - use default
Reply with: defaults (or 1a 2a)- 「在我开始之前,我需要:(1) ..., (2) ..., (3) .... 如果你不关心(2),我将假设 ....」
- 「应该是以下哪一种?A) ... B) ... C) ...(选一个)」
- 「你认为什么是『完成』?例如:...」
- 「我必须遵守哪些约束条件(版本、性能、风格、依赖项)?如果没有,我将以现有项目的默认设置为目标。」
- 使用带字母选项的编号问题和清晰的回复格式
text
1) Scope?
a) Minimal change (default)
b) Refactor while touching the area
c) Not sure - use default
2) Compatibility target?
a) Current project defaults (default)
b) Also support older versions: <specify>
c) Not sure - use default
Reply with: defaults (or 1a 2a)Anti-patterns
反模式
- Don't ask questions you can answer with a quick, low-risk discovery read (e.g., configs, existing patterns, docs).
- Don't ask open-ended questions if a tight multiple-choice or yes/no would eliminate ambiguity faster.
Originally created by @thsottiaux