Un developer ha scoperto che una ricerca nascosta di npx aggiungeva circa 10 secondi a ogni turno di Claude Code, e sostituire tale ricerca con un'installazione globale ha ridotto di sei secondi ogni interazione.

Perché la latenza era importante

Claude Code naviga in un monorepo con decine di componenti, indicizza i simboli, persiste le trascrizioni in Postgres ed emette report sugli errori. Il flusso di lavoro sembra fluido finché le risposte del modello non iniziano a rallentare. Un health check ha poi rivelato diverse inefficienze e una costosa chiamata di rete.

Cosa ha rivelato l'health check

  • Installazioni duplicate – un launcher nativo e una versione npm-global obsoleta coesistevano. Rimuovere la copia obsoleta ha eliminato una ricerca inutile del percorso.
  • File dell'agente corrotto – un file senza descrizione duplicava il nome di un file valido, causando l'ignoranza di Claude Code verso di esso. Eliminare la voce corrotta ha risolto la confusione.
  • Estensioni inutilizzate – un plugin e un server MCP che non venivano mai attivati sono stati disabilitati, riducendo l'impronta durante l'esecuzione.
  • File “CLAUDE.md” ingombranti – questi file ripetevano informazioni già presenti nel codice (ad es. comandi di build), gonfiando il payload inviato al modello. Ridurli ha permesso di mantenere solo il contesto essenziale.

Queste pulizie hanno aiutato, ma il risultato maggiore è arrivato dallo Stop hook che viene eseguito dopo ogni risposta del modello.

La "tassa" nascosta di npx

Lo Stop hook esegue sei comandi separati, ognuno preceduto da npx -y. Il flag -y forza npx a controllare il registro npm per una versione più recente prima di eseguire il comando, innescando una richiesta di rete. Ogni ricerca durava in media 1,6 secondi, quindi le sei chiamate aggiungevano circa 10 secondi a ogni turno. In pratica, la latenza complessiva dell'hook era di 12 secondi, con picchi occasionali fino a 113 secondi in caso di problemi alla rete.

La soluzione semplice

Sostituire le chiamate npx con un binario installato globalmente ha eliminato la ricerca nel registro:

  • Prima: npx -y @invariance/gps → 1,6 s per chiamata
  • Dopo: gps (installato globalmente) → 0,7 s per chiamata

La modifica ha ridotto il tempo di esecuzione dello Stop hook di circa 6 secondi per turno ed ha eliminato i massicci picchi causati dal controllo remoto.

Cosa monitorare in futuro

  • Timing degli hook – strumentare eventuali hook personalizzati per far emergere la latenza prima che danneggi gli utenti.
  • Igiene delle dipendenze – eliminare regolarmente installazioni duplicate ed estensioni inutilizzate.
  • File di configurazione – mantenere i file “CLAUDE.md” snelli; mostrare solo le informazioni che il modello non può dedurre.

La lezione è semplice: l'automazione può nascondere processi infrastrutturali costosi. Un rapido health check può rivelare chiamate di rete nascoste che trasformano un assistente AI fluido in uno lento.

In sintesi: Quando Claude Code sembra lento, cronometra gli hook ed elimina ogni ricerca npx; un'installazione globale può risparmiare secondi a ogni turno e mantenere fluido il tuo flusso di sviluppo.