- होम
- Documentation
- कॉन्फ़िगरेशन
- सीक्रेट ऑब्फस्केशन
सीक्रेट ऑब्फस्केशन
संवेदनशील मानों (API कुंजियाँ, टोकन, पासवर्ड) को LLM प्रदाताओं को भेजे जाने से रोकता है। जब सक्षम होता है, तो प्रक्रिया से बाहर जाने से पहले सीक्रेट को निर्धारक प्लेसहोल्डर से बदल दिया जाता है, और मॉडल द्वारा लौटाए गए टूल कॉल आर्गुमेंट में पुनर्स्थापित कर दिया जाता है।
सक्षम करना
Section titled “सक्षम करना”डिफ़ॉल्ट रूप से सक्षम है। /settings UI के माध्यम से या सीधे config.yml में टॉगल करें:
secrets: enabled: falseयह कैसे काम करता है
Section titled “यह कैसे काम करता है”-
सेशन स्टार्टअप पर, सीक्रेट दो स्रोतों से एकत्र किए जाते हैं:
- एनवायरनमेंट वेरिएबल जो सामान्य सीक्रेट पैटर्न (
*_KEY,*_SECRET,*_TOKEN,*_PASSWORD, आदि) से मेल खाते हों और जिनका मान >= 8 अक्षर हो secrets.ymlफ़ाइलें (नीचे देखें)
- एनवायरनमेंट वेरिएबल जो सामान्य सीक्रेट पैटर्न (
-
LLM को भेजे जाने वाले आउटबाउंड संदेशों में सभी सीक्रेट मानों को
<<$env:S0>>,<<$env:S1>>, आदि जैसे प्लेसहोल्डर से बदल दिया जाता है। -
मॉडल द्वारा लौटाए गए टूल कॉल आर्गुमेंट को डीप-वॉक किया जाता है और निष्पादन से पहले प्लेसहोल्डर को मूल मानों में पुनर्स्थापित किया जाता है।
दो मोड नियंत्रित करते हैं कि प्रत्येक सीक्रेट के साथ क्या होता है:
| मोड | व्यवहार | उलटनीय |
|---|---|---|
obfuscate (डिफ़ॉल्ट) | इंडेक्स्ड प्लेसहोल्डर <<$env:SN>> से बदला जाता है | हाँ (टूल आर्गुमेंट में डी-ऑब्फस्केट होता है) |
replace | निर्धारक समान-लंबाई वाली स्ट्रिंग से बदला जाता है | नहीं (एकतरफा) |
secrets.yml
Section titled “secrets.yml”YAML में कस्टम सीक्रेट एंट्री परिभाषित करें। दो स्थानों की जाँच की जाती है:
| स्तर | पथ | उद्देश्य |
|---|---|---|
| वैश्विक | ~/.xcsh/agent/secrets.yml | सभी प्रोजेक्ट में सीक्रेट |
| प्रोजेक्ट | <cwd>/.xcsh/secrets.yml | प्रोजेक्ट-विशिष्ट सीक्रेट |
प्रोजेक्ट एंट्री मिलान करने वाले content वाली वैश्विक एंट्री को ओवरराइड करती हैं।
स्कीमा
Section titled “स्कीमा”ऐरे में प्रत्येक एंट्री के ये फ़ील्ड होते हैं:
| फ़ील्ड | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
type | "plain" या "regex" | हाँ | मिलान रणनीति |
content | स्ट्रिंग | हाँ | सीक्रेट मान (plain) या regex पैटर्न (regex) |
mode | "obfuscate" या "replace" | नहीं | डिफ़ॉल्ट: "obfuscate" |
replacement | स्ट्रिंग | नहीं | कस्टम प्रतिस्थापन (केवल replace मोड) |
flags | स्ट्रिंग | नहीं | Regex फ़्लैग (केवल regex प्रकार) |
उदाहरण
Section titled “उदाहरण”Plain सीक्रेट
Section titled “Plain सीक्रेट”# एक विशिष्ट API कुंजी को ऑब्फस्केट करें (डिफ़ॉल्ट मोड)- type: plain content: sk-proj-abc123def456
# एक डेटाबेस पासवर्ड को निश्चित स्ट्रिंग से बदलें- type: plain content: hunter2 mode: replace replacement: "********"Regex सीक्रेट
Section titled “Regex सीक्रेट”# किसी भी AWS-स्टाइल कुंजी को ऑब्फस्केट करें- type: regex content: "AKIA[0-9A-Z]{16}"
# स्पष्ट फ़्लैग के साथ केस-असंवेदनशील मिलान- type: regex content: "api[_-]?key\\s*=\\s*\\w+" flags: "i"
# Regex लिटरल सिंटैक्स (एक स्ट्रिंग में पैटर्न और फ़्लैग)- type: regex content: "/bearer\\s+[a-zA-Z0-9._~+\\/=-]+/i"Regex एंट्री हमेशा वैश्विक रूप से स्कैन करती हैं (g फ़्लैग स्वचालित रूप से लागू होता है)। Regex लिटरल सिंटैक्स /pattern/flags को अलग content + flags फ़ील्ड के विकल्प के रूप में समर्थित है। पैटर्न के भीतर एस्केप्ड स्लैश (\\/) को सही ढंग से संभाला जाता है।
Replace मोड के साथ Regex
Section titled “Replace मोड के साथ Regex”# कनेक्शन स्ट्रिंग को एकतरफा बदलें (उलटनीय नहीं)- type: regex content: "postgres://[^\\s]+" mode: replace replacement: "postgres://***"एनवायरनमेंट वेरिएबल डिटेक्शन के साथ इंटरेक्शन
Section titled “एनवायरनमेंट वेरिएबल डिटेक्शन के साथ इंटरेक्शन”एनवायरनमेंट वेरिएबल हमेशा पहले एकत्र किए जाते हैं। फ़ाइल-परिभाषित एंट्री बाद में जोड़ी जाती हैं, इसलिए फ़ाइल एंट्री उन सीक्रेट को कवर कर सकती हैं जो एनवायरनमेंट वेरिएबल में नहीं हैं (कॉन्फ़िग फ़ाइलें, हार्डकोडेड मान, आदि)। यदि एक ही मान दोनों में दिखाई देता है, तो फ़ाइल एंट्री का मोड प्राथमिकता लेता है।
प्रमुख फ़ाइलें
Section titled “प्रमुख फ़ाइलें”src/secrets/index.ts— लोडिंग, मर्जिंग, एनवायरनमेंट वेरिएबल संग्रहsrc/secrets/obfuscator.ts—SecretObfuscatorक्लास, प्लेसहोल्डर जनरेशन, मैसेज ऑब्फस्केशनsrc/secrets/regex.ts— regex लिटरल पार्सिंग और कम्पाइलेशनsrc/config/settings-schema.ts—secrets.enabledसेटिंग परिभाषा