Token导航 LogoToken导航TokenDH.com
研究检索只读github未标认证来源可访问许可证需确认审计提醒

autoresearch自动研究

Agent Skill

autoresearch 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

1,234

周安装

53

GitHub Stars

64

下载量

432
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:autoresearch(自动研究)
来源仓库:https://github.com/factory-ai/factory-plugins
仓库路径:skills/autoresearch
安装命令:
npx skills add https://github.com/factory-ai/factory-plugins --skill autoresearch
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/factory-ai/factory-plugins --skill autoresearch

简介

autoresearch 自主运行实验循环,持续优化可量化指标直至收敛。

  • 维护结构化状态文件以实现会话间无缝恢复,适合长期探索型任务。
  • 建议在 mission 模式下启动以获得更好的进度跟踪与控制粒度。
  • 每次变更后必须保存中间状态,防止意外中断导致重复劳动或数据丢失。
  • 适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

SKILL.md

Autoresearch

Autonomous experiment loop: try ideas, keep what works, discard what doesn't, never stop.

Overview

You are running an autonomous optimization loop. Your job is to systematically improve a measurable metric by making changes, running experiments, and keeping only the improvements. You maintain structured state files so that any session — including a fresh one with no memory — can resume exactly where you left off.

If the user is asking you to do this and you are not currently in mission mode, suggest that they might want to run this inside a mission (/enter-mission) for better progress tracking, milestone validation, and multi-session continuity. Don't block on it — just mention it once during setup.

If you are already in mission mode, invoke the mission planning skills first (mission-planning and define-mission-skills) before diving into this skill's procedure. Use the mission system's planning, decomposition, and worker design to structure the autoresearch work — then combine that guidance with this skill's experiment loop procedure. This skill defines *how* to run experiments; the mission system defines *how to plan, track, and validate* them.

Setup

Before the loop starts, you need to establish the experiment.

Step 1: Gather Information

Ask the user (or infer from context) for:

  • Goal: What are we optimizing? (e.g., "minimize val_bpb", "reduce test runtime", "shrink bundle size")
  • Command: What to run (e.g., uv run train.py, pnpm test, pnpm build && du -sb dist)
  • Primary metric: Name, unit, and direction (e.g., val_bpb, unitless, lower is better)
  • Files in scope: Which files may be modified
  • Constraints: Hard rules (tests must pass, no new deps, etc.)
  • Termination condition: When to stop. Ask the user — options are:

- Fixed experiment count (e.g., 20 experiments) - Fixed time budget (e.g., 2 hours) - Target metric (e.g., val_bpb < 1.0) - Run until interrupted (default)

Step 2: Create Branch and State Files

git checkout autoresearch/<goal>-<date> 2>/dev/null || git checkout -b autoresearch/<goal>-<date>

Read the source files thoroughly. Understand the workload deeply before writing anything.

Create three files:

autoresearch.md

The living research document. A fresh agent with no context should be able to read this file and run the loop effectively. Invest time making it excellent.

# Autoresearch: <goal>

## Objective
<Specific description of what we're optimizing and the workload.>

## Metrics
- **Primary**: <name> (<unit>, lower/higher is better) — the optimization target
- **Secondary**: <name>, <name>, ... — independent tradeoff monitors

## How to Run
`./autoresearch.sh` — outputs `METRIC name=number` lines.

## Files in Scope
<Every file the agent may modify, with a brief note on what it does.>

## Off Limits
<What must NOT be touched.>

## Constraints
<Hard rules: tests must pass, no new deps, etc.>

## Termination
<When to stop: experiment count, time budget, target metric, or run until interrupted.>

## What's Been Tried
<Update this section as experiments accumulate. Note key wins, dead ends,
and architectural insights so the agent doesn't repeat failed approaches.>

autoresearch.sh

Bash script (set -euo pipefail) that: pre-checks fast (syntax errors in <1s), runs the benchmark, and outputs structured METRIC name=value lines to stdout. Keep the script fast.

For fast, noisy benchmarks (< 5s), run the workload multiple times inside the script and report the median. Slow workloads (ML training, large builds) don't need this.

