हिन्दी
दस्तावेज़
कॉन्फ़िगरेशन

कॉन्फ़िग

OpenCode JSON कॉन्फ़िग का उपयोग।

आप एक JSON कॉन्फ़िग फ़ाइल का उपयोग करके OpenCode को कॉन्फ़िगर कर सकते हैं।


प्रारूप

OpenCode JSON और JSONC (टिप्पणियों के साथ JSON) दोनों प्रारूपों का समर्थन करता है।

opencode.jsonc
{
  "$schema": "https://opencode.ai/config.json",
  "model": "anthropic/claude-sonnet-4-5",
  "autoupdate": true,
  "server": {
    "port": 4096,
  },
}

स्थान

आप अपना कॉन्फ़िग कुछ अलग-अलग स्थानों पर रख सकते हैं और उनकी प्राथमिकता का क्रम अलग होता है।

Note: कॉन्फ़िगरेशन फ़ाइलें एक साथ मर्ज की जाती हैं, प्रतिस्थापित नहीं।

कॉन्फ़िगरेशन फ़ाइलें एक साथ मर्ज की जाती हैं, प्रतिस्थापित नहीं। निम्नलिखित कॉन्फ़िग स्थानों की सेटिंग्स संयोजित की जाती हैं। बाद के कॉन्फ़िग केवल विरोधी की के लिए पहले वालों को ओवरराइड करते हैं। सभी कॉन्फ़िग की गैर-विरोधी सेटिंग्स संरक्षित रहती हैं।

उदाहरण के लिए, यदि आपका ग्लोबल कॉन्फ़िग autoupdate: true सेट करता है और आपका प्रोजेक्ट कॉन्फ़िग model: "anthropic/claude-sonnet-4-5" सेट करता है, तो अंतिम कॉन्फ़िगरेशन में दोनों सेटिंग्स शामिल होंगी।


प्राथमिकता क्रम

कॉन्फ़िग स्रोत इस क्रम में लोड किए जाते हैं (बाद के स्रोत पहले वालों को ओवरराइड करते हैं):

  1. Remote config (.well-known/opencode से) - संगठनात्मक डिफ़ॉल्ट
  2. Global config ( ~/.config/opencode/opencode.json ) - उपयोगकर्ता प्राथमिकताएँ
  3. Custom config ( OPENCODE_CONFIG env var) - कस्टम ओवरराइड
  4. Project config ( प्रोजेक्ट में opencode.json ) - प्रोजेक्ट-विशिष्ट सेटिंग्स
  5. .opencode directories - एजेंट, कमांड, प्लगइन
  6. Inline config ( OPENCODE_CONFIG_CONTENT env var) - रनटाइम ओवरराइड
  7. Managed config files ( macOS पर /Library/Application Support/opencode/ ) - एडमिन-नियंत्रित
  8. macOS managed preferences ( MDM के माध्यम से .mobileconfig ) - उच्चतम प्राथमिकता, उपयोगकर्ता द्वारा ओवरराइड न करने योग्य

इसका अर्थ है कि प्रोजेक्ट कॉन्फ़िग ग्लोबल डिफ़ॉल्ट को ओवरराइड कर सकते हैं, और ग्लोबल कॉन्फ़िग रिमोट संगठनात्मक डिफ़ॉल्ट को ओवरराइड कर सकते हैं। प्रबंधित सेटिंग्स सब कुछ ओवरराइड करती हैं।

Note: .opencode और ~/.config/opencode डायरेक्टरी सबडायरेक्टरी के लिए बहुवचन नाम उपयोग करती हैं: agents/, commands/, modes/, plugins/, skills/, tools/, और themes/। एकवचन नाम (जैसे, agent/) भी बैकवर्ड संगतता के लिए समर्थित हैं।


रिमोट

संगठन .well-known/opencode एंडपॉइंट के माध्यम से डिफ़ॉल्ट कॉन्फ़िगरेशन प्रदान कर सकते हैं। यह स्वचालित रूप से तब फ़ेच किया जाता है जब आप ऐसे प्रदाता के साथ प्रमाणित होते हैं जो इसका समर्थन करता है।

Remote config पहले लोड होता है, जो आधार परत के रूप में कार्य करता है। अन्य सभी कॉन्फ़िग स्रोत (global, project) इन डिफ़ॉल्ट को ओवरराइड कर सकते हैं।

उदाहरण के लिए, यदि आपका संगठन ऐसे MCP सर्वर प्रदान करता है जो डिफ़ॉल्ट रूप से अक्षम हैं:

Remote config from .well-known/opencode
{
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": false
    }
  }
}

