/autoresearch – Selbstverbessernde Prompt-Optimierung
Karpathy-Autoresearch-Muster: Generieren → Bewerten → Bewerten → Behalten/Verwerfen → Mutieren → Wiederholen
Architektur
Kern-Engine: crates/sgr-agent/src/autoresearch.rs (Rust-Modul, Feature genai).
Dashboard: skills/autoresearch/dashboard.py (Python, eigenständiger Betrachter).
Testfälle: skills/autoresearch/test_cases/*.json (zur Kompilierzeit eingebettet über include_str!).
Ziele
| Ziel | Was es optimiert | Bewertungsmetrik |
|---|---|---|
tool-selection | Tool-Beschreibungen im Agenten | % richtiges Tool ausgewählt für 66 Testaufgaben |
system-prompt | Agenten-System-Prompt (SOUL.md) | Entscheidungsqualität: richtiges Tool + kohärente Begründung (4 Kriterien) |
skill | Beliebige SKILL.md-Datei | Binäre Kriterien-Erfüllungsrate (4 Kriterien) |
decision-parser | Strukturiertes Ausgabeschema | Parse-Erfolg + Feldqualität (5 Kriterien) |
Verwendung (Rust-API)
use sgr_agent::autoresearch::{AutoResearch, Config, Target};
let config = Config {
target: Target::ToolSelection,
batch_size: 10,
cycle_secs: 120,
gen_model: "gemini-2.5-flash".into(),
eval_model: "claude-sonnet-4-6".into(),
data_dir: "autoresearch_data/tool-selection".into(),
};
let ar = AutoResearch::new(config);
ar.run(20).await?; // 20 Zyklen
Schnellstart (CLI – wenn in rc-cli eingebunden)
# Tool-Auswahl-Optimierung (größte Wirkung)
cargo run -- autoresearch tool-selection --cycles 20
# System-Prompt-Optimierung
cargo run -- autoresearch system-prompt --cycles 10
# Optimierung eines bestimmten Skills
cargo run -- autoresearch skill --name delegate --cycles 15
# Entscheidungsparser-Optimierung
cargo run -- autoresearch decision-parser --cycles 10
# Dashboard (Python, eigenständig)
python3 skills/autoresearch/dashboard.py --target tool-selection --port 8501
Funktionsweise
Jeder Zyklus:
- Generieren Sie N Ausgaben mit aktuellem Prompt (über Gemini – gleiches Modell, das der Agent verwendet)
- Bewerten Sie jede Ausgabe anhand binärer Kriterien (über Claude Sonnet – anderes Modell für Objektivität)
- Bewertung = Summe der bestandenen Kriterien über alle Ausgaben hinweg
- Behalten, wenn Bewertung > beste Bewertung, sonst verwerfen
- Mutieren Sie den gewinnenden Prompt, um Verbesserungen zu versuchen
- Protokollieren Sie in JSONL für Dashboard-Verfolgung
- Warten Sie auf den nächsten Zyklus (Standard 2 Min.)
Umgebung
GEMINI_API_KEY– zur Generierung (Tests mit dem gleichen Modell, das der Agent verwendet)ANTHROPIC_API_KEY– zur Bewertung und Mutation (anderes Modell für Objektivität)
Tipps
- Binäre Auswertungen – Ja/Nein-Kriterien funktionieren am besten. Vermeiden Sie Likert-Skalen.
- Nicht zu stark einschränken – zu viele enge Kriterien führen dazu, dass das Modell die Auswertung umgeht.
- 10-20 Zyklen reichen normalerweise für eine deutliche Verbesserung.
- Ergebnisse anwenden – bester Prompt wird in
data/<target>/best_prompt.txtgespeichert.
Kosten
- Tool-Auswahl: ~0,05 $/Zyklus (günstig – ein LLM-Aufruf pro Test, String-Match-Auswertung)
- System-Prompt: ~0,20 $/Zyklus (Gen + LLM-Auswertung pro Test)
- Skill: ~0,30 $/Zyklus (Gen + LLM-Auswertung pro Test, längere Ausgaben)
- Entscheidungsparser: ~0,15 $/Zyklus (Gen + teilweise lokale Auswertung)
- 20 Zyklen ≈ 1-6 $ je nach Ziel. Dauerhafte Verbesserung.