Wstęp — dziesięć modów, trzy zostają
Mody do Claude Code to funkcje TypeScript w pluginach, które potrafią przerysować interfejs Claude Code albo przepisać to, co robi. W ciągu doby od premiery na początku października trzy osobne przeglądy wideo kazały deweloperom zainstalować dziesięć z nich. Dwóch autorów przyznaje przed kamerą, że część modów nic nie oszczędza, a żaden z nich nie zmierzył ani jednego. Ten test to robi: każdy z dziesięciu rozreklamowanych modów przeszedł przez prawdziwy tydzień pracy, a przy każdym jest liczba opisująca narzut, oszczędność i werdykt: zostaje albo do usunięcia. Wynik na początek: tylko trzy z dziesięciu zasługują na miejsce na maszynie pracującego dewelopera, a jeden z nich po cichu zużywa tokeny przy każdej odpowiedzi.
Fala i co uruchomiliśmy
Oficjalna definicja Anthropic mieści się w jednym zdaniu: mod to funkcja, która podpina się pod zdarzenie i może się uruchomić przed nim, po nim albo zamiast niego. Zdarzeniem jest wywołanie narzędzia, wysłany prompt albo fragment rysowanego interfejsu. Mody to zwykły TypeScript, dostarczany w pluginie, który instaluje się jak każdy inny.
Tweet premierowy przekroczył cztery miliony wyświetleń w około dobę, z dwudziestoma tysiącami polubień i większą liczbą zakładek niż odpowiedzi i udostępnień razem wziętych. Dwa dni po premierze katalog społeczności przeskanował już ponad tysiąc publicznych modów w setkach repozytoriów.
Stanowiskiem testowym jest jeden prawdziwy tydzień pracy: 85 sesji w czterech projektach, prawie 900 promptów i niecałe 6000 wywołań narzędzi. Każdy mod przeszedł audyt walidatora, który wymienia, pod co się podpina i czego może dotknąć, a każdy wykonał to samo zadanie względem czystej bazy, na bieżącym wydaniu, na tej samej maszynie.
Główny podział: sześć z dziesięciu nie kosztuje nic, co da się zmierzyć w runtime, trzy kosztują realny czas lub realne tokeny, a jeden łamie jedyną obietnicę, jaką składa.
Warstwa dekoracji, zmierzona
Cichych sześć mieści się w szumie połączenia. Miernik celu, mapa cieplna repo, rejestrator lotu, router modeli, zakładki sesji i automatyczne przekazanie mieszczą się między ćwierć sekundy oszczędności a jedną piątą sekundy narzutu, przy zadaniu bazowym trwającym około czterech sekund.
| Mod | Różnica w runtime | Uwagi |
|---|---|---|
| Miernik celu | w granicach szumu | panel dekoracyjny |
| Mapa cieplna repo | w granicach szumu | podświetla pliki w miarę czytania |
| Rejestrator lotu | w granicach szumu | oś czasu tury na żywo |
| Router modeli | w granicach szumu | opłaca się przy subagentach, zob. werdykt |
| Zakładki sesji | w granicach szumu | szeroki zakres uprawnień |
| Automatyczne przekazanie | ~70 ms w bezczynności | zapisuje jedno przekazanie po osiągnięciu progu kontekstu |
Wyglądają świetnie i nic się nie zepsuło: każdy przebieg każdej konfiguracji poprawnie ukończył zadanie. W trybie headless nie kosztują nic, bo nie ma czego rysować; w terminalu te panele przerysowują się nawet trzydzieści razy na sekundę, więc uczciwym kosztem warstwy dekoracji jest uwaga, a nie tokeny.
Audyt walidatora to miejsce, w którym przestaje być zabawnie. Mod z zakładkami może wywoływać model, uruchamiać procesy na twojej maszynie i zapisywać pliki, a ścieżki do konfiguracji odczytuje ze zmiennych środowiskowych. Nic z tego nie jest ukryte i nic nie jest złośliwe, ale to bardzo duży zasięg jak na zakładki. Cztery mody odpadają tutaj: miernik celu, mapa cieplna i rejestrator lotu jako dekoracja bez żadnej zmierzonej korzyści oraz mod z zakładkami, bo prosi o więcej, niż daje.
Flagowy mod rachunkuje każdą turę
Podpowiadacz to mod, który każdy film pokazuje jako pierwszy: odpowiedź się kończy, nad polem wpisywania pojawiają się trzy propozycje promptów, naciskasz cyfrę i szkic wypełnia się sam. Mechanizm opisuje sam jego autor: gdy tura się kończy, mod rozwidla sesję, żeby poprosić model o te propozycje, a rozwidlenie współdzieli cache promptów sesji, więc kosztuje mniej więcej jedną krótką odpowiedź. Przeglądy nigdy nie wspominają o tej linii.
Na stanowisku testowym daje to około 250 dodatkowych tokenów wyjścia na kwalifikującą się odpowiedź i prawie trzy sekundy dodatkowego czasu, a kwalifikująca się odpowiedź to niemal każda odpowiedź: wszystko dłuższe niż około osiemdziesięciu znaków. Rozwidlenie nie ma też bramki powierzchni. Propozycje rysują się tylko w terminalu, ale rozwidlenie odpala się wszędzie, także w przebiegach headless, w których nic nie można narysować.
| Mod | Zmierzony koszt | Kiedy się uruchamia |
|---|---|---|
| Podpowiadacz | ~250 tokenów wyjścia + ~2,9 s na kwalifikującą się odpowiedź | każda odpowiedź powyżej ~80 znaków, także w headless |
| Strażnik cache | ~1,5 s na turę, plus wywołania modelu w trybie rozgrzewania | każda tura, rozgrzewanie przez wiele godzin |
Strażnik cache ma ten sam kształt: około półtorej sekundy na turę i tryb rozgrzewania, który przez wiele godzin wydaje małe wywołania modelu, żeby cache promptów nie wystygł. W planie subskrypcyjnym okno cache trwa już godzinę, więc płacisz pingami za problem, który plan w większości już rozwiązał. Oba projekty są uczciwe i mają udokumentowane koszty, oba są podatkiem od każdej tury, którego listy instalacyjne nie wyceniają, i oba wylatują z maszyny.
Mod kontra hook, ta sama robota
Claude Code miał już hooki: skrypt powłoki w ustawieniach, który odpala się na tych samych zdarzeniach. Dokumentacja rozstrzyga wybór jednym wierszem tabeli: mod służy do interfejsu i przepisywania zdarzeń; hook do blokowania, zezwalania lub logowania skryptem, który już masz.
Mierzalna różnica to uruchamianie procesu. Hook w ustawieniach startuje nowy proces przy każdym wywołaniu narzędzia. Zmierzone na tej maszynie, hook powłoki, który nic nie robi, kosztuje około 8 ms, a hook uruchamiający Node około 43 ms, przy każdym wywołaniu, zanim skrypt zrobi cokolwiek. Przy 5993 wywołaniach narzędzi z tygodnia testowego daje to ponad cztery minuty samego startu interpretera. Mod nie płaci nic z tego: jego handler działa w procesie samego silnika, a log silnika pokazuje, że przeskok zamyka się w około milisekundzie.
| Handler | Koszt wywołania | Tydzień 5993 wywołań |
|---|---|---|
| Hook powłoki (no-op) | ~8 ms | ~48 s |
| Hook Node (no-op) | ~43 ms | ~4,3 min |
| Mod (w procesie) | ~1 ms | ~6 s |
Jedyny prawdziwy raport z migracji w terenie mówi to samo: dwadzieścia siedem hooków powłoki zwinęło się w pięć modów, a start procesu przy każdym wywołaniu zniknął razem z nimi. Zasada, która zostaje: interfejs lub przepisywanie zdarzeń, mod; blokowanie, zezwalanie lub logowanie skryptem, któremu ufasz, hook; koszt startu procesu liczy się dopiero przy tysiącach wywołań; wiedza, którą ciągle powtarzasz, skill. Hook, który przeczytałeś, wygrywa z modem, którego nie przeczytałeś.
Strażnik, który nic nie robi
Najprostszy możliwy mod bezpieczeństwa to strażnik, który pilnuje każdego polecenia powłoki, a ten został napisany tak, żeby się wywalał. Claude Code poproszono o utworzenie pliku znacznikowego; strażnik rzucił wyjątek; polecenie i tak się wykonało, a plik się pojawił. To nie błąd, tylko udokumentowane ustawienie domyślne: gdy hook rzuca wyjątek, przekracza limit czasu lub zwraca zły kształt danych, Claude Code pomija go i idzie dalej. Zepsuta dekoracja nie powinna unieruchomić sesji, ale zepsuty strażnik zawodzi otwarcie, po cichu, z jedną linią w logu debugowania, której nikt nie czyta.
Poprawka to jeden handler catch, który zwraca odmowę. Ten sam wywalający się strażnik z handlerem catch odmawia wykonania polecenia i wskazuje przyczynę awarii. Jedna linia decyduje, czy strażnik zawodzi otwarcie, czy zamknięcie, dokumentacja dostarcza dokładnie ten wzorzec, a prawie nikt go nie instaluje.
Zespół ze społeczności powtórzył przypadki na bieżącym wydaniu i oceniał je po plikach znacznikowych, a nie po tym, co powiedział model. Wzorzec z catch zawiódł zamknięcie trzy razy na trzy, a jedna ścieżka nadal jest po cichu zepsuta: odmowa zwrócona po tym, jak wywołanie zostało już przekazane dalej, nie zatrzymuje narzędzia. Plik pojawił się trzy razy na trzy, podczas gdy modelowi powiedziano, że zapis się nie udał.
Raport z praktyki, który nazwał ten problem, opisywał strażnika działającego przez wiele dni, który był włączony, załadowany i nie robił nic, bo nieaktualna flaga wyłączyła go pod spodem: trzy zielone znaczniki nad licznikiem zatrzymanym na zerze. Cisza, która wygląda dokładnie jak zdrowie.
Strażnik kolizji zdobywa pierwsze miejsce na liście do zostawienia. Rozwiązuje prawdziwy problem, czyli dwa otwarte czaty edytujące ten sam plik, a jego awaria jest głośna: pyta w oknie dialogowym i nigdy po cichu nie zezwala. Kosztuje około pół sekundy przy edycjach i nie dodaje nic do promptu. Zainstaluj go i mimo to dodaj mu handler catch.
Co oddajesz, wklejając moda
Anthropic mówi to wprost w dniu premiery: mody działają z takim samym dostępem do twojej maszyny jak sam Claude Code. Nie są w piaskownicy; instaluj je tak, jak instalujesz każdy kod na swoim komputerze. W praktyce mod może działać na twojej maszynie jako ty: czytać twoje środowisko i ustawienia, gdzie leżą klucze API; widzieć każdy prompt i każde wywołanie narzędzia; przepisywać je; zatwierdzić wywołanie narzędzia, zanim ktokolwiek cię zapyta; i wydawać limit twojego planu na własne wywołania modelu.
Dwie pułapki łapią nawet ostrożnych użytkowników. Reguły uprawnień rządzą wywołaniami narzędzi Claude'a, a nie własnymi wywołaniami moda: odmów Claude'owi pliku env, a mod nadal może przeczytać ten plik bezpośrednio własnym dostępem do plików albo uruchomić program, który to zrobi. Polityka sieciowa ma tę samą krawędź: wyłącz ruch webowy, a własne wywołania fetch moda zostaną odrzucone, ale proces potomny uruchomiony przez moda łączy się z siecią z pełnym dostępem. Istnieje wbudowany mod strażnika, który ładuje się przed wszystkim, ale tylko na maszynach zarządzanych i dla miejsc w planie Team lub Enterprise; pojedyncze miejsce na osobistej subskrypcji nie dostaje z tego nic.
Nic z tego nie jest teoretyczne. Użytkownik opublikował proof of concept w kilka dni po premierze: mod, którego przycisk uruchamia program i zapisuje coś w katalogu domowym, zainstalowany z katalogu bez żadnego ostrzeżenia. Jego argument się trzyma: katalog wygląda jak sklep z aplikacjami, co sugeruje weryfikację, której nie ma. Osobny błąd hooków zepsuł izolację subagentów na jeden dzień; opiekun nazwał to wielką wpadką i naprawił wydaniem później.
Własny skan katalogu obejmujący ponad tysiąc publicznych modów: ponad czterysta uruchamia procesy hosta, prawie czterysta czyta pliki, a ponad trzysta widzi każde wywołanie narzędzia. Zastrzeżenie katalogu to właściwa rama: to ślad uprawnień, a nie werdykt; tracker PR musi uruchamiać git. Dyscyplina kosztuje dwie minuty: uruchom walidator przed włączeniem czegokolwiek i znaj wyjścia awaryjne: tryb bezpieczny na jedną sesję, jedno ustawienie, które na stałe zatrzymuje każdy zainstalowany hook.
Zostają trzy, siedem do usunięcia
Z dziesięciu na swoje miejsce zasługują trzy: strażnik kolizji, router modeli i automatyczne przekazanie.
| Mod | Werdykt | Liczba, która za tym stoi |
|---|---|---|
| Strażnik kolizji | zostaje | ~0,5 s przy edycjach, zawodzi głośno, nic nie dodaje do promptu |
| Router modeli | zostaje | subagent rozliczony po tanim modelu, za jedną trzecią ceny |
| Automatyczne przekazanie | zostaje | 70 ms niczego, jeden zapis przekazania po progu kontekstu |
| Podpowiadacz | do usunięcia | ~250 tokenów wyjścia + ~2,9 s przy każdej kwalifikującej się odpowiedzi |
| Strażnik cache | do usunięcia | ~1,5 s na turę, pingi rozgrzewające wobec 1-godzinnego okna cache |
| Tryb nagrywania | do usunięcia | maskuje ekran, ale nie dysk |
| Miernik celu | do usunięcia | dekoracja, zero zmierzonej korzyści |
| Mapa cieplna repo | do usunięcia | dekoracja, zero zmierzonej korzyści |
| Rejestrator lotu | do usunięcia | dekoracja, zero zmierzonej korzyści |
| Zakładki sesji | do usunięcia | zasięg daleko poza zadaniem |
Router modeli ma paragon: sesja na dużym modelu uruchomiła jednego subagenta, a własny odczyt zużycia pokazał, że subagent został rozliczony po tanim modelu, za jedną trzecią ceny przy tej samej małej robocie. W tygodniach pełnych subagentów to realne pieniądze. Automatyczne przekazanie nie kosztuje nic aż do chwili, gdy się zwraca: siedemdziesiąt milisekund narzutu w bezczynności, a po przekroczeniu progu kontekstu zapisuje przekazanie na zimny start, raz. Jeden z twórców tej fali przyznaje, że ręczny przycisk przekazania naprawdę nie oszczędza czasu; jako automatyczny zapis po progu faktycznie oszczędza.
Dyscyplina, która przetrwa test: przeczytaj audyt walidatora, zanim cokolwiek włączysz, daj każdemu strażnikowi handler catch, żeby zawodził zamknięcie, i nagrywaj demo w trybie bezpiecznym zamiast ufać modowi maskującemu. Ograniczenia są realne: jeden tydzień, jedna maszyna, jedno obciążenie, trzy przebiegi na punkt na małym modelu. Twoja trójka może być inna, ale teraz wiesz, jak ją znaleźć.
AIDive