mcpskills.net
技能MCP智能体提示词
mcpskills.net — A curated directory of AI agent Skills and MCP servers
TermsPrivacy
← 返回技能
Development

怀疑驱动开发

对每一个非平凡决策进行全新视角的对抗性审查后再确定。当正确性比速度更重要时使用。

作者:Addy Osmani仓库 →来源 →

自信的回答并不等于正确的回答。怀疑驱动开发引入一个全新视角的审查者,在任何非平凡产出被采纳之前,倾向于质疑和反驳。

何时使用

当满足以下任一条件时,该决策属于非平凡决策:

  • 引入或修改了分支逻辑
  • 跨越了模块或服务边界
  • 断言了类型系统无法验证的属性
  • 其正确性依赖于未来读者无法看到的上下文
  • 其影响范围不可逆(生产部署、数据迁移、公共 API)

流程

怀疑循环:
- [ ] 第 1 步:声明 — 写下决策声明及其重要性
- [ ] 第 2 步:提取 — 隔离产出物和契约,剥离推理过程
- [ ] 第 3 步:怀疑 — 用对抗性提示调用全新视角审查者
- [ ] 第 4 步:调和 — 将每条发现与产出物文本进行分类对照
- [ ] 第 5 步:停止 — 满足停止条件

第 1 步:声明

用两三行描述决策:

声明:"新的缓存层在规格说明中描述的读密集型负载下是线程安全的。"
重要性:此处的竞态条件会损坏用户数据,且在 QA 中难以发现。

第 2 步:提取

全新视角的审查者需要产出物和契约,而不是推导过程。

  • 代码:diff 或函数本身 — 不是整个文件
  • 决策:3-5 句描述的提案加上约束条件
  • 断言:声明加上证据

剥离你的推理过程。如果你直接给出结论,审查者只会验证你的结论。

第 3 步:怀疑

审查者的提示必须是对抗性的:

对抗性审查。找出这个产出物的问题。
假设作者过于自信。寻找:
- 未声明的假设
- 未处理的边界情况
- 隐含的耦合或共享状态
- 可能违反契约的方式
- 可能破坏的现有约定
- 在意外输入下的故障模式

不要验证。不要总结。找出问题,或者明确说明在彻底检查后未发现任何问题。

产出物:<粘贴产出物>
契约:<粘贴契约>

只传递产出物和契约。不要传递声明。 将结论交给审查者会使其偏向于同意。

第 4 步:调和

对每条发现,按以下优先级分类:

  1. 契约误读 — 审查者因契约不明确而标记。先修正契约。
  2. 有效且可操作 — 需要修改的真实问题。修改后重新循环。
  3. 有效的权衡 — 问题确实存在,但修复成本超过接受成本。明确记录。
  4. 噪音 — 审查者在缺乏上下文的情况下标记了实际正确的内容。

第 5 步:停止

在以下情况下停止:

  • 下一次迭代仅返回微不足道或已考虑过的发现,或
  • 完成 3 个循环(升级给用户),或
  • 用户明确说"发布"

验证清单

应用怀疑驱动开发后:

  • [ ] 每个非平凡决策都已明确命名为声明
  • [ ] 每个非平凡产出物至少经过一次全新视角审查
  • [ ] 审查者收到的是产出物和契约 — 而非声明
  • [ ] 审查者的提示是对抗性的("找出问题")
  • [ ] 发现已与产出物文本进行分类对照
  • [ ] 满足停止条件(微不足道的发现、3 个循环或用户覆盖)
  • [ ] 在交互模式下,明确提供了跨模型审查选项