Deweloper odkrył, że ukryte wyszukiwanie npx dodawało około 10 sekund do każdej tury Claude Code, a zastąpienie tego wyszukiwania globalną instalacją skróciło czas każdej interakcji o sześć sekund.
Dlaczego opóźnienie miało znaczenie
Claude Code porusza się po monorepo z dziesiątkami komponentów, indeksuje symbole, zapisuje transkrypcje w Postgres i wysyła raporty błędów. Workflow wydaje się płynny, dopóki odpowiedzi modelu nie zaczynają się opóźniać. Sprawdzenie stanu (health check) ujawniło kilka nieefektywności oraz jedno kosztowne wywołanie sieciowe.
Co wykazało sprawdzenie stanu
- Duplikaty instalacji – natywny launcher i przestarzała wersja npm-global współistniały ze sobą. Usunięcie nieaktualnej kopii wyeliminowało zbędne wyszukiwanie ścieżki.
- Uszkodzony plik agenta – plik bez opisu powielał nazwę poprawnego pliku, co powodowało, że Claude Code go ignorował. Usunięcie błędnego wpisu rozwiązało problem.
- Nieużywane rozszerzenia – wyłączono wtyczkę oraz serwer MCP, które nigdy nie były uruchamiane, co zmniejszyło obciążenie podczas działania (runtime footprint).
- Przeładowane pliki „CLAUDE.md” – pliki te powtarzały informacje już obecne w kodzie (np. komendy budowania), co zwiększało rozmiar przesyłanych do modelu danych (payload). Po ich skróceniu pozostał jedynie niezbędny kontekst.
Te porządki pomogły, ale największy zysk przyniosło rozwiązanie problemu z Stop hook, który uruchamia się po każdej odpowiedzi modelu.
Ukryty podatek npx
Stop hook wykonuje sześć oddzielnych komend, z których każda ma prefiks npx -y. Flaga -y wymusza na npx sprawdzenie rejestru npm w poszukiwaniu nowszej wersji przed uruchomieniem komendy, co wywołuje żądanie sieciowe. Każde wyszukiwanie trwało średnio 1,6 sekundy, więc sześć wywołań dodawało około 10 sekund do każdej tury. W praktyce całkowite opóźnienie hooka wynosiło 12 sekund, z okazjonalnymi skokami do 113 sekund w przypadku problemów z siecią.
Prosta poprawka
Zastąpienie wywołań npx binarnym plikiem zainstalowanym globalnie wyeliminowało wyszukiwanie w rejestrze:
- Przed:
npx -y @invariance/gps→ 1,6 s na wywołanie - Po:
gps(zainstalowany globalnie) → 0,7 s na wywołanie
Zmiana skróciła czas działania Stop hooka o około 6 sekund na turę i wyeliminowała ogromne skoki opóźnień spowodowane zdalnym sprawdzaniem.
Na co zwrócić uwagę w przyszłości
- Czas działania hooków – monitoruj (instrumentuj) wszelkie niestandardowe hooki, aby wykryć opóźnienia, zanim dotkną one użytkowników.
- Higiena zależności – regularnie usuwaj duplikaty instalacji i nieużywane rozszerzenia.
- Pliki konfiguracyjne – dbaj o to, by pliki „CLAUDE.md” były zwięzłe; podawaj tylko te informacje, których model nie może wywnioskować samodzielnie.
Lekcja jest prosta: automatyzacja może ukrywać kosztowne procesy techniczne. Szybkie sprawdzenie stanu może ujawnić ukryte wywołania sieciowe, które zmieniają płynnego asystenta AI w powolnego.
Wniosek: Gdy Claude Code wydaje się wolny, zmierz czas działania hooków i wyeliminuj wszelkie wyszukiwania npx; globalna instalacja może skrócić każdą turę o kilka sekund i zapewnić płynność procesu deweloperskiego.
