SSD Nodes Learn Hosting plans →
Przewodniki Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-08-28

Claude Code: jak uniknąć wysokich kosztów sesji

Długa sesja Claude Code drastycznie zwiększa koszty przez przesyłanie całego kontekstu. Sprawdź komendę /context, usuń zbędne pliki i optymalizuj zużycie tokenów w swoim projekcie.

Jak zapobiec spowolnieniu i wysokim kosztom długiej sesji Claude Code

Długa sesja Claude Code staje się wolna i kosztowna, ponieważ każda iteracja przesyła ponownie cały kontekst, który stale rośnie. Rozwiązaniem jest utrzymywanie porządku w określonej kolejności. Uruchom /context, aby sprawdzić, co wypełnia okno kontekstowe, usuń elementy, za które płacisz przy każdym żądaniu, a następnie użyj /clear między niezwiązanymi zadaniami oraz /compact z instrukcją wewnątrz jednego długiego zadania. Pracuj w ciągłych blokach, ponieważ wygaśnięcie pamięci podręcznej promptu (prompt cache) zmienia tani odczyt w pełne ponowne przetwarzanie wszystkiego, co zostało wcześniej przekazane.

Przyczyny naliczania opłat wyjaśniono w liczniku tokenów w sesji agenta.

Zapoznaj się z /context przed wprowadzeniem jakichkolwiek zmian

Nie zgaduj, co wypełnia okno kontekstowe. Claude Code przekaże te informacje.

/context [all] wyświetla bieżące wykorzystanie kontekstu w formie kolorowej siatki wraz z sugestiami optymalizacji dla narzędzi intensywnie korzystających z kontekstu oraz informacjami o nadmiernym zużyciu pamięci; all rozwija szczegółowe zestawienie poszczególnych elementów w trybie pełnoekranowym. Wynik należy interpretować jako pięć grup:

  • Prompt systemowy. Instrukcje sterujące Claude Code. Stałe dla danej sesji.
  • Definicje narzędzi. Schemat każdego narzędzia, które agent może wywołać, w tym wszystkich podłączonych serwerów MCP (Model Context Protocol).
  • Pliki pamięci. CLAUDE.md oraz pamięć automatyczna, ładowane przy starcie sesji.
  • Pliki i wyniki narzędzi. Każdy odczytany plik oraz wszystko, co zwróciły wykonane polecenia.
  • Historia wiadomości. Twoje zapytania i odpowiedzi agenta.

Pierwsze trzy elementy stanowią stały koszt, ponoszony przy każdym zapytaniu przez cały czas trwania sesji. Dwa ostatnie elementy rosną. Zredukuj stały koszt jednorazowo na początku; rosnącą część zarządzaj w sposób ciągły.

Dwa ciągi znaków informują o zapełnieniu okna:

Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.
Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.

Pierwszy oznacza twardy limit, a zapytanie zostaje odrzucone; odpowiedni błąd API (application programming interface) ma postać Prompt is too long. Drugi to okno kompresji, które może znajdować się poniżej rzeczywistego okna kontekstowego modelu w przypadku modelu o pojemności 1 miliona tokenów. Zapytania nadal kończą się powodzeniem po jego przekroczeniu, więc jest to ostrzeżenie, a nie odmowa.

W planie płatnym /usage dodaje drugą połowę, oznaczając zachowania takie jak długi kontekst lub chybienia pamięci podręcznej (cache misses) oraz przypisując niedawne użycie do poszczególnych umiejętności, subagentów i serwerów MCP. Jeśli narzędzie informuje, że limit został już wyczerpany, okno limitu, na które oczekujesz decyduje o tym, czy przycięcie kontekstu pomoże w danej chwili, czy też konieczne jest wybranie innej ścieżki pracy.

CLAUDE.md to stały podatek, więc utrzymuj go w zwięzłej formie

