Gateway
सीक्रेट्स लागू करने की योजना का अनुबंध
यह पृष्ठ openclaw secrets apply द्वारा लागू किए गए सख्त अनुबंध को परिभाषित करता है। यदि कोई लक्ष्य इन नियमों से मेल नहीं खाता, तो किसी भी फ़ाइल में बदलाव करने से पहले लागू करने की प्रक्रिया विफल हो जाती है।
योजना फ़ाइल की आवश्यकताएँ
openclaw secrets apply --from <plan.json> अधिकतम 16 MiB (16,777,216 बाइट) की सामान्य फ़ाइलें स्वीकार करता है। यह सीमा रिक्त स्थान सहित पूरी क्रमबद्ध फ़ाइल पर लागू होती है। JSON पार्सिंग या लक्ष्य सत्यापन से पहले निर्देशिकाएँ, FIFO, डिवाइस फ़ाइलें और सीमा से बड़ी फ़ाइलें अस्वीकार कर दी जाती हैं।
openclaw secrets configure --plan-out <plan.json> फ़ाइल बनाने से पहले UTF-8 क्रमबद्ध आउटपुट पर भी यही सीमा लागू करता है। हाथ से लिखी गई योजनाओं और बाहरी योजना जनरेटरों को भी क्रमबद्ध फ़ाइल को इस सीमा के भीतर रखना होगा।
योजना फ़ाइल की संरचना
openclaw secrets apply --from <plan.json> योजना लक्ष्यों की एक targets सरणी की अपेक्षा करता है:
{ version: 1, protocolVersion: 1, targets: [ { type: "models.providers.apiKey", path: "models.providers.openai.apiKey", pathSegments: ["models", "providers", "openai", "apiKey"], providerId: "openai", ref: { source: "env", provider: "default", id: "OPENAI_API_KEY" }, }, { type: "auth-profiles.api_key.key", path: "profiles.openai:default.key", pathSegments: ["profiles", "openai:default", "key"], agentId: "main", ref: { source: "env", provider: "default", id: "OPENAI_API_KEY" }, }, ],}openclaw secrets configure इस संरचना में योजनाएँ जनरेट करता है। आप किसी योजना को हाथ से लिख या संपादित भी कर सकते हैं।
प्रदाता अपसर्ट और विलोपन
योजनाओं में दो वैकल्पिक शीर्ष-स्तरीय फ़ील्ड भी शामिल हो सकते हैं, जो प्रत्येक लक्ष्य के लेखन के साथ secrets.providers मैप में बदलाव करते हैं:
providerUpserts-- प्रदाता उपनाम के आधार पर कुंजीबद्ध एक ऑब्जेक्ट। प्रत्येक मान एक प्रदाता परिभाषा है (openclaw.jsonमेंsecrets.providers.<alias>के अंतर्गत स्वीकार की जाने वाली संरचना के समान, उदाहरण के लिए कोईexecयाfileप्रदाता)।providerDeletes-- हटाए जाने वाले प्रदाता उपनामों की एक सरणी।
providerUpserts, targets से पहले चलता है, इसलिए कोई target.ref.provider उस प्रदाता उपनाम का संदर्भ दे सकता है जिसे वही योजना providerUpserts में प्रस्तुत करती है। इस क्रम के बिना, ऐसे उपनाम का संदर्भ देने वाली योजनाएँ जो अभी तक openclaw.json में कॉन्फ़िगर नहीं है, provider "<alias>" is not configured के साथ विफल हो जाती हैं।
{ version: 1, protocolVersion: 1, providerUpserts: { onepassword_anthropic: { source: "exec", command: "/usr/bin/op", args: ["read", "op://Vault/Anthropic/credential"], }, }, providerDeletes: ["legacy_unused_alias"], targets: [ { type: "models.providers.apiKey", path: "models.providers.anthropic.apiKey", pathSegments: ["models", "providers", "anthropic", "apiKey"], providerId: "anthropic", ref: { source: "exec", provider: "onepassword_anthropic", id: "credential" }, }, ],}providerUpserts के माध्यम से प्रस्तुत किए गए exec प्रदाता अब भी Exec प्रदाता सहमति व्यवहार में दिए गए exec सहमति नियमों के अधीन हैं: exec प्रदाताओं वाली योजनाओं को लेखन मोड में --allow-exec की आवश्यकता होती है।
समर्थित लक्ष्य दायरा
योजना लक्ष्य SecretRef क्रेडेंशियल सतह में दिए गए समर्थित क्रेडेंशियल पथों के लिए स्वीकार किए जाते हैं।
लक्ष्य प्रकार का व्यवहार
target.type एक मान्यताप्राप्त लक्ष्य प्रकार होना चाहिए और सामान्यीकृत target.path को उस प्रकार की पंजीकृत पथ संरचना से मेल खाना चाहिए।
कुछ लक्ष्य प्रकार अपने प्रामाणिक प्रकार नाम के अतिरिक्त मौजूदा योजनाओं के लिए target.type के रूप में एक संगतता उपनाम स्वीकार करते हैं:
| प्रामाणिक प्रकार | स्वीकृत उपनाम |
|---|---|
models.providers.apiKey |
models.providers.*.apiKey |
skills.entries.apiKey |
skills.entries.*.apiKey |
channels.googlechat.serviceAccount |
channels.googlechat.accounts.*.serviceAccount |
पथ सत्यापन नियम
प्रत्येक लक्ष्य का सत्यापन निम्नलिखित सभी नियमों के अनुसार किया जाता है:
typeएक मान्यताप्राप्त लक्ष्य प्रकार होना चाहिए।pathएक गैर-रिक्त डॉट पथ होना चाहिए।pathSegmentsको छोड़ा जा सकता है। यदि दिया गया हो, तो सामान्यीकरण के बाद इसका पथ ठीकpathके समान होना चाहिए।- निषिद्ध खंड अस्वीकार किए जाते हैं:
__proto__,prototype,constructor। - सामान्यीकृत पथ को लक्ष्य प्रकार के लिए पंजीकृत पथ संरचना से मेल खाना चाहिए।
- यदि
providerIdयाaccountIdसेट है, तो उसे पथ में एन्कोड की गई आईडी से मेल खाना चाहिए। auth-profiles.jsonलक्ष्यों के लिएagentIdआवश्यक है।- नई
auth-profiles.jsonमैपिंग बनाते समयauthProfileProviderशामिल करें।
विफलता का व्यवहार
यदि कोई लक्ष्य सत्यापन में विफल होता है, तो लागू करने की प्रक्रिया इस तरह की त्रुटि के साथ बंद हो जाती है:
models.providers.apiKey के लिए अमान्य योजना लक्ष्य पथ: models.providers.openai.baseUrlअमान्य योजना के लिए कोई लेखन कमिट नहीं किया जाता: किसी भी फ़ाइल को छूने से पहले लक्ष्य समाधान और पथ सत्यापन चलाए जाते हैं। अलग से, जब कोई मान्य योजना लिखना शुरू करती है, तो लागू करने की प्रक्रिया पहले प्रत्येक प्रभावित फ़ाइल का स्नैपशॉट लेती है और यदि उसी रन में बाद का कोई लेखन विफल हो जाए, तो उन स्नैपशॉट को पुनर्स्थापित कर देती है। इस तरह आंशिक लेखन कभी भी कॉन्फ़िगरेशन, प्रमाणीकरण-प्रोफ़ाइल या परिवेश स्थिति को असंगत नहीं छोड़ता।
Exec प्रदाता सहमति व्यवहार
--dry-runडिफ़ॉल्ट रूप से exec SecretRef जाँचों को छोड़ देता है।- exec SecretRefs/प्रदाताओं वाली योजनाएँ लेखन मोड में अस्वीकार कर दी जाती हैं, जब तक
--allow-execसेट न हो। - exec वाली योजनाओं का सत्यापन/अनुप्रयोग करते समय ड्राई-रन और लेखन, दोनों कमांड में
--allow-execपास करें।
रनटाइम और ऑडिट दायरे संबंधी टिप्पणियाँ
- केवल-संदर्भ
auth-profiles.jsonप्रविष्टियाँ (keyRef/tokenRef) रनटाइम क्रेडेंशियल समाधान और ऑडिट कवरेज में शामिल की जाती हैं। secrets applyसमर्थितopenclaw.jsonलक्ष्यों, समर्थितauth-profiles.jsonलक्ष्यों और तीन वैकल्पिक स्क्रब पास को लिखता है, जिनमें से प्रत्येक डिफ़ॉल्ट रूप से चालू होता है:scrubEnv(प्रभावी स्थिति और सक्रिय-कॉन्फ़िगरेशन निर्देशिकाओं की.envफ़ाइलों से माइग्रेट किए गए प्लेनटेक्स्ट मानों को हटाता है),scrubAuthProfilesForProviderTargets(उन प्रदाताओं के लिएauth-profiles.jsonमें प्लेनटेक्स्ट/अप्रयुक्त-संदर्भ अवशेष साफ़ करता है जिन्हें किसी योजना ने अभी माइग्रेट किया है), औरscrubLegacyAuthJson(पुरानेauth.jsonस्टोर से माइग्रेट की गईapi_keyप्रविष्टियाँ हटाता है)। किसी पास को छोड़ने के लिए योजना मेंoptions.scrubEnv,options.scrubAuthProfilesForProviderTargets,options.scrubLegacyAuthJsonमें से संबंधित मान कोfalseपर सेट करें।
ऑपरेटर जाँच
# बिना लिखे योजना सत्यापित करेंopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json --dry-run # फिर वास्तव में लागू करेंopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json # exec वाली योजनाओं के लिए दोनों मोड में स्पष्ट रूप से सहमति देंopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json --dry-run --allow-execopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json --allow-execयदि लागू करने की प्रक्रिया अमान्य लक्ष्य पथ संदेश के साथ विफल होती है, तो openclaw secrets configure से योजना दोबारा जनरेट करें या लक्ष्य पथ को ऊपर दी गई किसी समर्थित संरचना के अनुसार ठीक करें।