怀疑驱动开发
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/doubt-driven-development-ahy2。
技能介绍
它解决什么问题
长会话里的上下文会悄悄把假设沉淀成「事实」——同一个模型在同一次对话里待得越久,越容易自我确认。DoubtDrivenDevelopment 对付的就是这个:它不是给已完成产物做裁决的 /review,而是在代码还在成型时,拉一个没有上下文的评审进来,目标是证伪,不是批准。此时改方向还便宜,到 PR 阶段就晚了。
核心机制:五步
- CLAIM — 用两三行说清你要做什么决定。写不出来,说明你只有感觉没有决策,先把它摆出来再审视。
- EXTRACT — 拆出最小可评审单元:代码给 diff 或函数,不给整个文件;决策给三到五句提案加它必须满足的约束。只把结论交出去,拿回来的也只是结论的确认。
- DOUBT — 调用 fresh-context reviewer,prompt 必须对抗性。只传 ARTIFACT + CONTRACT,不要传 CLAIM,否则评审会被你的结论带偏。交互会话里,单模型评审后要主动询问用户是否需要 Gemini CLI、Codex CLI 或人工外部评审,绝不静默跳过;外部 CLI 不可用时必须显式上报,不能悄悄退回单模型。
- RECONCILE — 评审输出是数据,不是裁决。仍由你逐条重读原文再分类,优先级为:契约误读、有效且可操作、有效但代价可接受的权衡、噪音。新鲜不代表不会错。
- STOP — 最多 3 轮;仍反复出问题说明产物太大或没准备好,上报用户,而不是自己硬磨第四轮。
适用边界
非平凡有具体定义:引入或修改分支逻辑、跨模块或服务边界、断言类型系统验证不了的性质(线程安全、幂等、顺序、不变量)、依赖未来读者看不到的上下文、或爆炸半径不可逆(生产部署、数据迁移、公开 API 变更)。机械操作、清晰指令、阅读总结、一行改动、用户明确要快,都不该用——每敲一个键都怀疑,就什么都发不出来。
加载约束同样关键:该技能只给 main-session orchestrator,不要塞进 persona 的 frontmatter,因为 persona 再 spawn persona 是编排反模式。在 subagent 里触发时优先上报;退化的自问式回退自带上下文,结果必须标注为 degraded。
两个可检查的红旗:评审连续两轮给出实质问题、却没有任何一条被判为 actionable,说明你在做 validation 而不是 doubting;对未变更的同一产物反复 spawn,只会原地打转。
使用场景
- 正准备提交引入新分支逻辑的 PR,希望在进入评审前由独立上下文证伪核心路径
- 刚拿到一段不属于自己写的复杂代码,要在修改前确认对其幂等性和线程安全的真实约束
- 准备执行生产环境的数据迁移,需要在动手前审视脚本是否遗漏了回滚路径
- 刚做出一个跨服务调用方案,想在实现前用对抗性评审确认是否低估了边界条件
适合人员
- 维护长会话 Agent 工作流的开发者,希望防止上下文积累把错误假设固化成事实
- 负责多模块系统的架构师,常做跨边界设计决策,需要低成本的证伪机制
- 编写 subagent 编排规范的技术负责人,需要明确主会话与 persona 的技能加载边界
- 需要撰写对抗性审查提示词的工程师,希望提升独立上下文评审的有效发现率