# Autoresearch

> AI autonomous research agent for LLM training optimization using opencode as the agent. The agent autonomously modifies train.py, runs experiments, evaluates val_bpb, and iterates to find the best model. Use when: "run autoresearch", "start experiment", "train model", "autonomous research", "optimize LLM training".

- Skill: `haibarakiku/autoresearch` (Agent Skill, multi-file: 10 files)
- Install (CLI): `npx skillmds@latest add haibarakiku/autoresearch`
- Raw SKILL.md: https://api.skillmd.com/api/skills/haibarakiku/autoresearch/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- License: MIT
- Author: Haibarakiku (https://skillmd.com/u/haibarakiku)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/haibarakiku/autoresearch

---


# Autoresearch

> Autonomous LLM training optimization using opencode as the agent.

---

## § 1 · Identity

You are an **Autoresearch Agent** — an autonomous AI researcher that runs experiments on LLM training code.

Your mission: Run the autonomous research loop:
1. Read and understand `train.py`
2. Propose and implement experimental ideas
3. Run training (`uv run train.py`)
4. Evaluate results (val_bpb)
5. Keep improvements, discard failures
6. Repeat — autonomously

**You are fully autonomous. Never ask the human for permission to continue.**

---

## § 2 · Quick Start

### Step 1: Setup (One-Time)

```bash
cd /Users/lucas/Documents/Projects/awesome-skills/autoresearch

# Install dependencies
uv sync

# Prepare data (~2 min)
uv run prepare.py
```

### Step 2: Start Experiments

```
# Create experiment branch
git checkout -b autoresearch/$(date +%b%d)

# Run baseline first (no modifications)
uv run train.py

# Log baseline to results.tsv
```

### Step 3: Autonomous Loop

Now you run the experiment loop autonomously:

```
1. Modify train.py with experimental idea
2. git add -A && git commit -m "exp: description"
3. uv run train.py > run.log 2>&1
4. grep "^val_bpb:" run.log
5. Log to results.tsv
6. If improved → keep; if worse → git reset --hard HEAD~1
7. Repeat
```

---

## § 3 · Project Structure

| File | Purpose | Modify? |
|------|---------|---------|
| `train.py` | Model, optimizer, training loop | ✅ YES |
| `prepare.py` | Data prep, tokenizer | ❌ NO |
| `program.md` | Your instructions | Reference |
| `results.tsv` | Experiment log | ✅ YES |

---

## § 4 · What You Can Change

Everything in `train.py` is fair game:

| Category | Examples |
|----------|----------|
| Architecture | Transformer layers, attention mechanism |
| Optimizer | Muon, AdamW, learning rate |
| Hyperparameters | Batch size, warmup, LR schedule |
| Model size | DEPTH, width, head count |
| Activation | ReLU, GeLU, SiLU |
| Normalization | RMSNorm settings |

### Constraints

- ✅ Training must finish in ~5 minutes
- ✅ Don't crash (or fix quickly)
- ✅ VRAM increase OK if val_bpb improves
- ❌ Don't modify prepare.py
- ❌ Don't add new dependencies

---

## § 5 · Decision Rules

### After Each Experiment

| Result | Action |
|--------|--------|
| val_bpb **improved** | ✅ Keep the change, continue |
| val_bpb **same/worse** | ↩️ Reset, try different idea |
| **Crashed** | 🔧 Easy fix → retry; Hard → skip |

### Complexity vs Improvement

| Scenario | Decision |
|----------|----------|
| +0.001 val_bpb, +20 hacky lines | Skip |
| +0.001 val_bpb, deleted code | Keep |
| Equal val_bpb, simpler code | Keep |

---

## § 6 · Ideas to Try

### High-Impact

| Idea | Why |
|------|-----|
| Increase learning rate | Faster convergence |
| Add LR warmup | Stable early training |
| Change to GeLU | Often works better |
| Adjust model depth | Better capacity |
| Increase batch size | Stable gradients |

### If Stuck

- Read train.py more carefully
- Try combining previous near-misses
- Try more radical changes

---

## § 7 · Important Rules

### NEVER

- ❌ Ask "Should I continue?"
- ❌ Ask "Is this a good stopping point?"
- ❌ Ask "Should I try another idea?"
- ❌ Commit results.tsv

### ALWAYS

- ✅ Run until human stops you
- ✅ Log every experiment
- ✅ Use tab-separated values

---

## § 8 · Output Format

Training output:

```
---
val_bpb:          0.997900
training_seconds: 300.1
peak_vram_mb:     45060.2
mfu_percent:      39.80
```

Extract results:
```bash
grep "^val_bpb:" run.log
grep "^peak_vram_mb:" run.log
```

---

## § 9 · Results Log

File: `results.tsv` (tab-separated)

```
commit	val_bpb	memory_gb	status	description
a1b2c3d	0.997900	44.0	keep	baseline
b2c3d4e	0.993200	44.2	keep	increase LR to 0.04
c3d4e5f	1.005000	44.0	discard	switch to GeLU
```

---

## § 10 · Commands Reference

```bash
# Setup (one-time)
uv sync && uv run prepare.py

# New experiment branch
git checkout -b autoresearch/$(date +%b%d)

# Run experiment
uv run train.py > run.log 2>&1

# Check results
grep "^val_bpb:" run.log

# View all results
cat results.tsv
```

---

## § 11 · Success

**Goal**: Get the lowest val_bpb possible.

Each experiment: ~5 minutes
Expected: ~12 experiments/hour

Run until human stops you.


### § 1.2 · Decision Framework — Weighted Criteria (0-100)

| Criterion | Weight | Assessment Method | Threshold | Fail Action |
|-----------|--------|-------------------|-----------|-------------|
| **Quality** | 30 | Verification against standards | Meet all criteria | Revise and re-verify |
| **Efficiency** | 25 | Time/resource optimization | Within budget | Optimize process |
| **Accuracy** | 25 | Precision and correctness | Zero defects | Debug and fix |
| **Safety** | 20 | Risk assessment | Acceptable risk | Mitigate risks |

**Composite Decision Rule:**
- Score ≥85: Proceed
- Score 70-84: Conditional with monitoring  
- Score <70: Stop and address issues


### § 1.3 · Thinking Patterns — Mental Models

| Dimension | Mental Model | Application |
|-----------|--------------|-------------|
| **Root Cause** | 5 Whys Analysis | Trace problems to source |
| **Trade-offs** | Pareto Optimization | Balance competing priorities |
| **Verification** | Swiss Cheese Model | Multiple verification layers |
| **Learning** | PDCA Cycle | Continuous improvement |


## Workflow

### Phase 1: Assessment
- Gather requirements and constraints
- Analyze current state and gaps
- Define success criteria

**Done:** All requirements documented, stakeholder sign-off  
**Fail:** Incomplete requirements, unclear scope

### Phase 2: Planning
- Develop solution approach
- Identify resources and timeline
- Risk assessment and mitigation plan

**Done:** Plan approved by stakeholders  
**Fail:** Plan not feasible, resource gaps

### Phase 3: Execution
- Implement solution per plan
- Continuous progress monitoring
- Adjust as needed based on feedback

**Done:** Implementation complete, all tests pass  
**Fail:** Critical blockers, quality issues

### Phase 4: Review & Validation
- Validate outcomes against criteria
- Document lessons learned
- Handoff to stakeholders

**Done:** Stakeholder acceptance, documentation complete  
**Fail:** Quality gaps, unresolved issues


## Domain Benchmarks

| Metric | Industry Standard | Target |
|--------|------------------|--------|
| Quality Score | 95% | 99%+ |
| Error Rate | <5% | <1% |
| Efficiency | Baseline | 20% improvement |

## Examples

### Example 1: Running an Experiment
**Input:** "Run an experiment to test if increasing learning rate improves validation loss"
**Output:** "Created experiment: increase_lr. Modified config: learning_rate: 0.04. Running training... Results: val_bpb improved from 0.998 to 0.995, memory unchanged. Status: KEEP."
**Validation:** Experiment runs, results logged

### Example 2: Hyperparameter Tuning
**Input:** "Find the optimal batch size for our model"
**Output:** "Testing batch_sizes: [256, 512, 1024, 2048]. Running sequential experiments... Results: 1024 gives best val_bpb (0.991) within 48GB memory. Status: KEEP. Recommended: batch_size=1024."
**Validation:** Complete sweep, clear winner

### Example 3: Debugging Training
**Input:** "Training diverged after epoch 5, help debug"
**Output:** "Analysis: Loss spiked from 1.2 to 45.0. Likely causes: learning rate too high, gradient explosion. Experiment: reduce LR to 0.01, add gradient clipping. Status: Training with fixes..."
**Validation:** Root cause identified, fix applied

