यह OpenClaw के मुख्य डेवलपरों के लिए एक योगदानकर्ता मार्गदर्शिका है। यदि आप
कोई बाहरी Plugin बना रहे हैं, तो इसके बजाय Plugin बनाना
देखें। विस्तृत आर्किटेक्चर संदर्भ (क्षमता मॉडल, स्वामित्व,
लोड पाइपलाइन, रनटाइम सहायक) के लिए Plugin की आंतरिक संरचना देखें।
- Plugin = स्वामित्व सीमा
- क्षमता = साझा मुख्य अनुबंध
क्षमता कब बनाएँ
नई क्षमता केवल तभी बनाएँ, जब ये सभी बातें सत्य हों:- एक से अधिक विक्रेता इसे यथार्थ रूप से लागू कर सकते हों।
- चैनल, टूल या सुविधा Plugin को विक्रेता की परवाह किए बिना इसका उपयोग करने में सक्षम होना चाहिए।
- मुख्य भाग को फ़ॉलबैक, नीति, कॉन्फ़िगरेशन या डिलीवरी व्यवहार का स्वामित्व लेना आवश्यक हो।
मानक क्रम
- टाइपयुक्त मुख्य अनुबंध परिभाषित करें।
- उस अनुबंध के लिए Plugin पंजीकरण जोड़ें।
- साझा रनटाइम सहायक जोड़ें।
- प्रमाण के रूप में किसी वास्तविक विक्रेता Plugin को जोड़ें।
- सुविधा/चैनल उपभोक्ताओं को रनटाइम सहायक पर स्थानांतरित करें।
- अनुबंध परीक्षण जोड़ें।
- ऑपरेटर के लिए कॉन्फ़िगरेशन और स्वामित्व मॉडल का दस्तावेज़ीकरण करें।
क्या कहाँ रखा जाता है
प्रदाता और हार्नेस सीमाएँ
प्रदाता हुक का उपयोग तब करें, जब व्यवहार सामान्य एजेंट लूप के बजाय मॉडल प्रदाता अनुबंध से संबंधित हो। उदाहरणों में ट्रांसपोर्ट चयन के बाद प्रदाता-विशिष्ट अनुरोध पैरामीटर, प्रमाणीकरण-प्रोफ़ाइल वरीयता, प्रॉम्प्ट ओवरले और मॉडल/प्रोफ़ाइल फ़ेलओवर के बाद अनुवर्ती फ़ॉलबैक रूटिंग शामिल हैं। एजेंट हार्नेस हुक का उपयोग तब करें, जब व्यवहार किसी टर्न को निष्पादित करने वाले रनटाइम से संबंधित हो। हार्नेस स्पष्ट प्रोटोकॉल परिणामों को वर्गीकृत कर सकते हैं, जैसे रिक्त आउटपुट, दृश्यमान आउटपुट के बिना तर्क या अंतिम उत्तर के बिना संरचित योजना, ताकि बाहरी मॉडल फ़ॉलबैक नीति पुनः प्रयास का निर्णय ले सके। दोनों सीमाओं को संकीर्ण रखें:- मुख्य भाग पुनः प्रयास/फ़ॉलबैक नीति का स्वामित्व रखता है।
- प्रदाता Plugin प्रदाता-विशिष्ट अनुरोध/प्रमाणीकरण/रूटिंग संकेतों का स्वामित्व रखते हैं।
- हार्नेस Plugin रनटाइम-विशिष्ट प्रयास वर्गीकरण का स्वामित्व रखते हैं।
- तृतीय-पक्ष Plugin मुख्य स्थिति में सीधे परिवर्तन नहीं, बल्कि संकेत लौटाते हैं।
फ़ाइल जाँच-सूची
नई क्षमता के लिए इन क्षेत्रों में बदलाव अपेक्षित हैं:src/<capability>/types.tssrc/<capability>/...registry/runtime.tssrc/plugins/types.tssrc/plugins/registry.tssrc/plugins/captured-registration.tssrc/plugins/contracts/registry.tssrc/plugins/runtime/types-core.tssrc/plugins/runtime/index.tssrc/plugin-sdk/<capability>.tssrc/plugin-sdk/<capability>-runtime.ts- एक या अधिक बंडल किए गए Plugin पैकेज।
- कॉन्फ़िगरेशन, दस्तावेज़, परीक्षण।
व्यावहारिक उदाहरण: छवि निर्माण
छवि निर्माण मानक संरचना का पालन करता है:- मुख्य भाग
ImageGenerationProviderपरिभाषित करता है। - मुख्य भाग
registerImageGenerationProvider(...)उपलब्ध कराता है। - मुख्य भाग
api.runtime.imageGeneration.generate(...)और.listProviders(...)उपलब्ध कराता है। - विक्रेता Plugin (
comfy,deepinfra,fal,google,litellm,microsoft-foundry,minimax,openai,openrouter,vydra,xai) विक्रेता-समर्थित कार्यान्वयन पंजीकृत करते हैं। - भावी विक्रेता चैनल/टूल बदले बिना उसी अनुबंध को पंजीकृत करते हैं।
agents.defaults.imageModelछवियों का विश्लेषण करता है।agents.defaults.mediaModels.imageछवियाँ बनाता है।
एम्बेडिंग प्रदाता
पुनः उपयोग योग्य वेक्टर एम्बेडिंग प्रदाताओं के लिएregisterEmbeddingProvider(...) / अनुबंध embeddingProviders का उपयोग करें।
यह अनुबंध जानबूझकर मेमोरी से व्यापक है: टूल, खोज, पुनर्प्राप्ति, आयातक या भावी सुविधा Plugin,
मेमोरी इंजन पर निर्भर हुए बिना एम्बेडिंग का उपयोग कर सकते हैं। मेमोरी खोज भी
सामान्य embeddingProviders का उपयोग करती है।
पुराना मेमोरी-विशिष्ट पंजीकरण API और memoryEmbeddingProviders
अनुबंध अप्रचलित हैं। सभी नए एम्बेडिंग प्रदाताओं के लिए registerEmbeddingProvider और
embeddingProviders का उपयोग करें।
समीक्षा जाँच-सूची
नई क्षमता जारी करने से पहले सत्यापित करें:- कोई चैनल/टूल विक्रेता कोड को सीधे आयात नहीं करता।
- रनटाइम सहायक ही साझा पथ है।
- कम-से-कम एक अनुबंध परीक्षण बंडल किए गए स्वामित्व की पुष्टि करता है।
- कॉन्फ़िगरेशन दस्तावेज़ नई मॉडल/कॉन्फ़िगरेशन कुंजी का नाम बताते हैं।
- Plugin दस्तावेज़ स्वामित्व सीमा समझाते हैं।
संबंधित
- Plugin की आंतरिक संरचना — क्षमता मॉडल, स्वामित्व, लोड पाइपलाइन, रनटाइम सहायक।
- Plugin बनाना — पहला Plugin बनाने का ट्यूटोरियल।
- SDK का अवलोकन — आयात मैप और पंजीकरण API संदर्भ।
- Skills बनाना — पूरक योगदानकर्ता सतह।