आप अपने लोकल कॉन्फ़िग में विशिष्ट सर्वर सक्षम कर सकते हैं:

opencode.json
{
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": true
    }
  }
}

वैश्विक

अपना ग्लोबल OpenCode कॉन्फ़िग ~/.config/opencode/opencode.json में रखें। प्रदाता, मॉडल और परमिशन जैसी उपयोगकर्ता-व्यापी सर्वर/रनटाइम प्राथमिकताओं के लिए ग्लोबल कॉन्फ़िग का उपयोग करें।

TUI-विशिष्ट सेटिंग्स के लिए, ~/.config/opencode/tui.json का उपयोग करें।

ग्लोबल कॉन्फ़िग रिमोट संगठनात्मक डिफ़ॉल्ट को ओवरराइड करता है।


प्रति प्रोजेक्ट

अपने प्रोजेक्ट रूट में opencode.json जोड़ें। मानक कॉन्फ़िग फ़ाइलों में प्रोजेक्ट कॉन्फ़िग की उच्चतम प्राथमिकता होती है - यह ग्लोबल और रिमोट दोनों कॉन्फ़िग को ओवरराइड करता है।

प्रोजेक्ट-विशिष्ट TUI सेटिंग्स के लिए, इसके साथ tui.json जोड़ें।

Tip: प्रोजेक्ट-विशिष्ट कॉन्फ़िग को अपने प्रोजेक्ट के रूट में रखें।

OpenCode शुरू होने पर पहले वर्तमान डायरेक्टरी में कॉन्फ़िग फ़ाइल खोजता है, फिर निकटतम Git डायरेक्टरी तक ऊपर जाता है।

इसे Git में चेक इन करना भी सुरक्षित है और यह ग्लोबल वाले के समान स्कीमा का उपयोग करता है।


कस्टम पथ

OPENCODE_CONFIG एनवायरनमेंट वेरिएबल का उपयोग करके एक कस्टम कॉन्फ़िग फ़ाइल पथ निर्दिष्ट करें।

export OPENCODE_CONFIG=/path/to/my/custom-config.json
opencode run "Hello world"

प्राथमिकता क्रम में Custom config को global और project कॉन्फ़िग के बीच लोड किया जाता है।


कस्टम डायरेक्टरी

OPENCODE_CONFIG_DIR एनवायरनमेंट वेरिएबल का उपयोग करके एक कस्टम कॉन्फ़िग डायरेक्टरी निर्दिष्ट करें। इस डायरेक्टरी को मानक .opencode डायरेक्टरी की तरह एजेंट, कमांड, मोड और प्लगइन के लिए खोजा जाएगा, और इसे समान संरचना का पालन करना चाहिए।

export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
opencode run "Hello world"

कस्टम डायरेक्टरी ग्लोबल कॉन्फ़िग और .opencode डायरेक्टरी के बाद लोड होती है, इसलिए यह उनकी सेटिंग्स को ओवरराइड कर सकती है।


प्रबंधित सेटिंग्स

संगठन ऐसी कॉन्फ़िगरेशन लागू कर सकते हैं जिसे उपयोगकर्ता ओवरराइड नहीं कर सकते। प्रबंधित सेटिंग्स उच्चतम प्राथमिकता स्तर पर लोड की जाती हैं।

फ़ाइल-आधारित

सिस्टम प्रबंधित कॉन्फ़िग डायरेक्टरी में एक opencode.json या opencode.jsonc फ़ाइल डालें:

PlatformPath
macOS/Library/Application Support/opencode/
Linux/etc/opencode/
Windows%ProgramData%\opencode

इन डायरेक्टरी में लिखने के लिए admin/root एक्सेस की आवश्यकता होती है, इसलिए उपयोगकर्ता इन्हें संशोधित नहीं कर सकते।

macOS की प्रबंधित प्राथमिकताएँ

macOS पर, OpenCode ai.opencode.managed preference domain से प्रबंधित प्राथमिकताएँ पढ़ता है। MDM (Jamf, Kandji, FleetDM) के माध्यम से एक .mobileconfig डिप्लॉय करें और सेटिंग्स स्वचालित रूप से लागू हो जाती हैं।

OpenCode इन पथों की जाँच करता है:

  1. /Library/Managed Preferences/<user>/ai.opencode.managed.plist
  2. /Library/Managed Preferences/ai.opencode.managed.plist

plist की सीधे opencode.json फ़ील्ड से मैप होती हैं। MDM मेटाडेटा की (PayloadUUID, PayloadType, आदि) स्वचालित रूप से हटा दी जाती हैं।

