SSD Nodes Learn
Przewodniki Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-07-24

Jak zmniejszyć koszty i przyspieszyć Claude Code

Każda iteracja przesyła cały kontekst. Dowiedz się, jak użyć /context oraz komend clear i compact, aby uniknąć wysokich opłat za przesyłanie tokenów.

Jak zapobiec spowolnieniu i wysokim kosztom podczas długich sesji Claude Code

Długa sesja Claude Code staje się wolna i kosztowna, ponieważ każda iteracja przesyła cały kontekst, który stale rośnie. Rozwiązaniem jest zachowanie higieny pracy w określonej kolejności. Należy uruchomić /context, aby sprawdzić, co zajmuje pamięć podręczną, usunąć elementy generujące koszty przy każdym zapytaniu, a następnie użyć /clear między niezwiązanymi zadaniami oraz /compact wraz z instrukcją w ramach jednego długiego zadania. Należy pracować w ciągłych blokach, ponieważ wyczyszczenie pamięci podręcznej promptów (prompt cache) zamienia tani odczyt w pełny proces ponownego przesyłania całej historii rozmowy.

Wyjaśnienie mechanizmu naliczania opłat znajduje się w liczniku tokenów w sesji agenta.

Przeczytaj /context przed wprowadzeniem jakichkolwiek zmian

Nie należy zgadywać zawartości okna. Claude Code wyświetli te informacje.

/context [all] przedstawia bieżące zużycie kontekstu w formie kolorowej siatki wraz z sugestiami optymalizacji dla narzędzi o dużym obciążeniu kontekstu oraz nadmiarowego zużycia pamięci; all rozwija szczegółowe zestawienie elementów w trybie pełnoekranowym. Wynik należy interpretować jako pięć kategorii.

  • The system prompt. Instrukcje ramowe Claude Code. Są stałe dla danej sesji.
  • Tool definitions. Schematy wszystkich narzędzi, które agent może wywołać, w tym wszystkich połączonych serwerów MCP (Model Context Protocol).
  • Memory files. CLAUDE.md oraz pamięć automatyczna, ładowane na początku sesji.
  • Files and tool results. Wszystkie odczytane pliki oraz dane wyjściowe z wykonanych poleceń.
  • Message history. Zapytania użytkownika oraz odpowiedzi modelu.

Pierwsze trzy elementy stanowią stały koszt generowany przy każdym zapytaniu w trakcie trwania sesji. Dwie ostatnie kategorie zwiększają swój rozmiar. Należy zredukować stały koszt raz, na początku; pozostałe elementy należy monitorować na bieżąco.

Dwa ciągi znaków informują o pełnym oknie kontekstowym:

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 to limit twardy, powodujący odrzucenie zapytania; odpowiadający błąd API brzmi Prompt is too long. Drugi to okno kompaktowania, które może znajdować się poniżej rzeczywistego okna kontekstowego modelu (np. dla modelu o rozmiarze 1 million token). Zapytania po przekroczeniu tego limitu nadal są realizowane, zatem jest to ostrzeżenie, a nie odmowa.

W planach płatnych /usage dodaje drugą część zestawienia, flagując zachowania takie jak długi kontekst lub brak trafień w cache, oraz przypisując ostatnie zużycie do poszczególnych umiejętności, subagentów i serwerów MCP.

CLAUDE.md to stały koszt, należy dbać o jego zwięzłość

CLAUDE.md jest ładowany do kontekstu na początku sesji i pozostaje w nim przez cały czas. Jeśli plik zawiera szczegółową procedurę wdrożeniową, tokeny te są zużywane nawet podczas poprawiania literówki w pliku testowym. Zalecenia Anthropic nakazują umieszczanie w nim wyłącznie niezbędnych informacji i utrzymywanie pliku poniżej 200 linii.

Procedury należy przenieść do skills. Skill jest ładowany tylko podczas wywołania, więc workflow uruchamiany dwa razy w tygodniu nie generuje kosztów w pozostałe dni. Skills posiadają własny limit po kompaktowaniu: treści są ponownie wstrzykiwane, z limitem 5,000 tokenów na skill i 25,000 łącznie; najstarsze elementy są usuwane w pierwszej kolejności. Proces skracania (truncation) zachowuje początek pliku, dlatego najważniejsze instrukcje należy umieszczać na początku SKILL.md.

