result-analysis · git:20260428.bf023ec · 2026-04-28 · sha256 8215dff895143f91

result-analysis git:20260428.bf023ecA

Immutable. This exact content never changes and is served at /api/v1/blob/8215dff895143f91.

---
name: result-analysis
description: >
  当 Supervisor 说"分析一下实验结果",
  或实验 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`,停止并告知 Supervisor"实验尚未运行,暂无数据可分析")
- `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` 节,格式如下:

```markdown
## 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`,格式:

```markdown
### [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`:

```markdown
### [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

- [ ] Experiment 文件已写入 `## Analysis — YYYY-MM-DD` 节,包含全部五个子节
- [ ] Verdict 为 supported / refuted / inconclusive 三选一
- [ ] 关联 Idea 的 `status` 已同步更新(若 verdict 非 inconclusive 且 idea_ref 存在)
- [ ] 若发现跨实验 pattern,已追加到 `Workbench/memory/patterns.md`
- [ ] 日志已追加到 `Workbench/logs/YYYY-MM-DD.md`

## 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 不显著下降。"

执行过程:

1. Read `Experiments/VLN-LoRA-R2R-2026Q1.md` — 提取 3 个 Run Entries 数据,整理为结构化列表

2. Read `Ideas/VLN-LoRAFinetuning.md` — 提取 hypothesis(SR 提升 ≥5pp)和 `status: developing`、`tags: [VLN, LoRA, R2R]`

3. 调用 memory-retrieve(scope: insights + patterns,query: "LoRA fine-tuning VLN R2R")— 假设返回一条历史 pattern:"rank 过大在低数据量场景易过拟合"

4. 五维分析:

   - **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 的组合

5. Edit `Experiments/VLN-LoRA-R2R-2026Q1.md` — 写入 `## Analysis — 2026-03-28` 节

6. Edit `Workbench/memory/patterns.md` — 追加新 pattern:"LoRA rank=16 在 VLN R2R fine-tuning 中表现最优,rank 继续增大无收益"(Confidence: medium,因仅有 1 个实验支撑)

7. Edit `Ideas/VLN-LoRAFinetuning.md` — 更新 `status: validated`(verdict=supported)

8. Edit `Workbench/logs/2026-03-28.md` — 追加 log entry