用途
disciplined-research 是“有纪律的开发”(disciplined development)方法论的第一阶段技能,目标是在任何设计或实现开始之前,做到对问题的深入理解。它不产出代码方案,而是产出一份研究文档,让决策者能够基于事实做出知情选择。
核心原则
该技能强调五项原则:先理解再设计;主动暴露未知;映射现有依赖;记录一切以支撑决策;聚焦关键少数,剔除其余。
本质主义检验(EXPLORE 阶段)
在投入研究之前,先回答三个本质问题:
- 这个问题是否让我们有动力去解决?
- 解决它是否能发挥我们的独特能力?
- 它是否满足一个重要且已被验证的需求?
规则:如果少于两个问题回答“是”,则停止,先质疑这项工作是否真正必要,再决定是否投入研究时间。
第一阶段目标
产出研究文档,使后续决策有据可依。在研究文档获得批准之前,不进行设计和实现。
研究流程
- 问题理解:要解决什么问题、谁遇到这个问题、不解决的后果、成功的样子。
- 现有系统分析:当前有什么、现有代码如何处理、扩展点在哪里、存在哪些约束。
- 约束识别:技术约束(语言、平台、依赖)、业务约束(时间线、资源、合规)、集成约束(API、协议、格式)、性能约束(延迟、吞吐、内存)。
- 风险评估:可能出什么错、还有哪些未知、正在做哪些假设、存在哪些外部依赖。
研究文档模板
文档包含以下章节:
- 元信息:状态(草稿/评审/批准)、作者、日期、评审人
- 执行摘要:2-3 句概括问题与关键发现
- 本质问题检验:表格形式列出三个问题及其答案和证据,并给出“是否继续”的判断
- 问题陈述:描述、影响、成功标准
- 现状分析:现有实现、代码位置表、数据流、集成点
- 约束:技术约束、业务约束、非功能性需求表
- 关键少数(本质主义):最多 3 个关键约束及理由和证据;明确列出被排除在范围之外的事项及原因(应用 5/25 规则)
- 依赖:内部依赖表、外部依赖表(含版本、风险、替代方案)
- 风险与未知:已知风险表、开放问题、假设
- 研究发现:关键洞察、相关先例、需要做的技术验证(spike)
- 建议:是否继续、范围建议、风险缓解建议
- 后续步骤:若批准,列出下一步
- 附录:参考资料、代码片段
研究技巧
技能给出了若干研究技巧示例:
代码考古:
- 查找相关文件:
rg "feature_name" --type rust - 查看最近变更:
git log --oneline -20 -- path/to/module - 找到熟悉代码的人:
git shortlog -sn -- path/to/module - 追踪函数调用:
rg "function_name\(" --type rust
依赖分析:
- 展示依赖树:
cargo tree - 查找某 crate 为何被引入:
cargo tree -i crate_name - 检查安全问题:
cargo audit
接口发现:记录已发现的公共接口,并标注扩展点。
交付物
第一阶段产出:研究文档、代码位置图、风险登记表(按优先级排序)、开放问题清单(用于向干系人澄清)。
门禁标准
进入第二阶段(设计)之前需满足:
标准门禁:
- 研究文档完成
- 所有章节已填写(或明确标记为不适用)
- 风险已识别并分类
- 已获得人类批准
- 开放问题已解决或明确延期
本质主义门禁:
- 本质问题检验完成(至少 2/3 为“是”)
- 关键少数章节完成(最多 3 个关键约束)
- 已记录被排除事项(明确不做的事)
- 通过 90% 规则:这项工作是不是“绝对肯定”?
质量评估
完成研究后,在进入第二阶段之前,需请求使用 disciplined-quality-evaluation 技能进行评估。
限制
- 不做设计:本阶段纯粹是理解
- 不做实现:除探索外不修改代码
- 不做假设:记录而非臆断
- 时间盒限定:不要无限期研究(中等规模功能通常 1-2 天)
成功指标
决策者能够做出知情选择;第二阶段和第三阶段不会出现重大意外;在承诺之前识别风险;范围现实且被理解。