Blog JSystems - uwalniamy wiedzę!

Szukaj

Z tego artykułu dowiesz się:

  • Jak działa prompt caching i dlaczego obniża koszty (automatycznie, bez konfiguracji)
  • Prawdziwe dane: to samo zapytanie o połowę taniej - i jak zmierzyć to samemu
  • Czym jest okno kontekstu i jak je czytać komendą /context
  • Różnica między /clear a /compact oraz jak działa auto-kompaktowanie
  • Jak monitorować koszt (/usage), dobierać model i prowadzić długie, tanie sesje

Praca z agentem AI kosztuje - każde zapytanie to tokeny, a tokeny to pieniądze. Naturalny odruch to martwić się, że długie sesje i duży kontekst muszą być drogie. Dobra wiadomość jest taka, że Claude Code ma wbudowany mechanizm, który sprawia, że jest dużo taniej, niż się wydaje: prompt caching. Co lepsze - działa automatycznie i nie musisz nic konfigurować. Warto tylko zrozumieć, dlaczego działa, żeby świadomie obniżać koszty.

Prompt caching w Claude Code: stały kontekst trafia do cache raz, a kolejne pytania czytają go wielokrotnie taniej
Stały kontekst (prompt systemowy, opisy narzędzi, CLAUDE.md) liczony jest raz, a potem czytany z cache za ułamek ceny

1. Jak działa prompt caching

Każde zapytanie do modelu niesie ze sobą sporo stałego kontekstu: instrukcję systemową, opisy wszystkich narzędzi, pliki pamięci (CLAUDE.md). To się prawie nie zmienia między wiadomościami, a mimo to normalnie trzeba by to przeliczać za każdym razem. Prompt caching to zmienia: ten powtarzalny kontekst trafia do cache przy pierwszym zapytaniu (to droższy, jednorazowy zapis), a przy kolejnych jest z niego czytany - wielokrotnie taniej niż liczenie od nowa. Im dłużej trwa sesja, tym bardziej się to opłaca.

Uwaga: prompt caching w Claude Code jest w pełni automatyczny. Niczego nie włączasz, nie ustawiasz żadnej flagi ani opcji w konfiguracji. Claude Code sam decyduje, który fragment zapytania zapisać do cache i sam czyta go z powrotem przy kolejnych turach. (Gdybyś pisał własną integrację na surowym API, musiałbyś zaznaczać to ręcznie parametrem cache_control. W Claude Code masz to za darmo, od pierwszego uruchomienia.)

2. Zobaczmy to na liczbach - i jak sprawdzić to samemu

To nie teoria: caching widać wprost w danych zużycia, i najlepiej sprawdzić go samodzielnie. Wystarczy uruchomić to samo zapytanie dwa razy w tym samym katalogu i porównać koszt. Klucz to tryb wsadowy (flaga -p, tzw. tryb headless) z wynikiem w formacie JSON - pokazuje surowe liczby tokenów, w tym te dotyczące cache. Sam koszt i pola cache wygodnie wyłuskać przez jq:

# 1. bieg - część kontekstu jeszcze dochodzi do cache (zapis_cache > 0)
claude -p "streść, co robi ten katalog" --output-format json | jq '{koszt: .total_cost_usd, zapis_cache: .usage.cache_creation_input_tokens, odczyt_cache: .usage.cache_read_input_tokens}'

# 2. bieg - to samo pytanie w ciągu ~5 min: nic nie tworzymy, wszystko z cache
claude -p "streść, co robi ten katalog" --output-format json | jq '{koszt: .total_cost_usd, zapis_cache: .usage.cache_creation_input_tokens, odczyt_cache: .usage.cache_read_input_tokens}'

Uwaga (Windows): samo claude --output-format json działa tak samo na każdym systemie, ale jq nie jest wbudowane w Windows - najpierw je zainstaluj (winget install jqlang.jq). Dalej to samo wywołanie różni się tylko cudzysłowami wokół filtra - w PowerShell pojedyncze (jak na Linux/macOS), w cmd.exe podwójne:

# PowerShell - pojedyncze cudzysłowy wokół filtra (jak na Linux/macOS)
claude -p "streść, co robi ten katalog" --output-format json | jq '{koszt: .total_cost_usd, zapis_cache: .usage.cache_creation_input_tokens, odczyt_cache: .usage.cache_read_input_tokens}'

# cmd.exe - ten sam filtr w podwójnych cudzysłowach
claude -p "streść, co robi ten katalog" --output-format json | jq "{koszt: .total_cost_usd, zapis_cache: .usage.cache_creation_input_tokens, odczyt_cache: .usage.cache_read_input_tokens}"

