Change2Task: From Repository Changes to Executable Coding Agent Tasks and Environments
यह शोध पत्र Change2Task को प्रस्तुत करता है, जो एक ऐसी प्रणाली है जो ऐतिहासिक रिपॉजिटरी अवस्थाओं का पुनर्निर्माण करके और उन्हें आधुनिक कोडबेस पर सत्यापित करके मर्ज किए गए पुल रिक्वेस्ट को सत्यापित, निष्पादन योग्य कोडिंग एजेंट कार्यों में स्वचालित रूप से परिवर्तित करती है, जिससे मौजूदा बेसलाइन की तुलना में प्रशिक्षण डेटा की आपूर्ति में उल्लेखनीय वृद्धि होती है और सेटअप लागत कम होती है तथा टास्क रिकवरी दर में सुधार होता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
एक ऐसी दुनिया की कल्पना करें जहाँ कंप्यूटर सॉफ्टवेयर इंजीनियर बनना सीख रहे हैं। ये "कोडिंग एजेंट" डिजिटल प्रशिक्षुओं (apprentices) की तरह हैं जो न केवल एक लाइन का कोड लिखते हैं और रुक जाते हैं; वे एक प्रोजेक्ट खोल सकते हैं, फाइलों को पढ़ सकते हैं, एक बग को ठीक कर सकते हैं, टेस्ट चला सकते हैं, और यदि वे विफल होते हैं तो फिर से प्रयास कर सकते हैं। लेकिन यहाँ एक पेंच है: वास्तव में कुशल होने के लिए, उन्हें वास्तविक दुनिया की समस्याओं पर अभ्यास करने की आवश्यकता है। उन्हें "अभ्यासों" के एक विशाल पुस्तकालय की आवश्यकता है जहाँ वे किसी टूटी हुई सुविधा (feature) को ठीक करने या एक नई सुविधा जोड़ने का प्रयास कर सकें, और फिर उन्हें एक स्पष्ट "पास" या "फेल" ग्रेड मिल सके।
समस्या यह है कि ऐसे अभ्यास बनाने में बहुत कठिनाई और खर्च आता है। आमतौर पर, एक टेस्ट बनाने के लिए, आपको हर एक समस्या के लिए एक आदर्श, अलग कंप्यूटर वातावरण (जैसे एक डिजिटल सैंडबॉक्स) बनाना पड़ता है। यदि आप 1,000 अलग-अलग कोडिंग चुनौतियाँ चाहते हैं, तो आपको 1,000 अलग-अलग सैंडबॉक्स बनाने पड़ सकते हैं, जिसमें बहुत अधिक स्टोरेज स्पेस और समय लगता है। यह कुछ ऐसा है जैसे आप किसी को खाना बनाना सिखाने के लिए हर उस रेसिपी के लिए एक नया, पूरी तरह से सुसज्जित किचन बनाने की कोशिश करें जिसे वे सीखना चाहते हैं। यह इतना कठिन काम है कि हमारे पास अभ्यास के लिए समस्याओं की कमी हो जाती है, और एजेंट विशेषज्ञ बनने के लिए आवश्यक प्रशिक्षण प्राप्त नहीं कर पाते हैं।
यहीं पर एक नया विचार जिसे Change2Task कहा जाता है, काम आता है। इसे एक जादुई टाइम मशीन की तरह समझें। हर रेसिपी के लिए एक नया किचन बनाने के बजाय, Change2Task किसी वास्तविक सॉफ्टवेयर प्रोजेक्ट के इतिहास को देखता है—जैसे कि एक विशाल लॉगबुक जो हर उस समय का रिकॉर्ड रखती है जब एक मानव डेवलपर ने अतीत में किसी बग को ठीक किया था या कोई नई सुविधा जोड़ी थी। यह उन पुराने, वास्तविक जीवन के किस्सों को लेता है और पूछता है: "क्या हम इस सटीक चुनौती को, सॉफ्टवेयर के वर्तमान संस्करण पर, फिर से बना सकते हैं?"
यह प्रणाली एक चतुर संपादक की तरह काम करती है। यह एक "मर्ज किया गया" पुल रिक्वेस्ट (जो कि एक बदलाव का एक फैंसी शब्द है जिसे पहले ही स्वीकार कर लिया गया था और कोड में जोड़ दिया गया था) को ढूंढती है और उसे रिवर्स-इंजीनियर करने की कोशिश करती है। यह कंप्यूटर को वह बदलाव "उल्टा" करने के लिए कहता है ताकि एक टूटी हुई स्थिति बनाई जा सके, और फिर कोडिंग एजेंट के लिए उसे फिर से ठीक करने का लक्ष्य निर्धारित करता है। लेकिन इसका जादू यह है: यह शून्य से शुरुआत करने के बजाय, सॉफ्टवेयर के एक आधुनिक, स्वस्थ संस्करण पर काम करता है जो पहले से ही चल रहा है। यदि कोड मूल सुधार के बाद से बहुत बदल गया है, तो Change2Task पुराने सुधार को नए कोड पर मैप करने के लिए तीन अलग-अलग रणनीतियों का उपयोग करता है:
- पैच रिवर्सल (Patch Reversal): यदि कोड में बहुत कम बदलाव हुआ है, तो यह पुराने सुधार को बस उल्टा कर देता है।
- कोड मैपिंग (Code Mapping): यदि कोड इधर-उधर चला गया है, तो यह पुराने कोड के नए स्थान को ढूंढता है और उसे बदल देता है।
- एजेंट रिकंस्ट्रक्शन (Agent Reconstruction): यदि कोड पूरी तरह से अलग है, तो यह एक स्मार्ट AI एजेंट का उपयोग करता है ताकि नए वातावरण में समस्या को फिर से बनाने का तरीका पता लगाया जा सके।
शोधकर्ताओं ने पाँच सामान्य प्रकार के कोडिंग कार्यों पर इसका परीक्षण किया: बग ठीक करना, नई सुविधाएँ जोड़ना, नए टेस्ट लिखना, पुराने टूल्स (APIs) को अपडेट करना, और सुरक्षा खामियों (security holes) को ठीक करना। उन्होंने सार्वजनिक सॉफ्टवेयर प्रोजेक्ट्स से 1,130 वास्तविक-दुनिया के बदलावों से शुरुआत की। सिस्टम सफलतापूर्वक उनमें से 900 को काम करने योग्य, सत्यापित अभ्यास कार्यों में बदलने में सफल रहा। इसकी सफलता दर लगभग 80% रही।
जो बात वास्तव में रोमांचक है, वह है इसकी बचत। एक ही आधुनिक "किचन" (सॉफ्टवेयर वातावरण) का कई अलग-अलग अभ्यास समस्याओं के लिए पुन: उपयोग करके, उन्होंने वातावरण सेट करने में लगने वाले समय को 58.4% कम कर दिया और स्टोरेज स्पेस की आवश्यकता को 71.2% कम कर दिया। वास्तव में, वे पिछले तरीके की तुलना में 29.2% अधिक सत्यापित कार्य बनाने में सफल रहे जो केवल सीधे पुराने सुधारों की नकल करने की कोशिश करता था।
टीम ने यह भी जांचा कि क्या ये पुन: बनाए गए कार्य निष्पक्ष थे। उन्होंने विभिन्न AI कोडिंग एजेंटों से दोनों—मूल ऐतिहासिक संस्करण और नए आधुनिक संस्करण पर—समस्याओं को हल करने के लिए कहा। परिणाम लगभग समान थे: एजेंटों को लगभग 98% बार एक ही "पास" या "फेल" ग्रेड मिला। यह साबित करता है कि नए कार्य केवल रैंडम अनुमान नहीं हैं; वे वास्तविक डेवलपर के काम के वफादार पुनरुत्पादन हैं।
संक्षेप में, Change2Task न केवल अधिक अभ्यास समस्याएँ ढूंढता है; यह उन्हें पुन: प्रयोज्य और कुशल बनाने का एक तरीका भी ढूंढता है। यह सॉफ्टवेयर विकास के इतिहास को अगली पीढ़ी के AI कोडर्स को प्रशिक्षित करने के लिए एक नवीकरणीय संसाधन में बदल देता है, यह सिद्ध करते हुए कि हमें हर सबक के लिए एक नई दुनिया बनाने की आवश्यकता नहीं है—हमें बस पुरानी दुनिया को नई दृष्टि से देखने की आवश्यकता है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।