एक .mobileconfig बनाना

ai.opencode.managed PayloadType का उपयोग करें। OpenCode कॉन्फ़िग की सीधे payload dict में जाती हैं:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>PayloadContent</key>
  <array>
    <dict>
      <key>PayloadType</key>
      <string>ai.opencode.managed</string>
      <key>PayloadIdentifier</key>
      <string>com.example.opencode.config</string>
      <key>PayloadUUID</key>
      <string>GENERATE-YOUR-OWN-UUID</string>
      <key>PayloadVersion</key>
      <integer>1</integer>
      <key>share</key>
      <string>disabled</string>
      <key>server</key>
      <dict>
        <key>hostname</key>
        <string>127.0.0.1</string>
      </dict>
      <key>permission</key>
      <dict>
        <key>*</key>
        <string>ask</string>
        <key>bash</key>
        <dict>
          <key>*</key>
          <string>ask</string>
          <key>rm -rf *</key>
          <string>deny</string>
        </dict>
      </dict>
    </dict>
  </array>
  <key>PayloadType</key>
  <string>Configuration</string>
  <key>PayloadIdentifier</key>
  <string>com.example.opencode</string>
  <key>PayloadUUID</key>
  <string>GENERATE-YOUR-OWN-UUID</string>
  <key>PayloadVersion</key>
  <integer>1</integer>
</dict>
</plist>

uuidgen के साथ अद्वितीय UUID उत्पन्न करें। अपने संगठन की आवश्यकताओं से मेल खाने के लिए सेटिंग्स कस्टमाइज़ करें।

MDM के माध्यम से डिप्लॉय करना

  • Jamf Pro: Computers > Configuration Profiles > Upload > लक्षित डिवाइस या स्मार्ट समूहों के लिए स्कोप करें
  • FleetDM: mdm.macos_settings.custom_settings के अंतर्गत अपने gitops रिपॉज़िटरी में .mobileconfig जोड़ें और fleetctl apply चलाएँ

किसी डिवाइस पर सत्यापन करना

परीक्षण के लिए स्थानीय रूप से इंस्टॉल करने हेतु .mobileconfig पर डबल-क्लिक करें (System Settings > Privacy & Security > Profiles में दिखता है), फिर चलाएँ:

opencode debug config

सभी प्रबंधित प्राथमिकता की resolved कॉन्फ़िग में दिखाई देती हैं और उपयोगकर्ता या प्रोजेक्ट कॉन्फ़िगरेशन द्वारा ओवरराइड नहीं की जा सकतीं।


कॉन्फ़िगरेशन स्कीमा

सर्वर/रनटाइम कॉन्फ़िग स्कीमा opencode.ai/config.json (opens in a new tab) में परिभाषित है।

TUI कॉन्फ़िग opencode.ai/tui.json (opens in a new tab) का उपयोग करता है।

आपका एडिटर स्कीमा के आधार पर मान्य और ऑटोकम्प्लीट करने में सक्षम होना चाहिए।


TUI

TUI-विशिष्ट सेटिंग्स के लिए एक समर्पित tui.json (या tui.jsonc) फ़ाइल का उपयोग करें।

tui.json
{
  "$schema": "https://opencode.ai/tui.json",
  "scroll_speed": 3,
  "scroll_acceleration": {
    "enabled": true
  },
  "diff_style": "auto",
  "cursor": {
    "style": "block",
    "blinking": true
  },
  "mouse": true,
  "attention": {
    "enabled": true,
    "notifications": true,
    "sound": true,
    "volume": 0.4
  }
}

एक कस्टम TUI कॉन्फ़िग फ़ाइल की ओर इंगित करने के लिए OPENCODE_TUI_CONFIG का उपयोग करें।

जब cursor.style "default" होता है, तब टर्मिनल का डिफ़ॉल्ट कर्सर बहाल हो जाता है, इसलिए cursor.blinking का कोई प्रभाव नहीं पड़ता।

TUI डेस्कटॉप सूचनाएँ और ध्वनियाँ चालू करने के लिए attention.enabled सेट करें। TUI attention देखें।

opencode.json में लीगेसी theme, keybinds, और tui की अप्रचलित हैं और संभव होने पर स्वचालित रूप से माइग्रेट की जाती हैं।


सर्वर

आप server विकल्प के माध्यम से opencode serve और opencode web कमांड के लिए सर्वर सेटिंग्स कॉन्फ़िगर कर सकते हैं।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "server": {
    "port": 4096,
    "hostname": "0.0.0.0",
    "mdns": true,
    "mdnsDomain": "myproject.local",
    "cors": ["http://localhost:5173"]
  }
}

