AIDive

Pakiet do filmu

Osiem repo Claude Code zmierzonych na jednym projekcie: koszt sesji, ablacja, werdykty

13 min czytania

TL;DR

  • Osiem popularnych repozytoriów do Claude Code zainstalowano na poziomie projektu w jednej prawdziwej bazie kodu i zmierzono: tokeny na starcie sesji, tokeny wyjściowe w trzech zadaniach programistycznych oraz to, co każde z nich zapisywało poza projektem.
  • Tylko jedno z ośmiu zmieniło wynik: anti-slop, użyty jako linter, wyłapał ten sam niebezpieczny cast we wszystkich 3 przebiegach T3, za +95 tokenów sesji i zero na turę.
  • Zestawy reguł wymuszające zwięzłe odpowiedzi nie sprawdziły się przy pracy z narzędziami: reklamowane przez Chisle 52% bazowej linii okazało się 94% bazowych tokenów wyjściowych, a jego ramię kosztowało więcej niż baza w dwóch z trzech zadań, gdy doliczyć wejście.
  • Trzy serwery MCP nie zostały ani razu wywołane w 63 przebiegach. Zainstalowane nie znaczy używane.
  • Stos jest addytywny: wszystkie osiem razem dodało +6,804 tokenów na starcie, o 63 tokeny mniej niż suma części.
  • Dwie instalacje sięgnęły poza projekt. Jeden codemod zarejestrował się w globalnych konfiguracjach 8 innych agentów; jedno narzędzie ma na sztywno --dangerously-skip-permissions i kopiuje plik z poświadczeniami, więc nigdy go nie uruchomiono.

Co mówią pomiary

Tokeny na starcie sesji są powtarzalne, koszt w dolarach nie: każdy wariant zwrócił identyczną sumę tokenów wejściowych w obu przebiegach, podczas gdy koszt tego samego wariantu wahał się od $0.0183 do $0.0035 zależnie od stanu cache promptów, dlatego wszędzie miarą jest liczba tokenów. Projekt bazowy startuje od 17,378 tokenów s4.

Schematy narzędzi MCP są w tej wersji Claude Code odroczone, a koszt zależy teraz od liczby nazw narzędzi, które serwer ogłasza, a nie od rozmiaru schematów. 39 narzędzi ouroboros kosztuje +1,642 tokenów, 19 narzędzi reticle +895, 2 narzędzia ui-skills +37: mniej więcej 42 do 47 tokenów na nazwę narzędzia. Domyślnie wszystkie narzędzia MCP są odroczone i ładowane na żądanie, a tryb auto zmiennej ENABLE_TOOL_SEARCH odracza je, gdy ich definicje osiągną 10% okna kontekstu s4. img2threejs zawiera 32,902-bajtowy SKILL.md i 352 pliki, a kosztuje +107 tokenów na starcie, bo ładuje się tylko opis z frontmattera. Dokumentacja skilli ogranicza każdy opis na liście do 1,536 znaków i skraca opisy, by zmieściły się w budżecie listy, gdy skilli jest dużo; po kompaktowaniu wywołane skille są dołączane ponownie po 5,000 tokenów każdy we wspólnym budżecie 25,000 tokenów s5. To ten budżet listy sprawia, że 40 skilli może kosztować 3,060 tokenów na turę w konfiguracji, która nie wywołuje żadnego z nich s10, i dlatego ucinane są opisy, a nie same skille s11.

Hook UserPromptSubmit w Chisle dodaje 287 bajtów additionalContext w każdej turze; przy zadaniu na 22 tury to dlatego jego ramię kosztowało +41,539 łącznych tokenów wejściowych w T3 względem bazy. caveman, zmierzony jako punkt odniesienia, nie wstrzykuje niczego, chyba że prompt zaczyna się od /caveman. Gdy kilka hooków na tym samym zdarzeniu zwraca additionalContext, Claude dostaje je wszystkie sklejone, z limitem 10,000 znaków na hook s15. Po podłączeniu razem Chisle, caveman i ouroboros było 3 rejestracje na SessionStart, 3 na UserPromptSubmit i 2 na PostToolUse, co dało +4,269 tokenów na starcie s15.

README Chisle podaje rachunek za 20 zadań na poziomie 52% bazy i samo ogranicza tę liczbę do promptów jednoturowych bez narzędzi s3. W trzech zadaniach na prawdziwym repo, po 3 przebiegi każde, zsumowane średnie wyjścia Chisle wyniosły 9,007 tokenów wobec bazy 9,615, czyli 94%; caveman miał 10,820, czyli 113%, na próbie, w której rozrzut T3 wynosił 2,014 tokenów, więc żaden z kierunków nie wychodzi ponad szum s3. Kompresor wyjścia Chisle ani razu nie zapisał rekordu oszczędności w 63 przebiegach.

