Tools
LLM जिन टूल का उपयोग कर सकता है उन्हें प्रबंधित करें।
टूल LLM को आपके codebase में क्रियाएँ करने की अनुमति देते हैं। OpenCode बिल्ट-इन टूल के एक सेट के साथ आता है, लेकिन आप इसे custom tools या MCP servers के साथ विस्तारित कर सकते हैं।
डिफ़ॉल्ट रूप से, सभी टूल सक्षम हैं और चलने के लिए अनुमति की आवश्यकता नहीं होती है। आप permissions के माध्यम से टूल व्यवहार को नियंत्रित कर सकते हैं।
Configure
टूल व्यवहार को नियंत्रित करने के लिए permission फ़ील्ड का उपयोग करें। आप प्रत्येक टूल को अनुमति दे सकते हैं, अस्वीकार कर सकते हैं, या उसके लिए अनुमोदन की आवश्यकता बना सकते हैं।
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
}आप एक साथ कई टूल को नियंत्रित करने के लिए wildcards का भी उपयोग कर सकते हैं। उदाहरण के लिए, किसी MCP server के सभी टूल के लिए अनुमोदन की आवश्यकता हेतु:
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"mymcp_*": "ask"
}
}अनुमतियाँ कॉन्फ़िगर करने के बारे में और जानें।
Built-in
यहाँ OpenCode में उपलब्ध सभी बिल्ट-इन टूल दिए गए हैं।
bash
अपने प्रोजेक्ट environment में शेल कमांड निष्पादित करें।
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": "allow"
}
}यह टूल LLM को npm install, git status, या किसी भी अन्य शेल कमांड जैसी टर्मिनल कमांड चलाने की अनुमति देता है।
edit
सटीक स्ट्रिंग प्रतिस्थापन का उपयोग करके मौजूदा फ़ाइलों को संशोधित करें।
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}यह टूल सटीक टेक्स्ट मैच को प्रतिस्थापित करके फ़ाइलों में सटीक संपादन करता है। यह LLM द्वारा कोड संशोधित करने का प्राथमिक तरीका है।
write
नई फ़ाइलें बनाएँ या मौजूदा फ़ाइलों को अधिलेखित (overwrite) करें।
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}LLM को नई फ़ाइलें बनाने की अनुमति देने के लिए इसका उपयोग करें। यदि फ़ाइलें पहले से मौजूद हैं तो यह उन्हें अधिलेखित कर देगा।
Note:
writeटूलeditअनुमति द्वारा नियंत्रित होता है, जो सभी फ़ाइल संशोधनों (edit,write,apply_patch) को कवर करती है।
read
अपने codebase से फ़ाइल सामग्री पढ़ें।
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"read": "allow"
}
}यह टूल फ़ाइलें पढ़ता है और उनकी सामग्री लौटाता है। यह बड़ी फ़ाइलों के लिए विशिष्ट लाइन रेंज पढ़ने का समर्थन करता है।
grep
regular expressions का उपयोग करके फ़ाइल सामग्री खोजें।
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"grep": "allow"
}
}आपके codebase में तेज़ सामग्री खोज। पूर्ण regex सिंटैक्स और फ़ाइल पैटर्न फ़िल्टरिंग का समर्थन करता है।
glob
पैटर्न मिलान द्वारा फ़ाइलें खोजें।
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"glob": "allow"
}
}**/*.js या src/**/*.ts जैसे glob पैटर्न का उपयोग करके फ़ाइलें खोजें। संशोधन समय के अनुसार क्रमबद्ध मिलान करने वाले फ़ाइल पथ लौटाता है।
lsp (experimental)
definitions, references, hover info और call hierarchy जैसी code intelligence सुविधाएँ प्राप्त करने के लिए अपने कॉन्फ़िगर किए गए LSP servers के साथ इंटरैक्ट करें।
Note: यह टूल केवल तब उपलब्ध होता है जब
OPENCODE_EXPERIMENTAL_LSP_TOOL=true(याOPENCODE_EXPERIMENTAL=true) हो।
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"lsp": "allow"
}
}समर्थित ऑपरेशनों में goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol, goToImplementation, prepareCallHierarchy, incomingCalls, और outgoingCalls शामिल हैं।
अपने प्रोजेक्ट के लिए कौन से LSP servers उपलब्ध हैं, यह कॉन्फ़िगर करने के लिए, LSP Servers देखें।
apply_patch
फ़ाइलों पर पैच लागू करें।
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}यह टूल आपके codebase पर पैच फ़ाइलें लागू करता है। विभिन्न स्रोतों से diff और पैच लागू करने के लिए उपयोगी।
tool.execute.before या tool.execute.after hooks को संभालते समय, input.tool === "apply_patch" की जाँच करें (न कि "patch")।
apply_patch output.args.filePath के बजाय output.args.patchText का उपयोग करता है। पथ patchText के भीतर marker लाइनों में एम्बेड किए जाते हैं और प्रोजेक्ट रूट के सापेक्ष होते हैं (उदाहरण के लिए: *** Add File: src/new-file.ts, *** Update File: src/existing.ts, *** Move to: src/renamed.ts, *** Delete File: src/obsolete.ts)।
Note:
apply_patchटूलeditअनुमति द्वारा नियंत्रित होता है, जो सभी फ़ाइल संशोधनों (edit,write,apply_patch) को कवर करती है।
skill
एक skill (एक SKILL.md फ़ाइल) लोड करें और बातचीत में उसकी सामग्री लौटाएँ।
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}todowrite
कोडिंग सत्रों के दौरान todo सूचियों का प्रबंधन करें।
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todowrite": "allow"
}
}जटिल ऑपरेशनों के दौरान प्रगति को ट्रैक करने के लिए कार्य सूचियाँ बनाता और अपडेट करता है। LLM इसका उपयोग बहु-चरणीय कार्यों को व्यवस्थित करने के लिए करता है।
Note: यह टूल डिफ़ॉल्ट रूप से subagents के लिए अक्षम है, लेकिन आप इसे मैन्युअल रूप से सक्षम कर सकते हैं। और जानें
webfetch
वेब सामग्री प्राप्त करें।
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
}LLM को वेब पेज प्राप्त करने और पढ़ने की अनुमति देता है। दस्तावेज़ देखने या ऑनलाइन संसाधनों पर शोध करने के लिए उपयोगी।
websearch
जानकारी के लिए वेब खोजें।
Note: यह टूल केवल तब उपलब्ध होता है जब OpenCode प्रोवाइडर का उपयोग किया जा रहा हो या जब
OPENCODE_ENABLE_EXAenvironment variable को किसी truthy मान (उदाहरण के लिए,trueया1) पर सेट किया गया हो।OpenCode लॉन्च करते समय इसे सक्षम करने के लिए:
OPENCODE_ENABLE_EXA=1 opencode
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"websearch": "allow"
}
}ऑनलाइन प्रासंगिक जानकारी खोजने के लिए Exa AI का उपयोग करके वेब खोज करता है। विषयों पर शोध करने, मौजूदा घटनाओं को खोजने, या training data cutoff से परे जानकारी एकत्र करने के लिए उपयोगी।
किसी API key की आवश्यकता नहीं है — यह टूल बिना प्रमाणीकरण के सीधे Exa AI की hosted MCP सेवा से कनेक्ट होता है।
Tip: जब आपको जानकारी खोजने की आवश्यकता हो (discovery) तब
websearchका उपयोग करें, और जब आपको किसी विशिष्ट URL से सामग्री प्राप्त करने की आवश्यकता हो (retrieval) तबwebfetchका उपयोग करें।
question
निष्पादन के दौरान उपयोगकर्ता से प्रश्न पूछें।
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"question": "allow"
}
}यह टूल LLM को किसी कार्य के दौरान उपयोगकर्ता से प्रश्न पूछने की अनुमति देता है। यह इनके लिए उपयोगी है:
- उपयोगकर्ता की प्राथमिकताएँ या आवश्यकताएँ एकत्र करना
- अस्पष्ट निर्देशों को स्पष्ट करना
- कार्यान्वयन विकल्पों पर निर्णय प्राप्त करना
- किस दिशा में जाना है, इसके बारे में विकल्प प्रदान करना
प्रत्येक प्रश्न में एक हेडर, प्रश्न टेक्स्ट, और विकल्पों की एक सूची शामिल होती है। उपयोगकर्ता प्रदान किए गए विकल्पों में से चुन सकते हैं या एक कस्टम उत्तर टाइप कर सकते हैं। जब कई प्रश्न होते हैं, तो उपयोगकर्ता सभी उत्तर सबमिट करने से पहले उनके बीच नेविगेट कर सकते हैं।
Custom tools
Custom tools आपको अपने स्वयं के फ़ंक्शन परिभाषित करने देते हैं जिन्हें LLM कॉल कर सकता है। ये आपकी कॉन्फ़िग फ़ाइल में परिभाषित होते हैं और मनमाना कोड निष्पादित कर सकते हैं।
custom tools बनाने के बारे में और जानें।
MCP servers
MCP (Model Context Protocol) servers आपको बाहरी टूल और सेवाओं को एकीकृत करने की अनुमति देते हैं। इसमें डेटाबेस एक्सेस, API एकीकरण, और थर्ड-पार्टी सेवाएँ शामिल हैं।
MCP servers कॉन्फ़िगर करने के बारे में और जानें।
Internals
आंतरिक रूप से, grep और glob जैसे टूल अंदरूनी तौर पर ripgrep (opens in a new tab) का उपयोग करते हैं। डिफ़ॉल्ट रूप से, ripgrep .gitignore पैटर्न का सम्मान करता है, जिसका अर्थ है कि आपके .gitignore में सूचीबद्ध फ़ाइलें और डायरेक्टरी खोजों और लिस्टिंग से बाहर रखी जाएँगी।
Ignore patterns
उन फ़ाइलों को शामिल करने के लिए जो सामान्यतः अनदेखी कर दी जातीं, अपने प्रोजेक्ट रूट में एक .ignore फ़ाइल बनाएँ। यह फ़ाइल स्पष्ट रूप से कुछ पथों को अनुमति दे सकती है।
!node_modules/
!dist/
!build/उदाहरण के लिए, यह .ignore फ़ाइल ripgrep को node_modules/, dist/, और build/ डायरेक्टरी के भीतर खोज करने की अनुमति देती है, भले ही वे आपके .gitignore में सूचीबद्ध हों।