उपलब्ध विकल्प:

  • port - सुनने के लिए पोर्ट।
  • hostname - सुनने के लिए होस्टनाम। जब mdns सक्षम है और कोई होस्टनाम सेट नहीं है, तो डिफ़ॉल्ट रूप से 0.0.0.0 होता है।
  • mdns - mDNS सेवा डिस्कवरी सक्षम करें। यह नेटवर्क पर अन्य डिवाइस को आपके OpenCode सर्वर की खोज करने देता है।
  • mdnsDomain - mDNS सेवा के लिए कस्टम डोमेन नाम। डिफ़ॉल्ट रूप से opencode.local होता है। एक ही नेटवर्क पर कई इंस्टेंस चलाने के लिए उपयोगी।
  • cors - ब्राउज़र-आधारित क्लाइंट से HTTP सर्वर उपयोग करते समय CORS के लिए अनुमति देने हेतु अतिरिक्त origin। मान पूर्ण origin होने चाहिए (scheme + host + वैकल्पिक port), जैसे https://app.example.com ।

सर्वर के बारे में यहाँ अधिक जानें।


शेल

आप shell विकल्प का उपयोग करके इंटरैक्टिव टर्मिनल के लिए उपयोग किए जाने वाले शेल को कॉन्फ़िगर कर सकते हैं। संगत शेल का उपयोग एजेंट टूल कॉल के लिए भी किया जाता है।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "shell": "pwsh"
}

यदि निर्दिष्ट नहीं किया गया है, तो OpenCode आपके ऑपरेटिंग सिस्टम के आधार पर स्वचालित रूप से एक उचित डिफ़ॉल्ट खोजेगा और उपयोग करेगा (जैसे Windows पर pwsh या cmd.exe, macOS/Linux पर /bin/zsh या /bin/bash)। आप एक पूर्ण पथ या एक छोटा नाम प्रदान कर सकते हैं।


टूल

आप tools विकल्प के माध्यम से उन टूल को प्रबंधित कर सकते हैं जिन्हें कोई LLM उपयोग कर सकता है।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "tools": {
    "write": false,
    "bash": false
  }
}

टूल के बारे में यहाँ अधिक जानें।


मॉडल

आप provider, model और small_model विकल्पों के माध्यम से अपने OpenCode कॉन्फ़िग में उन प्रदाताओं और मॉडल को कॉन्फ़िगर कर सकते हैं जिन्हें आप उपयोग करना चाहते हैं।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {},
  "model": "anthropic/claude-sonnet-4-5",
  "small_model": "anthropic/claude-haiku-4-5"
}

small_model विकल्प शीर्षक निर्माण जैसे हल्के कार्यों के लिए एक अलग मॉडल कॉन्फ़िगर करता है। डिफ़ॉल्ट रूप से, OpenCode आपके प्रदाता से उपलब्ध होने पर एक सस्ता मॉडल उपयोग करने का प्रयास करता है, अन्यथा यह आपके मुख्य मॉडल पर वापस आ जाता है।

प्रदाता विकल्पों में timeout, headerTimeout, chunkTimeout और setCacheKey शामिल हो सकते हैं:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "anthropic": {
      "options": {
        "timeout": 600000,
        "chunkTimeout": 30000,
        "setCacheKey": true
      }
    }
  }
}
  • timeout - मिलीसेकंड में अनुरोध timeout (डिफ़ॉल्ट: 300000)। अक्षम करने के लिए false पर सेट करें।
  • headerTimeout - प्रतिक्रिया के हेडर की प्रतीक्षा करने की समय-सीमा, मिलीसेकंड में (डिफ़ॉल्ट: 300000, यानी 5 मिनट)। हेडर मिलते ही यह टाइमर रुक जाता है और उसके बाद आने वाले स्ट्रीमिंग प्रतिक्रिया-बॉडी को सीमित नहीं करता। अक्षम करने के लिए false सेट करें।
  • chunkTimeout - स्ट्रीमिंग प्रतिक्रिया के दो chunks के बीच की समय-सीमा, मिलीसेकंड में (डिफ़ॉल्ट: 300000, यानी 5 मिनट)। समय पर कोई chunk नहीं आने पर अनुरोध रद्द हो जाता है। अक्षम करने के लिए false सेट करें।
  • setCacheKey - सुनिश्चित करें कि निर्दिष्ट प्रदाता के लिए हमेशा एक cache key सेट हो।

आप लोकल मॉडल भी कॉन्फ़िगर कर सकते हैं। अधिक जानें।


