用途
thinking-socratic 是一个苏格拉底式提问思维技能,用于在需求含糊、充满假设或看似“显而易见”时,先提出少数几个关键问题,暴露隐藏需求,再动手构建或做出承诺。
核心规则:在构建之前先揭示承重假设或未定义术语。只问自己无法解决的问题;当下一步行动已可决策时即停止提问。
何时使用
- 请求描述不充分(如“让它变快”“加个仪表盘”“修一下这个 bug”),而猜测会导致错误构建。
- 某个主张建立在未言明的假设之上,而该假设可能才是真正的问题。
- 有人把某个前提当作“显而易见”,或在问题尚未定义前就跳到解决方案。
- 调试一个模糊症状,需要先转化为可检验的具体问题再展开调查。
何时不使用
- 规格已经清晰且可执行——直接做事,不要为表演而盘问。
- 歧义可通过阅读代码、运行命令或查阅文档解决——自行解决。
- 已达成计划的执行中途——对每一步重新提问是摩擦,不是严谨。
- 紧急情况,只需一个关键事实即可行动——澄清该事实后行动(优先 ooda)。
- 你需要最强的反对论证,而不是澄清——使用 steel-manning。
- 你需要对已定义故障做因果链深度分析——使用 five-whys-plus 或 scientific-method。
流程
- 指出缺口。说明什么是未定义的、被假设的或不可检验的。如果无需用户即可从工具或仓库中补齐,就补齐并停止。
- 优先提出承重问题。优先选择那个答案最能改变你将构建内容的问题。类别(只按缺口需要选用):
- 澄清——“X 是什么意思/对谁而言/成功是什么样?”
- 假设——“什么必须为真?如果它为假会怎样?”
- 证据——“什么支持这一点?什么会推翻它?”
- 视角——“谁受影响/谁会不同意?”
- 推论——“如果我们这样做,会带来什么?”
- 元问题——“这是正确的问题吗?”
- 解决或分支。根据回答,要么(a)写下澄清后的需求或决策并继续,要么(b)最多再问一个仍然决定工作能否开展的问题。不要默认跑完所有六个类别。
- 显式陈述假设。重述:“这假设 X;成功意味着 Y;范围之外是 Z。”只有在重述后仍然含糊时才确认。
- 在决策就绪的清晰度处停止。当下一步行动不再依赖隐藏前提时,结束提问并行动或交接。严格控制面向用户的问题数量;优先批量提出真正决定工作的少数问题。
输出
gap: <什么含糊或被假设> resolved_by: self | user | mixed questions_asked:
- <只列实际需要的问题> assumptions_made_explicit:
- <X 必须为真/成功 = Y> clarified_requirement: <可决策的陈述> next_action: <build | investigate | re-scope | stop> stop_reason: clear_enough | self_resolved | blocked_on_<fact>
验证
- 证伪/停止:如果回答不改变计划,说明你问的不是承重问题——停止盘问。如果“澄清”后仍是猜测,不要构建;指出剩余阻塞点。
- 过度应用防护:不要对规格明确的任务做苏格拉底式盘问。不要外包你能读取或测量的事实。不要把执行的每一步都变成新一轮提问。