O tym, co przetrwa kompaktowanie, decyduje lokalizacja instrukcji.

  • System prompt oraz styl wyjścia pozostają niezmienione, ponieważ nie stanowią części historii wiadomości.
  • Projektowy CLAUDE.md w project-root, reguły nieskatalogowane oraz auto memory są ponownie wczytywane z dysku.
  • Reguła z frontmatter paths: zostaje utracona do momentu ponownego odczytania pasującego pliku.
  • Zagnieżdżony CLAUDE.md w podkatalogu zostaje utracony do momentu ponownego odczytania pliku w tym podkatalogu.
  • Hooki nie ulegają zmianie, ponieważ hook działa jako kod i nigdy nie trafia do kontekstu.

Wymagana reguła powinna znajdować się w project-root CLAUDE.md: Claude Code najpierw usuwa starsze wyjścia narzędzi, a następnie dokonuje streszczenia, przez co instrukcje z początku konwersacji mogą zostać utracone. Pamięć można edytować za pomocą /memory. Claude Code przechowuje kopię załadowaną na początku sesji, więc przycinanie pamięci w trakcie sesji zachowuje prompt cache i nie wchodzi w życie aż do następnego /clear, /compact lub restartu.

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

Te dwie komendy wydają się zamienne, mimo że kosztują znacznie różną kwotę.

/clear [name] rozpoczyna nową konwersację z pustym kontekstem. Nie wysyła żadnego zapytania, więc nie generuje kosztów. Podaj nazwę, aby oznaczyć poprzednią konwersację w selektorze /resume; /reset oraz /new to aliasy. Należy użyć tej komendy natychmiast po przejściu do niezwiązanego zadania, ponieważ w przeciwnym razie stare zadanie byłoby ponownie wysyłane i ponownie fakturowane przy każdej wiadomości w nowym zadaniu.

/compact [instructions] zwalnia kontekst przy zachowaniu tej samej konwersacji: podsumowuje dotychczasową historię i zastępuje ją. Należy jej używać wewnątrz jednego długiego zadania, gdy wymagana jest ciągłość.

Zawsze podawaj instrukcję dla /compact. Sama komenda /compact podsumowuje dane przy użyciu domyślnego promptu, który nie wie, której części pracy nadal potrzebujesz. Komenda z instrukcją zachowuje wymagane dane:

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

Jeśli powód kompaktowania jest zawsze taki sam, umieść stałą instrukcję w CLAUDE.md swojego projektu pod nagłówkiem # Compact instructions. W nowej sesji /compact wyświetla Not enough messages to compact., co oznacza brak historii.

W tym miejscu często dochodzi do pomyłki w szacowaniu kosztów. Zapytanie podsumowujące współdzieli Twój prefix, więc odczytuje istniejący cache zamiast ponownie przetwarzać historię; większość czasu zajmuje generowanie podsumowania. Kompaktowanie dużego kontekstu nadal jest dużym zapytaniem, ponieważ konwersacja podlegająca podsumowaniu stanowi dane wejściowe. Kolejna tura po kompaktowaniu nie jest procesem wolnym: system odbudowuje cache dla znacznie krótszego promptu.

Istnieją dwie tańsze komendy. /rewind [description] przywraca kod i konwersację do punktu kontrolnego; w przypadku ścieżki, którą należy całkowicie porzucić, jest to rozwiązanie lepsze niż kompaktowanie, ponieważ skraca kontekst do prefixu, który jest już w cache. /recap dołącza podsumowanie jako wynik komendy zamiast zastępować historię, dzięki czemu zachowany zostaje prefix w cache.

Automatyczne, powtarzające się kompaktowanie wyświetla komunikat:

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

