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 सरणी की अपेक्षा करता है:

json5
{  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 के साथ विफल हो जाती हैं।

json5
{  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 शामिल करें।

विफलता का व्यवहार

यदि कोई लक्ष्य सत्यापन में विफल होता है, तो लागू करने की प्रक्रिया इस तरह की त्रुटि के साथ बंद हो जाती है:

text
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 पर सेट करें।

ऑपरेटर जाँच

bash
# बिना लिखे योजना सत्यापित करें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 से योजना दोबारा जनरेट करें या लक्ष्य पथ को ऊपर दी गई किसी समर्थित संरचना के अनुसार ठीक करें।

संबंधित दस्तावेज़

Was this useful?
On this page

On this page