anti-slop wkopiowany do tools/oxlint/ ze wszystkimi 18 regułami ogólnymi plus oxc/no-accumulating-spread znalazł 109 problemów w nietkniętym projekcie liczącym 4,775 linii, z czego 83% pochodziło z dwóch reguł stylu domowego (require-readable-spacing 50, require-safety-comment-for-type-assertion 41) s8. W kodzie napisanym przez Claude wyłapał maxLength={field.maxLength as number} we wszystkich 3 przebiegach T3, gdzie Claude kopiował niebezpieczny cast z własnej bazy kodu s8. Plugin jest w ESM, więc projekt-gospodarz potrzebuje "type": "module", inaczej oxlint kończy się błędem Cannot use import statement outside a module.

Codemod init Reticle, uruchomiony z ustawionym RETICLE_STATE_DIR i wyłączoną telemetrią, zgłosił, że zarejestrował serwer MCP w 8 kolejnych agentach (VS Code user scope, GitHub Copilot CLI, Warp, Factory Droid, Kiro, Amazon Q Developer CLI, Cline CLI, Amp) i wstępnie zatwierdził jego narzędzia w Gemini CLI; potem parowanie zakończyło się błędem ERR_OSSL_EVP_UNSUPPORTED s6. Caliper odrzucono: claude_code.py:106 ma na sztywno --dangerously-skip-permissions, a seed_files() kopiuje ~/.claude/.credentials.json z awaryjnym użyciem Keychain s2. Hook UserPromptSubmit w ouroboros odpowiada na zwykły prompt, taki jak write prd for reading time, tekstem REQUIRED SKILL: /ouroboros:setup, czyli krokiem, którego instalacja na poziomie projektu nie może spełnić s7.

Praca na 2,545 trajektoriach w bibliotekach po 52, 102 i 202 skille podaje zbiorcze spadki skuteczności o .08, .14 i do 21%, przy czym podobne opisy zasłaniają się nawzajem, a ich udział w stracie rośnie s20.

Pomiary

Protokół: jeden prawdziwy projekt TypeScript, każde repo zainstalowane wyłącznie na poziomie projektu. Start sesji: prompt Reply with OK w trybie JSON -p z identycznymi flagami, 2 przebiegi na wariant, wynik = input_tokens + cache_creation_input_tokens + cache_read_input_tokens pierwszej tury. Ablacja: trzy zadania programistyczne (T1 krótkie, T2 średnie, T3 długie zadanie UI) z testami zaliczenia i bramką type-check, 3 przebiegi na komórkę, warianty = baza, każde zawsze aktywne repo osobno, wszystkie osiem razem. anti-slop: oxlint 1.78.0 z wkopiowanym zestawem reguł na nietkniętym projekcie i na kodzie napisanym w 9 przebiegach bazowych.

repo zainstalowane na poziomie projektu tokeny dodane na starcie sesji koszt na turę
baza nic 17,378 brak
Chisle 4 skille, 4 komendy, 3 hooki +3,496 +287 bajtów additionalContext w każdej turze
ouroboros serwer MCP, 39 nazw narzędzi +1,642 wstrzykiwanie warunkowe
reticle serwer MCP, 19 nazw narzędzi +895 / +903 nie zaobserwowano
fwc-swiftui-skills 2 skille +304 brak
caliper 2 skille +172 brak
img2threejs 1 skill, 352 pliki, SKILL.md = 32,902 B +107 brak
anti-slop 1 skill + wkopiowany zestaw reguł +95 brak
ui-skills zdalny MCP, 2 narzędzia +37 brak
wszystkie osiem razem wszystko powyżej +6,804 tylko koszt na turę Chisle
caveman (punkt odniesienia) 4 skille, 2 hooki +744 0
zadanie wariant zaliczone nowe błędy typów wyjście tok średnia wyjście min do max wejście łącznie średnia koszt średni tury wywołania MCP
T1 baza 3/3 0 1,668 1,619 do 1,739 95,462 $0.0519 7.0 0
T1 Chisle 3/3 0 1,434 1,341 do 1,502 106,001 $0.0576 7.7 0
T1 ui-skills 3/3 0 1,756 1,644 do 1,885 96,279 $0.0535 7.3 0
T1 reticle 3/3 0 1,899 1,653 do 2,177 107,263 $0.0594 8.0 0
T1 ouroboros 3/3 0 1,729 1,655 do 1,787 97,166 $0.0549 7.0 0
T1 stos 3/3 0 1,462 1,460 do 1,465 128,221 $0.0646 7.7 0
T2 baza 3/3 0 2,128 2,105 do 2,164 74,286 $0.0540 9.0 0
T2 Chisle 3/3 0 2,184 2,150 do 2,230 87,462 $0.0624 10.0 0
T2 ui-skills 3/3 0 2,348 2,224 do 2,504 74,869 $0.0604 10.0 0
T2 reticle 3/3 0 2,614 2,312 do 2,824 78,664 $0.0635 10.7 0
T2 ouroboros 3/3 0 2,441 2,152 do 2,815 80,819 $0.0622 10.0 0
T2 stos 3/3 0 2,136 2,015 do 2,216 89,378 $0.0661 9.7 0
T3 baza 3/3 0 5,819 5,423 do 6,063 198,217 $0.1551 22.0 0
T3 Chisle 3/3 0 5,389 5,206 do 5,500 239,756 $0.1565 20.3 0
T3 ui-skills 3/3 0 5,279 4,860 do 5,567 214,691 $0.1477 21.0 0
T3 reticle 3/3 0 4,664 4,008 do 5,776 198,740 $0.1293 19.0 0
T3 ouroboros 3/3 0 5,456 4,324 do 7,093 232,763 $0.1544 21.0 0
T3 stos 3/3 0 5,331 4,787 do 5,843 241,576 $0.1591 19.7 0