नीतियाँ

कॉन्फ़िगर किए गए संसाधनों पर OpenCode की क्रियाओं को allow या deny करने के लिए experimental.policies विकल्प का उपयोग करें। वर्तमान में, नीतियाँ यह नियंत्रित कर सकती हैं कि OpenCode किन प्रदाताओं का उपयोग कर सकता है।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "experimental": {
    "policies": [
      {
        "effect": "deny",
        "action": "provider.use",
        "resource": "openai"
      }
    ]
  }
}

नीतियों के बारे में यहाँ अधिक जानें।


इमेज अटैचमेंट

OpenCode इमेज अटैचमेंट को मॉडल को भेजने से पहले सामान्यीकृत करता है। डिफ़ॉल्ट रूप से, जब इमेज 2000x2000 पिक्सेल या 5242880 base64 बाइट से अधिक होती हैं तो उनका आकार बदल दिया जाता है।

attachment.image विकल्प के साथ इमेज अटैचमेंट सीमाएँ कॉन्फ़िगर करें:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "attachment": {
    "image": {
      "auto_resize": true,
      "max_width": 2000,
      "max_height": 2000,
      "max_base64_bytes": 5242880
    }
  }
}
  • auto_resize - प्रदाता अनुरोधों से पहले कॉन्फ़िगर की गई सीमाओं से अधिक इमेज का आकार बदलें। बड़ी इमेज को इसके बजाय अस्वीकार करने के लिए false पर सेट करें।
  • max_width - आकार बदलने या अस्वीकार करने से पहले पिक्सेल में अधिकतम इमेज चौड़ाई।
  • max_height - आकार बदलने या अस्वीकार करने से पहले पिक्सेल में अधिकतम इमेज ऊँचाई।
  • max_base64_bytes - अधिकतम एन्कोडेड इमेज payload आकार। यह base64 payload आकार है, मूल फ़ाइल आकार नहीं।

यदि कोई इमेज आकार बदलने के बाद भी फिट नहीं हो सकती, तो OpenCode बड़ी tool-result इमेज को छोड़ देता है या बड़ी उपयोगकर्ता-प्रदत्त इमेज को इमेज आकार त्रुटि के साथ विफल कर देता है।


प्रदाता-विशिष्ट विकल्प

कुछ प्रदाता सामान्य timeout और apiKey सेटिंग्स से परे अतिरिक्त कॉन्फ़िगरेशन विकल्पों का समर्थन करते हैं।

Amazon Bedrock

Amazon Bedrock AWS-विशिष्ट कॉन्फ़िगरेशन का समर्थन करता है:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "amazon-bedrock": {
      "options": {
        "region": "us-east-1",
        "profile": "my-aws-profile",
        "endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
      }
    }
  }
}
  • region - Bedrock के लिए AWS region (डिफ़ॉल्ट रूप से AWS_REGION env var या us-east-1 )
  • profile - ~/.aws/credentials से AWS named profile (डिफ़ॉल्ट रूप से AWS_PROFILE env var)
  • endpoint - VPC एंडपॉइंट के लिए कस्टम एंडपॉइंट URL। यह AWS-विशिष्ट शब्दावली का उपयोग करते हुए सामान्य baseURL विकल्प का एक उपनाम है। यदि दोनों निर्दिष्ट हैं, तो endpoint प्राथमिकता लेता है।

Note: Bearer टोकन (AWS_BEARER_TOKEN_BEDROCK या /connect) profile-आधारित प्रमाणीकरण पर प्राथमिकता लेते हैं। विवरण के लिए authentication precedence देखें।

Amazon Bedrock कॉन्फ़िगरेशन के बारे में अधिक जानें।


थीम

tui.json में अपनी UI theme सेट करें।

tui.json
{
  "$schema": "https://opencode.ai/tui.json",
  "theme": "tokyonight"
}

यहाँ अधिक जानें।


एजेंट

आप agent विकल्प के माध्यम से विशिष्ट कार्यों के लिए विशेष एजेंट कॉन्फ़िगर कर सकते हैं।

opencode.jsonc
{
  "$schema": "https://opencode.ai/config.json",
  "agent": {
    "code-reviewer": {
      "description": "Reviews code for best practices and potential issues",
      "model": "anthropic/claude-sonnet-4-5",
      "prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
      "tools": {
        // Disable file modification tools for review-only agent
        "write": false,
        "edit": false,
      },
    },
  },
}

आप ~/.config/opencode/agents/ या .opencode/agents/ में markdown फ़ाइलों का उपयोग करके भी एजेंट परिभाषित कर सकते हैं। यहाँ अधिक जानें।


