Skip to content

Repository files navigation

Budżet — pilnuj limitów Claude Code

licencja MIT wersja ostatnia zmiana Python 3.8+

Wtyczka do Claude Code, która pokazuje, ile limitu zostało Ci do końca tygodnia, ile kosztuje bieżąca rozmowa i sama skraca odpowiedzi, zanim limit się skończy.

Claude Code ma tygodniowe limity. Im dłużej rozmawiasz z agentem, tym szybciej limit topnieje. Z limitami trzeba więc obchodzić się jak z pieniędzmi w portfelu: ustalać budżet i mądrze nim zarządzać.

Oto jak to działa:

  1. Mówi, ile Ci zostało. Wpisujesz „ile mi zostało limitu" i wiesz, z czym pracujesz do końca tygodnia. Ta liczba to odczyt, nie zgadywanka.

  2. Pokazuje, ile kosztuje ta rozmowa. Widzisz koszt bieżącej sesji i to, czy jest droga na tle Twoich innych. Wtedy wiesz, kiedy rozmowa zaczyna się przejadać i lepiej ją wyczyścić.

  3. Trzyma budżet, który jej wyznaczysz. Wpisujesz /budzet 1 i od tej chwili Claude sam się dostraja: pisze zwięźle, przy 70% skraca odpowiedzi, przy 90% odpuszcza kosztowne narzędzia, a po przekroczeniu proponuje wyczyszczenie rozmowy. To hamulec, nie licznik do oglądania.

Jak to wygląda

Wynik komendy status

Ile to oszczędza

Zmierzone na 78 913 turach moich własnych sesji: tydzień przed wtyczką, dwanaście dni po.

bez wtyczki z wtyczką
limit zjadany przez jedną turę 42 521 30 846 −27,5%
to samo w typowej turze (mediana) 32 710 25 791 −21,2%
tur pracy przy tym samym limicie 33 300 45 613 +37,9%

W obu okresach zużyłem prawie tyle samo limitu — 1 416 mln jednostek przed, 1 407 mln po. Za to samo wyszło o 37,9% więcej pracy. W tygodniu to +2,65 dnia (21,2 godziny przy ośmiogodzinnym dniu).

Skąd to się bierze — nie stąd, że model pisze krócej. To najmniejsza część zysku. Główna oszczędność to mniejsze porcje treści wciągane do rozmowy: model czyta węższe fragmenty plików zamiast całych. Każda taka porcja zostaje w rozmowie do końca i jest doliczana przy każdej kolejnej turze.

To jak oszczędzanie prądu w domu: nie bierze się z gaszenia żarówek, tylko z rzadszego włączania piekarnika.

Jak to policzone i czego ten pomiar nie dowodzi

Jednostka to token ważony — tokeny przeliczone proporcjami z cennika API, gdzie generowanie odpowiedzi jest wielokrotnie droższe niż odczytanie tego, co model już widział. Porównuję średni koszt jednej tury w dwóch okresach: 24–30.07 (bez wtyczki, 33 300 tur) i 1–12.08 (z wtyczką, 45 613 tur). Dzielę przez tury, nie przez dni — dzienne sumy mierzyłyby pracowitość, nie skuteczność narzędzia.

To porównanie dwóch okresów jednej osoby, nie badanie z grupą kontrolną. Proporcje przeliczające tokeny na limit są przepisane z cennika API — nie wiem na pewno, czy limit subskrypcji nalicza tak samo. Część efektu to zmiana nawyku, a nie sama wtyczka. Choć to ta sama rzecz: narzędzie działa właśnie przez to, że zmienia sposób pracy.

Sprawdziłem, czy spadku nie tłumaczy coś innego niż wtyczka. Porównanie ograniczone do jednej wersji Claude Code (2.1.220 występuje w obu okresach, 29 839 i 7 470 tur) daje ten sam wynik: −27,2%. Ograniczenie do jednego modelu — −26,5%. Po doliczeniu pracy agentów w tle — −25,5%. Po odrzuceniu 1% najdroższych tur — −25,4%. Przy równych wagach tokenów zamiast proporcji z cennika — −21,9%. Spadek jest w całym rozkładzie, nie w pojedynczych kosztownych sesjach: percentyl 75 spada z 46 175 na 36 097, percentyl 90 z 63 367 na 45 980.

Jak jej używać

Rozmawiasz z nią zwykłym językiem — nic nie konfigurujesz.

wpisujesz dostajesz
/budzet 1 ustawia budżet tej rozmowy na 1% limitu tygodniowego
/budzet 0.5 to samo, dowolna liczba (także ułamkowa)
/budzet pokazuje stan limitu i pyta, jaki budżet ustawić
„ile mi zostało limitu" ile procent limitu do końca tygodnia
„ile kosztowała ta rozmowa" koszt bieżącej sesji
„zdejmij budżet" koniec pilnowania