Nie chcesz instalować jq? Pomiń potok | jq … i odczytaj wprost z surowego JSON-a pola total_cost_usd, cache_creation_input_tokens oraz cache_read_input_tokens - to działa wszędzie bez dodatkowych narzędzi.

Różnica między biegami jest sednem mechanizmu: w drugim nic nie trzeba tworzyć od nowa (zapis_cache: 0), a cały stały kontekst czytany jest z cache za ułamek ceny:

# wynik 1. biegu
{ "koszt": 0.043006, "zapis_cache": 2247, "odczyt_cache": 14162 }
# wynik 2. biegu
{ "koszt": 0.022054, "zapis_cache": 0, "odczyt_cache": 16409 }
Dane usage z claude -p: pierwszy bieg - zapis 2247 i odczyt 14162 tokenów z cache, koszt 0,043 USD; drugi bieg - zapis 0, odczyt 16409 z cache, koszt 0,022 USD
Realne dane usage z naszego biegu: w pierwszym część kontekstu trafiła do cache (cache_creation), w drugim nic nie trzeba było tworzyć (cache_creation: 0), a kontekst odczytano z cache - i koszt spadł niemal o połowę

Liczby mówią wszystko: pierwszy bieg kosztował około 0,043 USD, drugi - niemal identyczny - już tylko 0,022 USD. To samo pytanie, ta sama odpowiedź, a koszt o połowę niższy, bo stały kontekst został odczytany z cache zamiast liczony od zera. Pola cache_creation_input_tokens i cache_read_input_tokens (oraz total_cost_usd) znajdziesz zawsze w wyniku claude -p --output-format json. Jeden warunek powtórzenia: prompt w obu biegach musi być identyczny co do znaku, a drugi bieg paść w ciągu mniej więcej pięciu minut - tyle żyje domyślny cache.

3. Kontekst to koszt - pilnuj okna kontekstu

Caching obniża cenę stałej części zapytania, ale jest jeszcze część zmienna: sama rozmowa i pliki, które agent czyta po drodze. Ta część rośnie z każdą turą i za nią płacisz normalnie. Dlatego drugi filar niskich kosztów to trzymanie w oknie tylko tego, co naprawdę potrzebne. Najpierw warto zrozumieć, co w tym oknie w ogóle siedzi.

Okno kontekstu to pamięć robocza modelu - ilość tekstu, którą Claude „widzi" naraz. Mieści się w nim więcej, niż się wydaje: instrukcja systemowa, opisy wszystkich narzędzi, pliki pamięci (CLAUDE.md), cała historia rozmowy oraz każdy plik, który agent po drodze przeczytał. Wszystko liczone w tokenach (token to kawałek słowa - fragment, na jaki modele dzielą tekst, z grubsza kilka znaków). Okno kontekstu jest pojemne, ale skończone: gdy się zapełnia, model zaczyna gubić najstarsze ustalenia, a każde zapytanie robi się droższe.

Zanim cokolwiek wyczyścisz, sprawdź, jak wygląda sytuacja. Komenda /context rysuje zużycie jako kolorową siatkę i rozbija je na kategorie: ile tokenów zajmuje prompt systemowy, ile opisy narzędzi, ile pliki pamięci, ile dostępne skille, ile sama rozmowa, a ile zostało wolnego miejsca.

Komenda /context w Claude Code: kolorowa siatka zużycia kontekstu z rozbiciem na prompt systemowy, narzędzia, pliki pamięci, skille, wiadomości i wolne miejsce
Wyjście /context z prawdziwej sesji: siatka zużycia i rozbicie na kategorie. Tu rozmowa dopiero się zaczęła, więc wolne jest jeszcze 98% okna

Ta jedna komenda odpowiada na najważniejsze pytanie: mam jeszcze zapas czy zbliżam się do ściany. Jeśli wolnego miejsca zostało niewiele, to sygnał, że pora coś z tym zrobić - i tu wchodzą dwie komendy, które najczęściej się myli.

4. /clear vs /compact - i auto-kompaktowanie

To najczęstsze nieporozumienie wśród osób uczących się Claude Code. Obie komendy „robią miejsce" w oknie, ale w zupełnie inny sposób, a pomylenie ich kosztuje albo utratą potrzebnych ustaleń, albo niepotrzebnym balastem, za który płacisz w każdej kolejnej turze.

Porównanie /clear i /compact: /clear wymazuje całą rozmowę, /compact streszcza ją zachowując wątek
Najprościej zapamiętać tak: /clear wymazuje pamięć, /compact ją streszcza

/clear to czysta kartka. Startuje nową sesję z pustym kontekstem - Claude zapomina całą dotychczasową rozmowę. Co ważne, poprzednia sesja nie znika bezpowrotnie: zostaje zapisana na dysku i wrócisz do niej w każdej chwili przez /resume. Po /clear model pracuje bez obciążenia, więc jego odpowiedzi są najtrafniejsze, a każda tura najtańsza - okno jest puste. Używasz go, gdy kończysz jedno zadanie i zaczynasz zupełnie inne.

