ایک ڈویلپر نے دریافت کیا کہ ایک پوشیدہ npx لُک اپ (lookup) ہر Claude Code ٹرن میں تقریباً 10 سیکنڈ کا اضافہ کر رہا تھا، اور اس لُک اپ کو گلوبل انسٹالیشن سے بدلنے سے ہر انٹراکشن (interaction) میں چھ سیکنڈ کی بچت ہوئی۔
لیٹنسی (latency) کیوں اہم تھی
Claude Code درجنوں اجزاء (components) والے ایک مونو ریپو (monorepo) میں کام کرتا ہے، سمبلز کو انڈیکس کرتا ہے، Postgres میں ٹرانسکرپٹس کو محفوظ کرتا ہے، اور ایرر رپورٹس بھیجتا ہے۔ ورک فلو تب تک ہموار محسوس ہوتا ہے جب تک ماڈل کے جوابات میں تاخیر شروع نہیں ہوتی۔ اس کے بعد ایک ہیلتھ چیک (health check) نے کئی نااہلیوں اور ایک مہنگی نیٹ ورک کال کو بے نقاب کیا۔
ہیلتھ چیک نے کیا کچھ بے نقاب کیا
- ڈپلیکیٹ انسٹالیشنز – ایک نیٹیو لانچر اور ایک پرانی npm-global ورژن ایک ساتھ موجود تھے۔ پرانی کاپی کو ہٹانے سے غیر ضروری پاتھ لُک اپ (path lookup) ختم ہو گیا۔
- خراب ایجنٹ فائل – بغیر ڈسکرپشن والی ایک فائل نے ایک درست فائل کے نام کو ڈپلیکیٹ کر دیا تھا، جس کی وجہ سے Claude Code اسے نظر انداز کر رہا تھا۔ خراب انٹری کو ڈیلیٹ کرنے سے الجھن ختم ہو گئی۔
- غیر استعمال شدہ ایکسٹینشنز – ایک پلگ ان اور ایک MCP سرور جو کبھی استعمال نہیں ہوئے تھے، انہیں ڈس ایبل کر دیا گیا، جس سے رن ٹائم فوٹ پرنٹ (runtime footprint) کم ہو گیا۔
- بھرے ہوئے “CLAUDE.md” فائلز – یہ فائلز ایسی معلومات کو دہراتی تھیں جو پہلے سے کوڈ میں موجود تھیں (مثلاً build commands)، جس سے ماڈل کو بھیجے جانے والے پے لوڈ (payload) کا حجم بڑھ جاتا تھا۔ انہیں کم کرنے سے صرف ضروری سیاق و سباق (context) باقی رہ گیا۔
ان صفائی کے کاموں سے مدد ملی، لیکن سب سے بڑی کامیابی Stop hook سے حاصل ہوئی جو ماڈل کے ہر جواب کے بعد چلتا ہے۔
پوشیدہ npx ٹیکس
Stop hook چھ الگ الگ کمانڈز چلاتا ہے، جن میں سے ہر ایک کے شروع میں npx -y لگا ہوتا ہے۔ -y فلیگ npx کو کمانڈ چلانے سے پہلے npm رجسٹری میں نئے ورژن کو چیک کرنے پر مجبور کرتا ہے، جس سے نیٹ ورک ریکویسٹ (network request) ٹرگر ہوتی ہے۔ ہر لُک اپ کا اوسط 1.6 سیکنڈ تھا، اس لیے چھ کالز نے ہر ٹرن میں تقریباً 10 سیکنڈ کا اضافہ کر دیا۔ عملی طور پر ہک کی مجموعی لیٹنسی (latency) 12 سیکنڈ تھی، اور نیٹ ورک میں خرابی کی صورت میں یہ کبھی کبھار 113 سیکنڈ تک بھی پہنچ جاتی تھی۔
سادہ حل
npx کالز کو گلوبل انسٹال شدہ بائنری (binary) سے بدلنے سے رجسٹری لُک اپ ختم ہو گیا:
- پہلے:
npx -y @invariance/gps→ ہر کال کے لیے 1.6 سیکنڈ - بعد میں:
gps(گلوبل انسٹال شدہ) → ہر کال کے لیے 0.7 سیکنڈ
اس تبدیلی نے Stop hook کے رن ٹائم کو ہر ٹرن میں تقریباً 6 سیکنڈ کم کر دیا اور ریموٹ چیک کی وجہ سے ہونے والے بڑے اسپائیکس (spikes) کو ختم کر دیا۔
آگے کن چیزوں پر نظر رکھنی چاہیے
- ہک ٹائمنگ (Hook timing) – کسی بھی کسٹم ہک کی پیمائش (instrument) کریں تاکہ صارفین کو متاثر کرنے سے پہلے ہی لیٹنسی کا پتہ چل سکے۔
- ڈیپینڈینسی ہائیجین (Dependency hygiene) – باقاعدگی سے ڈپلیکیٹ انسٹالیشنز اور غیر استعمال شدہ ایکسٹینشنز کو ختم کرتے رہیں۔
- کنفیگریشن فائلز – “CLAUDE.md” کو مختصر رکھیں؛ صرف وہی معلومات فراہم کریں جن کا ماڈل خود اندازہ نہ لگا سکے۔
سبق سادہ ہے: آٹومیشن مہنگے اور پیچیدہ نظام (plumbing) کو چھپا سکتی ہے۔ ایک فوری ہیلتھ چیک ان پوشیدہ نیٹ ورک کالز کو بے نقاب کر سکتا ہے جو ایک ہموار AI اسسٹنٹ کو سست بنا دیتی ہیں۔
حاصلِ کلام: جب Claude Code سست محسوس ہو، تو ہکس (hooks) کے وقت کی پیمائش کریں اور کسی بھی npx لُک اپ کو ختم کریں؛ ایک گلوبل انسٹالیشن ہر ٹرن سے سیکنڈز بچا سکتی ہے اور آپ کے ڈویلپمنٹ فلو کو ہموار رکھ سکتی ہے۔