Po ustawieniu budżetu Claude widzi go przed każdą odpowiedzią i sam się dostraja: najpierw pisze zwięźle, przy 70% skraca odpowiedzi, przy 90% odpuszcza kosztowne narzędzia, a po przekroczeniu proponuje wyczyszczenie rozmowy.

Na początku zobaczysz tokeny zamiast procentów. Wtyczka musi się najpierw nauczyć, ile tokenów zjada 1% limitu na Twoim koncie — a to zależy od konta. Uczy się sama, przy zwykłej pracy. Nic nie musisz robić ani wpisywać. Procenty pojawią się po dniu albo dwóch.

Działa na macOS, Linuksie i Windows. Wymaga Pythona 3.8 lub nowszego — wtyczka sama sprawdzi, czy go masz, i przeprowadzi Cię przez instalację, jeśli nie.

Co to właściwie mierzy

Trzy źródła, w kolejności ważności:

  1. Odczyt limitu z API Anthropica (GET /api/oauth/usage) — prawdziwy procent, nie szacunek. Wtyczka pyta tym samym adresem co Claude Code, tokenem z pęku kluczy systemu — a na Linuksie i Windows z pliku ~/.claude/.credentials.json — w tle, najwyżej raz na 15 minut. Jako zapas czyta ~/.claude.jsoncachedUsageUtilization i bierze świeższe z dwóch.
  2. Transkrypty sesji (~/.claude/projects/**/*.jsonl) — tokeny ważone, dodawane dokładnie.
  3. Kurs tokeny → procent — jedyne przybliżenie w całym narzędziu, liczone z Twoich danych.

Żadna stała nie jest zaszyta w kodzie. Kurs zależy od planu i aktywnych promocji, więc wtyczka liczy go od zera na Twoim koncie. Do pierwszego pomiaru pokazuje wyłącznie liczby względne — żadnych zmyślonych procentów.

Instalacja

Jako plugin (zalecane)

Dwa polecenia w Claude Code — najpierw dodajesz katalog, potem instalujesz z niego wtyczkę:

/plugin marketplace add studiogo/budzet
/plugin install budzet@budzet

Hook wpina się sam — nic nie musisz dopisywać do settings.json.

Ręcznie

  1. Skopiuj katalog skills/budzet do ~/.claude/skills/budzet.
  2. Dopisz hook do ~/.claude/settings.json, w sekcji hooks.UserPromptSubmit:

macOS i Linux

{
  "hooks": [
    { "type": "command", "command": "python3 ~/.claude/skills/budzet/bin/budzet.py hook-stdin", "timeout": 10 }
  ]
}

Windows

{
  "hooks": [
    { "type": "command", "command": "py -3 \"C:/Users/TWOJA-NAZWA/.claude/skills/budzet/bin/budzet.py\" hook-stdin", "timeout": 10 }
  ]
}

Trzy pułapki na Windows:

  1. Wpisz pełną ścieżkę. Claude Code nie przepuszcza polecenia hooka przez wiersz poleceń, więc %USERPROFILE% i ~ nie są rozwijane — trafiają do polecenia dosłownie i plik się nie znajduje.
  2. Polecenie python3 istnieje, ale nie uruchamia Pythona — prowadzi do sklepu Microsoftu. Używaj py -3 albo python.
  3. Zły wpis blokuje pisanie. Gdy hook zwróci kod 2 (a tyle zwraca Python, gdy nie znajdzie pliku), Claude Code odrzuca cały prompt z komunikatem „operation blocked by hook". Dlatego najpierw uruchom sprawdz, a wpis dodaj dopiero, gdy ścieżka na pewno się zgadza.

Jeden wpis dla obu systemów

Jeśli wolisz mieć te same ustawienia na Macu i na Windows, dodaj oba polecenia obok siebie — to, które nie pasuje do systemu, odpadnie bez blokowania rozmowy:

{
  "hooks": [
    { "type": "command", "command": "python3 \"<pełna ścieżka>/budzet.py\" hook-stdin", "timeout": 10 },
    { "type": "command", "command": "py -3 \"<pełna ścieżka>/budzet.py\" hook-stdin", "timeout": 10 }
  ]
}

Linia licznika wstrzykuje się raz, nie dwa razy. Na macOS wariant py -3 odpada, bo takiego polecenia tam nie ma.

  1. Sprawdź, czy wszystko gra:
python3 ~/.claude/skills/budzet/bin/budzet.py sprawdz

Podkomenda sprawdz wypisze, co działa, czego brakuje i co z tym zrobić. Hook z założenia milczy przy każdym błędzie — nigdy nie może zablokować pracy — więc gdy licznik nie pokazuje się w rozmowie, to jest jedyne miejsce, które powie dlaczego.

Pierwsze uruchomienie

