Gateway
عقد خطة تطبيق الأسرار
تحدد هذه الصفحة العقد الصارم الذي يفرضه openclaw secrets apply. إذا لم يطابق هدفٌ ما هذه القواعد، تفشل عملية التطبيق قبل تعديل أي ملف.
بنية ملف الخطة
يتوقع 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-- كائن مفهرس بالاسم البديل للمزوّد. كل قيمة هي تعريف لمزوّد (بالبنية نفسها المقبولة ضمنsecrets.providers.<alias>فيopenclaw.json، مثل مزوّد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" }, }, ],}تظل مزوّدات Exec المُضافة عبر providerUpserts خاضعة لقواعد الموافقة على 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.
سلوك الفشل
إذا فشل التحقق من صحة هدف، تنتهي عملية التطبيق بخطأ مثل:
Invalid plan target path for models.providers.apiKey: models.providers.openai.baseUrlلا تُثبّت أي عمليات كتابة لخطة غير صالحة: تُجرى عملية حلّ الأهداف والتحقق من صحة المسارات قبل لمس أي ملف. وبشكل منفصل، بمجرد أن تبدأ خطة صالحة في الكتابة، تنشئ عملية التطبيق أولًا لقطة لكل ملف تمسه، وتستعيد تلك اللقطات إذا فشلت عملية كتابة لاحقة ضمن التشغيل نفسه، لذلك لا تتسبب أي كتابة جزئية في عدم تزامن حالة الإعدادات أو ملفات تعريف المصادقة أو متغيرات البيئة.
سلوك الموافقة على مزوّد Exec
- يتخطى
--dry-runعمليات التحقق من مراجع الأسرار SecretRef من نوع Exec افتراضيًا. - تُرفض الخطط التي تحتوي على مراجع أسرار SecretRef أو مزوّدات من نوع Exec في وضع الكتابة ما لم يُضبط
--allow-exec. - عند التحقق من الخطط التي تحتوي على Exec أو تطبيقها، مرّر
--allow-execفي أوامر التشغيل التجريبي والكتابة معًا.
ملاحظات حول نطاق وقت التشغيل والتدقيق
- تُضمَّن إدخالات
auth-profiles.jsonالتي تحتوي على مراجع فقط (keyRef/tokenRef) في حل بيانات الاعتماد في وقت التشغيل وفي تغطية التدقيق. - يكتب
secrets applyأهدافopenclaw.jsonالمدعومة وأهدافauth-profiles.jsonالمدعومة، وينفّذ ثلاث عمليات تنظيف اختيارية مفعّلة افتراضيًا:scrubEnv(تزيل قيم النص الصريح التي رُحّلت من.env)، وscrubAuthProfilesForProviderTargets(تمحو بقايا النص الصريح أو المراجع غير المستخدمة فيauth-profiles.jsonللمزوّدين الذين رحّلتهم الخطة للتو)، وscrubLegacyAuthJson(تحذف إدخالاتapi_keyالمُرحّلة من مخازنauth.jsonالقديمة). اضبط أيًا من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 أو صحّح مسار الهدف ليتوافق مع إحدى البنى المدعومة أعلاه.