clawhub: प्रीफ़िक्स का उपयोग करें।
आवश्यकताएँ
- Node 22.22.3+, Node 24.15+, या Node 25.9+, और
npmयाpnpm। - TypeScript ESM मॉड्यूल।
- रिपॉज़िटरी में बंडल किए गए Plugin पर काम करने के लिए, रिपॉज़िटरी क्लोन करें और
pnpm installचलाएँ। स्रोत चेकआउट में Plugin विकास केवल pnpm से होता है, क्योंकि OpenClawextensions/*वर्कस्पेस पैकेजों से बंडल किए गए Plugins खोजता है।
Plugin का स्वरूप चुनें
चैनल Plugin
OpenClaw को किसी मैसेजिंग प्लेटफ़ॉर्म से कनेक्ट करें।
प्रदाता Plugin
कोई मॉडल, मीडिया, खोज, फ़ेच, वाक् या रीयलटाइम प्रदाता जोड़ें।
CLI बैकएंड Plugin
OpenClaw मॉडल फ़ॉलबैक के माध्यम से स्थानीय AI CLI चलाएँ।
टूल Plugin
एजेंट टूल पंजीकृत करें।
त्वरित शुरुआत
एक आवश्यक एजेंट टूल पंजीकृत करके न्यूनतम टूल Plugin बनाएँ। यह सबसे छोटा उपयोगी Plugin स्वरूप है और पैकेज, मैनिफ़ेस्ट, प्रवेश बिंदु तथा स्थानीय प्रमाण को शामिल करता है।1
पैकेज मेटाडेटा बनाएँ
contracts.tools में होने चाहिए, ताकि OpenClaw प्रत्येक Plugin रनटाइम को
पहले से लोड किए बिना स्वामित्व खोज सके। activation.onStartup को
सोच-समझकर सेट करें; यह उदाहरण Gateway के शुरू होने पर लोड होता है।होस्ट-विश्वसनीय Plugin सतहें भी मैनिफ़ेस्ट द्वारा नियंत्रित होती हैं और इंस्टॉल किए गए
Plugins के लिए स्पष्ट घोषणा आवश्यक होती है: api.registerAgentToolResultMiddleware(...)
के लिए प्रत्येक लक्ष्य रनटाइम का contracts.agentToolResultMiddleware में सूचीबद्ध होना आवश्यक है,
और api.registerTrustedToolPolicy(...) के लिए प्रत्येक नीति आईडी का
contracts.trustedToolPolicies में होना आवश्यक है। ये घोषणाएँ इंस्टॉल-समय
निरीक्षण और रनटाइम पंजीकरण को संरेखित रखती हैं।प्रत्येक मैनिफ़ेस्ट फ़ील्ड के लिए Plugin मैनिफ़ेस्ट देखें।2
टूल पंजीकृत करें
index.ts
definePluginEntry का उपयोग करें। इसके बजाय चैनल Plugins
openclaw/plugin-sdk/core से defineChannelPluginEntry का उपयोग करते हैं।3
रनटाइम का परीक्षण करें
इंस्टॉल किए गए या बाहरी Plugin के लिए, लोड किए गए रनटाइम का निरीक्षण करें:यदि Plugin कोई CLI कमांड पंजीकृत करता है, तो उस कमांड को भी चलाएँ और
आउटपुट की पुष्टि करें, उदाहरण के लिए
openclaw demo-plugin ping।इस रिपॉज़िटरी में किसी बंडल किए गए Plugin के लिए, OpenClaw extensions/*
वर्कस्पेस से स्रोत-चेकआउट Plugin पैकेज खोजता है। सबसे निकटतम लक्षित
परीक्षण चलाएँ:4
पैकेज इंस्टॉल का परीक्षण करें
प्रकाशित करने से पहले, पैकेज के लिए तैयार Plugin को उसी इंस्टॉल स्वरूप में जाँचें जो
उपयोगकर्ताओं को मिलेगा। पहले एक बिल्ड चरण जोड़ें,
openclaw.extensions जैसी रनटाइम प्रविष्टियों को
./dist/index.js जैसे निर्मित JavaScript की ओर निर्देशित करें और सुनिश्चित करें कि
npm pack में वह dist/ आउटपुट शामिल हो। TypeScript स्रोत प्रविष्टियाँ
केवल स्रोत चेकआउट और स्थानीय विकास पथों के लिए हैं।फिर Plugin को पैक करें और npm-pack: से टारबॉल इंस्टॉल करें:npm-pack: OpenClaw के प्रबंधित प्रति-Plugin npm प्रोजेक्ट का उपयोग करता है, इसलिए यह
रनटाइम निर्भरता की उन गलतियों को पकड़ता है जिन्हें स्रोत चेकआउट परीक्षण छिपा सकता है। यह
पैकेज और निर्भरता स्वरूप को प्रमाणित करता है, कैटलॉग से जुड़ा आधिकारिक भरोसा नहीं।
रनटाइम इम्पोर्ट dependencies या optionalDependencies में होने चाहिए;
केवल devDependencies में छोड़ी गई निर्भरताएँ
प्रबंधित रनटाइम प्रोजेक्ट के लिए इंस्टॉल नहीं होंगी।आधिकारिक या विशेषाधिकार-प्राप्त Plugin व्यवहार के अंतिम प्रमाण के रूप में कच्चे आर्काइव/पथ
इंस्टॉल का उपयोग न करें। कच्चे स्रोत स्थानीय डीबगिंग के लिए उपयोगी हैं, लेकिन
वे npm या ClawHub इंस्टॉल के समान निर्भरता पथ प्रमाणित नहीं करते। यदि
आपका Plugin विश्वसनीय आधिकारिक Plugin स्थिति पर निर्भर करता है, तो कैटलॉग-समर्थित
आधिकारिक इंस्टॉल या आधिकारिक भरोसा दर्ज करने वाले प्रकाशित पैकेज पथ के माध्यम से
दूसरा प्रमाण जोड़ें। इंस्टॉल रूट और निर्भरता स्वामित्व के विवरण के लिए
Plugin निर्भरता रिज़ॉल्यूशन देखें।5
प्रकाशित करें
प्रकाशित करने से पहले पैकेज को सत्यापित करें:मानक ClawHub पैकेज स्निपेट
docs/snippets/plugin-publish/ में होते हैं।6
इंस्टॉल करें
प्रकाशित पैकेज को ClawHub के माध्यम से इंस्टॉल करें:
टूल पंजीकृत करना
टूल आवश्यक या वैकल्पिक हो सकते हैं। Plugin सक्षम होने पर आवश्यक टूल हमेशा उपलब्ध होते हैं। OpenClaw द्वारा स्वामी Plugin रनटाइम लोड करने से पहले वैकल्पिक टूल के लिए उपयोगकर्ता की स्पष्ट सहमति आवश्यक होती है। टूल फ़ैक्ट्रियों को विश्वसनीय रनटाइम संदर्भ मिलता है, जिसमेंdeliveryContext,
उपलब्ध होने पर सक्रिय प्लेटफ़ॉर्म वार्तालाप के लिए nativeChannelId, और
requesterSenderId शामिल हैं।
outputSchema वैकल्पिक है। यह कोड मोड और
टूल खोज द्वारा उपयोग किए जाने वाले संरचित details मान का वर्णन करता है। कैटलॉग
कॉल निष्पादन से पहले अमान्य स्कीमा अस्वीकार करते हैं और टूल हुक के बाद अंतिम मान को
सत्यापित करते हैं। स्थिर JSON परिणाम के बिना टूल के लिए इसे छोड़ दें। पूर्ण अनुबंध के लिए
टूल Plugins देखें।
api.registerTool(...) के साथ पंजीकृत प्रत्येक टूल को Plugin मैनिफ़ेस्ट में भी
घोषित किया जाना चाहिए:
tools.allow से सहमति देते हैं:
name, गैर-फ़ंक्शन execute, या parameters
ऑब्जेक्ट के बिना टूल विवरणक।
टूल फ़ैक्ट्रियों को रनटाइम द्वारा दिया गया संदर्भ ऑब्जेक्ट मिलता है। जब किसी टूल को वर्तमान
टर्न के सक्रिय मॉडल के अनुसार लॉग करने, प्रदर्शित करने या अनुकूलित होने की आवश्यकता हो, तब ctx.activeModel
का उपयोग करें; इसमें provider, modelId, और modelRef शामिल हो सकते हैं। इसे
सूचनात्मक रनटाइम मेटाडेटा मानें, स्थानीय ऑपरेटर, इंस्टॉल किए गए Plugin कोड या
संशोधित OpenClaw रनटाइम के विरुद्ध सुरक्षा सीमा नहीं। संवेदनशील
स्थानीय टूल के लिए अब भी स्पष्ट Plugin या ऑपरेटर सहमति आवश्यक होनी चाहिए और
सक्रिय-मॉडल मेटाडेटा अनुपस्थित या अनुपयुक्त होने पर उन्हें सुरक्षित रूप से विफल होना चाहिए।
मैनिफ़ेस्ट स्वामित्व और खोज घोषित करता है; निष्पादन फिर भी लाइव
पंजीकृत टूल कार्यान्वयन को कॉल करता है। toolMetadata.<tool>.optional: true को
api.registerTool(..., { optional: true }) के साथ संरेखित रखें, ताकि OpenClaw
टूल को स्पष्ट रूप से अनुमति-सूची में डाले जाने तक उस Plugin रनटाइम को लोड करने से बच सके।
इम्पोर्ट परंपराएँ
केंद्रित SDK उप-पथों से इम्पोर्ट करें:api.ts और
runtime-api.ts जैसी स्थानीय बैरल फ़ाइलों का उपयोग करें। SDK पथ के माध्यम से अपने ही
Plugin को इम्पोर्ट न करें। प्रदाता-विशिष्ट सहायकों को प्रदाता पैकेज में रहना चाहिए, जब तक
कि वह सीम वास्तव में सामान्य न हो।
कस्टम Gateway RPC विधियाँ एक उन्नत प्रवेश बिंदु हैं। उन्हें
Plugin-विशिष्ट प्रीफ़िक्स पर रखें; config.*,
exec.approvals.*, operator.admin.*, wizard.*, और update.* जैसे कोर व्यवस्थापक नेमस्पेस आरक्षित रहते हैं
और operator.admin में रिज़ॉल्व होते हैं।
openclaw/plugin-sdk/gateway-method-runtime ब्रिज उन Plugin HTTP
रूटों के लिए आरक्षित है जो contracts.gatewayMethodDispatch: ["authenticated-request"] घोषित करते हैं।
पूर्ण इम्पोर्ट मानचित्र के लिए Plugin SDK अवलोकन देखें।
OpenClaw SDK संगतता फ़ील्ड में TypeScript @deprecated एनोटेशन होते हैं,
जिन्हें संपादक माइग्रेशन चेतावनियों के रूप में दिखाते हैं। बिल्ड समय पर उन्हें लागू करने के लिए,
@typescript-eslint/no-deprecated
जैसा प्रकार-सजग नियम सक्षम करें।
Oxlint प्रकार-सजग नहीं है, इसलिए वह इन एनोटेशन को लागू नहीं कर सकता।
सबमिशन-पूर्व चेकलिस्ट
package.json में सही
openclaw मेटाडेटा हैopenclaw.plugin.json मैनिफ़ेस्ट मौजूद और मान्य है
प्रवेश बिंदु
defineChannelPluginEntry या definePluginEntry का उपयोग करता हैसभी इम्पोर्ट केंद्रित
plugin-sdk/<subpath> पथों का उपयोग करते हैंआंतरिक इम्पोर्ट स्थानीय मॉड्यूल का उपयोग करते हैं, SDK सेल्फ़-इम्पोर्ट का नहीं
परीक्षण सफल होते हैं (
pnpm test <bundled-plugin-root>/my-plugin/)pnpm check सफल होता है (रिपॉज़िटरी के भीतर के plugins)बीटा रिलीज़ के विरुद्ध परीक्षण करें
- openclaw/openclaw रिलीज़ पर नज़र रखें (
Watch>Releases)। बीटा टैगv2026.3.N-beta.1जैसे दिखते हैं। रिलीज़ घोषणाओं के लिए आप X पर @openclaw को भी फ़ॉलो कर सकते हैं। - बीटा टैग दिखाई देते ही उसके विरुद्ध अपने plugin का परीक्षण करें। स्थिर रिलीज़ से पहले की अवधि आम तौर पर केवल कुछ घंटों की होती है।
- परीक्षण के बाद
plugin-forumDiscord चैनल (discord.gg/clawd) में अपने plugin के थ्रेड मेंall goodया जो भी खराब हुआ, उसे पोस्ट करें। यदि अभी आपका कोई थ्रेड नहीं है, तो बनाएँ। - यदि कुछ खराब होता है, तो
Beta blocker: <plugin-name> - <summary>शीर्षक वाला इश्यू खोलें या अपडेट करें औरbeta-blockerलेबल लागू करें। अपने थ्रेड में इश्यू का लिंक दें। mainके लिएfix(<plugin-id>): beta blocker - <summary>शीर्षक वाला PR खोलें और PR तथा अपने Discord थ्रेड, दोनों में इश्यू का लिंक दें। योगदानकर्ता PR पर लेबल नहीं लगा सकते, इसलिए शीर्षक अनुरक्षकों और ऑटोमेशन के लिए PR-पक्ष का संकेत है। PR वाले अवरोधक मर्ज कर दिए जाते हैं; बिना PR वाले अवरोधकों के बावजूद रिलीज़ हो सकती है।- मौन का अर्थ है कि सब ठीक है। यह अवधि चूकने का आम तौर पर अर्थ है कि आपका सुधार अगले चक्र में शामिल होगा।
अगले चरण
चैनल Plugins
एक मैसेजिंग चैनल plugin बनाएँ
प्रदाता Plugins
एक मॉडल प्रदाता plugin बनाएँ
CLI बैकएंड Plugins
स्थानीय AI CLI बैकएंड पंजीकृत करें
SDK अवलोकन
इम्पोर्ट मैप और पंजीकरण API संदर्भ
रनटाइम सहायक
api.runtime के माध्यम से TTS, खोज और सबएजेंट
परीक्षण
परीक्षण उपयोगिताएँ और पैटर्न
Plugin मैनिफ़ेस्ट
पूर्ण मैनिफ़ेस्ट स्कीमा संदर्भ