prague-bench

Metodika

Co agenti museli postavit, jak jsme každý běh měřili, jak porota hodnotila videa a kde je u čísel potřeba opatrnost.

Úloha v kostce

Každý agent dostane stejné písemné zadání (zhruba 450 řádků) a stejný krátký pokyn. Má napsat program v Three.js, který procedurálně postaví stylizovanou, ale poznatelnou Prahu: Hrad s katedrálou sv. Víta, Malou Stranu, Vltavu a Karlův most se sochami.

Kamerový dron stojí na zemi na třetím nádvoří Pražského hradu, vzlétne a sleduje GPS trasu o 115 bodech dlouhou asi 1,6 km: dolů Býčím schodištěm, zahradami s ostrou zatáčkou do protisměru, po Zámeckých schodech, kolem kostela sv. Mikuláše, Mosteckou ulicí, branou Malostranské mostecké věže, přes Karlův most mezi sochami a branou Staroměstské mostecké věže. Film končí stoupajícím záběrem zpět přes most na Hrad v podvečerním zlatém světle.

Všechno, co je vidět, musí vzniknout za běhu z vlastního kódu agenta: žádné stažené modely, fotky, mapové dlaždice ani obrázky od AI. Zadání chce nejméně 1500 animovaných chodců, tramvaj, lodě a ptáky, kameru, která nikdy neprojede geometrií, a deterministický renderer.

Let se renderuje bez obrazovky v Chromu snímek po snímku, na GPU, pokud je k dispozici, jinak softwarově, a pak se zakóduje do MP4. Agent k tomu odevzdá kontaktní arch, mapu trasy shora a REPORT.md se svými rozhodnutími a známými chybami.

Během běhu nikdo nezasahuje. Podle pokynu je agent hotový, až když MP4 existuje a projde jeho vlastními kontrolami. Celé zadání tu nezveřejňujeme.

Tvrdé požadavky H1–H6

Každé odevzdané MP4 nezávisle na agentovi ověří skript. Nesplnění kteréhokoli z nich znamená neúspěšný běh.

H1Kontejner MP4, H.264 profil High, yuv420p, atom moov na začátku souboru (faststart)
H2Přesně 1080 × 1920 (na výšku, 9:16) se čtvercovými pixely
H330 fps, konstantní snímková frekvence
H4Délka mezi 55 a 60 s, cíl je 58,0 s (1740 snímků)
H5Špičkový datový tok nejvýš 20 Mbps v libovolném sekundovém okně, soubor pod 200 MB
H6Zvuková stopa AAC-LC, 48 kHz, stereo (smí být tichá)

Zadání má dalších šest požadavků (H7–H12: jen procedurální obsah, věrnost trasy, determinismus, vzlet, kamera neprojíždí geometrií, viditelní chodci). Ty skript spolehlivě neověří, a tak se projeví v hodnocení poroty.

Harnessy a effort

Harness je program, ve kterém model běží: dává mu shell, práci se soubory a smyčku, ve které pracuje. Každý model běží v harnessu, který k němu dodává jeho výrobce, a spouští se ze stejné řídicí relace se stejným pokynem.

Pravidla pro effort (úroveň uvažování): modely Claude a Codex běží na high, všechny ostatní na prostřední úrovni svého poskytovatele (medium, případně high, pokud existuje jen low, high a max). Gemini 4 Hydrogen běžel na přání na xhigh. Effort je součástí názvu každého běhu.

HarnessModelyÚčtování
Claude CodeClaude Fable, Opus, Sonnet, Haikuceník API Anthropicu
Codexmodely GPT-6 a GPT-6.1ceník API OpenAI
AntigravityGemini 4 Argon a Hydrogenceník API Googlu
Cursorjen Grok 4.7spotřebu lokálně neukládá
OpenCodebezplatné modely OpenCode Zen, Kimi K3.1 Pro (OpenCode Go), Qwen3.8 Max (OpenRouter)zdarma, předplatné nebo skutečná platba

Hardware

Všechny běhy jedou na stejném malém počítači: Intel Core i3-10100T (4 jádra, 8 vláken, 35 W) s integrovanou grafikou Intel UHD Graphics 630, kterou Chrome bez obrazovky používá přes Mesa a ANGLE. Žádná samostatná grafická karta.

Renderer rozhoduje víc než procesor. Stejná scéna trvala softwarově (SwiftShader) asi 2,9 s na snímek a na integrované GPU asi 90 ms: 62 minut proti 1,9 minuty za všech 1740 snímků. Proto zadání agentům říká, ať nejdřív zkusí GPU, a proto lze srovnávat jen běhy se stejným rendererem.

