Agentic Separation Logic Specification Synthesis
Spec-Agent एक एजेंटिक सिस्टम है जो स्टैटिक एनालिसिस, रनटाइम हीप ट्रेसिंग और काउंटरएग्जांपल-गाइडेड LLM रिफाइनमेंट को संयोजित करके बड़े C++ कोडबेस के लिए अभिव्यंजक, अच्छी तरह से सत्यापित सेपरेशन लॉजिक स्पेसिफिकेशन को सिंथेसाइज करता है, जिससे मौजूदा तरीकों की तुलना में काफी कम लागत पर शून्य फॉल्स पॉजिटिव के साथ 85% सफलता प्राप्त होती है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आपके पास पुराने, जटिल C++ में लिखे गए कंप्यूटर कोड की एक विशाल लाइब्रेरी है। यह कोड विशाल वित्तीय प्रणालियों के इंजन रूम की तरह है, लेकिन इसे इस तरह से लिखा गया है जो इंसानों के लिए पढ़ना कठिन है और यह साबित करना भी बहुत मुश्किल है कि इसमें कोई बग (खामी) नहीं है। इस पेपर के लेखक, जो ब्लूमबर्ग (Bloomberg) में कार्यरत हैं, ने एक नया टूल बनाया है जिसे Spec-Agent कहा जाता है, जो इस कोड के लिए एक सुपर-स्मार्ट अनुवादक और गुणवत्ता निरीक्षक (quality inspector) के रूप में कार्य करता है।
यहाँ बताया गया है कि Spec-Agent कैसे काम करता है, सरल उपमाओं (analogies) के माध्यम से:
1. समस्या: "ब्लैक बॉक्स" कोड
एक C++ फंक्शन (कोड का एक छोटा हिस्सा) को एक ब्लैक बॉक्स मशीन के रूप में सोचें। आप इसमें सामग्रियाँ डालते हैं (inputs), और यह एक केक बाहर निकालता है (outputs)। समस्या यह है कि मशीन पर कोई लेबल नहीं लगा है कि उसे किन सामग्रियों की आवश्यकता है या केक कैसा दिखेगा।
- जोखिम: यदि आपको नियम पता नहीं हैं, तो आप गलत सामग्रियाँ डाल सकते हैं, और मशीन फट सकती है (क्रैश हो सकती है) या एक बहुत ही बुरा केक बना सकती है (एक सुरक्षा बग)।
- लक्ष्य: टीम लाइब्रेरी के हर मशीन के लिए एक "रेसिपी कार्ड" (एक औपचारिक विनिर्देश/formal specification) स्वचालित रूप से लिखना चाहती थी। यह कार्ड कहेगा: "यदि आप X डालते हैं, तो आपको Y ज़रूर मिलना चाहिए," और "यदि आप Z डालते हैं, तो मशीन टूट जाएगी।"
2. समाधान: "एजेंटिक" शेफ (Agentic Chef)
केवल एक स्मार्ट AI (एक लार्ज लैंग्वेज मॉडल) से रेसिपी का अनुमान लगाने के लिए कहने के बजाय, लेखकों ने एजेंटों की एक टीम (एक ऐसा सिस्टम जो अपने आप काम कर सकता है) बनाई। वे इसे Spec-Agent कहते हैं।
यहाँ खाना पकाने की उपमा का उपयोग करते हुए चरण-दर-चरण प्रक्रिया दी गई है:
चरण A: जासूसी कार्य (कोड माइनिंग)
रेसिपी लिखने से पहले, Spec-Agent एक जासूस की तरह काम करता है। यह कोड को देखकर पता लगाता है कि:
- क्या यह मशीन सामग्रियों की एक साधारण सूची का उपयोग करती है? (प्रपोजिशनल लॉजिक/Propositional Logic)
- क्या यह एक बड़ी टोकरी में मौजूद हर एक वस्तु की जाँच करती है? (फर्स्ट-ऑर्डर लॉजिक/First-Order Logic)
- क्या यह कच्चे, अव्यवस्थित मेमोरी (raw memory) को संभालती है, जैसे एक कसाई की दुकान में मांस को मेज पर इधर-उधर ले जाया जाता है? (सेपरेशन लॉजिक/Separation Logic)
- उपमा: यह यह जाँचने जैसा है कि क्या रेसिपी एक साधारण सैंडविच के लिए है या एक जटिल दावत के लिए जिसमें एक साथ कई किचन स्टेशनों को प्रबंधित करने की आवश्यकता होती है।
चरण B: सही भाषा चुनना
जासूस ने जो पाया, उसके आधार पर, Spec-Agent रेसिपी लिखने के लिए सही "भाषा" चुनता है।
- यदि कोड सरल है, तो यह प्रपोजिशनल लॉजिक (हाँ/नहीं वाले नियम) का उपयोग करता है।
- यदि कोड सूचियों (lists) के माध्यम से घूमता है, तो यह फर्स्ट-ऑर्डर लॉजिक ("सभी" या "कुछ" वस्तुओं के लिए नियम) का उपयोग करता है।
- यदि कोड कंप्यूटर मेमोरी के साथ छेड़छाड़ करता है (जैसे डेटा को इधर-उधर ले जाना), तो यह सेपरेशन लॉजिक का उपयोग करता है।
- उपमा: सेपरेशन लॉजिक एक नियम की तरह है जो कहता है, "यह चाकू केवल स्टेक काटने के लिए है, और वह कांटा केवल सलाद के लिए है। वे एक ही समय में एक ही जगह पर नहीं टकरा सकते।" यह कंप्यूटर को यह समझने में भ्रमित होने से रोकने के लिए महत्वपूर्ण है कि डेटा कहाँ संग्रहीत है।
चरण C: "फज़" स्वाद परीक्षण (वैलिडेशन)
यह सबसे रचनात्मक हिस्सा है। आमतौर पर, जब आप एक रेसिपी लिखते हैं, तो आप बस एक बार उसका पालन करते हैं। Spec-Agent कुछ अलग करता है: फज़ टेस्टिंग (Fuzz Testing)।
- कल्पना कीजिए कि आपके पास केक की एक रेसिपी है। रेसिपी का पालन करने के लिए इसे केवल एक बार बनाने के बजाय, आप इसमें हजारों रैंडम, अजीब सामग्रियाँ (आटा, रेत, पानी, आग) फेंकते हैं ताकि यह देखा जा सके कि किचन फट तो नहीं जाता।
- पेपर में, वे मौजूदा टेस्ट को "फज़ हार्नेस" (Fuzz Harnesses) में बदल देते हैं। ये स्वचालित मशीनें हैं जो कोड पर रैंडम डेटा फेंकती हैं।
- जादू: यदि "रेसिपी कार्ड" (विनिर्देश/specification) कहता है कि "यह मशीन रेत को संभाल सकती है," लेकिन जब आप इसमें रेत फेंकते हैं तो मशीन वास्तव में क्रैश हो जाती है, तो सिस्टम जान जाता है कि रेसिपी गलत है। यह गलत रेसिपी को वापस AI शेफ के पास भेज देता है और कहता है, "फिर से कोशिश करो, तुम यह भूल गए!"
चरण D: रिफाइनमेंट लूप (सुधार चक्र)
सिस्टम इस चक्र को जारी रखता है:
- AI एक रेसिपी का अनुमान लगाता है।
- "फज़ मशीन" अजीब इनपुट के साथ इसे तोड़ने की कोशिश करती है।
- यदि यह टूट जाता है, तो AI को एक "काउंटरएग्जांपल" (एक विशिष्ट अजीब इनपुट जिसने क्रैश किया) मिलता है और वह रेसिपी को ठीक करने की कोशिश करता है।
- वे इसे तब तक दोहराते हैं जब तक कि रेसिपी हजारों अजीब टेस्ट के बिना बिना टूटे जीवित न रह जाए।
3. परिणाम: एक विजेता रेसिपी
टीम ने Spec-Agent का परीक्षण दो विशाल, वास्तविक दुनिया की ओपन-सोर्स लाइब्रेरी (BDE और BlazingMQ) पर किया, जिनमें लाखों लाइनें का कोड है।
- सफलता दर: Spec-Agent ने उन सभी फंक्शन्स के लिए वैध, बग-मुक्त रेसिपी कार्ड सफलतापूर्वक लिखे जिन्हें उसने आज़माया था, जिनमें से 85% सफल रहे।
- सटीकता: अपने परीक्षण में, उन्होंने शून्य फॉल्स पॉजिटिव (false positives) पाए। इसका मतलब है कि जब भी सिस्टम ने कहा कि एक रेसिपी अच्छी है, तो वह वास्तव में काम करती थी।
- लागत: उन्होंने Spec-Agent की तुलना एक शीर्ष-स्तरीय व्यावसायिक AI (Claude Code Opus 4.6) से की। Spec-Agent कंप्यूटिंग लागत (टोकन) के मामले में 10 गुना सस्ता था, जबकि प्रदर्शन बेहतर था।
- जटिलता: अन्य उपकरणों के विपरीत जो केवल सरल नियमों को संभाल सकते हैं, Spec-Agent जटिल "मेमोरी मैनेजमेंट" नियमों (सेपरेशन लॉजिक) को संभाल सकता है जो C++ कोड के लिए आवश्यक हैं।
सारांश
Spec-Agent को सॉफ्टवेयर के लिए एक अथक, अति-सतर्क गुणवत्ता नियंत्रण टीम के रूप में समझें। यह केवल कोड को पढ़ता नहीं है; यह इसके लिए एक औपचारिक नियम पुस्तिका बनाता है, फिर हजारों रैंडम हमलों के साथ उस नियम पुस्तिका को तोड़ने की कोशिश करता है। यदि नियम पुस्तिका बच जाती है, तो इसे स्वीकार कर लिया जाता है।
पेपर का दावा है कि यह इतने बड़े पैमाने पर (लाखों कोड लाइनों में) करने वाला पहला सिस्टम है जो मेमोरी सुरक्षा को संभालने के लिए उन्नत तर्क (logic) का उपयोग करता है, और यह सब अन्य तरीकों की तुलना में बहुत कम लागत पर करता है। यह C++ कोड की अराजक, बिना सत्यापित दुनिया को एक ऐसी जगह में बदल देता है जहाँ प्रत्येक फंक्शन के पास एक सत्यापित, भरोसेमंद निर्देश मैनुअल होता है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।