डिफ़ॉल्ट एजेंट

आप default_agent विकल्प का उपयोग करके डिफ़ॉल्ट एजेंट सेट कर सकते हैं। यह निर्धारित करता है कि कोई स्पष्ट रूप से निर्दिष्ट न होने पर किस एजेंट का उपयोग किया जाता है।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "default_agent": "plan"
}

डिफ़ॉल्ट एजेंट एक प्राइमरी एजेंट होना चाहिए (सबएजेंट नहीं)। यह "build" या "plan" जैसा बिल्ट-इन एजेंट हो सकता है, या आपके द्वारा परिभाषित एक कस्टम एजेंट। यदि निर्दिष्ट एजेंट मौजूद नहीं है या एक सबएजेंट है, तो OpenCode एक चेतावनी के साथ "build" पर वापस आ जाएगा।

यह सेटिंग सभी इंटरफ़ेस पर लागू होती है: TUI, CLI (opencode run), डेस्कटॉप ऐप, और GitHub Action।


सबएजेंट की गहराई

subagent_depth विकल्प से आप नियंत्रित कर सकते हैं कि सबएजेंट अन्य सबएजेंट को कितनी गहराई तक शुरू कर सकते हैं।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "subagent_depth": 2
}

डिफ़ॉल्ट 1 है। इससे प्राइमरी एजेंट सबएजेंट शुरू कर सकते हैं, लेकिन वे सबएजेंट आगे अन्य सबएजेंट शुरू नहीं कर सकते। नेस्टिंग का एक अतिरिक्त स्तर देने के लिए इसे 2, या सभी सबएजेंट लॉन्च रोकने के लिए 0 करें।


साझा करना

आप share विकल्प के माध्यम से share फ़ीचर कॉन्फ़िगर कर सकते हैं।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "share": "manual"
}

यह लेता है:

  • "manual" - कमांड के माध्यम से मैन्युअल शेयरिंग की अनुमति दें (डिफ़ॉल्ट)
  • "auto" - नई बातचीत स्वचालित रूप से शेयर करें
  • "disabled" - शेयरिंग पूरी तरह अक्षम करें

डिफ़ॉल्ट रूप से, शेयरिंग manual मोड पर सेट है जहाँ आपको /share कमांड का उपयोग करके स्पष्ट रूप से बातचीत शेयर करनी होती है।


कमांड

आप command विकल्प के माध्यम से दोहराव वाले कार्यों के लिए कस्टम कमांड कॉन्फ़िगर कर सकते हैं।

opencode.jsonc
{
  "$schema": "https://opencode.ai/config.json",
  "command": {
    "test": {
      "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
      "description": "Run tests with coverage",
      "agent": "build",
      "model": "anthropic/claude-haiku-4-5",
    },
    "component": {
      "template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.",
      "description": "Create a new component",
    },
  },
}

आप ~/.config/opencode/commands/ या .opencode/commands/ में markdown फ़ाइलों का उपयोग करके भी कमांड परिभाषित कर सकते हैं। यहाँ अधिक जानें।


कीबोर्ड शॉर्टकट

keybinds के साथ tui.json में TUI कीबोर्ड शॉर्टकट कस्टमाइज़ करें।

tui.json
{
  "$schema": "https://opencode.ai/tui.json",
  "keybinds": {
    "command_list": "ctrl+p"
  }
}

keybinds बिल्ट-इन डिफ़ॉल्ट के साथ मर्ज किया जाता है, इसलिए आपको केवल उन शॉर्टकट को कॉन्फ़िगर करने की आवश्यकता है जिन्हें आप बदलना चाहते हैं।

यहाँ अधिक जानें।


स्नैपशॉट

OpenCode एजेंट ऑपरेशन के दौरान फ़ाइल परिवर्तनों को ट्रैक करने के लिए snapshot का उपयोग करता है, जिससे आप एक सत्र के भीतर परिवर्तनों को undo और revert कर सकते हैं। Snapshot डिफ़ॉल्ट रूप से सक्षम होते हैं।

बड़ी रिपॉज़िटरी या कई submodule वाले प्रोजेक्ट के लिए, snapshot सिस्टम धीमी indexing और महत्वपूर्ण डिस्क उपयोग का कारण बन सकता है क्योंकि यह एक आंतरिक git रिपॉज़िटरी का उपयोग करके सभी परिवर्तनों को ट्रैक करता है। आप snapshot विकल्प का उपयोग करके snapshot अक्षम कर सकते हैं।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "snapshot": false
}