Kompaktowanie zakończyło się sukcesem, ale plik lub wynik narzędzia kilkukrotnie ponownie wypełnił okno, więc Claude Code przestał podejmować próby. Aby odzyskać dostęp, należy przeczytać zbyt duży plik w zakresie linii, uruchomić /compact z fokusem pomijającym duży wynik, przekazać to zadanie do subagenta lub użyć /clear, jeśli wcześniejsza konwersacja jest zakończona.

Serwery MCP generują stały narzut

Każdy podłączony serwer MCP zwiększa rozmiar każdego zapytania w całej sesji. Narzut występuje niezależnie od tego, czy dana funkcja zostanie wywołana.

Claude Code minimalizuje ten problem. Definicje narzędzi MCP są domyślnie odroczone, więc do kontekstu trafiają jedynie nazwy narzędzi, dopóki Claude nie użyje konkretnego narzędzia. Użyj /context, aby sprawdzić rzeczywisty koszt serwerów, oraz /mcp disable <name>, aby usunąć serwer, którego nie użyjesz w danej sesji. W przypadku własnych serwerów MCP na VPS, te same zasady ograniczają liczbę narzędzi, jakie jeden serwer powinien udostępniać.

Należy to wykonać na początku sesji. Podczas gdy definicje pozostają odroczone, podłączanie lub odłączanie serwera jedynie dodaje wpis do konwersacji, a pamięć cache zostaje zachowana. Jeśli jednak definicje są ładowane do prefiksu (ponieważ wyszukiwanie narzędzi jest wyłączone lub serwer jest wyłączony z mechanizmu odroczenia), każda kolejna zmiana powoduje ponowne wczytywanie wszystkich danych przy następnym zapytaniu.

Filtrowanie rozbudowanych wyników narzędzi przed wprowadzeniem ich do kontekstu

Wynik działania narzędzia stanowi dane wejściowe, które są ponownie przesyłane w każdej kolejnej turze. Test generujący 20,000 tokenów danych wyjściowych nie jest kosztem jednorazowym: koszt ten jest ponoszony przy każdej turze, dopóki dane nie opuszczą okna kontekstowego.

Należy filtrować dane u źródła. Zastosowanie hooka, który ogranicza wynik testu wyłącznie do błędów przed przekazaniem go do modelu Claude, redukuje objętość danych z ogromnego bloku tekstu do zaledwie kilkuset tokenów – zarówno w bieżącej turze, jak i przy każdym ponownym przesłaniu.

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

Hooki nie trafiają do kontekstu, ponieważ są wykonywane jako kod. Należy stosować tę metodę dla każdego narzędzia, którego wyjście przekracza rozmiar ekranu. Ta sama logika dotyczy plików o długości 3,000 linii: należy prosić o konkretny zakres linii, ponieważ po przesłaniu cały plik pozostaje w oknie kontekstowym.

Określenie zakresu odczytu agenta oraz delegowanie zadań generujących duży szum

Prompt zawierający nazwę pliku oraz opis objawów powoduje odczytanie tego konkretnego pliku. Ogólne polecenie uporządkowania projektu powoduje odczytanie wszystkich danych uznanych przez agenta za istotne, a każdy taki odczyt zajmuje miejsce w oknie kontekstowym.

Zadania generujące dużą ilość danych należy delegować do subagenta. Procesy testowe oraz przetwarzanie logów zużywają znaczny zasób kontekstu; subagent przechowuje te dane we własnym oknie i zwraca jedynie podsumowanie. Wadą jest fakt, że subagent tworzy własną pamięć cache, która przy pierwszym wywołaniu nie posiada trafień, oraz stosuje pięciominutowy czas wygasania cache nawet w modelu subskrypcyjnym. Delegowanie skutecznie chroni główny kontekst, jednak nie zawsze redukuje całkowitą liczbę tokenów.

Zegar pamięci podręcznej: praca w cyklach

Cache promptu obniża koszty ponownego przesyłania danych: koszt odczytu prefiksu wynosi 0,1x podstawowej stawki za input, koszt zapisu to 1,25x, natomiast koszt zapisu przy cyklu trwającym jedną godzinę wynosi 2x. Każde użycie odświeża wpis bez dodatkowych kosztów, zatem czas trwania cyklu liczony jest od ostatniego użycia.

