| name | result-analysis |
| description | 当 Owner 说"分析一下实验结果", 或实验 status 变为 completed 后 autoresearch 自动调用, 分析实验数据并判断假设是否成立
|
| argument-hint | <experiment> |
| allowed-tools | Read, Edit, Glob, Grep |
Purpose
result-analysis 是 MindFlow 实验闭环的最后一环。给定一个实验笔记([[Experiments/xxx.md]]),它系统性地读取所有 Run Entries、关联 Idea 的 hypothesis,结合历史记忆上下文,从五个维度完成分析:
| 分析维度 | 含义 |
|---|
| Hypothesis Verdict | hypothesis 是否得到支持——supported / refuted / inconclusive |
| Key Findings | 实验揭示的最重要事实,不局限于 hypothesis |
| Comparison to Baseline | 与 baseline 或对照组的量化对比 |
| Limitations | 当前实验的约束条件和潜在偏差 |
| Implications | 对后续研究方向、Idea 修正或 DomainMaps 更新的启示 |
分析结果写入 Experiment 笔记的 ## Analysis 节;若发现跨实验规律,追加到 Workbench/memory/patterns.md;若 verdict 明确,同步更新关联 Idea 的 status 字段。
Steps
Step 1:读取目标 Experiment 全部 Run Entries
用 Read 打开 experiment 参数指向的 Experiments/xxx.md 文件。提取以下字段:
status:确认为 running 或 completed(若为 planned,停止并告知 Owner"实验尚未运行,暂无数据可分析")
hypothesis(若直接记录在 Experiment 文件中)或 idea_ref(指向关联 Idea)
- 所有
## Run 节或 Run Entries 表格:记录每个 run 的 config、metrics、observations
baseline:对照指标或对照组描述
将所有 run 数据整理为结构化列表,方便后续比较。
Step 2:找到关联 Idea,读取其 hypothesis
若 Step 1 中发现 idea_ref 字段(格式为 [[Ideas/xxx.md]]),用 Read 打开对应 Idea 文件,提取:
hypothesis:本实验试图验证的核心假设(完整保留原文)
status:当前 Idea 状态(用于 Step 7 的同步更新)
tags:领域关键词(用于 memory-retrieve 检索范围)
若 idea_ref 为空或文件不存在,从 Experiment 文件本身提取 hypothesis,并在分析记录中注明"未找到关联 Idea,hypothesis 来自 Experiment 文件"。
Step 3:执行 memory-retrieve(scope: insights + patterns)
调用 memory-retrieve skill,以 Step 2 的 hypothesis 和 tags 作为 query,scope 设为 insights 和 patterns,检索与本实验相关的历史经验:
- 相似假设在过去实验中是否被验证或否定
- 已知有效或无效的 method/config 模式
- 领域内的已知规律(patterns)
将检索结果作为分析的背景上下文,在后续五维分析中标注"参考历史记忆"的依据。若记忆库为空或无相关条目,继续执行,在分析中注明"暂无相关历史记忆"。
Step 4:执行五维分析
综合 Step 1-3 的全部信息,逐维完成分析:
4.1 Hypothesis Verdict
根据实验数据判断 hypothesis 的成立情况,给出三选一结论:
- supported:主要 run 的核心 metric 一致、显著地支持 hypothesis,且排除了明显的混淆因素
- refuted:主要 run 的核心 metric 一致地与 hypothesis 相悖,结果方向明确
- inconclusive:数据不足(run 数量少、方差过大)、结果矛盾、或 metric 与 hypothesis 不直接对应
给出 1-3 句证据说明,直接引用 run 数据中的具体数字。禁止在数据不充分时强行判断为 supported 或 refuted。
4.2 Key Findings
列出 2-5 条最重要的发现,不局限于 hypothesis 的直接验证。每条一句话,格式:
- [Finding]:<具体描述,引用数据>
Key Findings 可以包含:意外规律、config 敏感性、数据质量问题、与预期相悖的现象等。
4.3 Comparison to Baseline
若 Experiment 文件中定义了 baseline,量化比较核心 metric 的提升/下降:
| Metric | Baseline | Best Run | Delta | 说明 |
| :----- | :------: | :------: | :---: | :--- |
| ... | ... | ... | ... | ... |
若无 baseline 定义,在此节注明"本实验未定义 baseline,无对照比较",不伪造对比数据。
4.4 Limitations
列出 2-4 条当前实验的主要局限,包括但不限于:
- 样本量/run 数量不足
- 超参搜索范围有限
- 评估 metric 与 hypothesis 的对应关系存疑
- 数据集分布偏差或 generalization 风险
- 实验条件与实际应用场景的差距
4.5 Implications
基于本次实验结果,给出 2-4 条对后续研究的启示:
- 若 supported:可推进的下一步实验或值得写入 DomainMaps 的规律
- 若 refuted:应修正的 hypothesis 方向或需要放弃的 Idea
- 若 inconclusive:需要补充的实验设计(更多 runs / 不同 metric / ablation)
- 跨实验的 pattern(若本次发现与历史记忆有共鸣)
Step 5:将分析写入 Experiment 笔记的 ## Analysis 节
用 Edit 在目标 Experiment 文件(Experiments/xxx.md)中写入(或覆盖)## Analysis 节,格式如下:
## Analysis — YYYY-MM-DD
### Hypothesis Verdict
**Verdict**:supported / refuted / inconclusive
<1-3 句证据说明,引用具体 run 数据>
### Key Findings
- [Finding 1]:<描述>
- [Finding 2]:<描述>
- ...
### Comparison to Baseline
| Metric | Baseline | Best Run | Delta | 说明 |
| :----- | :------: | :------: | :---: | :--- |
| ... | ... | ... | ... | ... |
(若无 baseline,注明"未定义 baseline")
### Limitations
- <限制 1>
- <限制 2>
- ...
### Implications
- <启示 1>
- <启示 2>
- ...
日期填写今天(YYYY-MM-DD)。若文件中已存在 ## Analysis 节,覆盖整节内容(保留其他节不变),并在日志中注明"覆盖了旧 Analysis 节"。不得修改任何 Run Entry 的原始数据。
Step 6:若有跨实验 pattern,追加到 patterns.md
检查 Step 4 的分析结果,判断是否发现了跨实验规律(cross-experiment pattern)——即:本次发现与 memory-retrieve 返回的历史记忆高度一致,或本次发现可能对多个 Idea/实验具有普适价值。
若存在 cross-experiment pattern,用 Edit 将其追加到 Workbench/memory/patterns.md,格式:
### [YYYY-MM-DD] <Pattern 标题>
- **Observation**:<一句话描述规律>
- **Evidence**:[[Experiments/xxx]] + (可选历史来源引用)
- **Scope**:<适用范围,如 "VLA fine-tuning" 或 "low-data regime">
- **Confidence**:low / medium / high
- **Lesson**:<对未来实验设计的指导意义>
若无跨实验规律,跳过此步。
Step 7:若 verdict 明确,更新关联 Idea status
若 Step 4.1 的 verdict 为 supported 或 refuted(即非 inconclusive),且 Step 2 中找到了关联 Idea 文件,用 Edit 同步更新 Idea 文件的 frontmatter status 字段:
| Verdict | Idea 新 status |
|---|
| supported | validated |
| refuted | archived |
| inconclusive | 保持原值,不修改 |
仅修改 status 字段,Idea 文件其他内容保持不变。
Step 8:追加日志
用 Edit(若文件不存在则先 Write)将以下 log entry 追加到 Workbench/logs/YYYY-MM-DD.md:
### [HH:MM] result-analysis
- **input**: [[Experiments/xxx]]
- **verdict**: supported / refuted / inconclusive
- **key-finding**: <最重要的一条发现,一句话>
- **idea-status-updated**: yes([[Ideas/xxx]] → validated/archived)/ no
- **pattern-added**: yes / no
- **status**: success
若日志文件不存在,先创建文件(一级标题 # YYYY-MM-DD),再追加 entry。
Verify
Guard
- verdict 必须基于实际数据:Hypothesis Verdict 的判断必须引用 Experiment 文件中的具体 run metric。不得根据主观印象或"感觉上"下结论。
- inconclusive 不强行下结论:数据不充分时(run 数量 < 3、metric 方差过大、结果相互矛盾),必须判为 inconclusive,不得为追求"明确结论"而强行判定 supported 或 refuted。
- 不修改 Run Entries:只读取 Run Entry 数据,绝对不修改 Experiment 文件中任何
## Run 节的原始内容。分析是独立节,与 run 数据并存。
- 语言规范:中文正文 + 英文技术术语(模型名、metric 名、benchmark 名、方法名保持英文,不翻译)。
Examples
示例:分析一个已完成的 VLN fine-tuning 实验
假设 Experiment 文件为 Experiments/VLN-LoRA-R2R-2026Q1.md,包含以下信息:
status: completed
idea_ref: [[Ideas/VLN-LoRAFinetuning]]
- baseline:DUET 在 R2R val-unseen 的 SR=0.57
- 3 个 Run Entries:
- Run A(rank=8):SR=0.61, SPL=0.52
- Run B(rank=16):SR=0.63, SPL=0.54
- Run C(rank=32):SR=0.62, SPL=0.53
关联 Idea Ideas/VLN-LoRAFinetuning.md 的 hypothesis:
"对 DUET 应用 LoRA fine-tuning(rank 8-32),可以在 R2R val-unseen 上将 SR 提升至少 5 个百分点,同时保持 SPL 不显著下降。"
执行过程:
-
Read Experiments/VLN-LoRA-R2R-2026Q1.md — 提取 3 个 Run Entries 数据,整理为结构化列表
-
Read Ideas/VLN-LoRAFinetuning.md — 提取 hypothesis(SR 提升 ≥5pp)和 status: developing、tags: [VLN, LoRA, R2R]
-
调用 memory-retrieve(scope: insights + patterns,query: "LoRA fine-tuning VLN R2R")— 假设返回一条历史 pattern:"rank 过大在低数据量场景易过拟合"
-
五维分析:
- Verdict:supported — Run A/B/C 的 SR 分别提升 +4pp、+6pp、+5pp,平均 +5pp,满足 hypothesis 阈值;SPL 均保持在 0.52-0.54,未显著下降
- Key Findings:rank=16 为最优(SR=0.63);rank=32 相比 rank=16 无进一步提升,与历史 pattern"高 rank 易过拟合"一致
- Comparison to Baseline:SR 0.57→0.63(+10.5%),SPL 0.51→0.54(+5.9%)
- Limitations:仅测试 rank ∈ {8, 16, 32},未覆盖更大范围;仅在 val-unseen 验证,未测 test set
- Implications:可将 rank=16 作为 VLN LoRA 的推荐默认值;可进一步探索 LoRA + data augmentation 的组合
-
Edit Experiments/VLN-LoRA-R2R-2026Q1.md — 写入 ## Analysis — 2026-03-28 节
-
Edit Workbench/memory/patterns.md — 追加新 pattern:"LoRA rank=16 在 VLN R2R fine-tuning 中表现最优,rank 继续增大无收益"(Confidence: medium,因仅有 1 个实验支撑)
-
Edit Ideas/VLN-LoRAFinetuning.md — 更新 status: validated(verdict=supported)
-
Edit Workbench/logs/2026-03-28.md — 追加 log entry