Přeskočit na obsah
výkonpravidla

Cizí benchmark, vlastní metr — a past prvního běhu

vlastní konfigurace · pluginygpt-5.6-sol
Čas (8 běhů)
−27 %
Vstupní tokeny
−31 %
Řádky kódu
−21 %
První běh tvrdil
+13 % tokenů

Měřeno 22. 8. 2026 na kódovacím profilu agenta. Předmět: plugin ponytail — injektovaný ruleset (~1,5 tisíce tokenů na každé volání), který model tlačí k minimalismu žebříčkem „je to vůbec potřeba → není to už v kódu → neumí to standardní knihovna → … → teprv pak piš". Autoři udávají z vlastního benchmarku −54 % řádků, −20 % nákladů, −27 % času.

Teze: Cizí benchmark je tvrzení, ne fakt — dokud neprojde vlastním metrem. A vlastní metr má taky pravidla: jeden běh není měření.

Ranní verze: plugin prodražuje

První pokus byl jeden pár úloh (napiš nástroj, rozšiř ho), jednou s pluginem a jednou bez. Výsledek: kód o 30 % kratší, ale vstupní tokeny +13 % a čas stejný. Závěr se psal sám: injektáž se platí v každém volání a slíbená úspora se nekoná; nechat jen kvůli kratšímu kódu.

Jenže to bylo n=1 — přesně ten druh výsledku, o kterém nález 20 říká „indicie, ne důkaz". Tak se měřilo znovu, pořádně.

Odpolední verze: 4 úlohy × 2 větve × 2 opakování

Šestnáct běhů, každý v čerstvé sesi, větve prokládaně (A B A B), tokeny párované na běh podle časových oken. Úlohy vybrané tak, aby over-engineering bolel různě: tvorba nástroje, rozšíření existujícího, oprava bugu v záměrně přebujelém kódu (109 řádků abstraktních továren s jednou chybou a failing testem) a malý správce úkolů s persistencí.

bez pluginu = 100 %čas73 %slib 73 %volání modelu70 %vstupní tokeny69 %slib 80 %řádky kódu (vč. testů)79 %slib 46 %8 běhů na větev (4 úlohy × 2 opakování, prokládaně). Kratší pruh = lepší.Slib rychlosti trefen na procento; tokeny lepší, než slibují; redukce řádků poloviční.
naměřeno (s pluginem / bez)slib autorů pluginu
metrika bez pluginu s pluginem rozdíl
čas celkem 824 s 599 s −27 %
volání modelu 145 101 −30 %
vstupní tokeny 3,72 mil. 2,57 mil. −31 %
řádky kódu (vč. testů) 308 242 −21 %
testy prošly nezávisle 12/12 12/12

Mechanismus úspory není magie: kratší kód znamená méně koleček smyčky agenta (101 volání místo 145) — a každé ušetřené kolečko ušetří celý systémový prompt. Injektovaný ruleset se pořád platí, ale úspora z menšího počtu iterací ho převáží. Vidět je to na průměru: vstup na jedno volání vyšel v obou větvích skoro stejně (~25,7 proti ~25,5 tis. tokenů) — injektáž přidává, kratší historie kratších běhů ubírá, a celý rozdíl −31 % tak dělá počet volání. Ranní +13 % bylo jedno smolné kolo, kde jedna větev potřebovala víc pokusů — šum, který se v osmi bězích rozpustil.

A úloha s opravou bugu přidala důležitý zápor, který se nekonal: plugin nevede k přepisování cizího kódu. Obě větve opravily chybu diffem 1+/1− a přebujelé továrny nechaly být.

Jak ten rozdíl vypadá v kódu

Dvě místa z téhož nástroje, doslovně:

1 · validace parametru --mesicbez pluginu — 9 řádkůdef parse_mesic(hodnota: str) -> str: if re.fullmatch(r"\d{4}-\d{2}", hodnota) is None: raise argparse.ArgumentTypeError( "neplatný měsíc, očekáván YYYY-MM") try: date.fromisoformat(f"{hodnota}-01") except ValueError as chyba: raise argparse.ArgumentTypeError(...) from chyba return hodnotas pluginem — 5 řádkůparser.add_argument( "--mesic", type=lambda h: date.fromisoformat( f"{h}-01").strftime("%Y-%m"), metavar="YYYY-MM")2 · kontrola vstupních datbez pluginu — obrana proti Noneif None in radek or any( hodnota is None for hodnota in radek.values()): raise ValueErrors pluginem — kontrola hlavičkyif next(radky, None) != ["datum", "kategorie", "castka"]: parser.error("CSV musí mít sloupce ...")Doslovné výřezy z první dvojice běhů (69 vs. 56 řádků celkem), jen zalomené do sloupce.Kratší verze není hloupější: kontrolu hlavičky CSV má jen ona — delší ji nahrazuje obranou naslepo.

Za pozornost stojí, že kratší verze není osekaná — je jinak rozvržená. Validaci parametru nechala argparse, místo aby ji obalila vlastní funkcí s regulárním výrazem. A kontrolu vstupu má věcnější: ověří hlavičku CSV, což delší verze vůbec nedělá — ta se místo toho brání proti hodnotám None naslepo.

Sliby vs. metr

Rychlost autoři trefili na procento přesně (−27 %). Úspora nákladů vyšla i lepší, než slibují (−31 % proti −20 %). Redukce řádků je poloviční (−21 % proti −54 %) — jejich číslo zřejmě pochází z úloh, kde je bez pravidel víc prostoru bujet. Celkem: dvě tvrzení potvrzena, jedno nadsazené, žádné vyvráceno.

Poznámka k publikaci

Všechna čísla jsou z logů šestnácti běhů z 22. 8.; úlohy byly syntetické (mimo produkční repozitáře), obě větve dostaly identická zadání a jejich testy prošly nezávislým spuštěním. Plugin se jmenuje ponytail a je veřejný (MIT); jeho instalace má vlastní příběh — nález 29.

Co se pro to změnilo
  • pluginponytail (lazy senior dev ruleset) trvale zapnutý v kódovacím profilu
  • metodikabenchmark: 4 typy úloh × 2 větve × 2 opakování, prokládaně, čerstvé sese, tokeny párované na běh
Souvisí — štítek „pravidla“