Skip to content
Back to skills

Autoresearch

ASecurity

Autonomous experiment loop with evidence-driven move selection — scales from parameter tuning (directional search) to architecture innovation (structural changes), with git ledger, guard, noise-aware keep/discard, and trend-analysis stop advice. Use when the user asks to optimize a research metric, run an experiment loop, tune hyperparameters, explore architectural changes, or improve model performance iteratively.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 7, 2026
researchgobashdockergitperformance

Security analysis

A100/100

Scanned October 7, 2026

npx -y skills add Yichen-ZJU/claude-for-research --skill autoresearch --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Autoresearch?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Autoresearch
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/yichen-zju-autoresearch/badge)](https://www.skillsdirectory.com/skills/yichen-zju-autoresearch)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: autoresearch
description: Autonomous experiment loop with evidence-driven move selection — scales from parameter tuning (directional search) to architecture innovation (structural changes), with git ledger, guard, noise-aware keep/discard, and trend-analysis stop advice. Use when the user asks to optimize a research metric, run an experiment loop, tune hyperparameters, explore architectural changes, or improve model performance iteratively.
argument-hint: <idea>
---

# Autoresearch

自主实验循环。单策略表覆盖两种尺度:**参数级微调**(改大改小/换参数)和**架构级创新**(结构性改动)。

分工:本 skill 负责**运行**循环。任务还没有可跑的任务包(锁定评估 + 开放文件 + program.md)时,先用 `experiment-forge` 锻造。

Session files: `autoresearch.md`, `autoresearch.sh`, `autoresearch.jsonl`, `results.tsv`, `run-<N>.log`.

**契约单一来源**:results.tsv 表头、循环边界、crash/revert、Guard、min_delta、日志命名的权威定义在 `experiment-forge/references/contract.md`。本文件与契约冲突时以契约为准。

## 两种运行模式

| | 交互式(默认) | 无人值守(`claude -p` / program.md 驱动) |
|---|---|---|
| 停止建议 | 只是建议,用户决定 | 不停止;停滞 → 强制"升级"选步 |
| 硬停止 | maxIterations / 用户打断 | maxIterations / timeout |
| 问用户 | 环境选择、计划确认、停滞建议 | 不问(NEVER STOP) |

**被 research-orchestrator 调用时**:视为无人值守 —— Step 2/3 的交互闸门(AskUserQuestion 环境选择、计划确认)**跳过**。环境沿用调用方已确认的选择或任务包 program.md 的约定;若没有任何已确认配置且无法交互,报 `blocked` 而不是擅自假设。orchestrator 的 Gate 已经做过确认,这里不再二次确认。

## Step 0: 前置检查

- 在 git 仓库内运行;若 `git config user.email` 为空,`git commit` 会失败 —— 先补 repo-local 身份(`git config user.name/email`,询问用户或用已有仓库的惯用身份),再进循环。
- 工作树不干净 / detached HEAD → **不再"开专支即可"**(旧规则会让实验 revert 吞掉用户未提交修改):
  1. 记录基线 SHA:`git rev-parse HEAD`。
  2. 把用户未提交改动固化为独立 commit:`chore: wip snapshot before autoresearch (<tag>)`。实验 revert 链从此只碰 `experiment:` commit,用户工作永远在链外。
  3. **三份内容快照,各有用途、时机不同**(只存最初一份会在合法 keep 之后误判):
     - **user-wip**:iteration 0 之前,用户原始 WIP 状态的 sha256 清单,随 wip snapshot commit 提交(如 `.autoresearch-user-wip.sha256`)。**永不作为 revert 目标**——它保护的是用户工作本身;收尾验证"用户内容未被实验污染"时对比它。
     - **iter-start**:每轮 modify 之前,对 scope 内文件做 sha256 清单(内存或 `.autoresearch/state/`,**不提交**)。它是本轮 discard 的校验对象——`git revert HEAD` 后文件内容应对齐 iter-start 快照。
     - **last-good**:最近一次 keep 之后的状态(初始 = user-wip)。真正的"安全回滚目标":多轮 keep 后的 discard 若只 revert 一轮不够,回到 last-good 必可运行。
     清单绝不能留到实验 commit 里——revert 实验 commit 会把其中新增的文件一并删除。收尾验证用 `git show <snapshot-sha>:.autoresearch-user-wip.sha256` 对比,不只看分支名。
  4. detached HEAD → 先建工作分支再进循环。
  无人值守模式同样执行,不跳过。

## Step 1: Gather

如果 `autoresearch.md` 和 `autoresearch.jsonl` 已存在,问用户续跑还是新开。`CHANGELOG.md` 存在则先读最近条目。

否则收集(一次问完):
- 优化目标、benchmark 命令、指标名/单位/方向
- 可改文件范围(scope)
- **改动尺度(scale)**:三选一 ——
  - `params`:只调参数(超参/配置/小 trick),锁死架构改动
  - `arch`:只做架构/方法级改动,不在参数上磨
  - `auto`(默认):不设限,每轮由选步表按上轮结果自由决定(参数级和架构级可混用)
- **Guard 命令**(可选但推荐):每轮必须通过的安全检查(如冒烟测试)
- **min_delta**(可选):小于此幅度的"改进"视为噪声,触发确认跑
- maxIterations(默认 20;无人值守模式建议 50+ 或 unlimited)

未明确指定 scale 时默认 `auto` 并在确认计划时向用户说明。

## Step 2: Environment

用 `AskUserQuestion` 让用户选:Local / 新 git 分支 / venv / Docker / Modal / RunPod(详见 `docker`、`modal-compute`、`runpod-compute` skills)。没有明确答案不继续。

## Step 3: Confirm

展示完整计划(目标、命令、范围、环境、Guard、min_delta、迭代数、模式),用户确认后才启动。

## Step 4: 循环

初始化:建专支 `autoresearch/<tag>`,创建 session files,**先跑 baseline(不改任何代码)并记录为 iteration 0**。

每一轮:

### 4.1 Review(读历史,别凭记忆)
- 读 `results.tsv` 最近 10-20 行 + `git log --oneline -20`
- 上轮是 keep → `git diff HEAD~1` 看具体改动
- 明确:什么worked、什么failed、什么没试过

### 4.2 选步(策略表,证据驱动)

| 选步 | 触发 | 动作 |
|---|---|---|
| 跟进 follow | 上轮改进 | 同杠杆同方向再进一步 |
| 反转 reverse | 上轮变差 | 同杠杆反方向 |
| 换杆 switch | 上轮无变化 | 换参数/换模块 |
| 升级 escalate | plateau(连续 5 轮无 keep) | 合并历次 near-miss / 结构性改动 / 读参考文献找角度 |
| 简化 simplify | 指标持平但代码更少 | 保留,记 keep(简洁性胜利) |

这是策略指导不是状态机 —— 每轮在 jsonl 里记 `move` 类型和理由。

**尺度约束(scale)对选步表的裁剪**:
- `params`:**禁用 escalate**(不做架构改动)。plateau 时不升级,而是换杆到未试过的参数/重新扫范围;真没参数可动了就向用户报告并建议是否解除限制。
- `arch`:**跳过参数微调**,follow/reverse/switch 都作用于模块/结构层面;参数只作为新架构的配套调整。
- `auto`:全表可用,尺度切换由证据驱动。

### 4.3 Modify + Commit
- 原子改动(一个逻辑单元),只在 scope 内
- commit message 前缀 `experiment: {描述}`,记录 SHA

### 4.4 Run(防上下文爆炸)
```bash
<benchmark 命令> > run-<N>.log 2>&1   # 每迭代独立日志,禁止覆盖 / tee / 直接输出
grep "^<metric_name>:" run-<N>.log    # 只提取指标行
```
grep 为空 = 崩溃,`tail -n 50 run-<N>.log` 看栈。results.tsv 的 iteration 列与日志文件号一一对应,可对账。
**同迭代内的每次执行各用各的文件**:确认跑 `run-<N>-confirm.log`,第 K 次修复跑 `run-<N>-fix<K>.log`——同文件覆盖会让崩溃证据链断掉。

### 4.5 Verify(噪声防护)
- 改进幅度 < min_delta → **确认跑**:重跑 1-2 次取中位数再判定(日志写 `run-<N>-confirm.log`)
- 指标非数字/提取失败 → 记 `metric-error`,revert

### 4.6 Guard(如配置)
Guard 失败 → 无论指标如何都 revert,记 `guard-fail`。可重试一次不同实现,仍失败则换方向。

### 4.7 Decide(六态)
- **keep**:指标改进(超 min_delta)且 Guard 过 → 分支前进
- **discard**:指标变差 → `git revert HEAD --no-edit`(**不用 reset —— 失败保留在历史里供学习**);revert 后按本轮 iter-start 快照校验文件内容确已还原
- **crash**:运行崩溃 → 语法/导包错误立即免费修复重跑(日志 `run-<N>-fix<K>.log`);运行时错误最多自动修 3 次;修不好 revert 记 crash
- **no-op**:本轮无有效改动
- **blocked**:外部依赖失效(数据集/服务/权限)

### 4.8 Log
`results.tsv`(TAB 分隔):`iteration timestamp commit metric delta guard status move description`
`autoresearch.jsonl`:完整 JSON 行(hypothesis、files changed、wall time、evidence pointer)

### 4.9 Checkpoint(每 5 轮)
趋势分析:keep 率、连续 discard 数、delta 递减、最大单次飞跃。
输出建议:**continue / change-strategy / stop**(交互式=建议;无人值守=change-strategy 时强制 escalate)。

### 4.10 停滞规则
连续 10 轮无 keep:
- 交互式 → 停下来向用户汇报趋势和建议
- 无人值守 → 自动执行升级选步(合并 near-miss / 激进重构 / 换 hypothesis 空间),记入 jsonl

## Step 5: 收尾

循环结束(达成/停滞/上限/打断)时输出:
- 总迭代数、keep/discard/crash 分布、baseline → 最终指标、提升 %
- Top 3 最有效改动 + 最大失败教训
- 最优 commit 指针(`git log` 定位)
- CHANGELOG 追加条目;关键结论按全局约定写 provenance

## Subcommands

- `autoresearch <text>` — 启动/续跑
- `autoresearch off` — 停止,保留数据
- `autoresearch clear` — 清除状态重来

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.