Twój CLAUDE.md jest ładowany do kontekstu na początku sesji i pozostaje w nim. Jeśli zawiera on szczegółową procedurę wdrożeniową, te tokeny są obecne, nawet gdy poprawiasz literówkę w pliku testowym. Wytyczne Anthropic zalecają uwzględnianie tylko niezbędnych informacji i utrzymywanie pliku poniżej 200 linii.

Przenieś procedury do umiejętności (skills). Umiejętność ładuje się tylko w momencie wywołania, więc workflow uruchamiany dwa razy w tygodniu nie generuje kosztów w pozostałe dni. Umiejętności mają własny budżet po kompresji: treści są ponownie wstrzykiwane, z limitem 5000 tokenów na umiejętność i 25 000 łącznie, przy czym najstarsze są usuwane jako pierwsze. Obcinanie zachowuje początek pliku, więc umieszczaj najważniejsze instrukcje blisko początku SKILL.md.

To, co przetrwa kompresję, decyduje o tym, gdzie powinna znajdować się instrukcja.

  • Prompt systemowy i styl wyjściowy pozostają niezmienione, ponieważ nie są częścią historii wiadomości.
  • CLAUDE.md z głównego katalogu projektu, reguły o nieokreślonym zasięgu oraz pamięć automatyczna są ponownie wstrzykiwane z dysku.
  • Reguła z frontmatterem paths: jest tracona do momentu ponownego odczytania pasującego pliku.
  • Zagnieżdżony CLAUDE.md w podkatalogu jest tracony do momentu odczytania pliku z tego podkatalogu.
  • Hooki pozostają nienaruszone, ponieważ hook działa jako kod i nigdy nie trafia do kontekstu.

Zatem reguła, od której zależy działanie, powinna znajdować się w CLAUDE.md w głównym katalogu projektu: Claude Code najpierw czyści starsze wyniki narzędzi, a następnie je podsumowuje, więc instrukcje z wczesnego etapu konwersacji mogą zostać utracone. Edytuj pamięć za pomocą /memory. Claude Code przechowuje kopię załadowaną na początku sesji, więc przycięcie w trakcie sesji zachowuje cache promptu i nie ma zastosowania aż do następnego /clear, /compact lub restartu. Utrata kontekstu to tylko jeden z powodów, dla których reguła przestaje być przestrzegana, więc jeśli reguła jest wyraźnie widoczna w oknie, a mimo to jest ignorowana, przeanalizuj pozostałe przyczyny przed jej przepisaniem.

/clear między zadaniami, /compact wewnątrz jednego

Te dwa polecenia wydają się zamienne, lecz różnią się znacząco pod względem kosztów.

/clear [name] rozpoczyna nową konwersację z pustym kontekstem. Nie wysyła żadnego żądania, więc nie generuje kosztów. Przekaż nazwę, aby oznaczyć poprzednią konwersację w selektorze /resume; /reset oraz /new to aliasy. Używaj tego polecenia w momencie przełączania się na niezwiązane zadanie, ponieważ w przeciwnym razie stare zadanie byłoby ponownie wysyłane i rozliczane przy każdej wiadomości w nowym wątku.

/compact [instructions] zwalnia kontekst, kontynuując tę samą konwersację: podsumowuje dotychczasową historię i zastępuje ją. Używaj tego wewnątrz jednego długiego zadania, w którym nadal potrzebujesz zachowania ciągłości.

Zawsze podawaj /compact instrukcję. Samo /compact tworzy podsumowanie w oparciu o domyślny prompt, który nie "wie", która część pracy jest nadal potrzebna. Instrukcja pozwala zachować odpowiedni kontekst:

/compact focus on the auth bug fix
/compact keep only the plan and the diff

Jeśli wykonujesz kompaktowanie z tego samego powodu za każdym razem, umieść stałą instrukcję w pliku CLAUDE.md swojego projektu w sekcji # Compact instructions. W nowej sesji /compact wyświetla Not enough messages to compact., co oznacza jedynie, że historia jeszcze nie istnieje.

Często mylone są dwa rodzaje kosztów. Żądanie podsumowania współdzieli prefiks, więc odczytuje istniejącą pamięć podręczną zamiast przetwarzać historię od nowa, a większość czasu zajmuje generowanie podsumowania. Kompaktowanie dużego kontekstu nadal stanowi duże żądanie, ponieważ konwersacja poddawana podsumowaniu jest daną wejściową. Kolejny krok po kompaktowaniu nie jest częścią wolną: przebudowuje on pamięć podręczną dla znacznie krótszego promptu.

Istnieją dwa tańsze polecenia. /rewind [description] przywraca kod i konwersację do punktu kontrolnego; w przypadku ścieżki, którą chcesz całkowicie porzucić, jest to lepsze rozwiązanie niż kompaktowanie, ponieważ ucina historię do prefiksu, który jest już w pamięci podręcznej. /recap dołącza podsumowanie jako wynik polecenia zamiast zastępować historię, dzięki czemu zbuforowany prefiks pozostaje nienaruszony.

Automatyczne kompaktowanie uruchamiane wielokrotnie wyświetla następujący komunikat:

Autocompact is thrashing: the context refilled to the limit...

Kompaktowanie zakończyło się powodzeniem, ale plik lub wynik działania narzędzia kilkakrotnie zapełnił okno, więc Claude Code przestał ponawiać próbę. Odzyskaj kontrolę, odczytując zbyt duży plik w zakresach linii, uruchamiając /compact z fokusem pomijającym duży wynik, przenosząc tę pracę do subagenta lub używając /clear, jeśli wcześniejsza konwersacja została zakończona.

Serwery MCP generują stałe narzuty

Każdy podłączony serwer MCP zwiększa koszt każdego żądania w trakcie trwania sesji. Koszt ten jest naliczany niezależnie od tego, czy wywołujesz narzędzia z danego serwera.

Claude Code łagodzi ten problem. Definicje narzędzi MCP są domyślnie odroczone, więc do kontekstu trafiają jedynie ich nazwy, dopóki Claude nie użyje konkretnego narzędzia. Uruchom /context, aby sprawdzić rzeczywisty koszt swoich serwerów, oraz /mcp disable <name>, aby usunąć serwer, którego dzisiaj nie będziesz używać. Jeśli uruchamiasz własne serwery MCP na VPS, ta sama zasada ogranicza liczbę narzędzi, które powinien udostępniać pojedynczy serwer.

Wykonuj te czynności na początku sesji. Podczas gdy definicje pozostają odroczone, podłączanie lub odłączanie serwera jedynie dopisuje informacje do konwersacji, a pamięć podręczna pozostaje aktywna. W przypadkach, gdy definicje są ładowane do prefiksu (ponieważ wyszukiwanie narzędzi jest wyłączone lub serwer jest wyłączony z mechanizmu odraczania), ta sama zmiana powoduje, że każde kolejne żądanie wymusza ponowne odczytanie wszystkich danych.

Filtrowanie szczegółowych danych wyjściowych narzędzi przed wprowadzeniem ich do kontekstu

Wynik działania narzędzia staje się danymi wejściowymi, które są przesyłane ponownie w każdej kolejnej turze konwersacji. Test, który generuje 20,000 tokenów danych wyjściowych, nie jest kosztem jednorazowym: płacisz za niego ponownie w każdej turze, dopóki dane te nie opuszczą okna kontekstowego.

Filtruj dane u źródła. Zastosowanie skryptu (hook), który ogranicza wynik testu tylko do błędów przed przekazaniem go do Claude, zamienia ścianę tekstu w kilkaset tokenów – zarówno w bieżącej turze, jak i przy każdym kolejnym przesyłaniu.

npm test 2>&1 | grep -E "FAIL|Error:" | head -40

Skrypty (hooks) same w sobie nie trafiają do kontekstu, ponieważ są wykonywane jako kod. Stosuj to rozwiązanie dla każdego narzędzia, którego dane wyjściowe przekraczają długość jednego ekranu. Ta sama logika dotyczy plików o długości 3,000 linii: proś o konkretny zakres linii, ponieważ cały plik pozostaje w oknie kontekstowym po jego wczytaniu.

