एका डेव्हलपरला असे आढळले की एका लपलेल्या npx लुकअपमुळे Claude Code च्या प्रत्येक टर्नला (turn) साधारणपणे १० सेकंद अधिक लागत होते, आणि त्या लुकअपऐवजी ग्लोबल इन्स्टॉलेशन (global install) वापरल्यामुळे प्रत्येक इंटरॅक्शनचा वेळ सहा सेकंद कमी झाला.

लॅटन्सी (Latency) का महत्त्वाची होती

Claude Code डझनांहून अधिक कंपोनेंट्स असलेल्या एका मोनोरेपोमध्ये (monorepo) नेव्हिगेट करते, सिम्बॉल्स इंडेक्स करते, Postgres मध्ये ट्रान्सक्रिप्ट्स सेव्ह करते आणि एरर रिपोर्ट्स पाठवते. जोपर्यंत मॉडेलची उत्तरे देण्यास उशीर होऊ लागत नाही, तोपर्यंत वर्कफ्लो सुरळीत वाटतो. त्यानंतर एका हेल्थ चेकने (health check) काही अकार्यक्षमता आणि एक खर्चिक नेटवर्क कॉल समोर आणला.

हेल्थ चेकमध्ये काय समोर आले

  • ड्युप्लिकेट इन्स्टॉलेशन्स (Duplicate installations) – एक नेटिव्ह लाँचर आणि एक जुनी npm-global आवृत्ती एकत्र अस्तित्वात होत्या. जुनी प्रत काढून टाकल्यामुळे अनावश्यक पाथ लुकअप (path lookup) थांबला.
  • ब्रोकन एजंट फाईल (Broken agent file) – डिस्क्रिप्शन नसलेल्या एका फाईलचे नाव एका वैध फाईलसारखेच होते, ज्यामुळे Claude Code ने ती फाईल दुर्लक्षित केली. ती खराब एंट्री डिलीट केल्यामुळे गोंधळ दूर झाला.
  • वापरले न गेलेले एक्सटेंशन्स (Unused extensions) – एक प्लगइन आणि एक MCP सर्व्हर जे कधीही वापरले जात नव्हते, ते डिसेबल करण्यात आले, ज्यामुळे रनटाइम फूटप्रिंट (runtime footprint) कमी झाला.
  • मोठ्या झालेल्या “CLAUDE.md” फाईल्स – या फाईल्समध्ये कोडमध्ये आधीच असलेल्या माहितीची (उदा. बिल्ड कमांड्स) पुनरावृत्ती होत होती, ज्यामुळे मॉडेलला पाठवल्या जाणाऱ्या पेलोडचा (payload) आकार वाढत होता. त्या कमी केल्यामुळे फक्त आवश्यक संदर्भ (context) शिल्लक राहिला.

या क्लिन-अप्समुळे मदत झाली, पण सर्वात मोठा फायदा Stop hook मुळे झाला, जो मॉडेलच्या प्रत्येक प्रतिसादानंतर चालतो.

लपलेला npx टॅक्स (tax)

Stop hook सहा वेगळ्या कमांड्स कार्यान्वित करतो, ज्यापैकी प्रत्येकाच्या सुरुवातीला npx -y आहे. -y फ्लॅगमुळे npx कमांड चालवण्यापूर्वी npm रजिस्ट्रीमध्ये नवीन आवृत्ती आहे का ते तपासण्यास भाग पडते, ज्यामुळे नेटवर्क रिक्वेस्ट ट्रिगर होते. प्रत्येक लुकअपला सरासरी १.६ सेकंद लागत होते, त्यामुळे सहा कॉल्समुळे प्रत्येक टर्नला सुमारे १० सेकंद वाढत होते. प्रत्यक्षात, हुकची एकूण लॅटन्सी १२ सेकंद होती, आणि नेटवर्कमध्ये अडथळा आल्यास ती वेळ अधूनमधून ११३ सेकंद पर्यंत वाढत असे.

सोपा उपाय

npx कॉल्सच्या जागी ग्लोबल इन्स्टॉल केलेली बायनरी (binary) वापरल्यामुळे रजिस्ट्री लुकअप थांबला:

  • आधी: npx -y @invariance/gps → प्रति कॉल १.६ सेकंद
  • नंतर: gps (ग्लोबल इन्स्टॉल केलेले) → प्रति कॉल ०.७ सेकंद

या बदलामुळे Stop hook चा रनटाइम प्रति टर्न साधारणपणे ६ सेकंद कमी झाला आणि रिमोट चेकमुळे येणारे मोठे स्पाइक्स (spikes) देखील थांबले.

पुढे काय पाहावे

  • Hook timing – युजर्सना त्रास होण्यापूर्वी लॅटन्सी शोधण्यासाठी कोणत्याही कस्टम हुक्सचे (custom hooks) इन्स्ट्रुमेंटेशन करा.
  • Dependency hygiene – ड्युप्लिकेट इन्स्टॉलेशन्स आणि न वापरलेले एक्सटेंशन्स नियमितपणे काढून टाका.
  • Configuration files – “CLAUDE.md” फाईल्स सुटसुटीत ठेवा; फक्त तीच माहिती द्या जी मॉडेल स्वतःहून ओळखू शकत नाही.

धडा साधा आहे: ऑटोमेशनमुळे खर्चिक तांत्रिक प्रक्रिया (plumbing) लपल्या जाऊ शकतात. एक जलद हेल्थ चेक अशा लपलेल्या नेटवर्क कॉल्सचा खुलासा करू शकतो, ज्यामुळे एक सुरळीत चालणारा AI असिस्टंट संथ होऊ शकतो.

थोडक्यात: जेव्हा Claude Code संथ वाटत असेल, तेव्हा हुक्सचा वेळ तपासा आणि कोणतेही npx लुकअप काढून टाका; ग्लोबल इन्स्टॉलेशनमुळे प्रत्येक टर्नचा वेळ वाचू शकतो आणि तुमचा डेव्हलपमेंट फ्लो सुरळीत राहू शकतो.