प्लगइन्स (एक्सटेंशन्स)
त्वरित प्रारंभ (प्लगइन्स में नए हैं?)
एक प्लगइन बस एक छोटा कोड मॉड्यूल होता है जो OpenClaw को अतिरिक्त विशेषताओं (कमांड्स, टूल्स, और Gateway RPC) के साथ विस्तारित करता है। अधिकांश समय, आप प्लगइन्स का उपयोग तब करेंगे जब आपको ऐसी सुविधा चाहिए जो अभी core OpenClaw में अंतर्निहित नहीं है (या आप वैकल्पिक सुविधाओं को अपने मुख्य इंस्टॉल से बाहर रखना चाहते हैं)। त्वरित मार्ग:- देखें कि क्या पहले से लोड है:
- एक आधिकारिक प्लगइन इंस्टॉल करें (उदाहरण: Voice Call):
- Gateway को restart करें, फिर
plugins.entries.<id>.configके अंतर्गत configure करें।
उपलब्ध प्लगइन्स (आधिकारिक)
- Microsoft Teams 2026.1.15 से केवल प्लगइन के रूप में उपलब्ध है; यदि आप Teams का उपयोग करते हैं तो
@openclaw/msteamsइंस्टॉल करें। - Memory (Core) — बंडल किया गया मेमोरी सर्च प्लगइन (डिफ़ॉल्ट रूप से सक्षम via
plugins.slots.memory) - Memory (LanceDB) — बंडल किया गया दीर्घकालिक मेमोरी प्लगइन (ऑटो-रिकॉल/कैप्चर;
plugins.slots.memory = "memory-lancedb"सेट करें) - Voice Call —
@openclaw/voice-call - Zalo Personal —
@openclaw/zalouser - Matrix —
@openclaw/matrix - Nostr —
@openclaw/nostr - Zalo —
@openclaw/zalo - Microsoft Teams —
@openclaw/msteams - Google Antigravity OAuth (प्रदाता प्रमाणीकरण) —
google-antigravity-authके रूप में बंडल (डिफ़ॉल्ट रूप से अक्षम) - Gemini CLI OAuth (प्रदाता प्रमाणीकरण) —
google-gemini-cli-authके रूप में बंडल (डिफ़ॉल्ट रूप से अक्षम) - Qwen OAuth (प्रदाता प्रमाणीकरण) —
qwen-portal-authके रूप में बंडल (डिफ़ॉल्ट रूप से अक्षम) - Copilot Proxy (प्रदाता प्रमाणीकरण) — स्थानीय VS Code Copilot Proxy ब्रिज; अंतर्निहित
github-copilotडिवाइस लॉगिन से अलग (बंडल, डिफ़ॉल्ट रूप से अक्षम)
- Gateway RPC विधियाँ
- Gateway HTTP हैंडलर्स
- एजेंट टूल्स
- CLI कमांड्स
- पृष्ठभूमि सेवाएँ
- वैकल्पिक विन्यास सत्यापन
- Skills (प्लगइन मैनिफ़ेस्ट में
skillsडायरेक्टरी सूचीबद्ध करके) - ऑटो-रिप्लाई कमांड्स (AI एजेंट को बुलाए बिना निष्पादित)
रनटाइम हेल्पर्स
Pluginsapi.runtime के माध्यम से selected core helpers तक access कर सकते हैं। Telephony TTS के लिए:
- core
messages.ttsविन्यास (OpenAI या ElevenLabs) का उपयोग करता है। - PCM audio buffer + sample rate लौटाता है। Plugins को providers के लिए resample/encode करना होगा।
- Edge TTS टेलीफ़ोनी के लिए समर्थित नहीं है।
डिस्कवरी और प्रीसिडेंस
OpenClaw निम्न क्रम में स्कैन करता है:- Config पाथ्स
plugins.load.paths(फ़ाइल या डायरेक्टरी)
- वर्कस्पेस एक्सटेंशन्स
<workspace>/.openclaw/extensions/*.ts<workspace>/.openclaw/extensions/*/index.ts
- ग्लोबल एक्सटेंशन्स
~/.openclaw/extensions/*.ts~/.openclaw/extensions/*/index.ts
- बंडल्ड एक्सटेंशन्स (OpenClaw के साथ शिप किए गए, डिफ़ॉल्ट रूप से अक्षम)
<openclaw>/extensions/*
plugins.entries.<id>.enabled
या openclaw plugins enable <id> के माध्यम से explicitly enable करना होगा। Installed plugins default रूप से enabled होते हैं,
लेकिन उसी तरीके से disable किए जा सकते हैं।
प्रत्येक plugin में उसके root में एक openclaw.plugin.json फ़ाइल शामिल होनी चाहिए। यदि कोई path
किसी फ़ाइल की ओर इशारा करता है, तो plugin root उस फ़ाइल की directory होती है और उसमें manifest होना चाहिए।
यदि कई प्लगइन्स एक ही id पर रिज़ॉल्व होते हैं, तो ऊपर दिए गए क्रम में पहला मैच जीतता है
और कम प्रीसिडेंस वाली प्रतियाँ अनदेखी कर दी जाती हैं।
पैकेज पैक्स
एक प्लगइन डायरेक्टरी मेंpackage.json शामिल हो सकता है जिसमें openclaw.extensions हों:
name/<fileBase> बन जाता है।
यदि आपका प्लगइन npm निर्भरताएँ इम्पोर्ट करता है, तो उन्हें उसी डायरेक्टरी में इंस्टॉल करें ताकि
node_modules उपलब्ध हो (npm install / pnpm install)।
Security note: openclaw plugins install plugin dependencies को
npm install --ignore-scripts के साथ इंस्टॉल करता है (कोई lifecycle scripts नहीं)। Plugin dependency
trees को “pure JS/TS” रखें और उन packages से बचें जिन्हें postinstall builds की आवश्यकता हो।
चैनल कैटलॉग मेटाडेटा
Channel pluginsopenclaw.channel के माध्यम से onboarding metadata और
openclaw.install के माध्यम से install hints advertise कर सकते हैं। यह core catalog को data-free रखता है।
उदाहरण:
~/.openclaw/mpm/plugins.json~/.openclaw/mpm/catalog.json~/.openclaw/plugins/catalog.json
OPENCLAW_PLUGIN_CATALOG_PATHS (या OPENCLAW_MPM_CATALOG_PATHS) को
एक या अधिक JSON फ़ाइलों (comma/semicolon/PATH‑delimited) की ओर point करें। प्रत्येक फ़ाइल में
{ "entries": [ { "name": "@scope/pkg", "openclaw": { "channel": {...}, "install": {...} } } ] } शामिल होना चाहिए।
प्लगइन IDs
डिफ़ॉल्ट प्लगइन ids:- पैकेज पैक्स:
package.jsonname - स्टैंडअलोन फ़ाइल: फ़ाइल बेस नाम (
~/.../voice-call.ts→voice-call)
id एक्सपोर्ट करता है, तो OpenClaw इसका उपयोग करता है, लेकिन
जब यह कॉन्फ़िगर किए गए id से मेल नहीं खाता तो चेतावनी देता है।
विन्यास
enabled: मास्टर टॉगल (डिफ़ॉल्ट: true)allow: allowlist (वैकल्पिक)deny: denylist (वैकल्पिक; deny की प्राथमिकता)load.paths: अतिरिक्त प्लगइन फ़ाइलें/डायरेक्टरीज़entries.<id>: प्रति‑plugin toggles + config
entries,allow,deny, याslotsमें अज्ञात प्लगइन ids त्रुटियाँ हैं।- अज्ञात
channels.<id>keys errors माने जाते हैं, जब तक कि कोई plugin manifest उस channel id को declare न करे। - प्लगइन विन्यास को
openclaw.plugin.jsonमें एम्बेडेड JSON Schema का उपयोग करके सत्यापित किया जाता है (configSchema)। - यदि कोई प्लगइन अक्षम है, तो उसका विन्यास सुरक्षित रहता है और एक चेतावनी जारी की जाती है।
प्लगइन स्लॉट्स (एक्सक्लूसिव श्रेणियाँ)
कुछ plugin categories exclusive होती हैं (एक समय में केवल एक active)। किस plugin के पास slot होगा यह चुनने के लिएplugins.slots का उपयोग करें:
kind: "memory" declare करते हैं, तो केवल चुना हुआ ही load होगा। बाकी plugins diagnostics के साथ disabled कर दिए जाते हैं।
कंट्रोल UI (स्कीमा + लेबल्स)
कंट्रोल UI बेहतर फ़ॉर्म्स रेंडर करने के लिएconfig.schema (JSON Schema + uiHints) का उपयोग करता है।
OpenClaw खोजे गए प्लगइन्स के आधार पर रनटाइम पर uiHints को बढ़ाता है:
plugins.entries.<id>/.enabled/.configके लिए प्रति‑plugin labels जोड़ता है- वैकल्पिक plugin‑provided config field hints को यहाँ merge करता है:
plugins.entries.<id>.config.<field>
uiHints प्रदान करें।
उदाहरण:
CLI
plugins update केवल plugins.installs के अंतर्गत ट्रैक किए गए npm इंस्टॉल्स के लिए काम करता है।
प्लगइन्स अपने स्वयं के टॉप‑लेवल कमांड्स भी पंजीकृत कर सकते हैं (उदाहरण: openclaw voicecall)।
प्लगइन API (अवलोकन)
प्लगइन्स निम्न में से एक एक्सपोर्ट करते हैं:- एक function:
(api) => { ... } - एक object:
{ id, name, configSchema, register(api) { ... } }
प्लगइन हुक्स
Plugins hooks ship कर सकते हैं और runtime पर उन्हें register कर सकते हैं। यह किसी plugin bundle को बिना अलग hook pack install किए event‑driven automation देने की अनुमति देता है।उदाहरण
- हुक डायरेक्टरीज़ सामान्य हुक संरचना का पालन करती हैं (
HOOK.md+handler.ts)। - हुक पात्रता नियम अब भी लागू होते हैं (OS/bins/env/config आवश्यकताएँ)।
- प्लगइन‑प्रबंधित हुक्स
openclaw hooks listमेंplugin:<id>के साथ दिखाई देते हैं। - आप
openclaw hooksके माध्यम से प्लगइन‑प्रबंधित हुक्स को सक्षम/अक्षम नहीं कर सकते; इसके बजाय प्लगइन को सक्षम/अक्षम करें।
प्रदाता प्लगइन्स (मॉडल प्रमाणीकरण)
प्लगइन्स मॉडल प्रदाता प्रमाणीकरण फ़्लोज़ पंजीकृत कर सकते हैं ताकि उपयोगकर्ता OpenClaw के भीतर ही OAuth या API‑key सेटअप चला सकें (किसी बाहरी स्क्रिप्ट की आवश्यकता नहीं)।api.registerProvider(...) के माध्यम से एक provider register करें। प्रत्येक provider एक या अधिक auth methods expose करता है
(OAuth, API key, device code, आदि)। ये methods power प्रदान करते हैं:
openclaw models auth login --provider <id> [--method <id>]
runको एकProviderAuthContextमिलता है जिसमेंprompter,runtime,openUrl, औरoauth.createVpsAwareHandlersहेल्पर्स होते हैं।- जब आपको डिफ़ॉल्ट मॉडल या प्रदाता विन्यास जोड़ने की आवश्यकता हो, तो
configPatchलौटाएँ। defaultModelलौटाएँ ताकि--set-defaultएजेंट डिफ़ॉल्ट्स अपडेट कर सके।
मैसेजिंग चैनल पंजीकृत करें
Plugins channel plugins register कर सकते हैं जो built‑in channels (WhatsApp, Telegram, आदि) की तरह व्यवहार करते हैं। Channel configchannels.<id> के अंतर्गत रहती है और आपके channel plugin code द्वारा validated की जाती है।
- Config को
channels.<id>के अंतर्गत रखें (न किplugins.entries)। meta.labelका उपयोग CLI/UI सूचियों में लेबल्स के लिए किया जाता है।meta.aliasesनॉर्मलाइज़ेशन और CLI इनपुट्स के लिए वैकल्पिक ids जोड़ता है।meta.preferOverउन चैनल ids की सूची देता है जिन्हें दोनों कॉन्फ़िगर होने पर ऑटो‑एनेबल से छोड़ना है।meta.detailLabelऔरmeta.systemImageUIs को समृद्ध चैनल लेबल्स/आइकन्स दिखाने देते हैं।
नया मैसेजिंग चैनल लिखें (स्टेप‑बाय‑स्टेप)
इसे तब उपयोग करें जब आपको new chat surface (एक “messaging channel”) चाहिए, न कि कोई model provider। Model provider docs/providers/* के अंतर्गत उपलब्ध हैं।
- एक id + कॉन्फ़िग संरचना चुनें
- सभी channel config
channels.<id>के अंतर्गत रहती है। - Multi‑account setups के लिए
channels.<id>.accounts.<accountId>को प्राथमिकता दें।
- चैनल मेटाडेटा परिभाषित करें
meta.label,meta.selectionLabel,meta.docsPath,meta.blurbCLI/UI सूचियों को नियंत्रित करते हैं।meta.docsPathको/channels/<id>जैसी डॉक्स पेज की ओर इशारा करना चाहिए।meta.preferOverकिसी प्लगइन को दूसरे चैनल को प्रतिस्थापित करने देता है (ऑटो‑एनेबल इसे प्राथमिकता देता है)।meta.detailLabelऔरmeta.systemImageUIs द्वारा विवरण टेक्स्ट/आइकन्स के लिए उपयोग किए जाते हैं।
- आवश्यक एडेप्टर्स लागू करें
config.listAccountIds+config.resolveAccountcapabilities(चैट प्रकार, मीडिया, थ्रेड्स, आदि)outbound.deliveryMode+outbound.sendText(मूलभूत सेंड के लिए)
- आवश्यकता अनुसार वैकल्पिक एडेप्टर्स जोड़ें
setup(विज़ार्ड),security(DM नीति),status(हेल्थ/डायग्नोस्टिक्स)gateway(स्टार्ट/स्टॉप/लॉगिन),mentions,threading,streamingactions(मैसेज एक्शन्स),commands(नेटिव कमांड व्यवहार)
- अपने प्लगइन में चैनल पंजीकृत करें
api.registerChannel({ plugin })
plugins.load.paths), gateway restart करें,
फिर अपने config में channels.<id> को configure करें।
एजेंट टूल्स
समर्पित गाइड देखें: Plugin agent tools।Gateway RPC विधि पंजीकृत करें
CLI कमांड्स पंजीकृत करें
ऑटो‑रिप्लाई कमांड्स पंजीकृत करें
Plugins custom slash commands register कर सकते हैं जो AI agent को invoke किए बिना execute होते हैं। यह toggle commands, status checks, या ऐसे quick actions के लिए उपयोगी है जिन्हें LLM processing की आवश्यकता नहीं होती।senderId: प्रेषक का ID (यदि उपलब्ध)channel: वह चैनल जहाँ कमांड भेजा गयाisAuthorizedSender: क्या प्रेषक अधिकृत उपयोगकर्ता हैargs: कमांड के बाद दिए गए आर्ग्युमेंट्स (यदिacceptsArgs: true)commandBody: पूर्ण कमांड टेक्स्टconfig: वर्तमान OpenClaw कॉन्फ़िग
name: कमांड नाम (लीडिंग/के बिना)description: कमांड सूचियों में दिखाया जाने वाला सहायता टेक्स्टacceptsArgs: क्या command arguments स्वीकार करता है (default: false)। यदि false है और arguments दिए गए हैं, तो command match नहीं करेगा और message अन्य handlers के पास चला जाएगाrequireAuth: क्या अधिकृत प्रेषक की आवश्यकता है (डिफ़ॉल्ट: true)handler: वह फ़ंक्शन जो{ text: string }लौटाता है (async हो सकता है)
- प्लगइन कमांड्स अंतर्निहित कमांड्स और AI एजेंट से पहले प्रोसेस होते हैं
- कमांड्स वैश्विक रूप से पंजीकृत होते हैं और सभी चैनलों में काम करते हैं
- कमांड नाम केस‑इन्सेंसिटिव होते हैं (
/MyStatus/mystatusसे मेल खाता है) - कमांड नाम किसी अक्षर से शुरू होने चाहिए और केवल अक्षर, अंक, हाइफ़न, और अंडरस्कोर शामिल कर सकते हैं
- Reserved command names (जैसे
help,status,reset, आदि) plugins द्वारा override नहीं किए जा सकते - प्लगइन्स के बीच डुप्लिकेट कमांड पंजीकरण डायग्नोस्टिक त्रुटि के साथ विफल होगा
पृष्ठभूमि सेवाएँ पंजीकृत करें
नामकरण परंपराएँ
- Gateway विधियाँ:
pluginId.action(उदाहरण:voicecall.status) - टूल्स:
snake_case(उदाहरण:voice_call) - CLI कमांड्स: kebab या camel, लेकिन core कमांड्स से टकराव से बचें
कौशल
Plugins repo में एक skill ship कर सकते हैं (skills/<name>/SKILL.md)।
इसे plugins.entries.<id>.enabled (या अन्य config gates) के साथ enable करें और सुनिश्चित करें
कि यह आपके workspace/managed skills locations में मौजूद हो।
वितरण (npm)
अनुशंसित पैकेजिंग:- मुख्य पैकेज:
openclaw(यह रिपॉज़िटरी) - प्लगइन्स:
@openclaw/*के अंतर्गत अलग‑अलग npm पैकेज (उदाहरण:@openclaw/voice-call)
- प्लगइन
package.jsonमें एक या अधिक एंट्री फ़ाइलों के साथopenclaw.extensionsशामिल होना चाहिए। - एंट्री फ़ाइलें
.jsया.tsहो सकती हैं (jiti रनटाइम पर TS लोड करता है)। openclaw plugins install <npm-spec>npm packका उपयोग करता है,~/.openclaw/extensions/<id>/में एक्सट्रैक्ट करता है, और कॉन्फ़िग में सक्षम करता है।- कॉन्फ़िग कुंजी स्थिरता: scoped पैकेजेस को
plugins.entries.*के लिए unscoped id में नॉर्मलाइज़ किया जाता है।
उदाहरण प्लगइन: Voice Call
इस रिपॉज़िटरी में एक voice‑call प्लगइन शामिल है (Twilio या लॉग फ़ॉलबैक):- स्रोत:
extensions/voice-call - कौशल:
skills/voice-call - CLI:
openclaw voicecall start|status - टूल:
voice_call - RPC:
voicecall.start,voicecall.status - कॉन्फ़िग (twilio):
provider: "twilio"+twilio.accountSid/authToken/from(वैकल्पिकstatusCallbackUrl,twimlUrl) - कॉन्फ़िग (dev):
provider: "log"(कोई नेटवर्क नहीं)
extensions/voice-call/README.md देखें।
सुरक्षा नोट्स
प्लगइन्स गेटवे के साथ in-process चलते हैं। उन्हें trusted code के रूप में मानें:- केवल वही प्लगइन्स इंस्टॉल करें जिन पर आप भरोसा करते हैं।
plugins.allowallowlists को प्राथमिकता दें।- परिवर्तनों के बाद Gateway को पुनः प्रारंभ करें।
प्लगइन्स का परीक्षण
प्लगइन्स परीक्षण शिप कर सकते हैं (और करना चाहिए):- इन‑रिपॉज़िटरी प्लगइन्स Vitest परीक्षणों को
src/**के अंतर्गत रख सकते हैं (उदाहरण:src/plugins/voice-call.plugin.test.ts)। - अलग से प्रकाशित प्लगइन्स को अपना CI (lint/build/test) चलाना चाहिए और यह सत्यापित करना चाहिए कि
openclaw.extensionsबिल्ट एंट्रीपॉइंट (dist/index.js) की ओर इशारा करता है।