Co měříme

Celkový čas

Od prvního do posledního časového razítka relace agenta (přepis Claude Code, rollout Codexu, databáze Antigravity nebo OpenCode). Zahrnuje renderování i kódování videa, protože obojí patří k úloze.

Tokeny

Sečtené přes všechny odpovědi modelu: vstup bez cache, čtení z cache, zápis do cache a výstup. Výstup zahrnuje uvažování; OpenCode ho vykazuje zvlášť, takže tu obojí sčítáme. Cursor spotřebu lokálně neukládá, a proto u Groku žádná čísla o tokenech nejsou.

Cena: ceníková a skutečně účtovaná

Tokeny vynásobené veřejnou ceníkovou cenou API daného poskytovatele, ne cenou předplatného, aby se běhy daly srovnat. Výjimky jsou označené: u běhu přes OpenRouter je uvedená skutečně účtovaná částka (stav kreditu před a po) a vedle ní odhad samotného harnessu; běh přes OpenCode Go zaplatilo předplatné a je uvedený v ceníkové ceně; bezplatné modely OpenCode Zen stály 0 USD; Gemini 4 Argon je počítaný v zaváděcí ceně.

Rychlost generování (tok/s) a podíl času modelu

U každého volání modelu běží doba generování od odeslání požadavku po přijetí posledního tokenu. Spouštění nástrojů, čekání na rendery a režie harnessu mezi voláními se nepočítají, čas do prvního tokenu ano. Jde tedy o rychlost modelu od začátku do konce, ne o čisté dekódování. tok/s = vygenerované tokeny včetně uvažování vydělené součtem doby generování. Podíl času modelu = součet doby generování vydělený celkovým časem. Když se zdroje časů mírně rozcházejí, může podíl vyjít přes 100 %; grafy ho omezují.

Nástroje

Volání nástrojů podle názvu, jak je zaznamenal každý harness (Bash, exec, shell a podobně). Některé harnessy nabízely i skills, subagenty, přístup na web a servery MCP; žádný agent je nepoužil.

Odvozené ukazatele

Cena za bod skóre a počet bodů za dolar, výstupní tokeny na bod skóre, podíl čtení z cache (čtení z cache vydělené všemi vstupními tokeny), rozptyl porotců u každého videa a posun skóre a stabilita pořadí (Spearmanovo ρ) mezi porotami. Paretova hranice označuje běhy, které žádný jiný běh nepřekoná zároveň v ceně (nebo čase) i skóre.

Hodnocení

H1–H6 rozhodují jen o tom, zda běh prošel; body za ně nejsou. Kvalitu hodnotí slepá porota tří porotců od tří firem: Claude Opus 5.5 (Anthropic), GPT-6 Astra (OpenAI) a Gemini 4 Argon (Google).

Z každého finálního MP4 sami vybereme 16 rovnoměrně rozložených snímků (každých 3,625 s, od 0 do 54,4 s) a složíme je do mřížky 4 × 4. Mřížky jsou anonymizované zamíchanými písmeny; klíč má jen orchestrátor a zapíše ho až po hodnocení. Všichni tři porotci hodnotí každou mřížku podle stejné tabulky a skóre je medián tří součtů, takže jeden ujetý porotce nerozhodne.

Kdykoli přibude nový model, hodnotí se znovu všechna videa s novými písmeny, ne jen nováček. Zatím proběhly tři poroty. Úplně první skóre dával sám orchestrátor a za splnění technických kontrol rozdával 30 skoro zadarmo získaných bodů; v datech zůstávají, ale už se nepoužívají.

KategorieBodyZa co
Památky25Katedrála sv. Víta, kostel sv. Mikuláše, Karlův most se sochami a mostecké věže jsou poznat jako tyto stavby, ne jako obecné kvádry.
Vzhled města25Uvěřitelné historické město: pestré fasády, střechy, materiály, světlo, stíny a voda.
Kamera a dron30Dron je při sledování vidět, vzlet je v záběru, kompozice je příjemná. Velká srážka za snímky, kde je kamera uvnitř geometrie nebo na ni nalepená.
Život10Věrohodné davy, vozidla, lodě a ptáci.
Celkový dojem10Bavilo by diváka se na to dívat jako na krátké video?