Example:

#!/bin/bash
set -euo pipefail

# Pre-check: syntax validation
python3 -c "import ast; ast.parse(open('train.py').read())" 2>&1 || { echo "SYNTAX ERROR"; exit 1; }

# Run the workload
output=$(uv run train.py 2>&1)

# Extract and output metrics
val_bpb=$(echo "$output" | grep -oP 'val_bpb=\K[0-9.]+' | tail -1)
echo "METRIC val_bpb=$val_bpb"

autoresearch.checks.sh (optional)

Only create this when the user's constraints require correctness validation (e.g., "tests must pass", "types must check"). Bash script (set -euo pipefail) for backpressure checks.

#!/bin/bash
set -euo pipefail
pnpm test --run --reporter=dot 2>&1 | tail -50
pnpm typecheck 2>&1 | grep -i error || true

Step 3: Initialize JSONL and Commit State Files

Initialize the experiment log:

python3 autoresearch_helper.py init --jsonl autoresearch.jsonl --name '<goal>' --metric-name '<metric_name>' --direction <lower|higher>

Commit all state files:

git add autoresearch.md autoresearch.sh autoresearch.jsonl
git commit -m "autoresearch: initialize experiment session"

Step 4: Run Baseline

Run the benchmark and record the baseline result:

bash autoresearch.sh

Parse the METRIC lines from the output, then log the baseline as a keep:

python3 autoresearch_helper.py log --jsonl autoresearch.jsonl \
  --commit $(git rev-parse --short=7 HEAD) \
  --metric <baseline_value> \
  --status keep \
  --description "baseline" \
  --asi '{"hypothesis": "baseline measurement"}'

This is experiment #1 — it establishes the starting point for all future comparisons.

The Experiment Loop

LOOP FOREVER. Never ask "should I continue?" — the user expects autonomous work. Only stop when:

  • The termination condition from setup is met
  • The user interrupts
  • You detect you're running low on context (see Context Management below)

For Each Experiment:

1. Choose What to Try

Read autoresearch.md (especially "What's Been Tried") and autoresearch.ideas.md (if it exists) to pick the next hypothesis. Think about what the data tells you. The best ideas come from deep understanding, not random variations.

2. Make Changes

Edit the files in scope. Keep changes focused — one hypothesis per experiment.

3. Run the Experiment

Execute the benchmark:

timeout 600 bash autoresearch.sh

Capture the full output. Parse METRIC name=value lines from the output.

If the run crashes or times out, log it as a crash and revert.

If autoresearch.checks.sh exists and the benchmark passed, run it:

timeout 300 bash autoresearch.checks.sh

If checks fail, log as checks_failed and revert.

4. Evaluate Results

Compare the primary metric against the current best (or baseline if no keeps yet) using the helper script:

python3 autoresearch_helper.py evaluate --jsonl autoresearch.jsonl --metric <value> --direction <lower|higher>

This outputs whether to keep or discard, the confidence score, and delta from baseline.

Decision rules:

  • Primary metric improved -> keep
  • Primary metric worse or unchanged -> discard
  • Simpler code for equal performance -> keep (removing code for same perf is a win)
  • Ugly complexity for tiny gain -> probably discard
  • Secondary metrics rarely affect the keep/discard decision. Only discard a primary improvement if a secondary metric degraded catastrophically.

5. Record Results

On keep:

Log to JSONL first (so the entry is included in the commit):

python3 autoresearch_helper.py log --jsonl autoresearch.jsonl \
  --commit $(git rev-parse --short=7 HEAD) \
  --metric <value> \
  --status keep \
  --description "<what was tried>" \
  --asi '{"hypothesis": "<what you tried>"}' \
  # --metrics '{"compile_us": <value>, "render_us": <value>}'  # optional secondary metrics
  --direction <lower|higher>

Then commit all changes (including the JSONL entry):

git add -A
git commit -m "<description>