/compact to skrót notatek. Zachowuje wątek bieżącego zadania, ale streszcza dotychczasową rozmowę do zwięzłego podsumowania, dzięki czemu zwalnia miejsce w oknie. Używasz go, gdy chcesz kontynuować to samo zadanie, ale rozmowa zrobiła się tak długa, że kontekst się zapełnił. Po kompaktowaniu Claude wciąż „wie", nad czym pracujecie, tylko w skróconej formie.

Wskazówka: jeśli masz wątpliwość, której komendy użyć, zadaj sobie jedno pytanie - czy to, co dotąd ustaliliśmy, jest mi jeszcze potrzebne? Jeśli tak, /compact. Jeśli zaczynasz coś niezwiązanego, /clear.

Nie musisz przy tym pilnować wszystkiego ręcznie. Claude Code ma auto-kompaktowanie: gdy kontekst zbliża się do limitu, agent sam wykonuje /compact, streszcza rozmowę i pracuje dalej, bez przerywania zadania. Ręcznie sięgasz po /compact wtedy, gdy chcesz świadomie zwolnić miejsce wcześniej - na przykład tuż przed dużym, wymagającym fragmentem. Auto-kompaktowanie to siatka bezpieczeństwa, ręczne kompaktowanie to świadome planowanie.

5. Monitoruj koszt (/usage) i dobieraj model

Skoro część kosztu jest zmienna, warto ją widzieć na bieżąco. Komenda /usage pokazuje koszt bieżącej sesji oraz zużycie planu (na kontach Pro/Max także limity tygodniowe). Dzięki temu wiesz, ile realnie wydajesz, zanim rachunek Cię zaskoczy.

Panel /usage w Claude Code: koszt sesji, zużycie planu w bieżącej sesji i tygodniu oraz podpowiedzi o wzorcach użycia - m.in. że dłuższe sesje są droższe nawet z cache i warto używać /compact w trakcie zadania oraz /clear przy zmianie tematu
Panel /usage (interfejs po angielsku): koszt bieżącej sesji, zużycie planu w sesji i w tygodniu oraz podpowiedzi o wzorcach użycia. Zwróć uwagę na wskazówkę na dole - sam Claude Code radzi tu /compact w trakcie zadania i /clear przy przejściu do nowego

Druga dźwignia to dobór modelu do zadania. Do rutynowych, mechanicznych zmian lżejszy i szybszy model najczęściej wystarcza i kosztuje wyraźnie mniej; mocny zostaw na trudne rzeczy - projektowanie, zawiłe debugowanie, pracę na dużym kontekście. Model przełączysz w trakcie sesji komendą /model, a to, który wybrać (Opus, Sonnet, Haiku czy tryb szybki), rozłożyliśmy w osobnym artykule o wyborze modelu w Claude Code.

Wskazówka: nie optymalizuj na siłę. Caching i tak załatwia większość oszczędności automatycznie, a sztuczne skracanie kontekstu potrafi obniżyć jakość odpowiedzi. Lepiej trzymać w oknie to, co naprawdę potrzebne (i kompaktować, gdy puchnie), niż w kółko walczyć o każdy token.

6. Nawyki na długie, tanie sesje

Kontekst zużywa się też przy zwykłej, produktywnej pracy: każdy przeczytany plik i każda odpowiedź coś zajmują. Poniżej prawdziwa sesja, w której Claude przeczytał jeden plik projektu i wyjaśnił jego działanie:

Prawdziwa sesja Claude Code: agent czyta plik projektu i wyjaśnia działanie funkcji, zużywając część kontekstu
Każda tura - przeczytany plik i odpowiedź - zajmuje część okna kontekstu. Przy długiej pracy to się sumuje

Żeby długa sesja została tania i nie zamieniła się w walkę z zanikającą pamięcią, trzymaj się kilku zasad:

NawykDlaczego pomaga
Jedna sesja = jedno zadaniePrzy zmianie tematu zrób /clear. Mieszanie zadań w jednym oknie to najszybszy sposób na bałagan w kontekście i wyższy koszt każdej tury.
Kompaktuj, zanim okno się zapcha (/compact)Streszczenie długiej rozmowy zmniejsza kontekst, a więc i koszt kolejnych tur - bez utraty wątku.
Trwałe ustalenia zapisuj do CLAUDE.mdPlik pamięci przetrwa kompaktowanie i wraca w każdej sesji. Luźna wzmianka w rozmowie może zniknąć przy streszczaniu.
Wracaj przez /resume, nie od zeraZamiast odtwarzać wczorajszy kontekst ręcznie, wznów zapisaną sesję - wraca z całą pamięcią.
Sprawdzaj koszt (/usage) i dobór modeluWidzisz, ile wydajesz, i możesz zejść na lżejszy model tam, gdzie mocny nie jest potrzebny.