Czas trwania cyklu zależy od metody uwierzytelniania. Stwierdzenie „pamięć podręczna wygasa po pięciu minutach” jest błędne.

  • W ramach subskrypcji Claude, Claude Code automatycznie żąda cyklu trwającego jedną godzinę.
  • Po przekroczeniu limitu planu i przejściu na płatność za zużycie (usage credits), czas trwania cyklu zostaje skrócony do pięciu minut.
  • W przypadku użycia API key lub dostawcy chmurowego, czas trwania cyklu wynosi pięć minut. ENABLE_PROMPT_CACHING_1H=1 umożliwia przejście na cykl trwający jedną godzinę, natomiast FORCE_PROMPT_CACHING_5M=1 wymusza powrót do pięciu minut.

Zasada pracy pozostaje taka sama: należy pracować w ciągłych cyklach. Przerwa trwająca dłużej niż czas trwania cyklu powoduje, że przy kolejnym zapytaniu cały nagromadzony prefiks musi zostać zapisany ponownie. Sesja Claude Code w tmux nie generuje kosztów podczas bezczynności, jednak bezczynność powoduje utratę rozgrzanego cache.

Niektóre operacje powodują usunięcie pamięci podręcznej w trakcie pracy: zmiana modelu, zmiana poziomu zaangażowania (effort level), włączenie fast mode, podłączanie lub odłączanie serwera MCP, włączanie lub wyłączanie pluginu, odrzucenie całego narzędzia (tool), kompaktowanie oraz aktualizacja Claude Code. /model jest najczęstszą przyczyną problemów, ponieważ każdy model posiada własny cache; w efekcie kolejne zapytanie odczytuje całą historię bez wykorzystania cache, mimo że treść jest identyczna.

Edytowanie plików, edytowanie CLAUDE.md, wywoływanie umiejętności (skills) i komend, uruchamianie /recap, cofanie (rewinding) oraz uruchamianie subagenta zachowują pamięć podręczną. Cache jest ograniczony do jednej maszyny i jednego katalogu, więc dwie sesje w różnych katalogach nie współdzielą pamięci podręcznej.

Aby sprawdzić, czy cache działa, należy przeczytać current_usage. cache_creation_input_tokens został wygenerowany przy stawce zapisu cache; cache_read_input_tokens został dostarczony przy stawce wynoszącej około jednej dziesiątej standardowego inputu. Wysoki stosunek odczytu do tworzenia (read-to-creation ratio) świadczy o prawidłowym działaniu. Jeśli wskaźnik tworzenia pozostaje wysoki w kolejnych cyklach, oznacza to, że element w prefiksie ulega ciągłym zmianom.

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

Częściowo. Niektóre obecne modele obsługują okno kontekstowe o wielkości 1 million tokenów, a kompresja działa tak samo przy większych limitach. Ekonomia pozostaje bez zmian, ponieważ pełny prompt jest nadal przesyłany ponownie i nadal naliczany przy każdej iteracji. Większe okno określa moment wymuszenia działania; higiena danych określa koszt. Jeśli problemem jest koszt, a nie limit, który plan Claude pasuje do sposobu pracy decyduje o tym, czy wydatkowane są środki finansowe, czy limit planu.

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

W przypadku budowania własnego agenta przy użyciu Messages API, polecenia typu slash nie istnieją i należy je zaimplementować samodzielnie. Do wykonania tego zadania służą dwie funkcje po stronie serwera, które nie są tożsame.

Edycja kontekstu (Context editing) selektywnie usuwa wybrane treści z historii konwersacji w miarę jej rozbudowywania. Każdy usunięty element zostaje zastąpiony tekstem zastępczym, aby model Claude wiedział o usunięciu danych. Jest to funkcja w fazie beta: należy wysłać anthropic-beta: context-management-2025-06-27 i skonfigurować strategie w context_management.edits. clear_tool_uses_20250919 służy do czyszczenia wyników narzędzi, a clear_thinking_20251015 zarządza blokami myślowymi (thinking blocks). Wartość trigger domyślnie wynosi 100,000 tokenów wejściowych, keep wynosi 3 ostatnie użycia narzędzi, a clear_tool_inputs wynosi false, co pozwala zachować dane wejściowe i usuwać jedynie wyniki.