Result: {\"status\": \"keep\", \"<metric_name>\": <value>}"

On discard/crash/checks_failed:

Log to JSONL first (before reverting, so the entry is preserved):

python3 autoresearch_helper.py log --jsonl autoresearch.jsonl \
  --commit "0000000" \
  --metric <value_or_0> \
  --status <discard|crash|checks_failed> \
  --description "<what was tried>" \
  --asi '{"hypothesis": "<what you tried>", "rollback_reason": "<why it failed>"}' \
  # --metrics '{"compile_us": <value>, "render_us": <value>}'  # optional secondary metrics
  --direction <lower|higher>

Then revert changes, backing up state files so git clean -fd doesn't destroy them:

# Backup state files
cp autoresearch.jsonl autoresearch.jsonl.bak 2>/dev/null || true
cp autoresearch.md autoresearch.md.bak 2>/dev/null || true
cp autoresearch.ideas.md autoresearch.ideas.md.bak 2>/dev/null || true

# Revert all changes
git checkout -- .
git clean -fd 2>/dev/null

# Restore state files
cp autoresearch.jsonl.bak autoresearch.jsonl 2>/dev/null || true
cp autoresearch.md.bak autoresearch.md 2>/dev/null || true
cp autoresearch.ideas.md.bak autoresearch.ideas.md 2>/dev/null || true
rm -f autoresearch.jsonl.bak autoresearch.md.bak autoresearch.ideas.md.bak

6. Update Research Journal

After every few experiments (or after significant findings), update the "What's Been Tried" section in autoresearch.md. Include:

  • What worked and why
  • What didn't work and why
  • Dead ends to avoid
  • Current best result and how it was achieved

7. Maintain Ideas Backlog

When you discover promising but deferred optimizations, append them as bullet points to autoresearch.ideas.md. Don't let good ideas get lost. Prune stale or tried entries.

8. Loop

Go back to step 1.

State Files Reference

FileFormatPurpose
autoresearch.jsonlJSON LinesAppend-only experiment log. One JSON object per line.
autoresearch.mdMarkdownLiving research document. Objective, what's been tried, current best.
autoresearch.ideas.mdMarkdownHypothesis backlog. Bullet points of promising ideas to try.
autoresearch.shBashBenchmark script. Outputs METRIC name=value lines.
autoresearch.checks.shBashOptional correctness checks (tests, types, lint).

JSONL Schema

Each line in autoresearch.jsonl is either a config header or an experiment result:

Config header (first line, or on re-init):

{"type": "config", "name": "...", "metricName": "...", "metricUnit": "...", "bestDirection": "lower|higher"}

Experiment result:

{
  "run": 1,
  "commit": "abc1234",
  "metric": 1.234,
  "metrics": {"compile_us": 4200, "render_us": 9800},
  "status": "keep|discard|crash|checks_failed",
  "description": "what was tried",
  "timestamp": 1711600000000,
  "segment": 0,
  "confidence": 2.1,
  "asi": {"hypothesis": "...", "rollback_reason": "...", "next_action_hint": "..."}
}

ASI (Actionable Side Information)

Always record ASI with every experiment. At minimum: {"hypothesis": "what you tried"}. On discard/crash, also include rollback_reason and next_action_hint. Add any other key/value pairs that capture what you learned — dead ends, surprising findings, error details, bottlenecks.

ASI is the only structured memory that survives reverts. Without it, future iterations waste time re-discovering the same dead ends.

Confidence Scoring

After 3+ experiments, the helper script computes a confidence score using Median Absolute Deviation (MAD):

ConfidenceMeaning
>= 2.0xImprovement is likely real
1.0-2.0xAbove noise but marginal
< 1.0xWithin noise — consider re-running to confirm

The score is advisory — it never auto-discards. If confidence is below 1.0x, consider re-running the same experiment to confirm before keeping.

Context Management

Droid sessions have finite context. To handle this gracefully:

  1. Track experiment count in the current session. After ~15 experiments, context is getting heavy.
  2. Save state proactively — all state lives in files (jsonl, md), so a new session can resume immediately.
  3. When context is getting exhausted: update autoresearch.md with current findings, commit state files, and stop. The next session reads the files and continues.
  4. On resume: read autoresearch.md, autoresearch.jsonl, and git log --oneline -20 to understand where things stand. Check current status:
python3 autoresearch_helper.py status --jsonl autoresearch.jsonl

Loop Rules Summary

  • LOOP FOREVER. Never ask "should I continue?"
  • Primary metric is king. Improved -> keep. Worse/equal -> discard.
  • Annotate every run with ASI. Record what you learned, not just what you did.
  • Watch the confidence score. < 1.0x means within noise — re-run to confirm.
  • Simpler is better. Removing code for equal perf = keep.
  • Don't thrash. Repeatedly reverting the same idea? Try something structurally different.
  • Crashes: fix if trivial, otherwise log and move on.
  • Think longer when stuck. Re-read source files, study the data, reason about what's actually happening. The best ideas come from deep understanding.
  • Resuming: read autoresearch.md + git log, continue looping.

Finalization

When the experiment loop ends (termination condition met, user interrupts, or context exhausted), finalize the results into clean, reviewable branches. This is the last phase of an autoresearch session.

Step 1: Summarize Results

python3 autoresearch_helper.py summary --jsonl autoresearch.jsonl

Review the git log for actual commits:

git log --oneline --stat $(git merge-base HEAD main)..HEAD

Step 2: Group Changes

Group kept experiments into logical changesets. Each group should:

  • Represent a single coherent optimization or change
  • Not share modified files with other groups (so branches can merge independently)
  • Have a clear description of what it achieves and the metric improvement

Present the proposed grouping to the user for approval:

Group 1: "Reduce model depth from 8 to 6"
  Files: train.py (DEPTH, HEAD_DIM, N_EMBED)
  Metric improvement: val_bpb 1.15 -> 1.08 (-6.1%)
  Experiments: #3, #7, #12

Group 2: "Switch to cosine LR schedule"
  Files: train.py (lr_schedule, warmup_steps)
  Metric improvement: val_bpb 1.08 -> 1.05 (-2.8%)
  Experiments: #15, #18

Wait for user confirmation before proceeding. In mission worker mode, proceed with the best grouping without waiting for confirmation.

Step 3: Resolve File Conflicts

If groups share files, resolve before creating branches:

  • Merge the groups into one (if changes are related)
  • Split the file changes more carefully (if they're truly independent modifications to different parts)
  • Ask the user which group gets priority

Groups must not share files — each branch must be independently mergeable. If all changes touch the same file and can't be separated, create a single finalized branch with all improvements combined.

Step 4: Create Clean Branches

For each group:

merge_base=$(git merge-base HEAD main)
git checkout -b autoresearch/finalize/<group-name> $merge_base
git checkout autoresearch/<session-branch> -- <file1> <file2> ...
git commit -m "<group description>

Autoresearch results:
- Metric: <name> improved from <baseline> to <best> (<delta>%)
- Confidence: <score>x noise floor
- Experiments: <count> total, <kept> kept"

Step 5: Verify and Report

For each finalized branch, run the benchmark to confirm the improvement holds, run any checks if applicable, and verify it merges cleanly with main.

Present a summary to the user:

Created 2 clean branches from 20 experiments:

  autoresearch/finalize/reduce-depth
    val_bpb: 1.15 -> 1.08 (-6.1%)
    Ready for review

  autoresearch/finalize/cosine-schedule
    val_bpb: 1.08 -> 1.05 (-2.8%)
    Ready for review

Original experiment branch preserved: autoresearch/<session-branch>

The original experiment branch is always preserved — finalization creates new branches.

Mission Worker Mode

When running as a mission worker, the feature description specifies the optimization goal, termination condition, files in scope, and constraints. Read it carefully, follow the same loop procedure above, and respect the termination condition. When the condition is met, run finalization and report results in the handoff.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

38.66%
按下载量换算167

Claude

29.83%
按下载量换算129

Cursor

18.45%
按下载量换算80

Gemini CLI

9.87%
按下载量换算43

安全审计

Gen Agent Trust Hub

通过

Socket

可疑

Snyk

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills