Rover: Context-aware Conflict Resolution with LLM
रोवर एक नवीन संघर्ष समाधान प्रणाली है जो प्रोग्राम विश्लेषण और एक मल्टी-लेयर कोड प्रॉपर्टी ग्राफ को एकीकृत करके लार्ज लैंग्वेज मॉडल्स को उन्नत करती है ताकि संदर्भ-जागरूक प्रॉम्प्ट उत्पन्न किए जा सकें, जिससे यह जटिल कोड मर्जिंग संघर्षों को सटीक रूप से हल करने में मौजूदा उपकरणों से बेहतर प्रदर्शन करती है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप और आपका एक दोस्त एक ही रेसिपी बुक को एक ही समय में एडिट कर रहे हैं। आप तय करते हैं कि सूप में एक चुटकी नमक डालना है, जबकि आपका दोस्त तय करता है कि एक कप चीनी डालनी है। जब आप अपने दोनों वर्ज़न को मिलाने की कोशिश करते हैं, तो किताब भ्रमित हो जाती है: "क्या हमें नमक डालना चाहिए? चीनी? दोनों? या कुछ भी नहीं?" यह एक मर्ज कॉन्फ्लिक्ट (merge conflict) है।
सॉफ्टवेयर की दुनिया में, लाखों डेवलपर्स रोज़ाना ऐसा ही करते हैं। आमतौर पर, कंप्यूटर इन संघर्षों को स्वचालित रूप से ठीक करने की कोशिश करते हैं, लेकिन वे अक्सर गलत हो जाते हैं क्योंकि वे केवल टेक्स्ट की तात्कालिक लाइनों को देखते हैं, बड़े चित्र (बड़ा संदर्भ) को नहीं देख पाते। यदि आप एक फ़ाइल में वेरिएबल का नाम बदलते हैं, तो यह दूसरी फ़ाइल में एक फंक्शन को तोड़ सकता है। मानक टूल्स इस संबंध को "देख" नहीं पाते हैं।
पेश है Rover, एक नया टूल जिसे इन संघर्षों के लिए परम "सुपर-एडिटर" बनने के लिए डिज़ाइन किया गया है। यह कैसे काम करता है, इसे सरल उपमाओं (analogies) का उपयोग करके यहाँ समझाया गया है:
1. समस्या: "अंधा" एडिटर
कल्पना कीजिए कि एक रोबोट एक उपन्यास में टाइपो (लिखने की गलती) को ठीक करने की कोशिश कर रहा है। यदि रोबोट केवल उस वाक्य को देखता है जिसमें टाइपो है, तो वह वर्तनी (spelling) को ठीक कर सकता है लेकिन अनजाने में पूरे पैराग्राफ का अर्थ बिगाड़ सकता है क्योंकि उसे यह नहीं पता था कि पात्र तीन अध्याय पहले क्या करने वाला था।
वर्तमान टूल्स इसी तरह के रोबोट की तरह हैं। वे संघर्ष वाली लाइनों और उनके ठीक बगल की कुछ लाइनों को देखते हैं। वे "लॉन्ग-डिस्टेंस" कनेक्शन को मिस कर देते हैं, जैसे कि फ़ाइल A में परिभाषित एक फंक्शन जो फ़ाइल B में उपयोग किया जाता है।
2. समाधान: Rover का "सुपर-मैप" (MtCPG)
Rover केवल टेक्स्ट नहीं पढ़ता; यह एक मल्टी-लेयर कोड प्रॉपर्टी ग्राफ (Multi-layer Code Property Graph - MtCPG) बनाता है।
इसे पूरे सॉफ्टवेयर प्रोजेक्ट का एक विशाल, इंटरैक्टिव सबवे मैप (मेट्रो मैप) समझें।
- मानक टूल्स केवल उस सड़क को देखते हैं जहाँ दुर्घटना हुई है।
- Rover का मैप हर स्टेशन, हर ट्रैक और अलग-अलग शहरों (फ़ाइलों) में मौजूद विभिन्न लाइनों के बीच के हर कनेक्शन को दिखाता है।
यह मैप ट्रैक करता है:
- कौन किससे बात कर रहा है: यदि एक फ़ाइल का फंक्शन दूसरी फ़ाइल के वेरिएबल को कॉल करता है, तो मैप उनके बीच एक रेखा खींच देता है।
- पदानुक्रम (Hierarchy): यह जानता है कि कोड की एक विशिष्ट लाइन एक विशिष्ट फंक्शन से संबंधित है, जो एक विशिष्ट क्लास से संबंधित है।
- "क्यों": यह समझता है कि यदि आप एक परिभाषा (definition) बदलते हैं, तो उससे जुड़ा हुआ सब कुछ प्रभावित होता है, भले ही वह 100 लाइनें दूर हो या किसी दूसरी फ़ाइल में हो।
3. प्रक्रिया: सही संदर्भ (Context) खोजना
जब कोई संघर्ष होता है, तो Rover केवल त्रुटि के पास के टेक्स्ट को नहीं पकड़ता। इसके बजाय, यह अपने सबवे मैप का उपयोग करके कनेक्शनों का पता लगाता है।
- संघर्ष का पता लगाना: यह ठीक उस स्थान को ढूंढता है जहाँ दोनों वर्ज़न आपस में असहमत हैं।
- लाइनों को ट्रेस करना: यह अपने मैप पर "ट्रैक्स" का पीछा करता है ताकि उस कोड के हर हिस्से को खोजा जा सके जो उस संघर्ष से जुड़ा है। हो सकता है कि संघर्ष में एक ऐसा वेरिएबल शामिल हो जिसे किसी दूसरी फ़ाइल में परिभाषित किया गया था? Rover उस फ़ाइल को ढूंढ लेता है और उस कोड को भी साथ ले आता है।
- सुरागों को समूहित करना: यह कोड के इन सभी जुड़े हुए हिस्सों को एक "कॉन्टेक्स्ट बंडल" (context bundle) में इकट्ठा करता है। यह अपराध स्थल से संबंधित सभी गवाहों और सबूतों को इकट्ठा करने जैसा है, न कि केवल अपराध स्थल को देखने जैसा।
4. समाधान: स्मार्ट AI
एक बार जब Rover के पास यह समृद्ध "कॉन्टेक्स्ट बंडल" आ जाता है, तो वह इसे एक लार्ज लैंग्वेज मॉडल (LLM)—एक बहुत ही स्मार्ट AI को सौंप देता है जो कोड लिखना जानता है।
- Rover के बिना: AI को कोड का एक छोटा सा हिस्सा मिलता है और उसे बाकी चीज़ों का अनुमान लगाना पड़ता है। वह अक्सर गलत अनुमान लगाता है क्योंकि उसके पास संदर्भ की कमी होती है।
- Rover के साथ: AI को संघर्ष साथ ही संबंधित कोड का पूरा "सबवे मैप" मिलता है। वह पूरी तस्वीर देख सकता है। वह समझ जाता है, "आह, यह वेरिएबल यहाँ उपयोग किया जा रहा है, और यह फंक्शन इस प्रकार के डेटा की अपेक्षा करता है।"
AI फिर एक आदर्श समाधान लिखता है जो कोड के दोनों वर्ज़न की मंशा (intent) को संतुष्ट करता है और दोनों डेवलपर्स के इरादों को सुरक्षित रखता है।
5. परिणाम: यह क्यों मायने रखता है
शोधकर्ताओं ने Rover का परीक्षण इनके विरुद्ध किया:
- स्टैंडर्ड AI: केवल पास के टेक्स्ट को देखता हुआ AI।
- पुराने मशीन लर्निंग टूल्स: विशिष्ट पैटर्न पर प्रशिक्षित टूल्स।
- अन्य "हेल्पर" टूल्स: वे टूल्स जो संबंधित कोड खोजने की कोशिश करते हैं लेकिन गहरे कनेक्शनों को मिस कर जाते हैं।
परिणाम:
Rover संघर्षों को ठीक करने में काफी बेहतर था।
- इसने ऐसे समाधान दिए जो दिखने में वैसे ही थे जैसे मानव डेवलपर्स लिखते।
- इसने उन जटिल स्थितियों को संभाला जहाँ एक फ़ाइल का कोड दूसरी फ़ाइल के कोड पर निर्भर था, जिसे अन्य टूल्स हल करने में विफल रहे।
- इसने बिना किसी पुन: प्रशिक्षण (retraining) के विभिन्न प्रोग्रामिंग भाषाओं (C, Java, Python) में काम किया।
सारांश
Rover को एक ऐसे जासूस के रूप में समझें जो न केवल अपराध स्थल (संघर्ष) को देखता है, बल्कि मामला सुलझाने से पहले हर गवाह का इंटरव्यू लेता है और हर अलबी (alibi) की जाँच करता है (कोड डिपेंडेंसी)। सॉफ्टवेयर के संबंधों का एक पूर्ण मैप AI को देकर, Rover यह सुनिश्चित करता है कि अंतिम मर्ज किया गया कोड सही, सुरक्षित और वास्तव में काम करने वाला हो।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।