Kompresja (Compaction) generuje podsumowanie i zastępuje nim pełną historię konwersacji. Jest to również funkcja w fazie beta: należy wysłać anthropic-beta: compact-2026-01-12 i użyć typu edycji compact_20260112. Domyślny wyzwalacz to {"type": "input_tokens", "value": 150000}, a wymagana wartość to minimum 50,000.

Kompresja posiada jedną zasadę przekazywania danych, która powoduje błędy w działaniu agentów. Odpowiedź rozpoczyna się od bloku treści compaction zawierającego podsumowanie, po którym następuje standardowy blok tekstowy. Ten blok należy przekazać z powrotem w kolejnych żądaniach, a API usunie wtedy wszystkie bloki treści znajdujące się przed nim. W praktyce: należy dołączyć całą zawartość 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, natomiast edycję kontekstu jako opcję pozwalającą na precyzyjną kontrolę nad usuwanymi danymi. Należy najpierw sprawdzić wsparcie modelu. Obecne modele Opus, Sonnet oraz Fable obsługują kompresję; model claude-haiku-4-5 nie obsługuje tej funkcji; aktualna lista znajduje się na stronie dotyczącej kompresji. Żadna z tych funkcji beta nie steruje mechanizmem /compact w Claude Code, który według dokumentacji jest jednorazowym żądaniem podsumowania wysyłanym przez klienta.

FAQ

Dlaczego sesja Claude Code staje się wolniejsza i droższa im dłużej trwa?

Cała konwersacja jest przesyłana ponownie przy każdym kroku. Jednozdaniowe pytanie w sesji otwartej przez cały dzień zawiera w sobie całą historię z tego dnia. Prompt caching obniża koszty, gdy cache jest aktywny (0.1x podstawowej stawki za odczyt). Gdy krok nie trafia do cache, ten sam prefiks jest przesyłany ponownie z kosztem 1.25x. Uruchom /context, aby sprawdzić, co zajmuje okno kontekstowe, lub przeczytaj za co naliczane są opłaty w sesji Claude Code, aby poznać mechanizm działania.

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

/clear rozpoczyna nową konwersację z pustym kontekstem. Nie wysyła żadnego zapytania, więc nie generuje kosztów; jest to właściwy wybór przy przechodzeniu między niezwiązanymi zadaniami. /compact kontynuuje tę samą konwersację i zastępuje historię podsumowaniem, co jest właściwe w ramach jednego długiego zadania. Należy podać cel operacji, tak jak w /compact keep only the plan and the diff, ponieważ instrukcja decyduje o tym, co zostanie zachowane.

Jak sprawdzić, co zużywa okno kontekstowe Claude Code?

Uruchom /context lub /context all, aby uzyskać pełne zestawienie dla każdego elementu. Narzędzie wyświetla system prompt, 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 oraz nadmiernego zużycia pamięci. W planach płatnych /usage przypisuje również ostatnie użycie do poszczególnych umiejętności, subagentów i serwerów MCP.

Czy należy używać okna kontekstowego o wielkości 1 miliona tokenów zamiast kompaktowania?

Większe okno jedynie odsuwa problem w czasie, zamiast go rozwiązywać. Wiele obecnych modeli, w tym Opus 4.8 i Sonnet 5, obsługuje okno kontekstowe o wielkości 1 miliona tokenów, a mechanizm kompaktowania działa tam tak samo. Każdy krok nadal przesyła pełny prompt i generuje koszty, więc konwersacja o długości 400,000 tokenów jest kosztowna niezależnie od tego, czy mieści się w limicie.

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

Edycja kontekstu selektywnie usuwa stare treści (głównie wyniki narzędzi), pozostawiając tekst zastępczy w miejscu każdego elementu, aby Claude wiedział, że został usunięty. 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 jako opcję do precyzyjnego zarządzania. Obie funkcje są w fazie beta, mają własne nagłówki i są oddzielone od funkcji /compact w Claude Code.