Jak šetřím tokeny v Claude Code: Opus řídí, Sonnet maká

Minulý týden jsem za jeden den spálil víc tokenů než za celý předchozí týden dohromady.
Nebyl to žádný experimentální projekt. Byl to crawler. Multi-site scraper, který běží v Dockeru — 20 kontejnerů, každý stahuje data z jiného webu. Některé padaly, jiné vracely nesmysly, pár jich viselo na timeoutu. A já seděl v jednom dlouhém Claude Code chatu s Opusem a jeden po jednom debugoval logy, fixoval selektory, upravoval retry logiku.
Opus na všechno. Celé logy kopírované do kontextu. Jeden nekonečný chat.
Pak jsem se podíval na spotřebu a došlo mi, že takhle to dál nejde. Ne proto, že by Opus nefungoval — fungoval skvěle. Ale 80 % toho, co jsem po něm chtěl, nepotřebovalo nejmocnější model na planetě. Potřebovalo to chytrý systém.
Tady je ten systém.
Hierarchie modelů: kdo na co
První věc, kterou jsem si musel přiznat: ne každý úkol potřebuje stejný mozek.
Opus — stratég
Opus je drahý. A právě proto ho chceš používat jen tam, kde jeho schopnosti skutečně potřebuješ:
- Analýza celého systému — "podívej se na logy z 20 kontejnerů a řekni mi, co se děje"
- Architektonická rozhodnutí — "máme 5 webů s anti-bot ochranou, jaká je nejlepší strategie?"
- Review a finální kontrola — "zkontroluj, jestli ty 3 fixy dávají smysl dohromady"
Opus exceluje tam, kde potřebuješ držet v hlavě velký kontext a dělat komplexní rozhodnutí.
Sonnet — tahoun
Sonnet je levnější a na většinu konkrétních úkolů naprosto dostačuje:
- Fix konkrétního scraperu podle chybového logu
- Úprava CSS selektorů, když se změní layout webu
- Psaní nového parseru podle vzoru existujícího
- Debugging jednoho kontejneru
Tady je klíčový insight: Sonnet nepotřebuje znát celý projekt. Stačí mu relevantní kontext — log, skript, zadání. A přesně to je důvod, proč je tak efektivní.
Haiku — runner
Na jednoduché, mechanické úkoly:
- Formátování a čištění dat
- Generování boilerplate kódu
- Jednoduchý refactoring
- Grep v logách a extrakce relevantních řádků
Prakticky
Scraper pro jeden eshop padá na HTTP 403. Nepotřebuješ Opus, aby opravil rotaci headers — pošleš Sonnet relevantní kus logu a skript, on to fixne. Opus si necháš na moment, kdy potřebuješ redesignovat celou scraping strategii pro 5 webů najednou.
V Claude Code to vypadá takhle:
# Opus na strategii
claude --model opus "analyzuj chyby ve všech scraperech a navrhni postup oprav"
# Sonnet na konkrétní fix
claude --model sonnet "tady je log z eshop-alza kontejneru a scraper skript, oprav selektor"
Agent delegace: Sonnet jako tvůj tým
Tady se to začíná opravdu vyplácet. Místo jednoho velkého Opus chatu, kde řešíš všechno postupně, deleguj konkrétní úkoly na subagenty s menším modelem.
Představ si to: běží ti 20 kontejnerů. Tři scrapery padají. Starý přístup:
- Opus přečte log prvního scraperu (kontext roste)
- Opus fixne první scraper (kontext roste)
- Opus přečte log druhého scraperu (kontext roste dál)
- Opus fixne druhý scraper (kontext je už obrovský)
- ... a tak dále
Každý další fix je dražší, protože model čte celý předchozí kontext znovu a znovu.
Nový přístup:
- Opus se podívá na přehled chyb a rozhodne strategii
- Na každý fix se spustí subagent se Sonnetem — dostane jen to, co potřebuje
- Opus pak review výsledky
Subagent dostane čistý štít. Žádný balast z předchozích fixů, žádné staré logy. Jen: "tady máš log, tady máš skript, oprav to."
Klíčový insight
Nejdražší není model, ale kontext. Když Opus drží v hlavě celý projekt a ty mu posíláš další a další logy, platíš za každý token v kontextu při každé další zprávě. Subagent s čistým kontextem a Sonnetem je dramaticky levnější než Opus s nabobtnaným kontextem.
V praxi to vypadá tak, že Opus spotřebuje třeba 6 000 tokenů na analýzu a review, a tři Sonnet subagenty dohromady dalších 8 000 na samotné fixy. Celkem ~14 000 tokenů. Kdyby to samé dělal Opus v jednom chatu, jsi klidně na 45 000+.
Úspora: ~70 %.
A to je konzervativní odhad — čím víc fixů v jednom chatu, tím víc roste kontext a tím víc platíš za každou další zprávu.
Kontext management: neplatit za vzduch
Tokeny neplatíš jen za odpovědi. Platíš hlavně za kontext — za všechno, co model musí přečíst, než ti odpoví. Čím delší konverzace, tím dražší každá další zpráva.
/compact — shrň a jeď dál
Po delší debugging session, kde jsi prošel 5 logů a opravil 3 věci, máš kontext plný starých informací. Příkaz /compact shrne dosavadní konverzaci do kratšího souhrnu. Model ví, co se dělo, ale nemusí číst každý řádek logu, který jsi mu před hodinou vložil.
Používám ho po každém větším fixu. Opravil jsem scraper, ověřil že běží → /compact → další úkol.
/clear — čistý start
Když přecházíš z fixu jednoho scraperu na úplně jiný problém, nemá smysl táhnout starý kontext sebou. /clear a začneš s čistým chatem. Je to zadarmo a ušetří ti tokeny na všech následujících zprávách.
CLAUDE.md jako permanentní paměť
Tohle je zásadní. Místo toho, abys na začátku každého chatu vysvětloval kontext projektu, máš CLAUDE.md v kořenu repozitáře. Claude Code ho načte automaticky při startu.
V mém scraper projektu tam mám:
- Strukturu kontejnerů a co který dělá
- Konvence pro psaní scraperů (retry logika, error handling, formát výstupu)
- Časté problémy a jejich řešení
Model to vidí vždy, nemusím to opakovat. A protože se to načítá jen jednou na začátku, je to výrazně efektivnější než copy-paste do každého chatu.
Cílené logy, ne celé logy
Tohle zní triviálně, ale dělá obrovský rozdíl. Místo:
docker logs scraper-alza
...což ti vyplácne tisíce řádků, posílej jen to relevantní:
docker logs scraper-alza 2>&1 | tail -50
docker logs scraper-alza 2>&1 | grep -i error | tail -20
50 řádků místo 5 000. Model nepotřebuje vidět tisíce úspěšných requestů, aby pochopil jeden error. A ty neplatíš za vzduch.
Systém v kostce
| Situace | Model | Proč |
|---|---|---|
| Analýza celého systému | Opus | Potřebuje velký kontext a komplexní úsudek |
| Fix konkrétního scraperu | Sonnet (subagent) | Stačí mu relevantní kontext, je 5× levnější |
| Jednoduchý refactoring | Haiku | Mechanická práce, nepotřebuje přemýšlet |
| Po každém fixu | /compact | Zmenší kontext, ušetří na dalších zprávách |
| Nový problém | /clear | Čistý start, žádný balast |
| Opakující se kontext | CLAUDE.md | Jednou zapsat, vždy k dispozici |
Co si z toho odnést
Nepřestal jsem používat Opus. Opus je skvělý a na strategická rozhodnutí ho nic nenahradí. Ale přestal jsem ho plýtvat na věci, které zvládne Sonnet za zlomek ceny.
Celý trik je v tom, jak o práci s AI přemýšlíš. Není to jeden model, jeden chat, jeden kontext. Je to tým — stratég, tahouni a runnery — každý na svém místě.
A ta úspora 70 % tokenů? To není teorie. To je reálný rozdíl na mém scraper projektu, kde tenhle workflow běží každý den.
Příště se možná podíváme na to, jak si nastavit custom hooks, které ti token usage logují automaticky. Ale to je na jiný článek.