Gateway
สัญญาแผนการปรับใช้ข้อมูลลับ
หน้านี้กำหนดสัญญาที่เข้มงวดซึ่ง openclaw secrets apply บังคับใช้
หาก target ไม่ตรงตามกฎเหล่านี้ apply จะล้มเหลวก่อนแก้ไข configuration
รูปแบบไฟล์แผน
openclaw secrets apply --from <plan.json> คาดหวังอาร์เรย์ targets ของ plan 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" }, }, ],}การ upsert และการลบผู้ให้บริการ
แผนอาจมีฟิลด์ระดับบนสุดแบบไม่บังคับอีกสองฟิลด์ที่แก้ไขแมป
secrets.providers ควบคู่กับการเขียนราย target:
providerUpserts— อ็อบเจ็กต์ที่ใช้ alias ของผู้ให้บริการเป็นคีย์ แต่ละค่าคือ นิยามผู้ให้บริการ (รูปแบบเดียวกับที่ยอมรับภายใต้secrets.providers.<alias>ในopenclaw.jsonเช่น ผู้ให้บริการexecหรือfile)providerDeletes— อาร์เรย์ของ alias ผู้ให้บริการที่จะลบ
providerUpserts ทำงานก่อน targets ดังนั้น target.ref.provider อาจ
อ้างอิง alias ผู้ให้บริการที่แผนเดียวกันเพิ่มเข้ามาใน
providerUpserts ได้ หากไม่มีสิ่งนี้ แผนที่อ้างอิง alias ที่ยังไม่ได้
กำหนดค่าใน 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 ในโหมดเขียน
ขอบเขต target ที่รองรับ
ยอมรับ plan targets สำหรับเส้นทางข้อมูลรับรองที่รองรับใน:
พฤติกรรมประเภท target
กฎทั่วไป:
target.typeต้องเป็นที่รู้จักและต้องตรงกับรูปแบบtarget.pathที่ normalize แล้ว
ยังคงยอมรับ alias เพื่อความเข้ากันได้สำหรับแผนที่มีอยู่:
models.providers.apiKeyskills.entries.apiKeychannels.googlechat.serviceAccount
กฎการตรวจสอบ path
แต่ละ target จะถูกตรวจสอบด้วยกฎทั้งหมดต่อไปนี้:
typeต้องเป็นประเภท target ที่รู้จักpathต้องเป็น dot path ที่ไม่ว่างpathSegmentsสามารถละได้ หากระบุ ต้อง normalize เป็น path เดียวกันทุกประการกับpath- segment ต้องห้ามจะถูกปฏิเสธ:
__proto__,prototype,constructor - path ที่ normalize แล้วต้องตรงกับรูปแบบ path ที่ลงทะเบียนไว้สำหรับประเภท target
- หากตั้งค่า
providerIdหรือaccountIdไว้ ค่านั้นต้องตรงกับ id ที่เข้ารหัสใน path - target ของ
auth-profiles.jsonต้องมีagentId - เมื่อสร้าง mapping ใหม่ของ
auth-profiles.jsonให้รวมauthProfileProvider
พฤติกรรมเมื่อเกิดความล้มเหลว
หาก target ไม่ผ่านการตรวจสอบ apply จะออกด้วยข้อผิดพลาดเช่น:
Invalid plan target path for models.providers.apiKey: models.providers.openai.baseUrlจะไม่มีการ commit การเขียนใดๆ สำหรับแผนที่ไม่ถูกต้อง
พฤติกรรมการยินยอมของผู้ให้บริการ Exec
--dry-runข้ามการตรวจ SecretRef แบบ exec โดยค่าเริ่มต้น- แผนที่มี exec SecretRefs/providers จะถูกปฏิเสธในโหมดเขียน เว้นแต่จะตั้งค่า
--allow-exec - เมื่อตรวจสอบ/ใช้แผนที่มี exec ให้ส่ง
--allow-execทั้งในคำสั่ง dry-run และคำสั่งเขียน
หมายเหตุขอบเขต runtime และ audit
- รายการ
auth-profiles.jsonแบบอ้างอิงเท่านั้น (keyRef/tokenRef) รวมอยู่ในการ resolve runtime และการครอบคลุม audit secrets applyเขียน target ของopenclaw.jsonที่รองรับ, target ของauth-profiles.jsonที่รองรับ และ scrub targets แบบไม่บังคับ
การตรวจสอบสำหรับผู้ปฏิบัติการ
# Validate plan without writesopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json --dry-run # Then apply for realopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json # For exec-containing plans, opt in explicitly in both modesopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json --dry-run --allow-execopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json --allow-execหาก apply ล้มเหลวพร้อมข้อความ path target ไม่ถูกต้อง ให้สร้างแผนใหม่ด้วย openclaw secrets configure หรือแก้ path target ให้เป็นรูปแบบที่รองรับข้างต้น