Zaliczono 63/63 przebiegów, a 0/63 wprowadziło nowy błąd typów. Tylko dwie komórki wychodzą poza własny rozrzut między przebiegami: Chisle w T1 (−234, −14.0%) i stos w T1 (−206, −12.3%). W T2 i T3 każda różnica mieści się w rozrzucie; przebiegi T3 ouroboros miały od 4,324 do 7,093 tokenów wyjściowych przy identycznym prompcie, czyli wahanie o 64%.

repo werdykt dowód
anti-slop zmienił wynik, jako kontrola wyłapał ten sam niebezpieczny cast w 3/3 przebiegów T3, +95 tokenów, 0 na turę
Chisle nic mierzalnego, kosztował więcej 94% wyjścia bazy wobec deklarowanych 52%; +3,496 na starcie, +287 bajtów na turę
ui-skills nic nie zmienił 0 wywołań narzędzi w 9 przebiegach, +37 tokenów
reticle w konflikcie init zapisał do ~/.claude/settings.json i konfiguracji 8 innych agentów; parowanie nigdy się nie zakończyło
ouroboros w konflikcie wymaga /ouroboros:setup przy zwykłych promptach; 39 nazw narzędzi, 0 wywołań
caliper nie uruchomiono na sztywno --dangerously-skip-permissions, kopiuje plik z poświadczeniami
img2threejs poza stosem +107 tokenów, nie ma z czym kolidować
fwc-swiftui-skills poza stosem +304 tokenów, statyczny Markdown

Do zrobienia w poniedziałek

  • Uruchom /context all w świeżej sesji swojego głównego projektu i zapisz liczbę startową.
  • Uruchom claude plugin details <name> dla każdego zainstalowanego pluginu; linia always-on to jedyna wartość rozliczana w każdej turze.
  • Wypisz swoje hooki według zdarzeń. Każdy hook zwracający additionalContext na UserPromptSubmit przy każdym prompcie to podatek na turę; zostaw tylko te, które bramkuje słowo kluczowe lub matcher.
  • Policz nazwy narzędzi ogłaszane przez każdy serwer MCP, przyjmij około 42 do 47 tokenów na nazwę, a potem sprawdź w transkryptach, ile z nich kiedykolwiek wywołano.
  • Zanim zainstalujesz cokolwiek ze skryptem init lub setup, przeczytaj go pod kątem zapisów poza repo: ~/.claude/settings.json, katalogi konfiguracji innych agentów, pliki z poświadczeniami, --dangerously-skip-permissions.
  • Podepnij kontrole jakości wygenerowanego kodu jako linter w kroku weryfikacji, a nie jako skill w kontekście: reguła lintera nie kosztuje nic na turę.
  • Zanim uwierzysz w jakąkolwiek obietnicę oszczędności tokenów, uruchom to samo zadanie 3 razy z narzędziem i bez niego i porównaj różnicę z własnym rozrzutem min-max.
  • Archiwizuj to, co usuwasz, zamiast kasować, żeby workflow, który po to sięga, mógł to odzyskać.