Określenie zakresu odczytu przez agenta i delegowanie czasochłonnych zadań

Prompt wskazujący konkretny plik oraz objaw powoduje odczytanie tego pliku przez agenta. Ogólne polecenie uporządkowania projektu skutkuje odczytaniem przez agenta wszystkich plików uznanych za istotne, a każdy z tych odczytów zajmuje miejsce w oknie kontekstu.

Deleguj zadania generujące dużą ilość danych do podagenta. Uruchomienia testów oraz przetwarzanie logów zużywają znaczną część kontekstu; podagent przechowuje te dane wyjściowe we własnym oknie i zwraca jedynie podsumowanie. Kompromis polega na tym, że podagent buduje własną pamięć podręczną, co przy pierwszym wywołaniu nie przynosi trafień, a czas życia pamięci podręcznej wynosi 5 minut, nawet w ramach subskrypcji. Delegowanie skutecznie chroni główny kontekst. Nie zawsze jednak prowadzi to do zmniejszenia całkowitej liczby tokenów.

Zegar pamięci podręcznej: praca w sesjach

Caching promptów sprawia, że ponowne przesyłanie danych staje się opłacalne: koszt odczytu prefiksu wynosi 0.1x podstawowej stawki wejściowej, w porównaniu do 1.25x przy zapisie lub 2x przy zapisie z godzinnym okresem ważności. Każde użycie odświeża wpis bez dodatkowych kosztów, więc zegar odlicza czas od ostatniego użycia. Te mnożniki określają strukturę rachunku, ale nie jego wysokość, dlatego należy zestawić je z rzeczywistym kosztem miliona tokenów, aby przeliczyć pełne okno kontekstowe na kwotę w dolarach.

Długość okresu ważności zależy od sposobu uwierzytelniania, dlatego ogólne stwierdzenie, że „pamięć podręczna wygasa po pięciu minutach”, jest nieścisłe.

  • W ramach subskrypcji Claude, Claude Code automatycznie korzysta z godzinnego okresu ważności.
  • Po przekroczeniu limitu planu i przejściu na kredyty zużycia, za które naliczane są opłaty, okres ten skraca się do pięciu minut.
  • W przypadku korzystania z API key lub dostawcy chmurowego, okres ten wynosi pięć minut. ENABLE_PROMPT_CACHING_1H=1 pozwala na wybór godzinnego okresu ważności, a FORCE_PROMPT_CACHING_5M=1 wymusza jego skrócenie.

Zalecenie dotyczące rytmu pracy pozostaje takie samo: należy pracować w ciągłych sesjach, ponieważ przerwa w aktywności przekraczająca okres ważności sprawia, że przy kolejnym zapytaniu konieczne jest ponowne zapisanie całego zgromadzonego prefiksu. Odłączona sesja Claude Code w tmux nie generuje kosztów podczas bezczynności, jednak to właśnie czas bezczynności powoduje utratę rozgrzanej pamięci podręcznej.

Niektóre działania powodują utratę pamięci podręcznej nawet podczas aktywnej pracy: przełączanie modeli, zmiana poziomu wysiłku, włączenie trybu fast mode, łączenie lub rozłączanie serwera MCP, włączanie lub wyłączanie wtyczki, odrzucenie całego narzędzia, kompaktowanie oraz aktualizacja Claude Code. /model zazwyczaj wywołuje zaskoczenie, ponieważ każdy model posiada własną pamięć podręczną, więc kolejne żądanie odczytuje całą historię bez trafień w pamięci podręcznej, mimo że zawartość jest identyczna. Ten ponowny odczyt jest rozliczany według stawek modelu docelowego, więc przełączenie na Fable w trakcie sesji powoduje naliczenie opłaty za całą zgromadzoną historię według opublikowanej stawki wejściowej Fable 5.

Edycja plików, edycja CLAUDE.md, wywoływanie umiejętności i poleceń, uruchamianie /recap, przewijanie oraz tworzenie subagenta nie powodują utraty pamięci podręcznej. Jest ona ograniczona do jednej maszyny i jednego katalogu, więc dwie sesje w różnych katalogach nie współdzielą pamięci podręcznej. Zakres ten jest przypisany do CLI, a nie do konta, więc dane te nie przenoszą się do aplikacji desktopowej Claude, która w systemie Linux jest osobną instalacją beta działającą obok CLI.

Aby sprawdzić, czy caching działa, należy zapoznać się z current_usage. cache_creation_input_tokens zostało zapisane przy użyciu stawki zapisu do pamięci podręcznej; cache_read_input_tokens zostało obsłużone przy około jednej dziesiątej standardowej stawki wejściowej. Wysoki stosunek odczytów do utworzeń jest pożądany. Jeśli liczba utworzeń pozostaje wysoka przez kolejne tury, oznacza to, że jakiś element prefiksu ulega ciągłym zmianom.

Czy większe okno kontekstowe rozwiązuje ten problem?

Częściowo. Kilka obecnych modeli obsługuje okno kontekstowe o wielkości 1 miliona tokenów, a kompresja działa w ten sam sposób przy wyższym limicie. Aspekty ekonomiczne pozostają niezmienne, ponieważ pełny prompt jest nadal przesyłany ponownie i rozliczany w każdej turze. Większe okno decyduje o tym, kiedy użytkownik jest zmuszony do działania; higiena pracy decyduje o kosztach. Jeśli problemem jest rachunek, a nie limit, który plan Claude pasuje do Twojego sposobu pracy decyduje o tym, czy wydajesz dolary, czy limit dostępny w ramach planu.

Edycja kontekstu i kompresja w API to różne zagadnienia

Jeśli budujesz własnego agenta w oparciu o Messages API, nie masz dostępu do poleceń typu slash i musisz zaimplementować to samodzielnie. Uwzględnij ten nakład pracy od samego początku, ponieważ API nie posiada darmowego poziomu poza niewielkim kredytem startowym, więc każda tura nieprzyciętej historii jest w pełni płatna. Wybór dostawcy determinuje rachunek jeszcze przed jakimkolwiek przycięciem, dlatego jeśli decyzja nie została jeszcze podjęta, oszacuj koszt tego samego obciążenia w obu API, zamiast porównywać jedynie stawki za token. Dwie funkcje po stronie serwera realizują to zadanie, ale nie są to te same funkcje.

Edycja kontekstu selektywnie usuwa określoną zawartość z historii konwersacji w miarę jej wzrostu, zastępując każdy usunięty element tekstem zastępczym, aby Claude wiedział, że coś zostało usunięte. Jest to wersja beta: wyślij anthropic-beta: context-management-2025-06-27 i skonfiguruj strategie w context_management.edits. clear_tool_uses_20250919 usuwa wyniki narzędzi, a clear_thinking_20251015 zarządza blokami myślowymi. Domyślne wartości trigger to 100 000 tokenów wejściowych, keep to 3 ostatnie użycia narzędzi, a clear_tool_inputs to false, dzięki czemu dane wejściowe pozostają, a usuwane są tylko wyniki.

Kompresja generuje podsumowanie i zastępuje nim pełną historię konwersacji. Jest to również wersja beta: wyślij anthropic-beta: compact-2026-01-12 i użyj typu edycji compact_20260112. Wartość wyzwalająca domyślnie wynosi {"type": "input_tokens", "value": 150000}, a minimalna wartość to 50 000.

Kompresja posiada jedną zasadę przekazywania, która może powodować błędy w działaniu agentów. Odpowiedź rozpoczyna się od bloku zawartości compaction zawierającego podsumowanie, po którym następuje zwykły blok tekstowy. Musisz przekazać ten blok z powrotem w kolejnych żądaniach, a API następnie usunie wszystkie bloki zawartości znajdujące się przed nim. W praktyce: dołącz całość response.content, a nie tylko tekst.

Dokumentacja Anthropic określa kompresję po stronie serwera jako główną strategię zarządzania kontekstem w długotrwałych konwersacjach, a edycję kontekstu jako opcję zapewniającą bardziej precyzyjną kontrolę nad tym, co jest usuwane. Najpierw sprawdź wsparcie modelu. Obecne modele Opus, Sonnet i Fable obsługują kompresję; claude-haiku-4-5 jej nie obsługuje, a aktualna lista znajduje się na stronie dotyczącej kompresji. Żadna z tych wersji beta nie steruje funkcją /compact w Claude Code, którą dokumentacja opisuje jako jednorazowe żądanie podsumowania wysyłane przez klienta.

FAQ

Dlaczego sesja Claude Code staje się wolniejsza i droższa w miarę upływu czasu?

Ponieważ cała konwersacja jest przesyłana ponownie przy każdym kroku, więc jednowierszowe pytanie w sesji otwartej przez cały dzień niesie ze sobą historię całego dnia. Prompt caching utrzymuje niskie koszty, gdy pamięć podręczna jest aktywna, przy stawce 0.1x bazowej ceny wejściowej za odczyt; gdy zapytanie nie trafia do pamięci podręcznej, ten sam prefiks jest zapisywany ponownie przy stawce 1.25x. Uruchom /context, aby sprawdzić, co wypełnia okno kontekstowe, i przeczytaj za co naliczane są opłaty w sesji Claude Code, aby poznać mechanizm rozliczeń.

Jaka jest różnica między /clear a /compact w Claude Code?

/clear rozpoczyna nową konwersację z pustym kontekstem. Nie wysyła żadnego żądania, więc nie generuje kosztów i jest właściwym wyborem przy przełączaniu się między niezwiązanymi zadaniami. /compact utrzymuje tę samą konwersację i zastępuje historię jej podsumowaniem, co czyni ją właściwym wyborem w trakcie jednego długiego zadania. Należy określić zakres, tak jak w /compact keep only the plan and the diff, ponieważ instrukcja decyduje o tym, co zostanie zachowane.

Jak sprawdzić, co zajmuje okno kontekstowe w Claude Code?

Uruchom /context lub /context all, aby uzyskać pełne zestawienie dla każdego elementu. Wyświetla ono prompt systemowy, definicje narzędzi, serwery MCP, pliki pamięci oraz historię w formie kolorowej siatki, wraz z sugestiami dotyczącymi narzędzi obciążających kontekst i nadmiaru danych w pamięci. W planie płatnym /usage przypisuje również niedawne zużycie do poszczególnych umiejętności, subagentów i serwerów MCP.

Czy powinienem używać okna kontekstowego o rozmiarze 1 miliona tokenów zamiast kompaktowania?

Większe okno jedynie odwleka problem w czasie, zamiast go rozwiązywać. Kilka obecnych modeli obsługuje okno kontekstowe o rozmiarze 1 miliona tokenów, w tym Opus 4.8 oraz Sonnet 5, a kompaktowanie działa w nich w ten sam sposób. Każdy krok nadal przesyła ponownie pełny prompt i nadal generuje za niego opłaty, więc konwersacja o rozmiarze 400 000 tokenów jest kosztowna niezależnie od tego, czy mieści się w oknie, czy nie.

Jaka jest różnica między edycją kontekstu a kompaktowaniem w Claude API?

Edycja kontekstu selektywnie usuwa starą zawartość, głównie wyniki narzędzi, pozostawiając tekst zastępczy w miejscu każdego z nich, aby Claude wiedział, że zostały usunięte. Kompaktowanie generuje podsumowanie i zastępuje nim pełną historię. Dokumentacja Anthropic określa kompaktowanie jako główną strategię dla długotrwałych konwersacji, a edycję kontekstu pozycjonuje jako opcję o większej precyzji. Obie funkcje są w fazie beta, posiadają własne nagłówki i obie są niezależne od /compact w Claude Code.