एका डेव्हलपरने तीन-स्तरीय कोड-बेस मॅप (code-base map) सादर केला आहे, ज्यामुळे AI कोडिंग एजंट्स विविध सेशन्समध्ये संदर्भाची जाणीव ठेवू शकतात.

AI एजंट्सना मॅपची गरज का आहे

चॅट-आधारित कोडिंग असिस्टंट्स रिपॉझिटरीचा (repository) मेंटल मॉडेल केवळ तेव्हाच तयार करतात जेव्हा प्रॉम्प्ट विंडो उघडी असते. जेव्हा कॉन्टेक्स्ट विंडो बंद होते, तेव्हा तो मॉडेल नष्ट होतो, ज्यामुळे एजंटला सिम्बॉल्स (symbols), इम्पॉर्ट्स (imports) आणि फाईल संबंध पुन्हा शून्यापासून शोधण्यास भाग पाडले जाते. या सततच्या प्रक्रियेमुळे कॉम्प्युट सायकल वाया जातात आणि जेव्हा डेव्हलपर फाईल्समध्ये बदल करतो किंवा विश्रांतीनंतर प्रोजेक्टवर परत येतो, तेव्हा एजंट कमी उपयुक्त ठरतो.

मॅप बनवणारे तीन स्तर

  • स्ट्रक्चरल लेअर (Structural layer) – सिम्बॉल्स, फंक्शन कॉल्स आणि इम्पॉर्ट स्टेटमेंट्सचे कॅटलॉग. हे "काय काय कॉल करते" यांसारख्या स्थिर (static) प्रश्नांची उत्तरे देते.
  • टेम्पोरल लेअर (Temporal layer) – git वरून मिळणारे संकेत, जसे की फाईल चर्न रेट्स (file churn rates) आणि ओनरशिप हिस्ट्री. कोडचे कोणते भाग वारंवार बदलतात आणि ते कोण बदलते, हे यातून समजते.
  • बिहेवियरल लेअर (Behavioral layer) – एजंटच्या स्वतःच्या एडिट आणि नेव्हिगेशन हिस्ट्रीमधून काढलेले वास्तविक वापराचे पॅटर्न. कोडिंग सेशन दरम्यान प्रत्यक्षात कोणत्या फाईल्स एकत्र उघडल्या जातात, हे यातून स्पष्ट होते आणि "ट्रू नेबर्स" (true neighbors) समोर येतात जे स्टॅटिक अनालिसिसमध्ये सुटतात.

बिहेवियरल लेअरला सर्वाधिक महत्त्व आहे कारण ते केवळ कोड कसा जोडलेला आहे हेच नाही, तर डेव्हलपर्स (आणि एजंट्स) खरोखर कसे काम करतात, याचे प्रतिबिंब दर्शवते.

एजंटला मॅप पुरवण्याचे दोन मार्ग

  1. अँबियंट पाथ (Ambient Path) – प्रत्येक इंटरॅक्शनमध्ये समाविष्ट केलेला एक संक्षिप्त सारांश. हे कोणत्याही अतिरिक्त कॉल्सशिवाय एजंटला "तुम्ही X मॉड्यूलमध्ये आहात, हे सिम्बॉल्स जवळ आहेत" असा त्वरित स्नॅपशॉट देते.
  2. डीप पाथ (Deep Path) – ऑन-डिमांड क्वेरी टूल्स, ज्यांचा वापर एजंट अधिक तपशीलांसाठी करू शकतो, जसे की वारंवार एकत्र बदलल्या जाणाऱ्या फाईल्सची यादी किंवा अलीकडील ओनरशिपची टाइमलाइन.

अँबियंट आणि डीप माहिती वेगळी केल्यामुळे नियमित प्रॉम्प्ट हलका राहतो आणि आवश्यकतेनुसार सखोल माहिती देखील मिळते.

