Kolik agenta stojí překlad souboru s texty
Běh 20260812T160551Z-92885b, pořízen 2026-08-12
Každý údaj na této stránce pochází z artefaktů uvedených dole. Údaje o tokenech jsou vlastní účetnictví Clauda ze streamu a z výsledkových objektů v tiskovém režimu. Údaje v měně jsou přibližné hodnoty hlášené nástrojem Claude Code CLI, nikoli fakturační částky.
Otázka
Kódovací agent požádaný o překlad souboru s texty pro i18n může práci udělat sám, nebo může soubor předat překladači, který běží na témž počítači. První spotřebuje tokeny API na každou hodnotu. Druhý nespotřebuje na hodnoty žádné, a BetterTranslator to zvládne úplně bez agenta ve smyčce. Srovnání měří, co každý způsob stojí, na jednom souboru, v tokenech, v přibližných dolarech, v požadavcích a v čase na hodinách.
Měřeny byly tři větve, pojmenované tak, jak je pojmenovávají artefakty.
| Větev | Co se děje | Kdo překládá |
|---|---|---|
| direct | Claude Code přečte soubor a překlad napíše sám. Žádný server MCP není nastaven. | Agent |
| mcp-path | Claude Code volá translate_file na místním serveru MCP BetterTranslatoru a dotazuje se přes job_status. Obsah souboru se do konverzace vůbec nedostane. | Místní model |
| mcp-value | Claude Code posílá hodnoty přes translate_text a soubor zapisuje sám. | Místní model |
Čtvrtá cesta, vlastní okno BetterTranslatoru nebo bt translate zcela bez agenta, spotřebuje ze své podstaty nula tokenů API a v projekci se nese jako nulový řádek.
Jak byl test postaven
| Held constant | Value |
|---|---|
| Agent | Claude Code CLI 2.1.228 |
| Model | claude-opus-5 |
| Prompt | identical across arms apart from one sentence |
| Session | fresh session per run |
| Repetitions | three per cell, the first excluded as cache warm-up |
| Language pair | English to Czech |
| Local engine | TranslateGemma, translategemma-4b-it-Q4_K_M.gguf, Q4_K_M |
| MCP transport | stdio, server bettertranslator 1.0.0, protocol 2024-11-05, 10 tools |
| Host | Windows 11, .NET SDK 10.0.302 |
| Corpus | 4,666 keys in 627,920 bytes, sha256 a8fdce5a, of which 1,242 were eligible under the selection rule |
Hodnota se do vzorku kvalifikuje, když je řetězcem o 20 až 180 znacích bez svislítka pro množné číslo, bez značky HTML a bez zalomení řádku, a když po odstranění zástupných symbolů stále drží alespoň 4 slov a 20 písmen ASCII. Každá vybraná hodnota je prostý text, který překladatel musí změnit. Každý vzorek je předponou toho nejbližšího většího. Úplný otisk zdroje je a8fdce5aba678743b2aac57a9b8c06405e41b836cd174051fc09357da648a633.
| Slice | Keys | Bytes | sha256 |
|---|---|---|---|
| slice-10 | 10 | 1,205 | be639f19 |
| slice-50 | 50 | 5,109 | f0214d54 |
| slice-200 | 200 | 21,295 | 6a58de05 |
| slice-500 | 500 | 55,642 | 57e3b4d6 |
Poznámka k účtování: toto sestavení Claude Code nevydává žádné metriky ani události OpenTelemetry, takže účtování po jednotlivých požadavcích se čte z bloků usage ve streamu Clauda a z výsledkového objektu v tiskovém režimu. Vyzkoušeno bylo 4 konfigurací exportéru a žádná nedala výstup. Jako křížovou kontrolu porovnává harness oba zdroje u každého běhu: 22 z 33 běhů se shoduje do 2 procent a 11, které se neshodují, nesou v summary.csv obě čísla.
Podle vzorku
| Slice and arm | Requests | cacheCreation | cacheRead | Total tokens | Approx USD | Wall clock s | Values delivered |
|---|---|---|---|---|---|---|---|
| slice-10 direct | 3.0 | 17,546 | 103,780 | 121,337 | 0.2602 | 23.4 | 10 of 10 |
| slice-10 mcp-path | 7.0 | 18,289 | 269,247 | 287,669 | 0.3362 | 17.3 | 10 of 10 |
| slice-50 direct | 3.0 | 22,704 | 105,376 | 128,091 | 0.4016 | 64.0 | 50 of 50 |
| slice-50 mcp-path | 13.5 | 18,523 | 541,119 | 560,011 | 0.4827 | 27.3 | 49 of 50 |
| slice-200 direct | 4.0 | 50,665 | 144,893 | 195,574 | 0.9510 | 143.4 | 198 of 200 |
| slice-200 mcp-path | 26.5 | 13,656 | 1,125,718 | 1,140,077 | 0.7553 | 78.6 | 195 of 200 |
| slice-500 direct | 3.5 | 92,294 | 140,597 | 232,903 | 2.2062 | 539.3 | 498 of 500 |
| slice-500 mcp-path | 24.0 | 24,068 | 1,032,698 | 1,057,235 | 0.8214 | 57.2 | none |
Třetí větev, pro úplnost. Při 500 klíčích nebyla podle zadání spuštěna.
| Slice and repetition | Requests | Total tokens | Approx USD | Wall clock s | Values delivered | Gate |
|---|---|---|---|---|---|---|
| slice-10 | 5.0 | 212,361 | 0.3693 | 35.3 | 10 of 10 | pass, spread 32.7 percent |
| slice-50 | 15.5 | 740,057 | 0.8774 | 162.0 | 50 of 50 | pass, spread 48.0 percent |
| slice-200 rep 2 | 15 | 1,000,865 | 2.6973 | 639.2 | 198 of 200 | fail, model fallback |
| slice-200 rep 3 | 9 | 478,525 | 3.0136 | 206.1 | 0 of 200 | fail, model fallback and session limit |
Co delegování mění
Delegovaná větev proti agentovi, který soubor překládá sám. Řádek pro 500 klíčů srovnatelný není, protože delegovaná větev nevytvořila žádný soubor.
| Slice | Delta tokens | Delta tokens percent | Delta USD approximate | Delta USD percent | Delta requests | Delta wall clock s |
|---|---|---|---|---|---|---|
| slice-10 | +166,332 | +137.1% | +0.0760 | +29.2% | +4.0 | -6.1 |
| slice-50 | +431,920 | +337.2% | +0.0811 | +20.2% | +10.5 | -36.8 |
| slice-200 | +944,503 | +482.9% | -0.1957 | -20.6% | +22.5 | -64.8 |
| slice-500 | not comparable |
Tokeny a peníze tyto větve neřadí stejně. V tokenech nedojde ke zlomu nikde mezi 10 a 500 klíči: delegovaná cesta stojí víc u každého měřeného vzorku. V přibližných dolarech se obě křivky protnou zhruba u 87 klíčů, protože delegovaná cesta vyměňuje čerstvý vstup za čtení z mezipaměti a to se účtuje hluboko pod ním. Při 200 klíčích je delegovaná cesta z těch dvou levnější v penězích, přestože spotřebuje téměř šestinásobek tokenů.
Kam jdou tokeny: náklad opravdu zůstává mimo kontext. U nejmenšího vzorku je celá výměna přes MCP 306 bajtů argumentů nástrojů a 707 bajtů výsledků nástrojů proti vstupnímu souboru o 1,205 bajtech a celé rozhraní nástrojů přidává oproti cestě agenta 743 tokenů vytvoření mezipaměti. Nákladem je počet požadavků. Každý dotaz job_status je plnohodnotný požadavek k API, který přehraje celou konverzaci, takže účet této větve určuje to, jak často se ptá, zda už místní model skončil: 7.0 požadavků při 10 klíčích, 26.5 při 200. Proložená spodní hranice u prázdného souboru je 244,502 tokenů. Ponechte vše ostatní beze změny a dejte této větvi počet požadavků cesty agenta, jak by to udělalo blokující volání nebo čekací nástroj, a táž práce nad 200 klíči přistane poblíž 183,575 tokenů proti 195,574. Poslední číslo je aritmetika nad měřeným nákladem na jeden požadavek, nikoli měřený běh.
Celý soubor
Projektováno, nikoli měřeno: soubor o 4,666 klíčích se nevejde do jednoho kontextového okna, takže projekce opakuje největší měřený vzorek, 200 klíčů, jako 24 částí. Je to aritmetika nad měřenými běhy.
| Path | Tokens | Approx USD | Claude requests | Wall clock |
|---|---|---|---|---|
| Claude Code alone (direct) | 4,693,764 | 22.82 | 96 | 0h57m |
| Claude Code plus local BetterTranslator (mcp-path) | 27,361,836 | 18.13 | 636 | 0h31m |
| Claude Code plus local BetterTranslator (mcp-value) | 24,020,760 | 64.74 | not published | 2h49m |
| BetterTranslator alone, no agent | 0 | 0.00 | 0 | not published |
Dvě buňky se neuvádějí. Počet požadavků u mcp-value nemá při 200 klíčích žádný podklad, který by prošel bránou, protože obě opakování spadla na jiný model. Místní čas na hodinách se neuvádí, protože si artefakty vzájemně odporují.
Řádek mcp-path je v penězích levnější než cesta agenta jen nad zlomem u 87 klíčů a k této ceně dojde s 27,361,836 tokeny proti 4,693,764. Projekce mcp-value stojí na bězích, které brána vyloučila, a je třeba ji číst jako horní hranici, ne jako výsledek.
Brána férovosti
Běh projde jen tehdy, když je jeho výstupní soubor objektem JSON, jehož sada klíčů i jejich pořadí přesně odpovídají vzorku, jehož hodnoty jsou všechny neprázdné řetězce, jehož multimnožina zástupných symbolů u každé hodnoty odpovídá zdroji a jehož žádná hodnota se nerovná svému zdroji. Poslední kontrola má jednu úlevu: hodnota se smí rovnat svému zdroji, když je každé abecední slovo v ní značkou na seznamu povolených, protokolem nebo kódem lokalizace, případně začíná velkým písmenem, což pokrývá názvy produktů a vlastní jména psaná velkými počátečními písmeny, nebo když je hodnotou příkazová řádka nesoucí název spustitelného souboru či dlouhý přepínač.
Napříč všemi 33 zaznamenanými běhy hlásí summary.csv 0 chyb v sadě klíčů, 0 chyb v pořadí klíčů a 0 chyb v zástupných symbolech. 29 z 33 běhů vůbec doručilo soubor. Každé vyloučení níže je nepřeložená hodnota, přechod na jiný model, limit sezení nebo chybějící soubor.
| Arm | Slice | Rep | Total tokens | Requests | Values | Reason |
|---|---|---|---|---|---|---|
| mcp-path | slice-50 | 2 | 581,184 | 14 | 49 of 50 | 1 value equal to its source outside the allowlist |
| mcp-path | slice-50 | 3 | 538,837 | 13 | 49 of 50 | 1 value equal to its source outside the allowlist |
| mcp-path | slice-200 | 2 | 1,549,789 | 36 | 195 of 200 | 4 values equal to their source outside the allowlist |
| mcp-path | slice-200 | 3 | 730,364 | 17 | 195 of 200 | 4 values equal to their source outside the allowlist |
| mcp-value | slice-200 | 2 | 1,000,865 | 15 | 198 of 200 | model fallback across claude-opus-5 and claude-opus-4-8 |
| mcp-value | slice-200 | 3 | 478,525 | 9 | 0 of 200 | model fallback, then API error 429 on the account session limit |
| mcp-path | slice-500 | 2 | 513,111 | 12 | 0 of 500 | output file was never written |
| mcp-path | slice-500 | 3 | 1,601,358 | 36 | 0 of 500 | output file was never written |
Z 33 běhů si 33 účtovalo požadavek, 1 skončilo na limitu sezení účtu a 3 spadlo z požadovaného modelu na jiný, což tyto běhy činí nesrovnatelnými.
Omezení
Server MCP stojí víc tokenů, ne míň. U každého měřeného vzorku spotřebovala víc než agent, který soubor překládá sám: o 137.1 procent víc při 10 klíčích, o 337.2 procent při 50, o 482.9 procent při 200. Její doložená výhoda jsou peníze nad zlomem u 87 klíčů, a ta výhoda existuje proto, že čtení z mezipaměti se účtuje pod čerstvým vstupem. Není to úspora tokenů a v žádné velikosti měřené zde se jí nestane.
Žádný soud o kvalitě neexistuje. Nic v tomto běhu nehodnotí přesnost, plynulost ani význam. Jediné měření na úrovni hodnot je to, zda se výstupní hodnota liší od své zdrojové. Na vzorcích, na kterých byl měřen, nechal místní engine 2.3 procenta hodnot v angličtině. Cesta agenta prošla bránou u každého vzorku. Toto srovnání pokrývá nepřeložené hodnoty a nic jiného. Jakékoli tvrzení o tom, jak dobře která strana překládá, leží mimo tyto artefakty.
Delegovaná cesta nevytvořila při 500 klíčích žádný soubor. Všech 3 opakování si naúčtovalo požadavky a nedodalo nic. Agent přestal čekat, zatímco místní úloha ještě běžela, a server MCP umírá se sezením, které jej spustilo, takže dokončená práce přišla vniveč. Tyto běhy jsou selháním dodání, ne levným výsledkem, a proto jsou vyloučeny z tabulky rozdílů a proto největší vzorek nemá žádné přímé srovnání.
Čísla za celý soubor jsou projekce. Žádný běh nikdy nepřeložil pod měřením všech 4,666 klíčů. Projekce násobí vzorek o 200 klíčích počtem 24. Jiné dělení na části nebo dosažení limitu kontextu či sezení v půli cesty výsledek mění.
Málo opakování. Dvě srovnatelná opakování na buňku, protože opakování 1 je vyloučeno jako zahřátí cache. Zpráva označuje buňky s velkým rozptylem: cestu agenta při 500 klíčích (15.0 procent), mcp-value při 10 klíčích (32.7 procent) a při 50 klíčích (48.0 procent).
Jeden soubor, jedna dvojice, jeden počítač. Jediný soubor en.json přeložený z angličtiny do češtiny, na jednom hostiteli s Windows, s jedním místním modelem v jedné kvantizaci, proti jedné verzi CLI a jednomu modelu Claude. Obě strany tohoto srovnání se v čase mění.
Jak to zopakovat
btbench prepare --source <path to en.json> --model claude-opus-5 --sizes 10,50,200,500
btbench run --run <run-id> --arms direct,mcp-path --reps 3
btbench collect --run <run-id>
btbench compare --run <run-id>
prepare prozkoumá server MCP, spočítá otisk zdroje a nařeže vzorky. run provede každou větev a každé opakování v čerstvém sezení. collect znovu odvodí summary.csv z přepisů. compare zapíše compare.md. Orchestrátorem je projekt v .NET, který se sestavuje do btbench.
Artefakty
Každý údaj výše se rozřeší na jeden z těchto souborů, na oddíl, řádek tabulky a sloupec, které registr zaznamenává. Ty čtyři, na které se údaje odvolávají, cestují spolu s webem, takže kontrola běží offline.
| Soubor | Obsah |
|---|---|
| report.md | Úplná zpráva, všechny větve a vzorky |
| compare.md | Přímé srovnání dvou větví |
| summary.csv | Jeden řádek na běh, každé měřené pole |
| environment.json | Verze, commit v gitu, sonda MCP, místní model, otisky korpusu |
| raw.jsonl | Jeden řádek na požadavek k API |
| runs.jsonl | Jeden řádek na běh, jak jej zaznamenal orchestrátor |
| logs | Přepisy stream-json a chybový výstup pro každý běh |