7. Co z tego wynika

Najważniejszy wniosek jest uspokajający: długie, produktywne sesje są tańsze, niż się wydaje. Mechanizm, który najbardziej martwi początkujących - „skoro kontekst rośnie, to koszty muszą galopować" - jest w dużej mierze rozbrojony przez caching: stały kontekst płacisz raz, a potem korzystasz z niego po taniości. Reszta jest w Twoich rękach i sprowadza się do prostych nawyków: pilnuj okna kontekstu (/context), streszczaj albo czyść, gdy trzeba (/compact, /clear), trwałe rzeczy trzymaj w CLAUDE.md i dobieraj model do wagi zadania. Resztą zajmuje się Claude Code pod spodem - a Ty pracujesz spokojnie, nie licząc nerwowo każdego zapytania.

Szkolenie Claude Code - od zera do zespołu agentów AI, prowadzi Łukasz Matuszewski (JSystems)

Szkolenie Claude Code - od zera do zespołu agentów AI

Prompt caching i koszty, zarządzanie kontekstem, wybór modelu, tryb headless i systemy multi-agent - wszystko na żywym kodzie podczas trzydniowego szkolenia. Prowadzi Łukasz Matuszewski. Szkolenie ma termin gwarantowany - odbędzie się niezależnie od liczby zgłoszeń.

Sprawdź szkolenie Claude Code -->

Najczęściej zadawane pytania

Co to jest prompt caching w Claude Code?
To mechanizm, który zapisuje stały kontekst zapytania (prompt systemowy, opisy narzędzi, pliki pamięci CLAUDE.md) do cache przy pierwszym użyciu, a przy kolejnych zapytaniach czyta go z cache zamiast liczyć od nowa. Odczyt z cache jest wielokrotnie tańszy, więc dłuższe sesje kosztują mniej, niż się wydaje. Działa automatycznie, bez konfiguracji.
Ile można zaoszczędzić dzięki prompt cachingowi?
W naszym teście dwa identyczne zapytania w tym samym katalogu kosztowały kolejno około 0,043 i 0,022 USD - drugie było tańsze niemal o połowę, bo stały kontekst odczytano z cache zamiast tworzyć od nowa. Realna oszczędność zależy od tego, jak duży i powtarzalny jest kontekst, ale przy dłuższych sesjach jest znacząca.
Jak sprawdzić koszt sesji w Claude Code?
Komendą /usage, która pokazuje koszt bieżącej sesji i zużycie planu. Dokładne dane o tokenach (w tym cache_creation_input_tokens i cache_read_input_tokens) zobaczysz też w wyniku claude -p z flagą --output-format json. To pozwala monitorować, ile realnie wydajesz.
Jak obniżyć koszty pracy z Claude Code?
Pilnuj kontekstu komendą /context i kompaktuj długie rozmowy przez /compact, żeby nie nosić w oknie niepotrzebnego materiału. Do rutynowych zadań wybieraj lżejszy, tańszy model, a mocny zostaw na trudne. Nie optymalizuj jednak na siłę - prompt caching i tak załatwia większość oszczędności automatycznie.
Co to jest okno kontekstu w Claude Code?
Okno kontekstu to pamięć robocza modelu - ilość tekstu, którą Claude widzi naraz: prompt systemowy, opisy narzędzi, pliki pamięci (CLAUDE.md), historia rozmowy i przeczytane pliki. Jest ograniczone, więc bardzo długa rozmowa albo wczytanie wielu dużych plików potrafią je zapełnić. Gdy kontekst się przepełnia, model zaczyna gubić wcześniejsze ustalenia, a każde zapytanie robi się droższe, dlatego warto nim świadomie zarządzać.
Czym różni się /clear od /compact?
/clear startuje nową sesję z pustym kontekstem - Claude zapomina całą rozmowę (poprzednia zostaje na dysku, wrócisz przez /resume). /compact zachowuje wątek, ale streszcza dotychczasową rozmowę do podsumowania, żeby zwolnić miejsce. /clear używasz przy nowym, niezwiązanym zadaniu; /compact, gdy kontynuujesz to samo zadanie, a kontekst się zapełnił.
Czy muszę sam pilnować kompaktowania?
Nie. Claude Code ma auto-kompaktowanie: gdy kontekst zbliża się do limitu, sam wykonuje /compact i pracuje dalej. Ręcznie sięgasz po /compact wtedy, gdy chcesz świadomie zwolnić miejsce wcześniej - na przykład przed dużym, wymagającym fragmentem zadania.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...