ध्यान दें कि snapshot अक्षम करने का अर्थ है कि एजेंट द्वारा किए गए परिवर्तनों को UI के माध्यम से रोलबैक नहीं किया जा सकता।


स्वचालित अपडेट

OpenCode शुरू होने पर किसी भी नए अपडेट को स्वचालित रूप से डाउनलोड कर देगा। आप इसे autoupdate विकल्प के साथ अक्षम कर सकते हैं।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "autoupdate": false
}

यदि आप अपडेट नहीं चाहते लेकिन नया संस्करण उपलब्ध होने पर सूचित होना चाहते हैं, तो autoupdate को "notify" पर सेट करें। ध्यान दें कि यह केवल तभी काम करता है जब इसे Homebrew जैसे पैकेज मैनेजर का उपयोग करके इंस्टॉल नहीं किया गया था।


फ़ॉर्मैटर

आप formatter विकल्प के माध्यम से कोड फ़ॉर्मैटर सक्षम और कॉन्फ़िगर कर सकते हैं। फ़ॉर्मैटर अक्षम रखने के लिए इसे छोड़ दें।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "formatter": true
}

ओवरराइड या कस्टम फ़ॉर्मैटर कॉन्फ़िगर करते समय बिल्ट-इन को सक्षम रखने के लिए एक ऑब्जेक्ट का उपयोग करें।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "formatter": {
    "prettier": {
      "disabled": true
    },
    "custom-prettier": {
      "command": ["npx", "prettier", "--write", "$FILE"],
      "environment": {
        "NODE_ENV": "development"
      },
      "extensions": [".js", ".ts", ".jsx", ".tsx"]
    }
  }
}

फ़ॉर्मैटर के बारे में यहाँ अधिक जानें।


LSP सर्वर

आप lsp विकल्प के माध्यम से LSP सर्वर सक्षम और कॉन्फ़िगर कर सकते हैं। LSP अक्षम रखने के लिए इसे छोड़ दें।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": true
}

ओवरराइड या कस्टम LSP सर्वर कॉन्फ़िगर करते समय बिल्ट-इन को सक्षम रखने के लिए एक ऑब्जेक्ट का उपयोग करें।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "typescript": {
      "disabled": true
    }
  }
}

LSP सर्वर के बारे में यहाँ अधिक जानें।


अनुमतियाँ

डिफ़ॉल्ट रूप से, opencode स्पष्ट अनुमोदन की आवश्यकता के बिना सभी ऑपरेशन की अनुमति देता है। आप इसे permission विकल्प का उपयोग करके बदल सकते हैं।

उदाहरण के लिए, यह सुनिश्चित करने के लिए कि edit और bash टूल को उपयोगकर्ता अनुमोदन की आवश्यकता हो:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "ask",
    "bash": "ask"
  }
}

परमिशन के बारे में यहाँ अधिक जानें।


संदर्भ संपीड़न

आप compaction विकल्प के माध्यम से संदर्भ compaction व्यवहार को नियंत्रित कर सकते हैं।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "compaction": {
    "auto": true,
    "prune": false,
    "reserved": 10000
  }
}
  • auto - संदर्भ भर जाने पर सत्र को स्वचालित रूप से compact करें (डिफ़ॉल्ट: true )।
  • prune - टोकन बचाने के लिए पुराने tool आउटपुट हटाएँ (डिफ़ॉल्ट: false )। सक्षम करने के लिए true पर सेट करें।
  • reserved - compaction के लिए टोकन बफ़र। compaction के दौरान overflow से बचने के लिए पर्याप्त window छोड़ता है

फ़ाइल निगरानी

आप watcher विकल्प के माध्यम से फ़ाइल watcher ignore पैटर्न कॉन्फ़िगर कर सकते हैं।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "watcher": {
    "ignore": ["node_modules/**", "dist/**", ".git/**"]
  }
}

पैटर्न glob सिंटैक्स का पालन करते हैं। फ़ाइल watching से शोरगुल वाली डायरेक्टरी को बाहर रखने के लिए इसका उपयोग करें।


MCP सर्वर

आप mcp विकल्प के माध्यम से उन MCP सर्वर को कॉन्फ़िगर कर सकते हैं जिन्हें आप उपयोग करना चाहते हैं।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {}
}

यहाँ अधिक जानें।


प्लगइन

Plugins OpenCode को कस्टम टूल, hook और इंटीग्रेशन के साथ विस्तारित करते हैं।

प्लगइन फ़ाइलें .opencode/plugins/ या ~/.config/opencode/plugins/ में रखें। आप plugin विकल्प के माध्यम से npm से भी प्लगइन लोड कर सकते हैं।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
}

