Vytvořeno: 11.04.2026 | Aktualizováno: 24.07.2026 07:27
autoresearch je open-source framework od Andreje Karpathyho, který umožňuje AI agentovi autonomně provádět opakované ML experimenty bez zásahu člověka. Podle README je původní záměr jednoduchý: agent upravuje trénovací kód, spustí krátký běh, změří výsledek a podle metriky rozhodne, jestli změnu ponechat. Ve videu Claude Code + autoresearch je ten samý princip ukázaný i jako obecný pattern pro autonomní experimentování mimo ML.
Celý cyklus je přímočarý:
program.mdtrain.py - architekturu, hyperparametry, optimizerval_bpb
Za noc tak může proběhnout přibližně 100 experimentů. Člověk nastaví pravidla hry v program.md, agent dělá experimenty sám.
prepare.py - jednosměrná příprava dat. Stáhne trénovací data, natrénuje BPE tokenizer a obsahuje pomocné runtime utility. Tento soubor se nemá upravovat.
train.py - jediný soubor, který agent edituje. Obsahuje architekturu GPT-like modelu, optimizer (Muon + AdamW) a celý trénovací loop. Agent může měnit hloubku modelu, batch size, attention pattern, regularizaci i scheduling.
program.md - instrukce pro agenta. Tento soubor upravuje člověk; nastavuje výzkumný směr, omezení a cíle experimentů.
Potřebuješ NVIDIA GPU a Python 3.10+.
curl -LsSf https://astral.sh/uv/install.sh | sh uv sync uv run prepare.py uv run train.py
Repo je primárně dělané pro NVIDIA GPU. V README jsou zmíněné i komunitní forky pro macOS, Windows a AMD.
Všechny experimenty se v původním repu porovnávají podle jedné metriky - validation bits per byte (val_bpb). Čím nižší číslo, tím lepší model. Fixní časový rozpočet 5 minut zajišťuje, že jednotlivé běhy jsou přímo srovnatelné na stejném hardware.
Repo obsahuje:
Repo neobsahuje:
Při spuštění se model inicializuje s náhodnými vahami a trénuje se od nuly.
Video neprezentuje autoresearch jako hotový nástroj pro marketing. Používá ho hlavně jako pattern / framework pro autonomní experimentování: existuje baseline, objektivní metrika, experimentální varianta, vyhodnocení a rozhodnutí keep/discard.
V ukázce se tedy nemění train.py a neoptimalizuje se val_bpb. Místo toho se princip přenáší do cold email workflow:
baseline.md s copy kampaněresource.mdresults.logPrakticky řečeno: video neukazuje „spusť repo a dostaneš marketingový autopilot“, ale „vezmi logiku autoresearch a přepiš ji pro jiný problém s měřitelným výsledkem“.
Podle videa a následného rozboru přes NotebookLM vypadá demo workflow přibližně takto:
autoresearch jako referenční kostratest.md se popíše cíl, metrika a test methodresource.md se drží znalostní báze o tom, co zvyšuje reply rateorchestrator.py řídí loop harvest → generate → deploy → measure → promote/revertNejde tedy o to, že by původní ML kód najednou uměl marketing. Původní repo se použije hlavně jako architektonický vzor.
Video docela dobře ukazuje i rozdělení práce:
Praktický posun je v tom, že člověk je z velké části vytažený ze samotné experimentální smyčky. Nestará se o každou jednotlivou variantu, ale nastavuje systém a čte výsledky.
Člověk:
- nastaví cíl
- dodá API klíče
- připraví počáteční know-how a omezení
Soubory:
baseline.md = aktuální nejlepší varianta
resource.md = shrnuté poznatky a heuristiky
results.log = historie pokusů a výsledků
test.md = cíl, metrika, test method
orchestrator.py = pravidla smyčky
Smyčka:
1. HARVEST
- stáhni výsledky starších experimentů
- porovnej baseline vs challenger
2. PROMOTE / REVERT
- challenger vyhrál -> stane se nový baseline
- challenger prohrál -> zahodit
3. GENERATE
- vezmi baseline + resource + historii
- vytvoř 1 nový challenger
4. DEPLOY
- pošli baseline i challenger na nové leady
5. WAIT
- po vyhodnocovacím okně se výsledek vrátí do další iterace
def scheduler_tick(): matured = harvest_finished_experiments(older_than_hours=48) append_results_log(matured) if has_decisive_winner(matured.latest_pair): if matured.latest_pair.challenger_reply_rate > matured.latest_pair.baseline_reply_rate: promote_challenger_to_baseline() update_resource_md(with_lessons_from=matured.latest_pair) else: record_failed_hypothesis(matured.latest_pair) keep_current_baseline() prompt_context = { "baseline": read("baseline.md"), "resource": read("resource.md"), "goal": read("test.md"), } challenger = llm_generate_one_challenger(prompt_context) save_challenger(challenger) baseline_leads, challenger_leads = split_fresh_leads_evenly() deploy_campaign("baseline", read("baseline.md"), baseline_leads) deploy_campaign("challenger", challenger, challenger_leads)
Tento pseudokód není opsaný zdroják z videa. Je to zjednodušený model toho, co je na obrazovce a v komentáři videa vidět.
Tady je důležité neplést si dvě různé věci:
V marketingové verzi se systém „učí“ hlavně provozně:
resource.mdJinými slovy: nejde o gradient descent nad emaily, ale o automatizovaný experiment loop s pamětí v souborech.
Vlákno Zhengyao Jianga popisuje jinou, pokročilejší aplikaci téhož principu: systém AIDE² nepouští autoresearch nad řešením konkrétního úkolu, ale nad harnessem agenta, který takové úlohy řeší. Nejde tedy o přímé vylepšení Karpathyho repozitáře; je to dvouúrovňová optimalizace inspirovaná autoresearch patternem.
Podle technického popisu Weco AI má AIDE² dva oddělené cykly:
To odpovídá interpretaci, že „autoresearch lze ještě vylepšovat autoresearchem“, ale s důležitým upřesněním: AIDE² optimalizuje agentní scaffold, ne nutně původní train.py z Karpathyho repozitáře.
Pouhé maximalizování metriky inner loopu by vedlo k přeučení nebo reward hackingu. Autoři proto popisují tři pojistky:
Tato konstrukce je prakticky přenositelná i na jednodušší experimentální loopy: baseline a challenger musí být hodnoceny za srovnatelných podmínek a finální kritérium má být oddělené od signálu, který optimalizátor přímo vidí.
V osmidenním autonomním běhu se 100 kroky outer loopu autoři uvádějí sedm postupně lepších verzí agenta. Jako nejdůležitější nalezené změny popisují:
Poslední bod je důležité číst kriticky: autoři zároveň uvádějí, že statistická vrstva v konečné verzi obsahovala chybu a reálně neměla efekt. V externích held-out benchmarkách jejich AIDE47 a AIDE85 podle reportu překonaly výchozí AIDE0 i ručně laděný AIDEhuman; na KernelBench klesla reportovaná míra reward hackingu z 63 % u AIDE0 na 34 % u AIDE85.
Autoři označují výsledek za Level 1 recursive self-improvement: při fixním rozpočtu systém podle jejich metodiky zlepšoval inner agenta efektivněji než jejich ruční R&D. Netvrdí ale „ignition“ neboli Level 2 – že takto vylepšený agent už sám dokáže lépe řídit další outer loop. Jejich přímý test měl smíšené výsledky a statisticky neprůkaznou výhodu.
Pro praktický návrh vlastního loopu z toho plyne, že je potřeba oddělit tři věci:
train.py, copy kampaně nebo celý agentní harness;Ve videu je potřeba rozlišit dva různé intervaly:
scheduler interval - jak často se spouští orchestrátor, na screenu zhruba každé 4 hodinymeasurement window - jak dlouho se čeká na použitelný výsledek experimentu, na screenu zhruba 48 hodinTo znamená, že čtyřhodinový tick není doba vyhodnocení experimentu. Je to jen cadence, ve které systém:
Praktický dopad je tento:
Dává to smysl hlavně jako průběžně naplňovaná pipeline, ne jako jednorázová dávka pokusů.
Rozumné přínosy takového rozdělení intervalů jsou:
Současně to má i slabiny:
resource.mdJinými slovy: nejde hledat jeden „správný interval“, ale rozumný kompromis mezi rychlostí iterace, velikostí vzorku a rychlostí návratu signálu.
Z videa i z reportu vychází tři praktické podmínky, bez kterých se takový systém rozpadá:
Proto se ten pattern hodí hlavně tam, kde existuje měřitelný signál a kde lze experiment rozumně nasadit i vyhodnotit strojově.
Video i report zmiňují, že stejný princip by šel přenést i na další typy experimentů mimo trénování modelů. Typicky jde o situace, kde lze měnit vstup, měřit výsledek a iterovat:
Tady je ale potřeba stejná opatrnost jako u cold emailů: čím pomalejší nebo hlučnější metrika, tím slabší bude celý loop.
Potvrzené z videa a zdrojů:
train.py a optimalizuje val_bpbbaseline.md, ne ML trénovací kódresource.mdRozumná interpretace:
resource.md funguje jako pracovní paměť nebo komprimovaná znalostní bázeval_bpbresource.md a historii výsledků, takže je potřeba průběžná konsolidaceV pořadu Loop engineering: přestaň psát prompty, piš smyčky začíná diskuse o autoresearch z X od 46:56. Embed nelze nastavit na konkrétní čas; pro otevření správného místa použij odkaz.