Zaraz po instalacji zobaczysz liczby względne zamiast procentów. To zamierzone: wtyczka nie zna jeszcze Twojego kursu tokeny → procent. Policzy go sama, gdy zużycie tygodniowe przekroczy 3 punkty procentowe. Nic nie musisz robić — odczyty limitu wtyczka pobiera w tle.

Kiedyś kalibracja zacznie się od nowa — i tak ma być

Na kontach Claude Code bywają promocje powiększające tygodniowy limit (w sierpniu 2026 to „+50% weekly limits"). Gdy promocja się skończy, pula naprawdę się zmieni, więc kurs policzony na starej puli przestanie obowiązywać. Wtyczka wykryje to sama i zacznie liczyć od zera — zobaczysz znowu liczby względne zamiast procentów, przez dzień albo dwa.

To nie jest awaria. Tak samo zachowa się przy zmianie planu. Wtyczka woli przyznać się, że nie zna kursu, niż pokazywać procenty policzone na nieaktualnej puli.

Plan konta wtyczka sprawdza u Anthropica, nie w pliku Claude Code. Ten plik potrafi po zmianie planu trzymać starą nazwę jeszcze długo — zmierzone 29.08.2026, gdy mówił „max 20x", a serwer „max 5x". Gdyby wtyczka wierzyła plikowi, po przejściu na mniejszy plan pokazywałaby zaniżone procenty i nie zająknęła się o tym ani słowem.

Używanie

W rozmowie: „ile mi zostało limitu", „ustaw budżet sesji", „ile zjadła ta sesja".

Z terminala:

BIN=~/.claude/skills/budzet/bin/budzet.py
python3 $BIN status         # pełny obraz
python3 $BIN ustaw 2.5      # budżet 2,5% limitu tygodniowego na tę sesję
python3 $BIN ustaw          # budżet = koszt Twojej typowej sesji
python3 $BIN skasuj         # zdejmij budżet
python3 $BIN odswiez        # pobierz świeży odczyt limitu (w tle dzieje się samo)
python3 $BIN dokladnosc     # zmierz błąd własnych przewidywań

Czego to nie potrafi

Powiedziane wprost, żeby nikt nie oparł na tych liczbach decyzji, której nie udźwigną:

  • Widzi tylko pracę w konsoli, na tym komputerze. Rozmowy przez przeglądarkę, aplikację albo drugi komputer liczą się do limitu, ale nie do transkryptów. Koszt sesji będzie zaniżony. Paski limitu pozostają wiarygodne, bo pochodzą z odczytu.
  • Wagi tokenów są przepisane z cennika interfejsu programistycznego, nie zmierzone na limicie subskrypcji.
  • Źródło prawdy ma rozdzielczość 1 punktu procentowego — czyli ok. 12,5 mln tokenów ważonych, więcej niż jedna typowa sesja. Dlatego pojedynczej sesji nie da się zmierzyć bezpośrednio, tylko przeliczyć kursem.

W praktyce: rzetelnie odpowiada na „ile zostało limitu" i „czy ta sesja jest droga na tle moich innych sesji". Nie odpowiada precyzyjnie na „dokładnie ile zjadłem". Budżet działa jak hamulec, nie jak miarka.

Gdzie trzyma dane

Wszystko w ~/.claude/state/budzet/:

  • kalibracja.json — kurs, pary pomiarowe, dziennik odczytów limitu
  • odczyt-limitu.json — ostatni odczyt limitu pobrany z API
  • budzet-<id sesji>.json — budżet pojedynczej sesji
  • cache/ — wyniki skanowania transkryptów

Jedyne połączenie sieciowe to pytanie o Twój limit, wysyłane do Anthropica — tego samego adresu używa Claude Code. Nic innego nie wychodzi poza Twój komputer: transkrypty, koszty i budżety są liczone wyłącznie lokalnie.

Wersja wczesna — szukam testerów

Wtyczka jest sprawdzona na jednym koncie (Max 20x) i dwóch systemach (macOS, Windows 11). Nie była jeszcze uruchamiana na Pro ani na Max 5x — kurs liczy się z Twoich danych, więc powinna działać wszędzie, ale nikt tego poza autorem nie potwierdził.

Jeśli ją odpalisz, najbardziej przyda się jedno: wynik python3 ~/.claude/skills/budzet/bin/budzet.py sprawdz plus nazwa Twojego planu. Zgłoszenia przez Issues.

Współtworzenie

Zgłoszenia i propozycje zmian → CONTRIBUTING.md. Najbardziej przydają się zgłoszenia z kont innych niż Max 20x — na takim była sprawdzana.

Licencja

MIT — LICENSE.

About

Pilnuje, żebyś nie wypalił limitu Claude Code: ile zostało do końca tygodnia, ile kosztuje ta rozmowa i budżet, który skraca odpowiedzi, zanim limit się skończy.

Topics

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages