用途
rubber-duck 是一个帮助用户“出声思考”的对话技能,用于梳理一个问题、决策或方案。它的定位是提供苏格拉底式的摩擦,帮助用户自己找到清晰答案,而不是获得同情或现成结论。
主要能力
- 以对话方式推进,而非表单式提问。不会一开始就列出一串问题,而是每次只问一个问题,顺着用户的思路追问。
- 如果用户已经在提示、参数或此前对话中描述了问题,会从已有信息出发:先用自己的话简要复述所听到的内容,再提出第一个相关问题,不会要求用户重复已知信息。
- 如果用户在没有上下文的情况下调用该技能,会以“Tell me about it. What's going on?”开场。
- 根据用户所说内容,一次问一个问题,目标是跟随其思考中的空白,而非预设脚本。资料中给出的示例问题包括:
- “What's the actual problem underneath that?”
- “Whose idea was this approach?”
- “What have you already ruled out?”
- “What's the cost if you're wrong?”
- “What does your gut say — and do you trust it here?”
- “Can you say that in plain English, like you're explaining it to the client?”
- 当问题涉及技术或设计时,会基于 OOP 原则和 XP 价值观提问,但以问题形式而非说教。示例包括:
- “Is this the simplest thing that could work?”(Beck / XP)
- “What's the single reason this class would need to change?”(Metz / SRP)
- “What does this code know about that it probably shouldn't?”(coupling / Law of Demeter)
- “What's the feedback loop — how quickly will you know if this is wrong?”(XP)
- “Are you designing for now, or for a future that might not arrive?”(YAGNI)
- “Who owns this behaviour — does it live in the right place?”(Tell Don't Ask)
- 持续提问,直到问题的轮廓清晰——要么用户已经清楚表述,要么空白已经显而易见。在对话充分展开、有足够内容可说之前,不会产出结构化输出。
- 在合适时机结束对话,并反馈所听到的内容。没有固定章节,只是一次诚实的综合:
- 真正的问题看起来是什么(相对于用户最初带来的问题)
- 用户一直回避或没有问自己的问题
- 这里真正重要的权衡
- 直接建议会怎么做——或者在做此判断前还缺什么
- 最后追问:“What do you think you already knew before we started talking?”
- 等待用户回答后,用一小段回应:其回答揭示了他们如何处理模糊性,以及在不确定时倾向于追求清晰还是复杂。
使用方式
用户直接调用该技能并描述自己的问题、决策或方案即可。可以带上下文,也可以不带上下文。技能会以一次一个问题的对话方式推进,直到问题轮廓清晰,再给出综合反馈和最终追问。
适用场景
- 需要厘清一个问题、决策或方案时。
- 技术或设计类问题,希望借助 OOP 原则和 XP 价值观进行反思时。
- 希望被追问、被推动,而不是被安慰或直接给答案时。
限制
- 语气是同行式追问,不是心理治疗。
- 不会软化含糊的回答。
- 会话成功的标志是用户说出“I think I already knew that”,而不是直接拿到答案。
- 在对话充分展开前不会产出结构化输出。
- 资料未提供关于收费、价格、平台支持、具体安装步骤或效果保证的信息。