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
  • 1 view
  • Added October 13, 2026
researchgobashdockergitperformance

Security analysis

A100/100

Scanned October 13, 2026

npx -y skills add Yichen-ZJU/lemvo-for-claude --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-lemvo-for-claude/badge)](https://www.skillsdirectory.com/skills/yichen-zju-autoresearch-lemvo-for-claude)

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` 锻造;
- **最小就地契约**(主控按"裸库直接迭代"路由到本 skill 时)→ **不造包**:
  就地生成/接受最小运行契约即可开跑——评测命令 + 指标名/单位/方向 +
  循环边界(maxIterations/timeout)写进 `autoresearch.md` 即算契约成立,
  不强制 program.md 与开放文件结构。

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 1 的续跑/新开询问与 Step 2/3 的交互闸门(AskUserQuestion 环境选择、计划确认)**全部跳过**:orchestrator 的 BOOTSTRAP 双闸门 + state 文件即上游授权,scope/预算/环境/恢复意图以 research-state.yaml 为准。环境沿用调用方已确认的选择或任务包 program.md 的约定;若没有任何已确认配置且无法交互,报 `blocked` 而不是擅自假设。orchestrator 的 Gate 已经做过确认,这里不再二次确认。交接携带 `stage / plan_version / 活跃约束 ID / eval contract 命名空间`(program.md 头部 envelope 区):本循环服从该 envelope,不自建更苛刻的门;plan_version 变化意味着新包版本,本循环不沿用旧版本身份。

## 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<K>.log`(K=1,2,各自留档),第 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

停滞升级选步**只能在当前 envelope(约束清单、预算、eval contract)内**进行。
升级选步后仍停滞、或判断需要改动 envelope 本身(换评估命名空间、放宽局部
预算、修订代理自拟的配方默认)→ **交回外循环**:在 results/jsonl 与交接状态
中写明停滞事实、已尝试的升级、建议的修订点,结束本局部循环,由 orchestrator
走约束复审产生新版本。局部循环不得自行扩大 envelope 或无限续跑;局部 discard
只否当前候选,不否整个方向(裁决标签见 orchestrator 裁决语义分层)。

## 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.