探索循环(Exploration Loop)
探索未知的核心风险是:在错误方向上花掉最贵的资源。本 Skill 的对策只有一条主线—— 让证据逐级升格:假设 → 便宜验证 → 昂贵验证。每一级淘汰一批候选,只有幸存者才配消耗下一级的成本。
循环总览
提出可证伪假设 → 便宜筛查(资料/数据/量纲) → 昂贵验证(实验/仿真/长计算) → 沉淀结论
↑ــــــــــــ 任一级证伪:修订或淘汰假设,回到起点 ــــــــــــ↓
第一步:把问题写成可证伪的假设
- 一个合格的假设必须同时写出主张和什么观测会推翻它。写不出推翻条件的,是愿望不是假设。
- 一次至少列 2–3 个竞争假设,避免只验证心中偏爱的那一个;竞争假设间应尽量互斥。
- 每个假设标注:当前置信度(低/中/高)、验证它的最便宜手段、若为真的下游影响。
- 产出落盘:
lab/hypotheses.md(一条一节:主张 / 推翻条件 / 置信度 / 下一步验证手段)。 - 细化方法可配合
hypothesis-generation;候选太少先用scientific-brainstorming扩。
第二步:便宜验证——先筛后投入
便宜手段的原则:能用几分钟排除的,绝不留给几小时的实验。按成本从低到高依次使用:
- 一致性检查(近乎零成本):量纲是否匹配、数量级是否合理、是否违反守恒关系或已知恒等式。 任何假设先过这一关,不合格直接淘汰,不必查资料。
- 查资料:已有文献/文档是否已经回答或否定了该假设(
paper-lookup、literature-review、domain-presearch)。 注意用scientific-critical-thinking给来源分级,别让弱证据放行强主张。 - 查已有数据:手头数据能否直接支持或反驳(
exploratory-data-analysis初探,statistical-analysis检验)。 在已有数据上被反驳的假设,没有资格进入新实验。 - 极端情形与反例构造:让假设在边界条件下运转一遍,找一个最可能击穿它的反例。
便宜验证的结论也要落盘:每个假设的筛查结果写回 lab/hypotheses.md,标明「淘汰(证据)/ 存活(待昂贵验证)」。
第三步:昂贵验证——只为幸存者买单
- 进入条件:假设已通过全部适用的便宜筛查,且写明了本次验证的判定标准(什么结果算支持、什么算推翻、什么算不确定)。判定标准必须在开跑前写下,禁止跑完后再定。
- 昂贵手段包括:新实验、长时间仿真/计算、采集新数据。预先估算成本(时间/算力/物料),与假设的价值相称才执行。
- 一次昂贵验证只回答一个主问题;顺带能答的次要问题记录即可,不为它们改设计。
- 所有输入(数据、参数、脚本)与输出落盘到工作区,保证可复跑。
第四步:沉淀与升格
- 被昂贵验证支持的结论,按项目章程(
project.md)第 4 节的验收标准升格为「已确认的事实」,写入knowledge/。 - 被推翻的假设不删除:保留其记录与推翻证据,防止后续重走死路。
- 过程性教训(工具坑、方法边界)写入
memory/对应 lessons 文件。
与 Plan 的接合
- 探索的每一轮在 Plan 里应是细粒度、可验证的步骤;每步的
done_criteria必须指向具体证据文件 (如「lab/hypotheses.md中假设 H2 标记为淘汰并附数据反例路径」),而不是「完成分析」这类空话。 AdvancePlan时引用的证据 = 本步落盘的产出;没有落盘产出的步骤不算完成。
分叉探索
- 当两条技术路线互斥且无法用便宜手段分出高下时,用
ForkPlan把该步骤分叉成各自的分支。 - 分叉前必须先在步骤里声明评估标准:用什么指标、在什么数据/条件下比较、多少差距算显著。 没有事先声明的标准,分叉结束时的「择优」就是事后合理化。
- 收敛采纳其一后,落选分支的记录保留,作为「已探索路径」证据。
常见反模式
| 反模式 | 纠正 |
|---|---|
| 直接开跑大实验/长计算「看看结果」 | 先写假设与判定标准,先过便宜筛查 |
| 只验证一个心仪假设 | 列竞争假设,优先尝试证伪而非证实 |
| 结果出来后再解释「其实符合预期」 | 判定标准必须写在执行之前 |
| 被推翻的假设悄悄消失 | 保留记录与证据,标记淘汰原因 |
| Plan 步骤写成「研究一下 X」 | 改写为带证据文件路径的可判定步骤 |