experiment-track · git:20260428.bf023ec · 2026-04-28 · sha256 621c2acae9753118

experiment-track git:20260428.bf023ecA

Immutable. This exact content never changes and is served at /api/v1/blob/621c2acae9753118.

---
name: experiment-track
description: >
  当 Supervisor 说"记录一下实验结果""实验跑完了",
  或 Researcher 完成一轮实验需要记录时,
  在 Experiment 笔记中追加 Run Entry 并更新状态
argument-hint: "<experiment> <result>"
allowed-tools: Read, Edit, Glob
---

## Purpose

experiment-track 是 MindFlow 实验执行循环的记录层。每当一轮实验(training run、ablation、baseline 对比等)产出结果,该 skill 负责以 **append-only** 的方式将 Run Entry 写入目标 Experiment 笔记,并根据当前进展同步更新 frontmatter `status`。

核心设计原则:**只追加,不修改**。已有 Run Entry 和 Variables/Baseline/Metrics 等设计字段一律保持不变,确保实验记录的完整性和可追溯性。

## Steps

### Step 1:读取目标 Experiment 笔记

用 Read 打开 `experiment` 参数指向的 `Experiments/xxx.md` 文件。重点提取以下字段:

- `status`:当前实验状态(`planning` / `running` / `completed` / `failed`)
- `variables`:实验变量(用于核对 Run Entry 中的 config 是否合理)
- `metrics`:评估指标(用于核对 result 中上报的指标是否对齐)
- 正文中已有的 `### Run [N]` 标题列表(用于计算新 Run 编号)
- `## Analysis` 节是否存在(用于确定追加位置)

若文件不存在,停止执行并告知 Supervisor,不继续后续步骤。

### Step 2:计算新 Run 编号

扫描已有的 `### Run [N]` 标题(N 为正整数):

- 若存在已有 Run Entry,新 Run 编号 = max(N) + 1
- 若尚无任何 Run Entry,新 Run 编号 = 1

记录新编号供下一步使用。

### Step 3:追加 Run Entry

用 Edit 将 Run Entry 插入 Experiment 笔记,位置规则:

- 若存在 `## Analysis` 节,将 Run Entry 追加在 `## Analysis` **之前**
- 若不存在 `## Analysis` 节,追加到文件末尾

Run Entry 格式如下:

```markdown
### Run [N] — YYYY-MM-DD

- **config**: <本次运行的关键超参数或配置差异,对照 variables 字段逐项说明>
- **result**: <量化结果,务必包含 metrics 中定义的指标;可附路径指向日志或结果文件>
- **observation**: <对结果的直接观察:是否符合预期?异常现象?与 baseline 的差距?>
- **next**: <基于本次结果,下一步计划(调整 config、新 ablation、停止实验等)>
```

日期填写今天(`YYYY-MM-DD`)。`result` 字段必须非空——若 Supervisor 未提供具体数值,在字段中注明"待补充"并给出已知信息,不得留空。

### Step 4:更新 frontmatter status

用 Edit 修改 Experiment 笔记 frontmatter 中的 `status` 字段,按如下规则映射:

| 当前 status | next 字段内容 | 新 status |
| :--- | :--- | :--- |
| `planning` | 任意 | `running` |
| `running` | 非停止性描述(继续调参、新 ablation 等) | `running`(保持不变) |
| `running` | 停止性描述(实验达标、终止实验、结论确认等) | `completed` 或 `failed` |
| `completed` / `failed` | 任意 | 保持不变(不得回退已终止状态) |

停止性描述的判断标准:`next` 字段中含有"终止""停止""结论""完成""达标""failed""abort""done""conclude"等语义。若无法判断,保持 `running` 不变,在日志中注明"status 未变更,待 Supervisor 确认"。

仅修改 `status` 字段,frontmatter 其他字段保持不变。

### Step 5:追加日志

用 Edit(若文件不存在则先 Write)将以下 log entry 追加到 `Workbench/logs/YYYY-MM-DD.md`:

```markdown
### [HH:MM] experiment-track
- **experiment**: [[Experiments/xxx]]
- **run**: Run [N]
- **result-summary**: <result 字段的一句话摘要>
- **status-change**: <旧 status> → <新 status>
- **status**: success
```

若日志文件不存在,先创建文件(一级标题 `# YYYY-MM-DD`),再追加 entry。

## Verify

- [ ] Run Entry 已追加到 Experiment 笔记,编号连续且正确
- [ ] `result` 字段非空(有具体数值或"待补充"说明)
- [ ] `config` 字段对照 variables 有实质内容
- [ ] `observation` 和 `next` 字段均已填写
- [ ] frontmatter `status` 已按规则同步更新
- [ ] 日志已追加到 `Workbench/logs/YYYY-MM-DD.md`

## Guard

- **append-only**:不得修改或删除已有的任何 `### Run [N]` Entry。已记录的实验结果是不可变的历史记录。
- **不修改设计字段**:`variables`、`baseline`、`metrics` 等由 experiment-design 写入的字段一律不得修改。
- **result 必须非空**:若 Supervisor 未提供量化结果,在 `result` 字段注明"待补充",但不得完全省略该字段。
- **不回退终止状态**:`status` 为 `completed` 或 `failed` 时,不得改回 `running` 或 `planning`。
- **语言规范**:中文正文 + 英文技术术语(模型名、方法名、benchmark 名、超参数名保持英文,不翻译)。

## Examples

**示例:记录一次 VLN 模型的 training run 结果**

假设 Experiment 笔记为 `Experiments/VLN-BEVFusion-Ablation.md`,当前 status 为 `running`,已有 Run 1 和 Run 2,metrics 定义为 `SR`(Success Rate)和 `SPL`。

Supervisor 说:"实验跑完了,Run 3 用 lr=1e-4、BEV resolution=0.5m,SR 61.2%,SPL 0.54,比 baseline 高了 3 个点,感觉 resolution 影响比较大,下一步试试 0.3m。"

执行过程:

1. Read `Experiments/VLN-BEVFusion-Ablation.md` — 确认文件存在,status=`running`,已有 Run 1、Run 2,metrics 含 SR 和 SPL,存在 `## Analysis` 节。

2. 计算新 Run 编号:max(1, 2) + 1 = **Run 3**。

3. Edit `Experiments/VLN-BEVFusion-Ablation.md`,在 `## Analysis` 之前追加:

   ```markdown
   ### Run 3 — 2026-03-28

   - **config**: lr=1e-4,BEV resolution=0.5m;其余超参与 Run 2 保持一致
   - **result**: SR 61.2%,SPL 0.54;较 baseline 分别提升 +3.0pp 和 +0.04
   - **observation**: 结果符合预期,BEV resolution 从 1.0m 降至 0.5m 带来了明显增益;SR 提升幅度大于 SPL,推测 resolution 对路径规划精度的影响比路径效率更显著
   - **next**: 进一步将 BEV resolution 降至 0.3m,验证 resolution 收益是否持续递增,同时观察推理速度变化
   ```

4. Edit frontmatter:`next` 描述为"进一步调参",非停止性 → status 保持 `running` 不变。

5. Edit `Workbench/logs/2026-03-28.md`,追加:

   ```markdown
   ### [14:32] experiment-track
   - **experiment**: [[Experiments/VLN-BEVFusion-Ablation]]
   - **run**: Run 3
   - **result-summary**: lr=1e-4 + BEV 0.5m,SR 61.2%,SPL 0.54,较 baseline +3pp
   - **status-change**: running → running
   - **status**: success
   ```