नीतियाँ
नियंत्रित करें कि OpenCode किन कॉन्फ़िगर किए गए संसाधनों का उपयोग कर सकता है।
नीतियाँ नियंत्रित करती हैं कि OpenCode किसी नामित संसाधन पर कोई क्रिया कर सकता है या नहीं। यह सुविधा प्रायोगिक है और इसे opencode.json में experimental.policies array के साथ कॉन्फ़िगर किया जाता है।
नीतियाँ परमिशन से अलग हैं। परमिशन नियंत्रित करती हैं कि किसी सत्र के दौरान टूल क्या कर सकते हैं, जबकि नीतियाँ नियंत्रित करती हैं कि OpenCode किसी संसाधन, जैसे कि किसी LLM प्रदाता, का उपयोग कर सकता है या नहीं।
कॉन्फ़िगरेशन
प्रत्येक नीति स्टेटमेंट में तीन फ़ील्ड होते हैं:
effect- या तो"allow"या"deny"।action- नियंत्रित किया जाने वाला ऑपरेशन।resource- संसाधन ID या wildcard पैटर्न जिस पर यह स्टेटमेंट लागू होता है।
उदाहरण के लिए, openai प्रदाता के उपयोग को deny करें:
{
"$schema": "https://opencode.ai/config.json",
"experimental": {
"policies": [
{
"effect": "deny",
"action": "provider.use",
"resource": "openai"
}
]
}
}नीति द्वारा deny किया गया प्रदाता मॉडल चयन या मॉडल उपयोग के लिए उपलब्ध नहीं होता, भले ही उसके पास credentials हों या वह अन्यथा सही ढंग से कॉन्फ़िगर किया गया हो।
उपलब्ध नीतियाँ
OpenCode वर्तमान में एक नीति क्रिया का समर्थन करता है:
| क्रिया | संसाधन | विवरण |
|---|---|---|
provider.use | प्रदाता ID, जैसे openai | किसी LLM प्रदाता के उपयोग को allow या deny करें। |
भविष्य में अधिक नीति क्रियाएँ जोड़ी जा सकती हैं।
मिलान
resource फ़ील्ड wildcard मिलान का समर्थन करता है। शून्य या अधिक कैरेक्टर से मेल खाने के लिए * और बिल्कुल एक कैरेक्टर से मेल खाने के लिए ? का उपयोग करें।
उदाहरण के लिए:
{
"$schema": "https://opencode.ai/config.json",
"experimental": {
"policies": [
{
"effect": "deny",
"action": "provider.use",
"resource": "company-*"
}
]
}
}यह company-us और company-eu जैसे प्रदाताओं को deny करता है।
नियम क्रम
जब कई स्टेटमेंट मेल खाते हैं, तो अंतिम मिलान करने वाला स्टेटमेंट जीतता है। पहले व्यापक नियम रखें, और उसके बाद अधिक विशिष्ट अपवाद रखें।
उदाहरण के लिए, केवल Anthropic की अनुमति दें:
{
"$schema": "https://opencode.ai/config.json",
"experimental": {
"policies": [
{
"effect": "deny",
"action": "provider.use",
"resource": "*"
},
{
"effect": "allow",
"action": "provider.use",
"resource": "anthropic"
}
]
}
}यदि किसी प्रदाता से कोई नीति मेल नहीं खाती, तो डिफ़ॉल्ट रूप से प्रदाता का उपयोग allow होता है।
नीतियाँ आपके global कॉन्फ़िग और project कॉन्फ़िग दोनों में सेट की जा सकती हैं। यदि दोनों स्थानों की नीतियाँ एक ही प्रदाता से मेल खाती हैं, तो आपकी global नीति project नीति पर प्राथमिकता लेती है। यह किसी रिपॉज़िटरी को उस प्रदाता को फिर से सक्षम करने से रोकता है जिसे आप global रूप से deny करते हैं।
प्रदाता सूचियाँ
प्रदाता एक्सेस नियंत्रित करते समय पुराने disabled_providers और enabled_providers सेटिंग्स के बजाय नीतियों का उपयोग करें।
disabled_providers को प्रतिस्थापित करने के लिए:
{
"experimental": {
"policies": [
{ "effect": "deny", "action": "provider.use", "resource": "openai" },
{ "effect": "deny", "action": "provider.use", "resource": "google" }
]
}
}enabled_providers को प्रतिस्थापित करने के लिए, पहले सभी प्रदाताओं को deny करें और उसके बाद चयनित प्रदाताओं को allow करें:
{
"experimental": {
"policies": [
{ "effect": "deny", "action": "provider.use", "resource": "*" },
{ "effect": "allow", "action": "provider.use", "resource": "anthropic" },
{ "effect": "allow", "action": "provider.use", "resource": "openai" }
]
}
}