
एक निर्धारित (deterministic) हार्नेस और हैंडबुक जो स्वायत्त आक्रामक LLM एजेंटों के लिए है, जो प्राधिकरण, दायरे और साक्ष्य-गेट लागू करता है ताकि पुनरुत्पादनीय और ईमानदार पैठ परीक्षण सुनिश्चित किया जा सके।
स्वायत्त आक्रामक एजेंटों के लिए एक नियतात्मक हार्नेस। मॉडल संभाव्य बना रहता है। होस्ट एप्लिकेशन प्राधिकरण, अनुमत क्रियाओं, साक्ष्य रिकॉर्ड और स्वीकृति का स्वामी होता है। जमे हुए इनपुट और नीति को दोबारा चलाना उन नियंत्रण निर्णयों को पुनरुत्पादित कर सकता है; यह किसी लाइव लक्ष्य या मॉडल प्रतिक्रिया को दोहराने योग्य नहीं बनाता।
python3 -m pip install -r requirements.txt
python3 -m harness.demo --out /tmp/harness-report.json
diff -u harness/report.json /tmp/harness-report.json
python3 -m pytest tests/test_harness.py
यह रिलीज़ CPython 3.14 पर सत्यापित है। पुराने Python संस्करण रिलीज़ साक्ष्य का हिस्सा नहीं हैं; यदि आप उनमें से एक का उपयोग करते हैं, तो परिणाम पर भरोसा करने से पहले नीचे दिया गया पूर्ण गेट अनुक्रम चलाएँ।
चरणों में निर्माण करें: सीमा साइड-इफ़ेक्ट सीमा और चरण क्रम को बाँधें; वर्णन मापे गए तथ्यों और सूचियों के माध्यम से लक्ष्य का वर्णन करें; सिद्ध कैप्चर और स्वतंत्र नीति विधेय के माध्यम से दावों को सिद्ध करें; नियंत्रण और लेखा प्राधिकरण, गेट, पूर्णता और छोड़े गए कार्य के लिए। विकास क्रम रनटाइम क्रम नहीं है: प्राधिकरण और गेट प्रेषण से पहले आते हैं।
सार्वजनिक लैब कोई नेटवर्क अनुरोध नहीं करता और कोई मॉडल नहीं बुलाता। इसका प्रमाण विधेय कृत्रिम है, इसके होस्ट और एडेप्टर विश्वसनीय हैं, और हर निष्कर्ष मानव समीक्षा की आवश्यकता के रूप में चिह्नित है। लैब किसी व्यक्ति की स्वीकृति या रिपोर्ट-हस्ताक्षर कार्यप्रवाह को लागू नहीं करता। एक शब्दशः उद्धरण उद्धरण अखंडता स्थापित करता है, शोषण क्षमता नहीं। कम मॉडल कॉल और कम पुनःकार्य डिज़ाइन उद्देश्य हैं, कॉर्पस द्वारा मापी गई बचत नहीं।
नीचे दिए गए अध्याय पहले के core/ और walkthrough/ कार्यान्वयन और इसके प्रकाशित दोषों का वर्णन करते हैं। उनका अनुपस्थित मॉडल-कॉलिंग सत्यापनकर्ता उस ऐतिहासिक पथ से अनुपस्थित रहता है। नया harness/ पैकेज एक अलग ऑफ़लाइन नियंत्रण संदर्भ है; यह कॉर्पस या ऐतिहासिक मॉड्यूल को पूर्वव्यापी रूप से मरम्मत नहीं करता। किसी ऐतिहासिक घटक की प्रतिलिपि बनाने से पहले अध्याय 07 की सीमा और सुधार पढ़ें।
एक सक्षम मॉडल को होस्ट की ओर इंगित करें, उसे एक टूलबॉक्स सौंपें और पेनेट्रेशन टेस्ट चलाने के लिए कहें, और यह कुछ समझदारी भरा करेगा। इसे कल फिर चलाएँ और यह कुछ और समझदारी भरा करेगा, और कोई भी रन आपको नहीं बता सकता कि उसने वह क्यों छोड़ा जो दूसरे ने पकड़ा। यह हैंडबुक मॉडल के लिए एक छोटी भूमिका का तर्क देती है: हर निर्णय उस सबसे सस्ती परत को दें जो इसे सही ढंग से कर सकती है, और मॉडल क्षमता केवल वहीं खर्च करें जहाँ उत्तर वास्तव में उस चीज़ से व्युत्पन्न नहीं है जो आपके पास पहले से है। वह क्रम, उन निर्णयों से जो एक तालिका कर सकती है, उन कुछ तक जिन्हें मॉडल की आवश्यकता है, अध्याय 00 के शीर्षक में ढाल है। अध्याय एक कार्यशील आक्रामक-सुरक्षा एजेंट और उसके नियंत्रणों का अनुसरण करते हैं जिनकी उसकी विफलताओं ने माँग की।
ऐतिहासिक प्रणाली में दो ऑर्केस्ट्रेशन पथ हैं। सर्वर-संचालित पथ पर एक ऑर्केस्ट्रेटर अपनी स्वयं की चरण सूची रखता है और मॉडल को केवल वे उपकरण प्रदान करता है जिनकी उस चरण को अनुमति है। एजेंट-संचालित पथ पर एक ऑर्केस्ट्रेटिंग मॉडल रन की योजना बनाता है और स्वयं उपकरणों को बुलाता है, जिसमें नीचे की परतें निर्मित होती हैं लेकिन हमेशा परामर्श नहीं किया जाता। एक साझा लेखन पथ रिकॉर्ड की गई क्रियाओं और निष्कर्षों को समीक्षा योग्य बनाता है, लेकिन एक उपलब्ध शेल इसे बायपास कर सकता है। एक आविष्कृत एंडपॉइंट एक कैप्चर की गई प्रतिक्रिया अर्जित करता है, स्वचालित भेद्यता निर्णय नहीं। गंभीरता गवर्नर बढ़ा नहीं सकता; अलग सत्यापनकर्ता का ऐतिहासिक वृद्धि गेट एक उद्धरण की जाँच करता है लेकिन शोषण क्षमता स्थापित नहीं करता। प्राधिकरण उपकरण सीमा पर पूछा जाता है, हर बाहर जाने वाले अनुरोध पर नहीं। रिपोर्टिंग अध्याय एक स्कैन जिसने कुछ नहीं पाया और एक स्कैन जिसे दरवाजे पर अस्वीकार कर दिया गया, के बीच अंतर करते हैं। इरादे और प्रवर्तन के बीच वे अंतर केस स्टडी का हिस्सा हैं, नए हार्नेस में प्रतिलिपि करने के गुण नहीं।
पहले के बाद हर अध्याय यह स्वीकार करके समाप्त होता है कि उसका नियंत्रण अभी भी क्या गलत करता है, और ईमानदारी अनुभाग उन मापों को ले जाते हैं जो इसे दिखाते हैं। यदि आप तय कर रहे हैं कि बाकी पर भरोसा करना है या नहीं तो पहले ईमानदारी अनुभाग पढ़ें: कॉर्पस एक प्रणाली का परिचालन इतिहास है, चयनित सार्वजनिक-लक्ष्य रन एक लेखक-रिकॉर्ड किया गया समग्र है जिसमें दो बहिष्कृत रन इसके बगल में प्रकाशित हैं, और पृथक्करण अध्ययन जो दिखाएगा कि नियतात्मक परतें वास्तव में कितना योगदान करती हैं, चलाया नहीं गया है। रिपॉजिटरी में चयनित रन के कच्चे निष्कर्ष, ग्राउंड ट्रुथ या मैचर शामिल नहीं है, इसलिए रिकॉर्ड की गई सटीकता यहाँ स्वतंत्र रूप से पुनरुत्पादन योग्य नहीं है। डिज़ाइन तर्क मापा नहीं गया है, तर्क दिया गया है, और अध्याय 05 उन शब्दों में ऐसा कहता है।
अध्याय 00 में प्रामाणिक, यहाँ प्रतिलिपि। प्रत्येक डिज़ाइन इरादा है, और एक नियम के अंत में नामित अध्याय वह है जहाँ इस प्रणाली को उसके विरुद्ध रखा गया है: कौन से हिस्से निर्माण द्वारा धारण करते हैं, कौन से केवल दो ऑर्केस्ट्रेशन पथों में से एक पर धारण करते हैं, कौन से ऑर्केस्ट्रेटर के अच्छे व्यवहार पर धारण करते हैं, और कौन से अभी तक धारण नहीं करते।
मॉडल प्रस्ताव करता है; नियतात्मक कोड निपटान करता है। मॉडल को एक प्रस्ताव इंटरफ़ेस दें, लक्ष्य, कच्चे भंडारण या गंभीरता पर अंतिम शब्द तक सीधी पहुँच नहीं। नियतात्मक कोड स्वीकृत कार्य को मान्य, निष्पादित और रिकॉर्ड करता है। ऐतिहासिक प्रणाली उस सीमा को हर जगह लागू नहीं करती: दोनों ऑर्केस्ट्रेटर एक शेल तक पहुँच सकते हैं, और इसका लेखन पथ एक उप-कमांड ले जाता है जो निष्पादन के बिना एक निष्कर्ष संग्रहीत करता है। एक आविष्कृत एंडपॉइंट 404, एक लॉगिन पृष्ठ या एक एप्लिकेशन शेल लौटा सकता है; प्रतिक्रिया रिकॉर्ड करें और दावे का अलग से न्याय करें। एक साझा लेखक सैंडबॉक्स नहीं है। अध्याय 01 और 02।
अतीत के बारे में दावों को उद्धरण देना चाहिए। भविष्य के बारे में प्रस्तावों को निष्पादित होना चाहिए। ये विभिन्न प्रकार के कथन हैं और उन्हें विभिन्न गेट की आवश्यकता है। पहले से देखी गई किसी चीज़ के बारे में एक दावे को अपना स्वयं का कैप्चर उद्धृत करना चाहिए; एक मिलान उद्धरण उद्धरण अखंडता स्थापित करता है, यह नहीं कि निष्कर्ष सत्य है। ऐतिहासिक गेट लीक करता है: यह प्रति बैच एक आइटम रखता है भले ही कोई पास न हो, और एक ऑर्केस्ट्रेशन पथ पर एक कॉलर-आपूर्ति आत्मविश्वास जाँच के लिए खड़ा हो सकता है। एक प्रस्तावित परीक्षण को उस अवलोकन को उद्धृत करके मान्य नहीं किया जा सकता जो उसने नहीं किया। यह केवल प्राधिकरण, दायरा, गेट और बजट जाँच के अनुमति देने के बाद चल सकता है, और इसके परिणाम को अभी भी व्याख्या की आवश्यकता है। नियम हर प्रस्ताव को निष्पादित करने की अनुमति नहीं है। अध्याय 02।
गंभीरता डिफ़ॉल्ट रूप से गिरती है और केवल प्रमाण के विरुद्ध बढ़ती है। नियतात्मक गवर्नर एक गंभीरता को कम कर सकता है या एक निष्कर्ष को गलत-सकारात्मक चिह्नित कर सकता है, और बढ़ा नहीं सकता। यह उसके अधिकार को सीमित करता है; यह उसके निष्कर्षों को सही नहीं बनाता। कम-रिपोर्टिंग एक वास्तविक भेद्यता छिपा सकती है, इसलिए हर कम करने वाले नियम को मिलान और प्रतिउदाहरण परीक्षण और एक समीक्षा योग्य कारण की आवश्यकता होती है। ऐतिहासिक वृद्धि एंडपॉइंट एक शब्दशः उद्धरण की जाँच करता है लेकिन उसके अनुबंध द्वारा अनुरोधित लिखित स्कोर को लागू नहीं करता। अकेला उद्धरण शोषण प्रमाण नहीं है। कैप्चर को निष्कर्ष से बाँधें, एक समीक्षित डोमेन प्रमाण नीति लागू करें, और एक अलग मानव समीक्षा और हस्ताक्षर-बंद प्रक्रिया बनाए रखें। अध्याय 03।
दायरा एक फ़ंक्शन है, वाक्य नहीं। एक प्रॉम्प्ट में लिखा गया प्राधिकरण संदर्भ विंडो में हर अन्य निर्देश के साथ प्रतिस्पर्धा करता है। ऑपरेटर की अनुमति को एक समीक्षा योग्य नीति के रूप में एन्कोड करें और हर बाहर जाने वाली क्रिया से पहले इसे लागू करें, अस्वीकृतियों के रिकॉर्ड के साथ। ऐतिहासिक गार्ड कम पड़ता है: इसे हर अनुरोध पर नहीं, उपकरण सीमा पर पूछा जाता है, कुछ होस्ट सीमाओं को व्यापक बनाता है, और किल स्विच के तहत या बिना लक्ष्य के निर्मित होने पर खुला विफल होता है। लैब अपने विश्वसनीय कॉलबैक से पहले अनसूचीबद्ध उत्पत्ति को अस्वीकार करता है, लेकिन परिवहन रोकथाम अभी भी एडेप्टर से संबंधित है। एक नीति निर्णय केवल उतना ही सही है जितना प्राधिकरण और गंतव्य जिसका वह मूल्यांकन करता है। अध्याय 04।
रिपोर्ट करें कि आपने क्या नहीं किया। एक स्कैन जिसने कुछ नहीं पाया और एक स्कैन जो किसी भी चीज़ तक नहीं पहुँच सका, अलग-अलग स्कैन हैं, और एक रिपोर्ट जो उन्हें समान रूप से प्रस्तुत करती है, चूक द्वारा झूठ बोल रही है। कवरेज, गेट स्थिति, और हर छोड़े गए होस्ट का लेजर उसके कारण के साथ, निष्कर्षों के बगल में, डिलिवरेबल में शामिल होना चाहिए। यह एक आवश्यकता है जो ऐतिहासिक रिपोर्ट ने पूरी नहीं की: केवल कवरेज पहुंचा, इसके सबसे कमजोर हर के विरुद्ध गणना की गई और एक अलग नाम देने वाले लेबल के तहत। लैब नियोजित टूल-और-URL क्रियाओं, निष्पादित कार्य, त्रुटियों और छोड़ों का लेखा करता है; वह हर भेद्यता कवरेज को मापता नहीं है। अध्याय 05।
| अध्याय | विषय |
|---|---|
| अध्याय 00: नियतिवाद ढाल (स्रोत) | विचरण एक क्षमता समस्या के बजाय एक डिज़ाइन समस्या क्यों है, चार परतें, और पाँच नियम |
| अध्याय 01: निश्चित प्रक्रिया (स्रोत) | चरण मशीन, नियतात्मक उपकरण स्कोरिंग, एक फ़ाइल में काउंटर के रूप में पूर्व, और बारी अनुपात जो वह नहीं कहता जो आप चाहेंगे |
| अध्याय 02: संकीर्ण कमर (स्रोत) | प्रति साइड इफ़ेक्ट एक लेखक, स्कीमा सत्यापन और मरम्मत लूप, और दावों और प्रस्तावों को विभिन्न गेट की आवश्यकता क्यों है |
| अध्याय 03: असममित विश्वास (स्रोत) | एक गवर्नर जो बढ़ा नहीं सकता, एक सत्यापनकर्ता जो केवल प्रमाण के विरुद्ध बढ़ा सकता है, और हमले की श्रृंखलाएँ जिन्हें सिद्ध नहीं किया जा सकता |
| अध्याय 04: कोड के रूप में दायरा (स्रोत) | एक फ़ंक्शन के रूप में प्राधिकरण, छोड़ लेजर, फर्श जिसे कोई फ़ंक्शन तय नहीं करना चाहिए, और चयनित रन में दर्ज स्कोपिंग अंतर |
| अध्याय 05: स्कैन किस तक नहीं पहुँच सका (स्रोत) | एक रिकॉर्ड किए गए मान के रूप में पहुँच क्षमता, कवरेज हर, समेकन, ईमानदार आंशिक, और अपनी स्वयं की प्रणाली का मूल्यांकन कैसे करें |
| अध्याय 06: अपना खुद का निर्माण करें () |
core/ के अंतर्गत ऐतिहासिक कोड पढ़े जाने, चलाए जाने और असहमत होने के लिए यहाँ है। यह क्लीन-रूम है और जानबूझकर लाइव परीक्षक के रूप में गैर-कार्यात्मक है: प्रोफाइलिंग, प्रासंगिकता स्कोरिंग, शेड्यूलिंग और टूल-कॉल सत्यापन वास्तविक और चलाने योग्य हैं, और वह सब कुछ जो वायर पर एक पैकेट डालेगा, रोक दिया गया है। यहाँ लिखे गए आंकड़े पर भरोसा करने के बजाय यह देखने के लिए ls core/*.py चलाएँ कि क्या भेजा जाता है, जो उस तरह का दावा है जो मॉड्यूल जोड़े जाने के क्षण बासी हो जाता है। बाद के अध्याय जिन नियंत्रणों पर झुकते हैं वे उनमें से हैं: लेखन पथ core/store_protocol.py है, गंभीरता गवर्नर core/severity_governor.py, दायरा गार्ड core/scope_guard.py, गेट जाँच core/gate_check.py, और चरण मशीन walkthrough/run.py। ऐतिहासिक मॉडल-कॉलिंग सत्यापनकर्ता रोक दिया गया है। अध्याय 06 इसे निर्दिष्ट करता है; अध्याय 07 एक अलग नियतात्मक साक्ष्य गार्ड भेजता है, वह सत्यापनकर्ता नहीं और मानव स्वीकृति कार्यप्रवाह नहीं। उनके कार्यों को अलग रखें: ग्राउंडिंग आलोचक उद्धरण रोकथाम की जाँच करता है, गवर्नर गंभीरता को सीमित करता है, और एक वृद्धि पथ को एक स्वतंत्र रूप से समीक्षित प्रमाण नीति को संतुष्ट करना चाहिए। उनमें से कोई भी मानव समीक्षा और हस्ताक्षर-बंद को प्रतिस्थापित नहीं करता।
walkthrough/ उस चरण मशीन को प्रतिबद्ध फिक्स्चर पर चलाता है और अध्यायों द्वारा उद्धृत कलाकृतियों को walkthrough/artifacts/ में लिखता है। उन्हें python3 -m walkthrough.run के साथ पुनर्जीवित करें, जो एक --out निर्देशिका लेता है यदि आप प्रतिबद्ध प्रतियों को छूना नहीं चाहते हैं, और tests/test_walkthrough_is_in_sync.py एक ताज़ा इन-मेमोरी रन की तुलना उन प्रतियों से बाइट दर बाइट करता है, इसलिए बिना पुनः-रन के संपादित एक फिक्स्चर भेजने के बजाय लाल हो जाता है। वह गेट जो नहीं पकड़ता वह एक कलाकृति है जो दोनों स्थानों पर गलत है, और उसका अपना डॉकस्ट्रिंग ऐसा कहता है।
हर अध्याय में हर आंकड़ा data/stats.json में एक कुंजी तक हल होता है, या एक टिप्पणी ले जाता है जो बताता है कि आंकड़ा क्या है और यह लक्ष्य से लिया गया माप क्यों नहीं है। अध्याय 00 से 05 और इस README में, तेरह टिप्पणियाँ कोड की एक स्थिरांक या संपत्ति का नाम देती हैं, पैंतीस एक वर्तनी वाली मात्रा को कवर करती हैं जिसे अंक जाँच नहीं पढ़ सकती, पाँच एक HTTP स्थिति कोड का नाम देती हैं, और एक इस रिपॉजिटरी की अपनी दो प्रकाशित स्नैपशॉट के बीच तुलना का नाम देती है। सांख्यिकी फ़ाइल एक प्रकाशित विंडो के साथ एक जमी हुई स्नैपशॉट है, लाइव क्वेरी नहीं, और अध्याय 05 बताता है कि पाइपलाइन को फिर से चलाना इसे पुनरुत्पादित क्यों नहीं करेगा।
अध्याय 05 एक सार्वजनिक जानबूझकर-कमजोर एप्लिकेशन के विरुद्ध सिस्टम के F1 की रिपोर्ट करता है और इसे OWASP ZAP निष्क्रिय-स्कैन स्कोर के बगल में रखता है। यह रिपॉजिटरी अंकगणित को सिद्ध करती है और चार समग्र स्कोर फ़ाइलों को data/stats.json के साथ सिंक्रनाइज़ रखती है; इसमें कच्चे निष्कर्ष, ग्राउंड-ट्रुथ प्रविष्टियाँ, मैचर, लक्ष्य पहचानकर्ता या रन पहचानकर्ता शामिल नहीं हैं जो यह साबित करने के लिए आवश्यक हैं कि दोनों उपकरणों का नियंत्रित हेड-टू-हेड में मूल्यांकन किया गया था। जोड़ी को ऐतिहासिक, लेखक-रिकॉर्ड किए गए डेटा बिंदुओं के रूप में मानें, निष्पक्ष बेंचमार्क नहीं। नमूना आकार, वह प्रसार जो यह इसलिए रिपोर्ट नहीं करता, और उससे बहिष्कृत रन जिस कारण से प्रत्येक को बाहर रखा गया, सभी उस अध्याय में हैं।
अध्यायों की एक उत्पन्न प्रतिलिपि, हर आंकड़े को उसके मूल्य पर हल किए ग
| क्रमबद्ध मैनुअल: हर कदम उस अपरिवर्तनीय को बताता है जिसकी वह रक्षा करता है, और लागू करने वाली फ़ाइल, एक परीक्षण और प्रतिबद्ध कलाकृति का नाम देता है जहाँ भी सार्वजनिक वृक्ष उन्हें ले जाता है |
| अध्याय 07: हार्नेस लैब (स्रोत) | अनुशंसित ऑफ़लाइन संदर्भ: सीमा लागू करें, एक पूर्ण रिपोर्ट का निरीक्षण करें, और परीक्षण करें कि क्या अस्वीकार किया जाना चाहिए |
| परिशिष्ट A: ऑर्केस्ट्रेटर अनुबंध (स्रोत) | वह उपकरण जो मॉडल को सौंपा गया है, निजी मूल से सामान्यीकृत |
| परिशिष्ट B: स्कीमा (स्रोत) | टूल-कॉल, निष्कर्ष और शासन-रिकॉर्ड आकार, प्रत्येक क्या गारंटी देता है और क्या नहीं |
| परिशिष्ट C: विफलता संग्रहालय (स्रोत) | वास्तविक गलत सकारात्मक उनके मूल कारण और नियम के साथ जो प्रत्येक को मारता है, और उनमें से किसे यह रिपॉजिटरी पिन कर सकता है |