यहाँ अधिक जानें।


निर्देश

आप instructions विकल्प के माध्यम से उस मॉडल के लिए निर्देश कॉन्फ़िगर कर सकते हैं जिसका आप उपयोग कर रहे हैं।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}

यह निर्देश फ़ाइलों के पथों और glob पैटर्न की एक array लेता है। नियमों के बारे में यहाँ अधिक जानें।


अक्षम प्रदाता

आप disabled_providers विकल्प के माध्यम से स्वचालित रूप से लोड होने वाले प्रदाताओं को अक्षम कर सकते हैं। यह तब उपयोगी होता है जब आप कुछ प्रदाताओं को लोड होने से रोकना चाहते हैं भले ही उनके क्रेडेंशियल उपलब्ध हों।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "disabled_providers": ["openai", "gemini"]
}

Note: disabled_providers enabled_providers पर प्राथमिकता लेता है।

disabled_providers विकल्प प्रदाता ID की एक array स्वीकार करता है। जब कोई प्रदाता अक्षम होता है:

  • एनवायरनमेंट वेरिएबल सेट होने पर भी इसे लोड नहीं किया जाएगा।
  • /connect कमांड के माध्यम से API कुंजी कॉन्फ़िगर होने पर भी इसे लोड नहीं किया जाएगा।
  • प्रदाता के मॉडल मॉडल चयन सूची में दिखाई नहीं देंगे।

सक्षम प्रदाता

आप enabled_providers विकल्प के माध्यम से प्रदाताओं की एक allowlist निर्दिष्ट कर सकते हैं। सेट होने पर, केवल निर्दिष्ट प्रदाता सक्षम होंगे और अन्य सभी को नजरअंदाज कर दिया जाएगा।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "enabled_providers": ["anthropic", "openai"]
}

यह तब उपयोगी होता है जब आप OpenCode को प्रदाताओं को एक-एक करके अक्षम करने के बजाय केवल विशिष्ट प्रदाताओं का उपयोग करने तक सीमित करना चाहते हैं।

Note: disabled_providers enabled_providers पर प्राथमिकता लेता है।

यदि कोई प्रदाता enabled_providers और disabled_providers दोनों में दिखाई देता है, तो बैकवर्ड संगतता के लिए disabled_providers प्राथमिकता लेता है।


प्रायोगिक सुविधाएँ

experimental की में ऐसे विकल्प होते हैं जो सक्रिय विकास के अधीन हैं।

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "experimental": {}
}

Caution: Experimental विकल्प स्थिर नहीं हैं। वे बिना सूचना के बदल सकते हैं या हटाए जा सकते हैं।


वेरिएबल

आप एनवायरनमेंट वेरिएबल और फ़ाइल सामग्री को संदर्भित करने के लिए अपनी कॉन्फ़िग फ़ाइलों में वेरिएबल प्रतिस्थापन का उपयोग कर सकते हैं।


पर्यावरण वेरिएबल

एनवायरनमेंट वेरिएबल प्रतिस्थापित करने के लिए {env:VARIABLE_NAME} का उपयोग करें:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "model": "{env:OPENCODE_MODEL}",
  "provider": {
    "anthropic": {
      "models": {},
      "options": {
        "apiKey": "{env:ANTHROPIC_API_KEY}"
      }
    }
  }
}

यदि एनवायरनमेंट वेरिएबल सेट नहीं है, तो इसे एक खाली स्ट्रिंग से प्रतिस्थापित किया जाएगा।


फ़ाइलें

किसी फ़ाइल की सामग्री प्रतिस्थापित करने के लिए {file:path/to/file} का उपयोग करें:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "instructions": ["./custom-instructions.md"],
  "provider": {
    "openai": {
      "options": {
        "apiKey": "{file:~/.secrets/openai-key}"
      }
    }
  }
}

फ़ाइल पथ हो सकते हैं:

  • कॉन्फ़िग फ़ाइल डायरेक्टरी के सापेक्ष
  • या / या ~ से शुरू होने वाले absolute पथ

ये इनके लिए उपयोगी हैं:

  • API कुंजी जैसे संवेदनशील डेटा को अलग फ़ाइलों में रखना।
  • अपने कॉन्फ़िग को अव्यवस्थित किए बिना बड़ी निर्देश फ़ाइलें शामिल करना।
  • कई कॉन्फ़िग फ़ाइलों में सामान्य कॉन्फ़िगरेशन स्निपेट साझा करना।

दस्तावेज़ का स्रोत (MIT)