Czytaj dalej

  • Budżet listy skilli i limit 1,536 znaków na opis wyjaśniają, dlaczego zatłoczona konfiguracja pogarsza działanie, choć żaden skill nie przestaje się ładować. Przeczytaj sekcje "Skill descriptions are cut short" i "Skill content lifecycle" s5.
  • Opis /skill-doctor pokazuje 40 skilli kosztujących 3,060 tokenów na turę i które ciąć najpierw; jego ślepy punkt, kosztowne skille wewnątrz używanego pluginu, zostaje na osobną kontynuację s10.
  • Praca stojąca za zasadą "więcej niż 30 skilli": 2,545 trajektorii w bibliotekach po 52, 102 i 202 skille, z wyizolowanym efektem zasłaniania s20, oraz przystępne streszczenie, które ją spopularyzowało s12.
  • Sklejanie hooków i limit 10,000 znaków additionalContext, a także składnia matcherów, dzięki której hook odpala się tylko na Write|Edit s15.
  • Wątek o usunięciu 63%, w tym zakodowany na sztywno bearer token znaleziony w usuniętej konfiguracji MCP, boczny wątek bezpieczeństwa pominięty w wideo s13.
  • README samego Chisle, linie 229 i 262, ogranicza jego 52% do promptów jednoturowych bez narzędzi i oddaje komórkę krótkiego kodowania caveman. Przeczytaj drobny druk, zanim zacytujesz nagłówek s3.
  • Dwóch repo poza stosem nie oceniano, bo wywołuje się je ręcznie i nic nie kosztują na starcie: img2threejs do scen Three.js s21 i fwc-swiftui-skills do powierzchni Liquid Glass s22.

Źródła

  • Plugins reference, dokumentacja Claude Code. Dlaczego warto: plugin details, zakresy instalacji i odroczone ładowanie narzędzi MCP, przez które liczba nazw narzędzi jest prawdziwym kosztem.
  • Extend Claude with skills, dokumentacja Claude Code. Dlaczego warto: limit opisu, budżet listy i budżet ponownego dołączania po kompaktowaniu na jednej stronie.
  • Hooks reference, dokumentacja Claude Code. Dlaczego warto: co się dzieje, gdy dwa hooki wstrzykują na tym samym zdarzeniu, i jak matchery trzymają hook z dala od większości tur.
  • dmmulroy/anti-slop, GitHub. Dlaczego warto: jedyne z ośmiu repo, które zmieniło wynik; wkopiuj reguły, pomiń skill.
  • JayPokale/Chisle, GitHub. Dlaczego warto: README, które uczciwie ogranicza własne twierdzenie o 52%, jeśli doczytasz poza nagłówek.
  • edonadei/caliper, GitHub. Dlaczego warto: ewaluator skilli wart poznania i lekcja czytania claude_code.py przed uruchomieniem czegokolwiek.
  • reticlehq/reticle, GitHub. Dlaczego warto: codemod init to najwyraźniejszy przykład instalatora piszącego daleko poza twoim projektem.
  • Q00/ouroboros, GitHub. Dlaczego warto: workflow oparty na hookach, który ma sens tylko po instalacji globalnej, z krokiem setup, którego instalacja projektowa nie może spełnić.
  • ibelick/ui-skills, GitHub. Dlaczego warto: najtańsza instalacja w zestawieniu, +37 tokenów, i ani razu nie wywołana.
  • /skill-doctor: 40 skills, 3,060 tokens a turn, dev.to. Dlaczego warto: rozbicie kosztu na skille w prawdziwej konfiguracji.
  • Too many Claude Code skills? How the listing budget decides, dev.to. Dlaczego warto: mechanizm, przez który opisy są obcinane.
  • Why More Than 30 Skills Kill Your AI Agent, dev.to. Dlaczego warto: czytelna wersja pracy o zasłanianiu skilli.
  • Skill shadowing paper, arXiv. Dlaczego warto: zbiorcze spadki skuteczności według rozmiaru biblioteki, z przedziałami ufności.
  • I removed 63% of my Claude Code setup, Reddit r/ClaudeCode. Dlaczego warto: z ~235 komponentów do ~87, zarchiwizowane, nie skasowane.
  • My fresh Claude Code sessions were starting at ~35K tokens, Reddit r/ClaudeCode. Dlaczego warto: siedmiokrokowy audyt z /context all, który możesz skopiować jeszcze dziś po południu.
  • img2threejs/img2threejs, GitHub. Dlaczego warto: dowód, że 32,902-bajtowy SKILL.md kosztuje 107 tokenów, dopóki go nie wywołasz.
  • FloWritesCode/fwc-swiftui-skills, GitHub. Dlaczego warto: skille w statycznym Markdownie, kształt instalacji, która nie może z niczym kolidować.

FAQ

Czy serwer MCP nadal kosztuje tysiące tokenów schematu na starcie?

Nie w zmierzonej wersji. Schematy są odroczone, a koszt zależy od liczby ogłaszanych nazw narzędzi, około 42 do 47 tokenów każda. Serwer z 39 narzędziami kosztował +1,642 tokenów; z 2 narzędziami +37.

Dlaczego Chisle kosztował więcej niż baza, choć produkował mniej tokenów wyjściowych?

Jego zestaw reguł ładuje się na starcie sesji (+3,496 tokenów), a hook wstrzykuje 287 bajtów w każdej turze. W T2 i T3 ten narzut wejścia przewyższył oszczędność na wyjściu, która nigdy nie wyszła ponad szum między przebiegami.