टर्मिनल AI साठी स्वयंचलितपणे अपडेट होणारा नॉलेज बेस

मी माझा दिवसाचा बराचसा वेळ टर्मिनलमध्ये AI कोडिंग असिस्टंटसोबत घालवतो.

अनेकदा एखाद्या सेशनमध्ये मी कठीण समस्या सोडवतो. मला एखादा कठीण उपाय किंवा विशिष्ट कॉन्फिग सेटिंग सापडते. त्यानंतर मी टॅब बंद करतो आणि ती माहिती निघून जाते. महिनाभरानंतर, मी पुन्हा तीच समस्या सोडवतो.

मी Claude Code hooks वापरून माझ्या असिस्टंटला स्वतःच्या नोट्स तयार करण्यासाठी एक सिस्टम तयार केली आहे.

ही सिस्टम तीन भागांचा वापर करते:

  • संदर्भ देण्यासाठी प्रत्येक प्रॉम्प्टवर एक लहान Markdown नॉलेज बेस शोधणे.
  • सेशन संपल्यावर उपयुक्त नोट्स कॅप्चर करणे.
  • सेशन सुरू झाल्यावर इंडेक्स लोड करणे.

तुमचा वर्कफ्लो मंद न करता हे कसे तयार करायचे ते खाली दिले आहे.

  1. माहिती मिळवण्यासाठी (retrieval) UserPromptSubmit वापरा

तुम्ही प्रत्येक वेळी प्रॉम्प्ट पाठवल्यावर हा hook चालतो. तो तुमचा मजकूर स्वीकारतो आणि मॉडेलने उत्तर देण्यापूर्वी संदर्भ (context) समाविष्ट करू शकतो.

मॉडेलने तुमच्या नोट्स कधी पाहायच्या हे ठरवू देऊ नका. संबंधित फाइल्स शोधण्यासाठी grep सारखी जलद सर्च पद्धत वापरा. फक्त पहिले पाच मॅचेस समाविष्ट करा. यामुळे ही प्रक्रिया १००ms पेक्षा कमी वेळात पूर्ण होते.

सर्च हुक्ससाठी दोन नियम:

  • ते स्वस्त ठेवा. सुरुवातीच्या सर्चसाठी LLM ऐवजी grep वापरा.
  • ते हलके (lean) ठेवा. फक्त शीर्षके आणि फाईल पाथ्स समाविष्ट करा. अधिक तपशीलाची गरज असल्यास मॉडेल फाईल उघडू शकते.
  1. जड कामांसाठी (heavy tasks) Stop hook टाळा

असिस्टंटने उत्तर पूर्ण केल्यावर प्रत्येक वेळी Stop hook चालतो. जर तुम्ही येथे एखादे मोठे काम चालवले, तर तुमचा असिस्टंट मंद होईल. ३० टर्नच्या सेशनमध्ये ३० जड कामे ट्रिगर होतील.

त्याऐवजी, संपूर्ण सेशन एकदाच कॅप्चर करण्यासाठी SessionEnd वापरा.

  1. SessionEnd ची मर्यादा सोडवा

SessionEnd हे नॉन-ब्लॉकिंग (non-blocking) आहे. जर तुम्ही येथे एखादे मोठे बॅकग्राउंड टास्क सुरू केले, तर सेशन बंद होताना सिस्टम ते थांबवू शकते.

उपाय म्हणजे दोन हुक्स वापरणे:

  • SessionEnd: ट्रान्सक्रिप्ट पाथ वेगाने एका क्यू (queue) फाईलमध्ये जोडा.
  • SessionStart: ती क्यू रिकामी करा आणि जड कॅप्चर टास्क बॅकग्राउंडमध्ये चालवा.

पुढचे सेशन सक्रिय असल्यामुळे, बॅकग्राउंड प्रोसेस सुरू राहील.

  1. इन्फिनिट लूप्स (infinite loops) रोखा

जेव्हा तुम्ही नोट्स लिहिण्यासाठी हेडलेस (headless) AI सुरू करता, तेव्हा तो तुमचे एन्व्हायरमेंट (environment) वारसा म्हणून घेतो. याचा अर्थ असा की नवीन AI स्वतःचे हुक्स ट्रिगर करेल. यामुळे अंतहीन AI कॉल्सचा लूप तयार होतो.

तुमच्या स्क्रिप्टच्या सुरुवातीला नेहमी रिकर्शन गार्ड (recursion guard) जोडा:

[ -n "$KB_CAPTURE" ] && exit 0

जेव्हा तुम्ही तुमचा बॅकग्राउंड कॅप्चर टास्क सुरू करता, तेव्हा KB_CAPTURE=1 सेट करा.

सेटअपचा सारांश:

  • त्वरित संदर्भ समाविष्ट करण्यासाठी UserPromptSubmit वापरा.
  • टास्क क्यू (enqueue) करण्यासाठी SessionEnd वापरा.
  • प्रत्यक्ष काम करण्यासाठी SessionStart वापरा.
  • पैसे वाचवण्यासाठी नोट्सचा सारांश काढण्यासाठी स्वस्त मॉडेल वापरा.

एकदा एखादी समस्या पुन्हा सोडवण्यापासून वाचले तरी ते अनेक कॅप्चरच्या खर्चापेक्षा जास्त फायदेशीर ठरते.

Source: https://dev.to/just_an_electron/a-self-updating-knowledge-base-for-my-terminal-ai-assistant-claude-code-hooks-28jb

Optional learning community: https://t.me/GyaanSetuAi