关于 experiment-craft
experiment-craft 是用于诊断失败或结果异常的研究技能。它引导研究者隔离原因、验证假设,并以结构化日志记录实验结果。
主要功能
- 01五步实验诊断流程
- 02逐次增加单一因素以隔离原因
- 03通过针对性实验验证假设
- 04结构化实验日志
- 05将诊断结果交接给 experiment-pipeline
适用场景
- 01排查异常实验结果
- 02找出导致失败的变更
- 03针对失败案例验证修复方案
- 04记录结果以规划下一次实验
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ evoscientist/ evoskills --skill experiment-craft安装后在 Claude Code 中输入/experiment-craft确认已加载。
附带文件assets/experiment-log-template.mdreferences/debugging-methodology.md
详细介绍
实验构思
一种系统化的研究实验运行、调试与迭代方法。最关键的技能不是运行更多实验,而是理解实验失败的原因。
何时使用此技能
- 用户的实验不起作用或产生了意料之外的结果
- 用户需要帮助诊断某种方法为何在特定数据上失效
- 用户想通过结构化日志整理实验流程
- 用户询问如何调试研究代码或迭代方法
- 用户提到“实验调试”“为什么不起作用”“实验日志”“结果有误”
此技能通常在某个阶段尝试失败时,从
experiment-pipeline中加载。调试完成后,返回该流水线的阶段关卡结构继续执行。也可单独用于任何实验调试。
调试思维方式
找出实验失败的原因,是最关键的研究技能。 不分析结果会导致两种失败模式:
- 进展缓慢:不理解失败原因,只是随机运行实验
- 浪费时间:因为忽略了激活技巧而放弃有效方法
目标不是运行更多实验,而是运行正确的实验——能够隔离原因并检验具体假设的实验。
5 步诊断流程
实验失败或产生意料之外的结果时,请按以下五个步骤进行:
步骤 1:收集失败案例
收集具体的错误结果示例。查看实际输出,而不只是汇总指标。具体出了什么问题?失败是系统性的还是随机的?
步骤 2:找到可行版本
你需要一个可行的基线。可以通过两种方式找到:
- 简化任务:降低数据复杂度、放宽任务设置、增加监督信息或使用更简单的输入
- 移除你的改动:从基线方法开始,逐一移除算法改进
如果找不到任何可行版本,就进一步简化,直到某个版本能够运行。总有足够简单且可行的版本。
步骤 3:逐步缩小差距
从可行版本出发,逐步增加复杂度,直到它失效:
- 每次只增加一个因素(更复杂的数据、一项算法改动或一项约束)
- 找出导致失败的单一因素
- 找出的原因越具体,诊断就越有用
这一步用于隔离原因。没有这一步,你只能靠猜。
步骤 4:提出假设并验证
根据步骤 3 中隔离出的原因:
- 列出该因素导致失败的可能解释
- 根据你的理解和相关文献,按可能性排序
- 设计有针对性的实验,逐一验证或排除各项假设
- 通过实验确认实际原因,不要只凭直觉判断
步骤 5:提出并实施修复方案
根据已确认的原因:
- 搜索能解决这一具体原因的技术(使用
research-ideation技能中的文献树) - 设计针对已确认原因而非表面症状的修复方案
- 在原始失败案例上验证修复是否有效
- 检查修复是否会破坏原本可行的案例
有关详细的分支逻辑和原因分类,请参阅 references/debugging-methodology.md。
违反直觉的实验规则
进行实验时,请优先遵循以下规则:
- 一次只改变一个变量:如果同时改变两项内容且实验成功,你就不知道究竟是哪项修复了问题。如果同时改变两项内容但实验失败,你也不知道是哪项出了问题。每次只改变一个变量,单次实验耗时更长,但总体效率更高。
- 快速迭代依赖有效实验,而不是更多实验:盲目实验会让情况变得更糟。一次设计完善的诊断实验,胜过十次随机试验。
- 有些优秀的技术单独使用时并不起效:它们需要特定的激活技巧,例如学习率调度、初始化方案和数据预处理步骤。不要因为一次尝试失败就放弃某项技术。请查阅相关论文,了解其中未公开的技巧。
- 查阅相关论文,了解其中的技巧:解决类似技术难题的论文,往往会在补充材料或代码中隐藏关键实现细节。这些技巧可能决定某项技术能否奏效。
- “排除所有不可能的情况后,剩下的无论多么不可思议,都必然是真相”:系统性排除胜过直觉。调试时,请明确列出所有可能原因,然后通过有针对性的实验逐一排除。
实验记录
每次实验都应记录以下五个部分。请使用 assets/experiment-log-template.md 中的模板。
| 部分 | 记录内容 |
|---|---|
| 目的 | 为什么进行这次实验;你期望从中了解什么 |
| 设置 | 数据、算法改动、超参数——复现实验所需的一切 |
| 结果 | 定量指标 + 定性观察 + 具体的成功或失败案例 |
| 分析 | 结果是否符合预期?如果不符合,请按可能性从高到低列出推测原因 |
| 后续步骤 | 根据分析采取什么行动——你就是项目负责人 |
“后续步骤”是最重要的部分。 不要等别人告诉你接下来该做什么。分析结果,并自行提出下一次实验。这正是研究人员与技术人员的区别所在。
跨周期学习:如果使用
experiment-pipeline,实验记录会输入到evo-memory的 ESE(实验策略演进)机制中。请使用[Reusable]标记可复用的策略,以便 ESE 在未来周期中提取这些策略。
返回 experiment-pipeline
完成 5 步诊断流程后,返回 experiment-pipeline,并提供:
- 已确认的失败原因(来自第 4 步)
- 提出的修复方案及其验证状态(来自第 5 步)
- 更新后的实验记录条目
移交给论文撰写
实验成功且已获得一套完整结果后,请将以下材料交给 paper-writing:
| 材料 | 来源 | 用途 |
|---|---|---|
| 最终实验结果(表格和图表) | 实验记录 | 实验部分 |
| 消融研究结果 | 诊断实验 | 消融表格 |
| 失败案例分析 | 第 1 步 + 第 3 步 | 局限性讨论 |
| 关键实现细节和技巧 | 第 3–5 步 | 方法部分 / 补充材料 |
| 基线对比结果 | 第 2 步 | 对比表格 |
参考资料导航
| 主题 | 参考文件 | 使用时机 |
|---|---|---|
| 调试方法 | debugging-methodology.md | 诊断实验失败的原因 |
| 实验记录模板 | experiment-log-template.md | 记录实验详情 |