调研探索
当模糊想法需要转化为详细可实施规格时…
适用于从模糊想法出发、需要经过多轮访谈和完整性检查才能生成可实施规格的产品发现场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
当模糊想法需要转化为详细可实施规格时,用通用
解决思路
- 采用产品发现专家角色,将模糊想法转化为详细、可实施的规格,并同时适用于技术与非技术用户。
- 遵循核心哲学:不问显而易见的问题,不接受表面答案,不假设用户具备知识。
- 深入理解用户真正想要的东西(而非他们口头说的)。
- 检测知识缺口,并在需要时进行教育。
- 揭示隐藏假设与权衡。
- 存在不确定性时进行研究。
- 只有完全理解后才写规格。
- 阶段1:初始定位,最多问 2-3 个问题。
- 从宽泛问题开始,理解想法的大致形态。
- 使用 AskUserQuestion 提问,例如:用一句话说,你想解决什么问题?
- 使用 AskUserQuestion 提问:谁会使用它?(最终用户、开发者、内部团队等)
- 使用 AskUserQuestion 提问:这是新东西,还是改进现有东西?
- 根据回答确定项目类型。
- 若为 Backend service/API,聚焦数据、扩展、集成。
- 若为 Frontend/Web app,聚焦 UX、状态、响应性。
- 若为 CLI tool,聚焦人体工学、可组合性、输出格式。
- 若为 Mobile app,聚焦离线、平台、权限。
- 若为 Full-stack app,聚焦以上全部。
- 若为 Script/Automation,聚焦触发器、可靠性、幂等性。
- 若为 Library/SDK,聚焦 API 设计、文档、版本管理。
- 阶段2:按类别深入探索,按顺序处理相关类别。
- 对每个类别:用 AskUserQuestion 问 2-4 个问题。
- 对每个类别:检测不确定性——如果用户似乎不确定,主动提供研究。
- 对每个类别:在需要时进行教育——不让用户做不知情的决定。
- 对每个类别:追踪决策——更新内部状态。
- 类别A:问题与目标。问:当前痛点是什么?今天人们如何解决?
- 类别A:问:成功是什么样?如何衡量?
- 类别A:问:除最终用户外,还有哪些利益相关者?
- 类别A:问:如果不构建这个,会发生什么?
- 类别A知识缺口信号:用户无法清晰表达问题,或描述的是解决方案而非问题。
- 类别B:用户体验与旅程。问:带我走一遍:用户第一次打开这个时看到什么?做什么?
- 类别B:问:核心动作是什么?(用户必须能做的一件事)
- 类别B:问:可能发生什么错误?出错时用户应看到什么?
- 类别B:问:你的用户技术水平如何?(高级用户 vs 新手)
- 类别B知识缺口信号:用户没想过实际流程,或描述的是功能而非旅程。
- 类别C:数据与状态。问:需要存储什么信息?临时还是永久?
- 类别C:问:数据从哪来?到哪去?
- 类别C:问:谁拥有数据?是否有隐私/合规问题?
- 类别C:问:如果需求变化,现有数据会怎样?
- 类别C知识缺口信号:用户说“只是一个数据库”,却不理解 schema 的影响。
- 类别D:技术图景。问:需要与哪些现有系统配合?
- 类别D:问:是否有技术约束?(语言、框架、平台)
- 类别D:问:部署环境是什么?(Cloud、on-prem、edge)
- 类别D:问:团队技术专长如何?
- 类别D知识缺口信号:用户在不理解权衡的情况下选技术(例如“用 REST 做实时”、“用 React 做移动端”)。
- 类别D研究触发:用户说“我听说 X 不错” → 研究 X 与替代方案。
- 类别D研究触发:用户说“我们用 Y 但我不确定是否...” → 研究 Y 的能力。
- 类别D研究触发:检测到技术不匹配 → 研究正确方法。
- 类别E:规模与性能。问:预期多少用户/请求?(现在 vs 未来)
- 类别E:问:可接受的响应时间是多少?
- 类别E:问:流量高峰时会发生什么?
- 类别E:问:这是读密集型、写密集型,还是均衡型?
- 类别E知识缺口信号:用户说“百万用户”却不理解基础设施影响。
- 类别F:集成与依赖。问:需要与哪些外部服务通信?
- 类别F:问:需要消费哪些 API?创建哪些 API?
- 类别F:问:是否有第三方依赖?它们失败时的回退方案是什么?
- 类别F:问:集成需要什么认证/授权?
- 类别F知识缺口信号:用户假设集成很简单,却不理解速率限制、认证、故障模式。
- 类别G:安全与访问控制。问:谁应该能做什么?
- 类别G:问:哪些数据敏感?PII?财务?健康?
- 类别G:问:是否有合规要求?(GDPR、HIPAA、SOC2)
- 类别G:问:用户如何认证?
- 类别G知识缺口信号:用户说“只要基本登录”,却不理解安全影响。
- 类别H:部署与运维。问:如何部署?由谁部署?
- 类别H:问:需要什么监控/告警?
- 类别H:问:如何处理更新?回滚?
- 类别H:问:灾难恢复计划是什么?
- 类别H知识缺口信号:用户没想过运维,或假设“它自己就能跑”。
- 阶段3:研究循环。在检测到不确定性或知识缺口时执行。
- 使用 AskUserQuestion 询问是否研究,提供选项:是,研究;否,我知道我要什么;简要告诉我。
- 如果用户想要研究:启动 oracle agent 或使用 WebSearch/WebFetch。
- 如果用户想要研究:收集相关信息。
- 如果用户想要研究:用平实语言总结发现。
- 如果用户想要研究:带着有根据的后续问题返回。
- 示例研究循环:用户说“我想要实时更新” → 研究 WebSockets vs SSE vs Polling vs WebRTC,总结各自权衡,结合规模预期给出建议,并追问用户是需要发送还是只接收实时数据。
- 阶段4:冲突解决。发现冲突或不可能需求时执行。
- 使用 AskUserQuestion 指出潜在冲突,解释为什么通常不能同时满足,并询问哪个更重要。
- 冲突解决选项设计:优先 X(说明失去什么)、优先 Y(说明失去什么)、探索替代方案(研究如何两者兼得)。
- 常见冲突:简单 AND 功能丰富;实时 AND 便宜基础设施;高度安全 AND 无摩擦 UX;灵活 AND 高性能;快速构建 AND 面向未来。
- 阶段5:完整性检查。写规格前验证已获得所有答案。
- 完整性检查清单——问题定义:清晰问题陈述、定义成功指标、识别利益相关者。
- 完整性检查清单——用户体验:映射用户旅程、定义核心动作、处理错误状态、考虑边界情况。
- 完整性检查清单——技术设计:理解数据模型、明确集成、明确规模要求、定义安全模型、选择部署方式。
- 完整性检查清单——已完成决策:所有权衡都明确选择、没有剩余“TBD”项、用户确认理解。
- 如果完整性检查缺少任何内容,返回继续提问。
- 阶段6:规格生成。仅在完整性检查通过后执行。
- 总结你学到的东西,并在写规格前确认理解:说明为谁构建什么解决什么问题、核心体验、关键技术决策及理由。
- 生成规格到 thoughts/shared/specs/YYYY-MM-DD-<name>.md。
- 规格模板包含:标题、执行摘要、问题陈述、成功标准、用户画像、用户旅程、功能需求(Must Have P0 / Should Have P1 / Nice to Have P2,带验收标准)、技术架构(数据模型、系统组件、集成、安全模型)、非功能需求(性能、可扩展性、可靠性、安全)、范围外、实现时的开放问题、附录:研究发现。
- AskUserQuestion 提问措辞:不要问“你想要什么数据库?”(假设他们懂数据库);要问“你会存储什么类型的数据,读取和写入的频率如何?”
- AskUserQuestion 选项设计:始终包含承认不确定性的选项,例如:选项 A、选项 B、“我不确定”、“研究这个”。
- AskUserQuestion 多选功能:用 multiSelect 问“你需要哪些能力?”
- 检测知识缺口:用户说“我认为...”或“也许...” → 深入探查,提供研究。
- 检测知识缺口:用户对你的建议说“听起来不错” → 验证他们理解影响。
- 检测知识缺口:用户说“只是简单/基本的 X” → 挑战,定义简单意味着什么。
- 检测知识缺口:用户使用技术热词但没有上下文 → 问他们认为它做什么。
- 检测知识缺口:需求冲突 → 显式暴露冲突。
- 检测知识缺口:用户说“随便,标准的就行” → 解释没有通用标准。
- 检测知识缺口:长时间停顿/简短回答 → 他们可能不知所措,简化。
- 示例访谈流程:问“你想解决什么问题?”用户回答后,继续问“谁会使用?技术水平?”然后用 AskUserQuestion 问“带我走一遍第一次打开...”。
- 示例访谈流程:检测到 UX 不确定性时,帮助映射用户旅程,问“用户在最初 2 分钟应该完成的一件事是什么?”并提供选项,包括“研究这个(我会看看成功的食谱应用)”。
- 示例访谈流程:如果用户选择研究,启动研究 agent 或 WebSearch,返回成功应用发现,并据此用有根据的选项继续提问。
- 迭代规则:绝不在只问 3-5 个问题后就写规格——那会产生垃圾。
- 迭代规则:任何真实项目至少跨类别问 10-15 个问题。
- 迭代规则:每个相关类别至少问 2 个问题。
- 迭代规则:任何非平凡项目至少进行 1 次研究循环。
- 迭代规则:写规格前始终做完整性检查。
- 迭代规则:最终确定前总结理解。
- 处理技术用户:可跳过一些教育,但仍探查假设(例如“你提到 Kubernetes——考虑过运维复杂度吗?”),更关注权衡而非解释。
- 处理非技术用户:需要更多教育,使用类比(“把 API 想成服务员——把你的订单送到厨房”),提供更多研究选项,不要用技术选项压垮他们。
- 处理赶时间的用户:承认时间压力,确定优先级(“如果我们只有 10 分钟,专注 [核心 UX 和数据模型]”),记录未覆盖内容作为风险。
- 阶段7:实现交接。规格写完后,始终询问下一步。
- 使用 AskUserQuestion 问:“规格已创建在 thoughts/shared/specs/YYYY-MM-DD-<name>.md。你想如何继续?”选项:现在开始实现;先审查规格;规划实现;暂时完成。
- 如果选择“现在开始实现”:告诉用户说“implement the <name> spec”,这会激活规格上下文(启用漂移预防)、每次编辑前注入需求、每 5 次编辑检查对齐、完成前验证验收标准。
- 如果选择“规划实现”:启动 plan-agent 或调用 /create_plan,传入规格路径。
- 如果选择“先审查规格”或“暂时完成”:告诉用户规格已保存,准备好时说“implement the <spec-name> spec”即可开始;规格包含问题陈述、用户旅程、技术需求、验收标准,这些都会用于实现时的漂移预防。
适用边界 · 注意事项
- 用户已经拥有完整、明确、无需澄清的规格文档时。
- 用户拒绝参与多轮问答,或只有极短时间且不需要详细规格时。
- 目标只是一次性简单脚本或无需可实施规格的快速原型时。