Lekce 04.2: Likvidace balastu (Killing Bloat)
🧠 Mentální model & teoretický rozbor
Kontextový balast (Context Bloat) je tichým zabijákem inteligence agenta. Balastem rozumíme jakýkoliv text v kontextovém okně, který:
- Nepřináší žádnou novou informaci pro řešení aktuálního úkolu.
- Rozmělňuje pozornost modelu nad podstatnými pravidly.
- Stojí peníze při každém dalším odeslání požadavku na API.
PŘÍKLAD BALASTU:Spuštění `npm test` vygeneruje:[============================= 100 % =============================]✓ 148 testů prošlo (zelená)✗ 1 test selhal: UserProfile > should render avatar at src/components/__tests__/UserProfile.test.tsx:42:15[Následuje 800 řádků stack trace a výpisů z jiných testů]
Z celého výpisu má pro agenta hodnotu POUZE 5 řádků s chybou.Zbylých 795 řádků je 100% čistý balast!🏢 Realistický scénář z praxe
Agent řeší chybu v jednom komponentním testu.
- Špatný postup: Agent spustí
npm test. Do kontextu se vysype výstup ze 70 testů (12 000 tokenů). V dalším kroku agent zkouší opravu a znovu spustínpm test(dalších 12 000 tokenů). Během 3 kroků je kontext plný identických zelených testů a model přestává vnímat zadání. - Správný postup: Vývojář instruuje agenta:
npm test -- UserProfile.test.tsx --bail 1. Do kontextu vstoupí pouhých 30 řádků přesně k věci.
💻 Konkrétní ukázky kódu & promptů
Filtrování terminálových výstupů pro ochranu kontextu:
# 1. Spuštění testu s ukončením při první chybě a tichým módemnpx vitest run src/components/UserProfile.test.tsx --bail 1 --reporter=basic
# 2. Omezení délky výpisu pomocí Unix nástrojů (head/tail)npm run build 2>&1 | tail -n 25
# 3. Vyhledání chyb v systémovém logu bez čtení celého souborugrep -i "error" /var/log/app.log | tail -n 20Mantinel v CLAUDE.md:
## Pravidla pro výstupy příkazů- Nikdy nespouštěj globální testy projektu. Vždy filtruj na konkrétní soubor.- Při prohledávání souborů používej `grep` nebo `ripgrep` s limitem na počet výsledků (max 10 řádků).⚠️ Analýza selhání & Anti-patterns
Chyba: Zobrazení minifikovaného bundlu nebo sourcemapy
Agent otevře soubor dist/bundle.js.map.
- Sourcemapa má velikost 2 MB (přes 400 000 tokenů).
- Kontext okamžitě exploduje, překročí maximální limit a sezení spadne s chybou
ContextWindowExceededError. - Obrana: Složky
distabuildmusí být striktně v.gitignore.
🛠️ Inženýrský postup krok za krokem (Playbook)
- Filtrujte testy: Spouštějte pouze test pro právě editovaný soubor.
- Ořezávejte logy: Používejte roury
| head -n 30nebo| grep -C 5 "Error". - Čtěte jen části souborů: Pokud soubor přesahuje 200 řádků, nechte agenta číst pouze relevantní blok řádků.
🧪 Praktické cvičení (Hands-on Lab)
Úkol:
Vyzkoušejte si oříznutí výstupu v terminálu.
Kroky:
- Spusťte příkaz, který generuje dlouhý výstup (např.
git lognebo výpis balíčkůnpm list). - Sledujte, jak výstup zaplní obrazovku.
- Nyní spusťte stejný příkaz s filtrem:
git log -n 3 --oneline. - Porovnejte množství předaných informací – druhý příkaz přenesl 90 % užitečné hodnoty při 5 % objemu tokenů!