सिस्टम हलकी (lean) ठेवण्याचे डिझाइन नियम

  • हेवीवेट लँग्वेज सर्व्हर्स टाळा. मॅप पूर्ण 'टाइप इन्फरन्स' (type inference) ऐवजी 'शॅलो पार्सिंग'वर (shallow parsing) अवलंबून असतो. ध्येय प्रगत स्टॅटिक अनालायझर्सना मागे टाकणे नसून, बिहेवियरल इनसाइटने त्यांना पूरक बनवणे आहे.
  • ग्राफ प्रोजेक्टनुसार मर्यादित ठेवा. ही सिस्टम सर्व रिपॉझिटरीजमध्ये एक ग्लोबल डिपेंडन्सी ग्राफ तयार करत नाही. यामुळे मेमरीचा वापर कमी होतो आणि अपडेट्सचा वेग वाढतो.
  • विद्यमान मेमरी स्टोअरचा पुनर्वापर करा. फाईल-चेंज लॉग्स एजंटच्या स्वतःच्या टूल कॉल्सच्या मेमरीमधून येतात, ज्यामुळे डेटाची पुनरावृत्ती टाळली जाते आणि डेटा सोर्स सुसंगत राहतो.

प्रत्यक्ष अंमलबजावणीत मॅप तयार करणे

  1. स्ट्रक्चरल डेटा गोळा करा: सोर्स फाईल्सवर वेगाने प्रक्रिया करून सिम्बॉल्स आणि इम्पॉर्ट लाईन्स काढा.
  2. टेम्पोरल मेट्रिक्स मिळवा: रिपॉझिटरीच्या git हिस्ट्रीमधून माहिती मिळवा, कोणत्या फाईल्समध्ये सर्वाधिक कमिट्स होतात आणि त्या कोणी केल्या आहेत याची नोंद घ्या.
  3. बिहेवियरल सिग्नल्स गोळा करा: प्रत्यक्ष कोडिंग सेशन दरम्यान एजंटच्या फाईल-ओपन, एडिट आणि नेव्हिगेशन कृतींची नोंद (log) करा. हे लॉग्स "को-ऑकरन्स" (co-occurrence) मॅट्रिक्सचा आधार बनतात, जे बिहेवियरल नेबर्स परिभाषित करतात.
  4. अँबियंट पाथ भरून ठेवा: सध्याच्या कार्यासाठी सर्वात संबंधित सिम्बॉल्स आणि फाईल्सची एक छोटी, क्रमाने लावलेली यादी द्या.
  5. डीप पाथ उपलब्ध करून द्या: हलक्या क्वेरी फंक्शन्सच्या स्वरूपात (उदा. "अलीकडील सेशन्समध्ये एकत्र एडिट केलेल्या फाईल्सची यादी करा").

फास्ट हुक्स (Fast hooks) प्रत्येक एडिट होताच ते कॅप्चर करतात; संथ बॅकग्राउंड स्वीप्स (background sweeps) चर्न स्टॅट्स पुन्हा मोजतात. या दोन्ही गोष्टींमुळे डेव्हलपरच्या वर्कफ्लोमध्ये अडथळा न आणता मॅप अपडेट राहतो.

प्रवासातून शिकलेले धडे

  • अँबियंट आणि ऑन-डिमांड वेगळे करा. नेहमी उपलब्ध असलेला सारांश छोटा ठेवल्यामुळे टोकन ब्लोट (token bloat) टाळता येतो, तर अधिक सखोल क्वेरीज ऐच्छिक राहतात.
  • कार्यानुसार कॉन्टेक्स्टला प्राधान्य द्या. सध्याच्या एडिट फोकसनुसार अँबियंट सिम्बॉल्सची मांडणी केल्यास अधिक उपयुक्त सूचना मिळतात.
  • आक्रमक पण हुशारीने रिफ्रेश करा. क्विक हुक्स वारंवार होणारे बदल कॅप्चर करतात; वेळोवेळी होणारे स्कॅन्स कमी वारंवार होणारे बदल आणि ओनरशिपमधील बदल हाताळतात.
  • वेगवानतेसाठी शॅलो पार्सिंग फायदेशीर ठरते. डीप टाइप अनालिसिसमुळे मॅपचा मुख्य फायदा देणाऱ्या बिहेवियरल इनसाइटशिवाय केवळ लॅटन्सी (latency) वाढते.

थोडक्यात सांगायचे तर: स्टॅटिक स्ट्रक्चर, git वरून मिळवलेली हिस्ट्री आणि वास्तविक वापराचे स्तर एका कॉम्पॅक्ट, टू-टियर ॲक्सेस मॉडेलमध्ये एकत्रित करून, डेव्हलपर्स AI कोडिंग एजंट्सना कोडबेसचा एक टिकाऊ मॅप देऊ शकतात. नेहमी उपलब्ध असलेला सारांश छोटा ठेवल्यामुळे टोकन ब्लोट टाळता येतो.