Specification-first convergence with an AI coding agent: a case study of dismantling a core architectural invariant across 189 files in a 717k-line codebase with no test oracle and no human code review
यह शोध पत्र एक केस स्टडी प्रस्तुत करता है जो यह प्रदर्शित करता है कि कैसे एक एआई कोडिंग एजेंट ने, बिना किसी मानव कोड समीक्षा या पूर्व-मौजूद टेस्ट ओरेकल के, स्पेसिफिकेशन-फर्स्ट प्रोटोकॉल के तहत कार्य करते हुए, तैनाती से पहले विनिर्देशों को परिष्कृत करने और 201 दोषों को सुधारने के माध्यम से तीन दिनों के भीतर 717k-लाइन के प्रोडक्शन टाइपस्क्रिप्ट कोडबेस में 189 फाइलों में एक मुख्य आर्किटेक्चरल इनवेरिएंट को सफलतापूर्वक ध्वस्त कर दिया।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक सुपर-स्मार्ट रोबोट को घर बनाना सिखाने की कोशिश कर रहे हैं। आमतौर पर, रोबोट एक ईंट रखने या एक दीवार को पेंट करने में बहुत अच्छा होता है, लेकिन यदि आप उससे पहले से बन रहे घर के पूरे आधार (फाउंडेशन) को फिर से डिजाइन करने के लिए कहते हैं, तो वह भ्रमित हो जाता है। वह गलती से एक भार वहन करने वाली दीवार को गिरा सकता है या भूल सकता है कि रसोई का डाइनिंग रूम से जुड़ा रहना जरूरी है। कंप्यूटर विज्ञान की दुनिया में, इसे एक विशाल कोडबेस को "रिफैक्टरिंग" (refactoring) करना कहा जाता है। मुख्य सवाल जो शोधकर्ता अभी पूछ रहे हैं वह यह है: क्या एक AI एजेंट यह बहुत बड़ा, खतरनाक काम बिना किसी मानव बॉस द्वारा हर एक लाइन की जांच किए, अपने आप कर सकता है?
इस चुनौती को समझने के लिए, कंप्यूटर प्रोग्राम को एक विशाल, जटिल घड़ी के तंत्र (clockwork machine) की तरह समझें। इसके अंदर "इनवेरियंट्स" (invariants) होते हैं—ये वे अटूट नियम हैं जो गियर को घुमाते रहते हैं, जैसे "मुख्य स्प्रिंग को हमेशा लपेटा जाना चाहिए" या "सुइयां कभी पीछे नहीं जानी चाहिए।" अधिकांश AI कोडिंग टूल्स उन प्रशिक्षुओं (apprentices) की तरह हैं जो एक ढीले पेंच को ठीक करने में तो माहिर हैं लेकिन पूरी घड़ी की वायरिंग को बिना समय की गणना बिगाड़े बदलने में बहुत खराब हैं। उन्हें आमतौर पर अपने कंधे के ऊपर से झांकने के लिए एक इंसान की जरूरत होती है जो कहे, "रुको, तुम ऐसा नहीं कर सकते!" लेकिन इंसान थक जाते हैं, और वे एक विशाल घड़ी के पूरे नक्शे को एक साथ अपने दिमाग में नहीं रख सकते। यह पेपर काम करने का एक नया तरीका बताता है: रोबट के काम को उसके पूरा होने के बाद जांचने के बजाय, हम उसे एक भी गियर छूने से पहले एक आदर्श, विस्तृत निर्देश पुस्तिका लिखने के लिए मजबूर करते हैं। फिर हम रोबोट को उस पुस्तिका के विरुद्ध अपने काम की बार-बार जांच करने के लिए कहते हैं, जब तक कि पुस्तिका और मशीन पूरी तरह से मेल न खा जाएं।
"घोस्ट" (Ghost) पैनल की कहानी
यह पेपर एक विशिष्ट, उच्च-जोखिम वाले प्रयोग की कहानी बताता है जहाँ एक एकल AI एजेंट को एक विशाल सॉफ्टवेयर प्रोग्राम पर एक "जादुंतर" दिखाने के लिए कहा गया था। वह प्रोग्राम एक 717,725-लाइन वाला एप्लिकेशन था (कल्पना कीजिए कि निर्देशों की एक लाइब्रेरी जिसमें लगभग 720,000 पृष्ठ हैं) जो एक AI कोडिंग असिस्टेंट के रूप में कार्य करता था। कार्य एक मौलिक नियम को तोड़ना था जिसका सॉफ्टवेयर ने पहले दिन से पालन किया था: वह नियम जो कहता था, "यदि आप AI के काम को दिखाने वाली विंडो को बंद करते हैं, तो AI को सोचना बंद कर देना चाहिए।"
लक्ष्य इस परिवर्तन को करना था कि यदि आप विंडो बंद कर दें, तो AI बैकग्राउंड में काम करता रहे, जैसे कि एक भूत (ghost)। जब आप विंडो को फिर से खोलेंगे, तो AI तुरंत बातचीत से "पुनः जुड़" जाएगा, और बिना एक भी शब्द खोए या खुद को दोहराए, ठीक वहीं से शुरू करेगा जहाँ उसने छोड़ा था। इस पेपर के लेखक, जो एक मानव डेवलपर हैं, का मानना था कि यह इतना जटिल और जोखिम भरा था कि इसे करने का एकमात्र सुरक्षित तरीका पुराने कोड को फेंक देना और सब कुछ नए सिरे से लिखना होगा।
"स्पेसिफिकेशन-फर्स्ट" (Specification-First) प्रोटोकॉल
सब कुछ फिर से लिखने के बजाय, लेखक ने "स्पेसिफिकेशन-फर्स्ट कन्वर्जेंस" (Specification-First Convergence) नामक एक विधि का उपयोग किया। इसे एक बहुत ही सख्त रेफरी के साथ खेले जाने वाले "टेलीफोन" गेम की तरह समझें, लेकिन यहाँ रेफरी स्वयं AI है।
- योजना: इंसान ने AI को साधारण अंग्रेजी में एक सरल अनुरोध दिया: "AI को तब भी काम करते रहने दें जब विंडो बंद हो।"
- ब्लूप्रिंट: AI ने तुरंत कोडिंग शुरू नहीं की। इसके बजाय, इसने एक विशाल, 55-पृष्ठों की औपचारिक "स्पेसिफिकेशन" लिखी—एक विस्तृत ब्लूप्रिंट कि यह बदलाव ठीक कैसे काम करेगा, छोटे से छोटे विवरण तक।
- ऑडिट (परिष्करण): यहीं पर जादू हुआ। AI से अपने स्वयं के ब्लूप्रिंट की वास्तविक, मौजूदा कोड के विरुद्ध 14 बार तुलना करने के लिए कहा गया। प्रत्येक दौर में, उसने अपनी योजना में गलतियाँ पाईं। "ओह, मैं भूल गया कि बैकग्राउंड प्रोसेस को रोकने के लिए एक नए बटन की आवश्यकता है," या "मैंने इस बात का ध्यान नहीं रखा कि यदि AI सोचते समय विंडो बंद हो जाए तो क्या होगा।" उसने एक भी लाइन कोड लिखने से पहले ब्लूप्रिंट को 14 बार फिर से लिखा, योजना में लगभग 85 त्रुटियों को सुधारा।
- निर्माण: एक बार जब ब्लूप्रिंट "फ्रीज" (यानी, यह पूर्ण था और बदलेगा नहीं) हो गया, तो AI ने कोडिंग शुरू की। उसने केवल फाइलें नहीं लिखीं; उसने 189 अलग-अलग फाइलों के लिए पैच (छोटे अपडेट) बनाए।
- दोहरा चेक (सत्यापन): यह सबसे महत्वपूर्ण हिस्सा था। AI को अपने नए कोड को पढ़ने और उसे फ्रीज किए गए ब्लूप्रिंट के साथ 17 बार तुलना करने के लिए कहा गया। उसने 116 और त्रुटियां पाईं—छोटे आर्किटेक्चरल ग्लिच या लॉजिक होल—और उन्हें ठीक किया। वह इसे तब तक करता रहा जब तक कि लगातार दो राउंड में शून्य गलतियाँ नहीं मिलीं।
परिणाम: एक भूत जो परेशान नहीं करता
पूरी प्रक्रिया में तीन दिन लगे और कंप्यूटर प्रोसेसिंग शुल्क के रूप में $2,430 खर्च हुए। परिणाम? AI ने बिना किसी मानव द्वारा उत्पन्न कोड को देखे, एक विशाल सॉफ्टवेयर प्रोग्राम में एक कोर नियम को सफलतापूर्वक हटा दिया।
जब इंसान ने अंततः प्रोग्राम को पहली बार चलाया, तो यह पूरी तरह से काम कर रहा था। आप विंडो बंद कर सकते हैं, AI को बैकग्राउंड में काम करते देख सकते हैं, और विंडो को फिर से खोलकर बातचीत को बिना कोई शब्द खोए या डुप्लिकेट हुए तुरंत जारी होते देख सकते हैं। सॉफ्टवेयर बिल्कुल वैसा ही व्यवहार कर रहा था जैसा ब्लूप्रिंट ने वादा किया था। लेखक ने नोट किया कि कोड इतना साफ था कि बाद में, जब एक छोटा इंटरफेस टवीक (बदलाव) की आवश्यकता थी, तो इसमें केवल एक सिंगल फाइल को बदलने की आवश्यकता थी, जो यह दर्शाता है कि AI ने संरचना को व्यवस्थित रखने का अच्छा काम किया था।
इसका अर्थ क्या है (और क्या नहीं है)
यह पेपर सुझाव देता है कि बहुत कठिन, उच्च-जोखिम वाले सॉफ्टवेयर परिवर्तनों के लिए, हमें हर गलती को पकड़ने के लिए मानव समीक्षकों (reviewers) पर निर्भर रहने की आवश्यकता नहीं हो सकती है। इसके बजाय, हम AI का उपयोग अपने स्वयं के प्लान और अपने स्वयं के कोड को एक फ्रीज किए गए मानक के विरुद्ध बार-बार कठोरता से जांचने के लिए कर सकते हैं, जब तक कि वह पूर्णता की ओर न बढ़ जाए।
हालाँकि, पेपर अपने दावों के बारे में बहुत सावधान है। यह स्वीकार करता है कि यह केवल एक विशिष्ट कार्य था जो एक विशिष्ट कोडबेस पर किया गया था। यह यह साबित नहीं करता है कि यह हर AI या हर प्रकार की सॉफ्टवेयर समस्या के लिए काम करेगा। यह यह भी नोट करता है कि क्योंकि कोड निजी है, इसलिए कोई अन्य व्यक्ति ठीक वही प्रयोग नहीं कर सकता जिससे उन्हें समान परिणाम मिले। लेकिन एक 'प्रूफ ऑफ कॉन्सेप्ट' के रूप में, यह दिखाता है कि एक AI, जब उसे सूक्ष्मता से योजना बनाने और बार-बार स्वयं का ऑडिट करने के लिए मजबूर किया जाता है, तो वह एक विशाल सॉफ्टवेयर सिस्टम पर एक "सर्जिकल" ऑपरेशन कर सकता है जिसे मनुष्य आमतौर पर बिना पूर्ण रीराइट के छूने के लिए बहुत खतरनाक मानते हैं।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।