Výhrady

  • Jeden běh na model. Rozptyl zatím neznáme, takže o pořadí modelu může rozhodnout šťastný nebo nešťastný běh.
  • Porotci vidí 16 statických snímků, ne pohyb. Trhání, rychlost a plynulost se nehodnotí.
  • Nejméně stabilní je porotce od Googlu. V poslední porotě dal Claude Haiku 5.5 91 bodů, zatímco zbylí dva 53 a 43. Medián takové jednotlivé výkyvy pohltí.
  • Skóre modelů uprostřed tabulky se mezi porotami posouvá zhruba o ±6 bodů a Grok 4.7 se mezi posledními dvěma posunul o 14 bodů. Malé rozdíly berte jako remízu.
  • Cursor nezaznamenává spotřebu tokenů, takže u Groku 4.7 chybí tokeny, cena i rychlost generování.
  • Každý model běží v jiném harnessu, takže každé srovnání míchá model s jeho harnessem.
  • Několik běhů ukončily bezplatné kvóty a limity předplatného. O modelech samotných toho moc neříkají.
  • Claude Opus 5.5 ve 2. běhu jel podle staršího zadání a se softwarovým renderem. Uvádíme ho pro úplnost a ze srovnání ho vynecháváme.
  • Porotci jsou modely od stejných firem, jejichž modely soutěží. Nevědí, čí video je čí, ale podobný vkus vyloučit nelze.

Plán metrik

Ukazatele, které chceme, ale zatím je nepočítáme. Žádný z nich se na webu neobjeví, dokud nebude opravdu změřený.

  • Spolehlivost

    pass^k a opakované běhy

    Pustit každý model k-krát a uvádět průměrné skóre ± směrodatnou odchylku, podíl úspěšných běhů a podíl nedokončených. Z jednoho běhu nepoznáme schopnosti od náhody.

    Potřebujeme: několik běhů každého modelu se stejným zadáním

  • Spolehlivost

    Skutečná cena za úspěšné video

    Kolik v průměru stojí jedno video, které projde, včetně neúspěšných pokusů (myšlenka „cost to complete“ z KiloBench).

    Potřebujeme: opakované běhy včetně neúspěšných

  • Průběh

    Čas do prvního MP4 a počet renderů

    Jak brzy má agent první kompletní video a kolik pracovních a finálních renderů nebo vlastních oprav potřebuje, než skončí.

    Potřebujeme: vytáhnout z přepisů příkazy pro render a kódování

  • Průběh

    Chybovost nástrojů, TTFT a čisté dekódování

    Podíl volání nástrojů, která selžou, čas do prvního tokenu a rychlost dekódování bez zpracování vstupu, všude, kde to harness zaznamenává.

    Potřebujeme: časování jednotlivých volání a výsledky nástrojů z každého harnessu

  • Průběh

    Vytvořený kód

    Počet řádků kódu, souborů a závislostí z npm v odevzdaném projektu.

    Potřebujeme: spočítat to v pracovním adresáři každého běhu

  • Video

    Plynulost kamery a odchylka od trasy

    Ryv (změna zrychlení) dráhy kamery a to, jak daleko let uhýbá od referenční trasy, změřené přímo ze scény, ne převzaté z reportu agenta.

    Potřebujeme: export polohy kamery a dronu pro každý snímek

  • Video

    Snímky s kolizí

    Snímky, kde je kamera uvnitř geometrie nebo na ni nalepená, odhalené automaticky, ne očima porotců.

    Potřebujeme: průchod hloubkovou mapou nebo raycastem přes všechny snímky

  • Video

    Složitost scény

    Chodci, kolizní objekty, trojúhelníky a draw cally z metadat renderu. Ten soubor dnes zapisují jen některé běhy.

    Potřebujeme: jednotný render_meta.json v každém běhu

  • Video

    Dodržení délky a datového toku

    Přesná délka, průměrný a špičkový datový tok, velikost souboru a hlasitost zvuku jako čísla, ne jen řádek splněno/nesplněno.

    Potřebujeme: strukturovaný výstup nezávislé kontroly

  • Poctivost

    Poctivost reportu

    Porovnat, co agent tvrdí v REPORT.md (žádné kolize, všechny kontroly prošly, odchylka od trasy), s nezávislou kontrolou a s tím, co viděli porotci.

    Potřebujeme: vytažení tvrzení a pravidla pro jejich párování

  • Pokrytí

    Pokrytí měkkých požadavků zadání

    Které nepovinné a měkké body zadání (tramvaj, lodě, labutě, soundtrack, titulek, pohled zpět na Hrad) video opravdu obsahuje.

    Potřebujeme: kontrolní seznam a projití každého videa

  • Náklady

    Odhad energie a výpočtu

    Energie, kterou spotřebovalo renderování a kódování na místním počítači, a hrubý odhad výpočtu na straně modelu za spotřebovanými tokeny.

    Potřebujeme: měření příkonu počítače a zveřejněné údaje na token