CODENS: Transforming Code Changes into Living, Accessible, and Queryable Documentation
CODENS एक ऐसा सिस्टम है जो पुल रिक्वेस्ट (pull requests) को एक टाइप किए गए सॉफ्टवेयर नॉलेज ग्राफ को क्रमिक रूप से बनाकर जीवित, क्वेरेबल डॉक्यूमेंटेशन में बदल देता है ताकि एजेंट-निर्देशित रिपॉजिटरी-स्तरीय प्रश्नोत्तर सक्षम किया जा सके, जैसा कि एक प्रोडक्शन रूबी ऑन रेल्स (Ruby on Rails) प्रोजेक्ट पर इसके सफल मूल्यांकन द्वारा प्रदर्शित किया गया है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक विशाल, प्राचीन पुस्तकालय में घूम रहे हैं जहाँ किताबें लगातार फिर से लिखी जा रही हैं। हर बार जब एक नया अध्याय जोड़ा जाता है, हाशिए में एक नोट लिखा जाता है, या एक पन्ना फाड़कर बदला जाता है, तो कहानी बदल जाती है। कंप्यूटर सॉफ़्टवेयर की दुनिया में, यह पुस्तकालय "कोडबेस" (codebase) है, और वे नोट्स "पुल रिक्वेस्ट" (pull requests) हैं—वे डिजिटल टिकट जिनका उपयोग डेवलपर्स प्रस्तावित परिवर्तनों के लिए करते हैं। समस्या यह है कि सॉफ़्टवेयर कैसे काम करता है (इसका दस्तावेज़ीकरण/documentation) इसकी "कहानी" अक्सर इन परिवर्तनों के शोर में खो जाती है। डेवलपर्स को यह अंदाज़ा लगाने के लिए मजबूर होना पड़ता है कि चीज़ें आपस में कैसे जुड़ती हैं क्योंकि निर्देश हज़ारों फ़ाइलों और पुराने चैट लॉग्स में बिखरे हुए होते हैं।
इसे हल करने के लिए, वैज्ञानिकों ने "नॉलेज ग्राफ्स" (knowledge graphs) बनाना शुरू कर दिया है। इन्हें केवल तथ्यों की एक साधारण सूची के रूप में नहीं, बल्कि एक विशाल, जीवित मानचित्र के रूप में सोचें जहाँ कोड का हर हिस्सा एक शहर है, और उनके बीच के संबंध सड़कें हैं। यदि आप एक शहर को बदलते हैं, तो मानचित्र स्वचालित रूप से उस ओर जाने वाली सड़कों को अपडेट कर देता है। एक अन्य प्रमुख विचार "रिट्रीवल-ऑगमेंटेड जनरेशन" (RAG) है, जो एक अत्यंत बुद्धिमान लाइब्रेरियन को आपके प्रश्न का उत्तर देने से पहले कुछ विशिष्ट पुस्तकें पढ़ने के लिए देने जैसा है, जिससे यह सुनिश्चित होता है कि वे केवल अनुमान न लगाएं बल्कि टेक्स्ट में सत्य को खोज निकालें। बड़ा सवाल जो शोधकर्ता पूछ रहे हैं वह यह है: क्या हम एक ऐसा मानचित्र बना सकते हैं जो न केवल आज के पुस्तकालय को दिखाता है, बल्कि हर एक बदलाव को याद रखता है, और कोड अपडेट के इतिहास को एक जीवित, खोजने योग्य मार्गदर्शिका में बदल देता है?
यहाँ आता है CODENS, एक नया सिस्टम जिसे ठीक यही करने के लिए डिज़ाइन किया गया है। कल्पना कीजिए कि CODENS एक जादुई, अति-व्यवस्थित संग्रहकर्ता (archivist) है जो एक Ruby on Rails वेब प्लेटफॉर्म जैसे सॉफ़्टवेयर प्रोजेक्ट की निगरानी करता है। कोड के अंतिम संस्करण को केवल पढ़ने के बजाय, CODENS प्रोजेक्ट के इतिहास की "फिल्म" को देखता है। यह एक कंकाल मानचित्र (skeleton map) बनाने के लिए पूरे कोडबेस को स्कैन करके शुरुआत करता है, जो फ्रेमवर्क के मानक नियमों के आधार पर 1,739 अलग-अलग "कमरों" (जैसे कंट्रोलर्स, मॉडल्स और व्यूज़) की पहचान करता है।
फिर, जादू होता है। CODENS प्रोजेक्ट के इतिहास को एक-एक करके पुन: प्रस्तुत करता है, जैसे किसी इमारत के निर्माण के 'टाइम-लैप्स वीडियो' को देखना। प्रत्येक परिवर्तन के लिए, यह केवल नई ईंटों को ही नहीं देखता; बल्कि यह एक शक्तिशाली AI (एक LLM) से पूछता है कि वह परिवर्तन क्यों किया गया था और वह पहले से मौजूद चीज़ों के साथ कैसे फिट बैठता है। महत्वपूर्ण बात यह है कि यह केवल पुरानी कहानी को मिटाता नहीं है; यह नए विवरणों को पुराने विवरणों के साथ मिला देता है। यदि कोई डेवलपर किसी पेज पर एक नया बटन जोड़ता है, तो CODENS मानचित्र को अपडेट करता है ताकि पता चले कि बटन मौजूद है, लेकिन यह उस इतिहास को भी सुरक्षित रखता है कि पेज पहले कैसा दिखता था। यह एक "जीवित दस्तावेज़ीकरण" (living documentation) परत बनाता है जो हर अपडेट के साथ अधिक स्मार्ट और विस्तृत होती जाती है।
एक बार जब यह मानचित्र बन जाता है, तो CODENS अन्वेषण के लिए तीन तरीके प्रदान करता है, जो यात्रा के विभिन्न मोड की तरह हैं। आप एक त्वरित "वेक्टर सर्च" (vector search) कर सकते हैं, जो लाइब्रेरियन से समान शब्दों वाली पुस्तकें माँगने जैसा है। आप "मल्टी-हॉप रिट्रीवल" (multi-hop retrieval) कर सकते हैं, जो एक कमरे से दूसरे कमरे तक ब्रेडक्रंब्स (रोटी के टुकड़ों के निशान) का पीछा करने जैसा है ताकि यह देखा जा सके कि वे कैसे जुड़ते हैं। लेकिन सबसे शक्तिशाली मोड "एजेंट-गाइडेड ट्रैवर्सल" (agent-guided traversal) है। यहाँ, एक AI एजेंट एक टॉर्च लेकर चलते हुए एक जासूस की तरह कार्य करता है। यह केवल एक निश्चित पथ का पालन नहीं करता; यह तय करता है कि कौन से दरवाजे खोलने हैं, कौन सी सड़कें लेनी हैं, और सटीक उत्तर खोजने के लिए अपने स्वयं के कस्टम क्वेरी भी लिखता है। यह विशिष्ट नोड्स के अंदर झाँकने, उनके पड़ोसियों की जाँच करने, या पूर्ण उत्तर जोड़ने के लिए जटिल खोज चलाने के लिए उपकरणों का उपयोग करता है।
शोधकर्ताओं ने इस सिस्टम का परीक्षण 1,700 से अधिक फ़ाइलों और सैकड़ों पुल रिक्वेस्ट वाले एक वास्तविक-दुनिया के, औद्योगिक प्रोजेक्ट पर किया। उन्होंने सिस्टम से 11 अलग-अलग प्रश्न पूछे जो एक वास्तविक डेवलपर के मन में हो सकते हैं, जैसे "यह फीचर कैसे काम करता है?" या "जब मैं इस बटन पर क्लिक करता हूँ तो क्या होता है?" परिणाम उत्साहजनक थे। सिस्टम ने सटीकता और "फेथफुलनेस" (faithfulness) पर बहुत उच्च स्कोर किया, जिसका अर्थ है कि उत्तर वास्तविक कोड पर आधारित थे और उन्होंने मनगढ़ंत बातें नहीं कीं। 1 से 5 के पैमाने पर, मानव विशेषज्ञों ने प्रासंगिकता के लिए औसत 4.09 और पूर्णता के लिए 4.45 का स्कोर दिया। सिस्टम प्रत्येक क्वेरी की लागत और समय को ट्रैक करने में भी सक्षम था, जिससे पता चला कि जबकि डिटेक्टिव मोड (एजेंट) में अधिक समय और टोकन लगे, इसने सबसे विस्तृत उत्तर प्रदान किए।
हालाँकि, पेपर एक छोटी सी बाधा की ओर भी इशारा करता है। हालाँकि सिस्टम सही जानकारी खोजने में बहुत अच्छा था, लेकिन जिस तरह से यह उत्तर प्रस्तुत करता था, वह कभी-कभी बहुत अधिक तकनीकी लगता था। मानव समीक्षकों ने नोट किया कि कुछ उत्तर "बहुत विस्तृत" या "बहुत कोड-केंद्रित" थे, जिनमें लाइन-दर-लाइन उद्धरण दिए गए थे जबकि एक सरल सारांश बेहतर होता। यह ऐसा है जैसे लाइब्रेरियन ने आपको किताब का सटीक पृष्ठ नंबर और पैराग्राफ तो दे दिया लेकिन आपके लिए कहानी का सारांश नहीं बनाया। लेखक सुझाव देते हैं कि अगला कदम आवश्यक रूप से बेहतर जानकारी खोजना नहीं है, बल्कि सिस्टम को उस जानकारी को स्पष्ट, अधिक उपयोगकर्ता के अनुकूल स्पष्टीकरणों में संश्लेषित करना सिखाना है।
संक्षेप में, CODENS यह सुझाव देता है कि हम कोड परिवर्तनों के बिखरे हुए, अव्यवस्थित इतिहास को सॉफ़्टवेयर के लिए एक संरचित, खोजने योग्य स्मृति में बदल सकते हैं। यह साबित करता है कि पुल रिक्वेस्ट को केवल अस्थायी सुधारों के बजाय ज्ञान के एक निरंतर प्रवाह के रूप में मानकर, हम एक ऐसा सिस्टम बना सकते हैं जो डेवलपर्स को जटिल कोडबेस को बहुत तेज़ी से समझने में मदद करता है। हालाँकि यह अभी तक एक पूर्ण, हल की गई समस्या नहीं है—विशेष रूप से इसे यह सिखाने के संबंध में कि उत्तरों को एक मददगार इंसान की तरह कैसे बनाया जाए न कि एक रोबोटिक मैनुअल की तरह—यह एक ऐसे भविष्य की जीवंत झलक पेश करता है जहाँ सॉफ़्टवेयर दस्तावेज़ीकरण जीवित, अद्यतित और हमेशा आपके प्रश्नों का उत्तर देने के लिए तैयार रहता है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।