प्लगइन डेवलपर दस्तावेज़
AnBoWork डेस्कटॉप ऐप के लिए प्लगइन्स बनाएं: एआई के लिए नए टूल जोड़ें, एक सत्र के बगल में अपना खुद का पैनल डॉक करें, सिस्टम नोटिफिकेशन भेजें, नए फ़ाइल स्वरूपों को पार्स करें। आरंभ करने के लिए एक मैनिफ़ेस्ट.जेसन और एक प्रविष्टि स्क्रिप्ट पर्याप्त है।
01सिंहावलोकन
AnBoWork प्लगइन एक सादा Node.js प्रोग्राम है। इंस्टालेशन के बाद ऐप इसे एक स्टैंडअलोन चाइल्ड प्रोसेस (शुद्ध नोड, कोई इलेक्ट्रॉन एपीआई नहीं) के रूप में फोर्क करता है और इंटर-प्रोसेस संदेशों पर इससे बात करता है। किसी SDK पैकेज की आवश्यकता नहीं है; आपको बस process.on('message') और process.send() चाहिए।
एक प्लगइन जो कुछ भी कर सकता है उसे manifest.json में स्थिर रूप से घोषित किया जाता है: प्री-इंस्टॉल सहमति पृष्ठ और मार्केटप्लेस समीक्षा यह बता सकती है कि यह कौन से टूल जोड़ता है और बिना कोई प्लगइन कोड चलाए इसे किन अनुमतियों की आवश्यकता है। सभी यूआई (टूलबार आइकन, सेटिंग्स, कमांड पैलेट, संदर्भ मेनू) घोषणा से होस्ट द्वारा प्रस्तुत किए जाते हैं; प्लगइन कोड कभी भी मुख्य विंडो के अंदर नहीं चलता। केवल डॉक किए गए दृश्य और फ़्लोटिंग पैनल ही आपके स्वयं के HTML हैं, और वे अलग-अलग सैंडबॉक्स वाले पृष्ठों में चलते हैं।
क्षमताएं एक नज़र में
| प्रकट क्षेत्र | क्षमता | जहां यूजर्स इसे देखते हैं |
|---|---|---|
tools | एआई के लिए कॉल करने योग्य उपकरण जोड़ें | एआई उन्हें बातचीत में स्वचालित रूप से बुलाता है; टूल कॉल सत्र में दिखाए जाते हैं |
views | सतत दृश्य सत्र के दाएँ साइडबार में डॉक किया गया | सत्र टूलबार में एक अतिरिक्त आइकन आपके पृष्ठ को दाईं ओर खोलता है |
ui | स्टैंडअलोन फ्लोटिंग विंडो | प्लगइन सूची में "⋯" मेनू से खोला गया |
sessionAction | सत्र टूलबार में लगातार क्रिया आइकन | एक क्लिक आपके द्वारा निर्दिष्ट टूल चलाता है |
configuration | सेटिंग पृष्ठ पर प्रविष्टियाँ | सेटिंग्स → प्लगइन कॉन्फ़िगरेशन; प्रत्येक कॉल के साथ मान पारित किए जाते हैं |
commands | Ctrl/Cmd+K कमांड पैलेट प्रविष्टियाँ | कमांड पैलेट |
keybindings | वैश्विक कीबोर्ड शॉर्टकट | एक कुंजी संयोजन एक आदेश को ट्रिगर करता है |
menus | सत्र संदर्भ-मेनू आइटम | सत्र पंक्ति पर "⋯" / राइट-क्लिक मेनू |
documentParsers | पार्स फ़ाइलें इनपुट बॉक्स में गिरा दी गईं | जब उपयोगकर्ता मिलान वाली फ़ाइल छोड़ता है तो स्वचालित रूप से कॉल किया जाता है |
activationEvents | ऐप के साथ मिलकर शुरुआत करें | अदृश्य; उन प्लगइन्स के लिए जिन्हें बैकग्राउंड टाइमर की आवश्यकता होती है |
permissions | आवश्यक अनुमतियाँ घोषित करें | सहमति पृष्ठ पूर्व-स्थापित करें |
02त्वरित शुरुआत
एक न्यूनतम प्लगइन को केवल दो फ़ाइलों की आवश्यकता होती है।
1. मेनिफ़ेस्ट.जेसन लिखें
2. प्रवेश स्क्रिप्ट लिखें
3. ऐप में इंस्टॉल करें
ऊपरी दाएं कोने में AnBoWork → शीर्ष बार "टूल्स" → "प्लगइन्स" → "स्थानीय रूप से इंस्टॉल करें" खोलें, फिर प्लगइन फ़ोल्डर (या उसका एक ज़िप) चुनें। एक सहमति पृष्ठ स्थापना से पहले घोषित अनुमतियों और प्रत्येक उपकरण को सूचीबद्ध करता है; सक्षम करने की पुष्टि करें.
4. इसे आज़माएं
किसी भी सत्र में, एआई से कहें "ऐलिस को नमस्ते कहने के लिए प्लगइन से पूछें"। टूल विवरण के आधार पर एआई say_hello को कॉल करने का निर्णय लेता है, और कॉल और उसका परिणाम सत्र में दिखाई देता है।
03प्रकट क्षेत्र
| मैदान | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
id | string | हाँ | रिवर्स-डोमेन शैली, उदा. com.example.my-plugin. केवल अक्षर, अंक, बिंदु और हाइफ़न। एक बार निर्मित होने पर अपरिवर्तनीय; उसी आईडी को दोबारा इंस्टॉल करना रीइंस्टॉल माना जाता है। |
name | string | हाँ | प्लगइन नाम. description के साथ इसे संदर्भ के रूप में मॉडल में फीड किया जाता है, इसलिए अंग्रेजी की अनुशंसा की जाती है। |
version | string | हाँ | अर्थपूर्ण संस्करण; बाज़ार इसका उपयोग अपडेट का पता लगाने के लिए करता है। |
description | string | हाँ | प्लगइन क्या करता है इसका वर्णन करने वाला एक वाक्य (अंग्रेजी)। |
author | string | नहीं | लेखक। |
readme | string | नहीं | मार्केटप्लेस विवरण पृष्ठ पर दिखाया गया लंबा-चौड़ा विवरण, मार्कडाउन का समर्थन करता है। इसके अंदर की छवियां https यूआरएल होनी चाहिए - ज़िप में बंडल की गई फ़ाइलों के सापेक्ष पथ समर्थित नहीं हैं। |
icon | string | नहीं | मार्केटप्लेस सूची और विवरण पृष्ठ में दिखाया गया आइकन - ज़िप में बंडल की गई फ़ाइल का एक सापेक्ष पथ (उदाहरण के लिए icon.png)। पीएनजी होना चाहिए, एसवीजी नहीं, कम से कम 128×128। |
main | string | हाँ | प्लगइन फ़ोल्डर के सापेक्ष प्रविष्टि स्क्रिप्ट। .. फ़ोल्डर से भागने की अनुमति नहीं है। |
permissions | string[] | हाँ | network / filesystem / notifications; एक खाली सरणी हो सकती है. "अनुमति मॉडल" देखें। |
tools | object[] | हाँ | उपकरण घोषणाएँ; एक खाली सरणी हो सकती है. "टूल्स एवं कॉल प्रोटोकॉल" देखें। |
documentParsers | object[] | नहीं | फ़ाइल पार्सिंग क्षमता. |
ui | object | नहीं | फ़्लोटिंग पैनल:{ entry, title } |
views | object[] | नहीं | डॉक किए गए दृश्य:{ id, title, icon, entry, width? } |
sessionAction | object | नहीं | टूलबार आइकन, प्रति प्लगइन अधिकतम एक। |
configuration | object[] | नहीं | सेटिंग्स प्रविष्टियों की सूची. |
commands | object[] | नहीं | कमांड पैलेट प्रविष्टियाँ. |
keybindings | object[] | नहीं | शॉर्टकट. command को commands[] में किसी प्रविष्टि के tool का संदर्भ देना होगा, अन्यथा इंस्टॉलेशन अस्वीकार कर दिया जाएगा। |
menus | object | नहीं | अभी केवल session/context स्थान उपलब्ध है। |
activationEvents | string[] | नहीं | अभी के लिए केवल onStartupFinished। |
पाठ के लिए भाषा परंपराएँ
मेनिफेस्ट में पाठ के दो श्रोता हैं। मॉडल के लिए: name, description, tools[].description, tools[].parameters.*.description. इन्हें अंग्रेजी में लिखें; मॉडल अंग्रेजी टूल विवरण को समझते हैं और मापदंडों को अधिक विश्वसनीय रूप से भरते हैं। लोगों के लिए: tools[].summary (सहमति पृष्ठ पर एक-पंक्ति सारांश), ui.title, views[].title, sessionAction.tooltip, configuration[].label, commands[].title और title अंदर menus। इन्हें अपने लक्षित उपयोगकर्ताओं की भाषा में लिखें।
04अनुमति मॉडल
permissions को ईमानदारी से प्रतिबिंबित करना चाहिए कि कोड वास्तव में क्या करता है। प्री-इंस्टॉल सहमति पृष्ठ प्रत्येक को सूचीबद्ध करता है ताकि उपयोगकर्ता यह तय कर सकें कि इंस्टॉल करना है या नहीं; मार्केटप्लेस समीक्षा कोड के विरुद्ध घोषणा की भी जांच करती है।
| अनुमति | जब इसे घोषित किया जाना चाहिए | मेज़बान इसके साथ कैसा व्यवहार करता है |
|---|---|---|
filesystem | उपयोगकर्ता फ़ाइलें पढ़ना या लिखना (प्रोजेक्ट कोड पढ़ना, दस्तावेज़ बनाना, होम फ़ोल्डर में डेटा संग्रहीत करना) | सूचित सहमति, उपयोगकर्ता को दिखाई गई। |
network | कोई भी नेटवर्क अनुरोध करना (तृतीय-पक्ष एपीआई, डाउनलोड) | सूचित सहमति, उपयोगकर्ता को दिखाई गई। |
notifications | show_notification रिवर्स आरपीसी के माध्यम से सिस्टम सूचनाएं दिखा रहा है | Enforced: घोषणा के बिना इसे कॉल करने पर रिटर्न host_error आता है और कोई अधिसूचना नहीं दिखाई जाती है। |
filesystem और network वर्तमान में सहमति-स्तर की घोषणाएं हैं, रनटाइम सैंडबॉक्स नहीं: होस्ट fs या fetch को इंटरसेप्ट नहीं करता है। यही कारण है कि घोषणाएँ ईमानदार होनी चाहिए। जिन प्लगइन्स की घोषणा कम की जाती है उन्हें बाज़ार समीक्षा में अस्वीकार कर दिया जाता है और खोजे जाने पर उपयोगकर्ता का विश्वास खो देते हैं। अति-घोषित न करें (अप्रयुक्त अनुमतियाँ उपयोगकर्ताओं को झिझकती हैं)।गोपनीयता और डेटा
context.cwd उपयोगकर्ता का प्रोजेक्ट फ़ोल्डर है और इसमें स्रोत कोड और संवेदनशील कॉन्फ़िगरेशन हो सकता है; टूल तर्कों में उपयोगकर्ता की बातचीत शामिल हो सकती है। इस डेटा को नेटवर्क पर तब तक न भेजें जब तक सुविधा के लिए इसकी आवश्यकता न हो, और जब आप ऐसा करें, तो description और summary में बताएं कि क्या भेजा गया है और किसे भेजा गया है। प्लगइन के स्वयं के लगातार डेटा को प्लगइन आईडी के नाम पर उपयोगकर्ता के होम फ़ोल्डर के नीचे एक फ़ाइल में रखें, ताकि अनइंस्टॉल करते समय इसे ढूंढना आसान हो।
05उपकरण एवं कॉल प्रोटोकॉल
घोषणा
| मैदान | विवरण |
|---|---|
name | टूल का नाम छोटे अक्षरों और अंडरस्कोर में है, जो पूरे ऐप में अद्वितीय है (यह बिल्ट-इन टूल और अन्य प्लगइन्स टूल के साथ मॉडल के साथ पंजीकृत है)। |
description | मॉडल के लिए विवरण (अंग्रेजी)। तीन बातें बताएं: टूल क्या करता है, उपयोगकर्ता क्या कहता है कि इसे कब कॉल किया जाना चाहिए, और कब इसे कॉल नहीं किया जाना चाहिए। एआई आपके प्लगइन का उपयोग करता है या नहीं, इसके लिए यह सबसे महत्वपूर्ण क्षेत्र है। |
summary | सहमति पृष्ठ पर एक पंक्ति का मानव-पठनीय सारांश दिखाया गया है। वैकल्पिक लेकिन दृढ़ता से अनुशंसित; अन्यथा इसके स्थान पर एक छोटा विवरण दिखाया गया है। |
parameters | प्रत्येक संपत्ति पर description के साथ मानक JSON स्कीमा ऑब्जेक्ट। मॉडल इससे तर्क भरता है और होस्ट उन्हें बिना अतिरिक्त सत्यापन के पास कर देता है, इसलिए अपने कोड में आवश्यक फ़ील्ड जांचें। |
renderAs | वैकल्पिक; वर्तमान में केवल checklist: होस्ट कॉल तर्कों से todos सरणी को चेकलिस्ट कार्ड के रूप में प्रस्तुत करता है, नीचे देखें। |
tools[] में घोषित टूल नामों को कॉल कर सकता है - sessionAction.tool, commands[].tool, और menus के अंदर tool फ़ील्ड को केवल इंस्टॉल समय पर गैर-रिक्त स्ट्रिंग के रूप में जांचा जाता है; होस्ट not सत्यापित करता है कि नाम tools[] में घोषित किया गया है, और बटन, शॉर्टकट या मेनू आइटम ट्रिगर होने पर भी उस नाम के तहत कॉल भेजता है। तो पूरी तरह से यूआई-ट्रिगर कार्रवाई को tools[] में प्रकट हुए बिना पूरी तरह से आपके index.js में नियंत्रित किया जा सकता है - लेकिन फिर एआई इसे कभी भी देख या कॉल नहीं कर सकता है। यदि आप चाहते हैं कि चैट अनुरोध पर क्लिक करके और एआई द्वारा कार्रवाई करके समान कार्रवाई शुरू की जा सके, तो उसी नाम को tools[] में भी घोषित करें, ताकि दोनों प्रवेश बिंदु एक हैंडलर साझा करें; यदि इसका उद्देश्य केवल यूआई ही रहना है, तो इसे अघोषित छोड़ दें - केवल पूर्ण दिखने के लिए कोई प्रविष्टि जोड़ने की आवश्यकता नहीं है।संदेश प्रोटोकॉल
होस्ट call_tool भेजता है; प्लगइन को समान requestId वाले tool_result या tool_error के साथ उत्तर देना होगा। 30 सेकंड के भीतर कोई उत्तर न मिलने पर कॉल आउट हो जाती है और मॉडल को एक त्रुटि प्राप्त होती है।
content केवल text और image ब्लॉक स्वीकार करता है (छवि बेस64 data प्लस mimeType के रूप में); अन्य प्रकार हटा दिए जाते हैं। details मनमाना संरचित डेटा है जिसे मॉडल में कभी भी फीड नहीं किया जाता है; यह होस्ट यूआई रेंडरिंग और आपके स्वयं के डॉक किए गए दृश्यों के लिए है।
फ़ाइल परिणाम: फ़ाइल कार्ड
चेकलिस्ट रेंडरिंग: चेकलिस्ट के रूप में रेंडर करें
अच्छा वर्णन लिख रहा हूँ
अनिवार्यता में ट्रिगर का वर्णन करें ("जब उपयोगकर्ता पूछे तो इसे कॉल करें...") और बहिष्करण बताएं ("इसके लिए इसे कॉल न करें...")। यदि परिणाम एक फ़ाइल है, तो मॉडल से यह दावा करने के बजाय कि यह उत्पन्न हुआ था, लौटाई गई फ़ाइल लिंक को संदर्भित करने के लिए कहें। यदि तर्क किसी बाहरी पीढ़ी के एपीआई को अग्रेषित किए जाते हैं, तो बताएं कि वे किस भाषा में होने चाहिए। "कार्य प्रबंधित करें" जैसे एक-पंक्ति वाले शब्दों से बचें; मॉडल को पता नहीं चलेगा कि टूल का उपयोग कब करना है।
06डॉक किए गए दृश्य (विचार)
डॉक किया गया दृश्य सत्र के दाएं साइडबार में एक स्थायी पृष्ठ है: सत्र टूलबार में एक अतिरिक्त आइकन दिखाई देता है और खोले जाने पर आपका HTML दाईं ओर दिखाई देता है। पृष्ठ स्थिति (स्क्रॉल स्थिति, ड्राफ्ट) स्विचिंग सत्र और ढहने/विस्तारित होने तक जीवित रहती है, वीएस कोड साइडबार दृश्य के समान ही शब्दार्थ।
| मैदान | विवरण |
|---|---|
id | प्लगइन के भीतर अद्वितीय. |
title | आइकन के लिए टूलटिप टेक्स्ट (मानव पठनीय)। |
icon | होस्ट अनुमति सूची में से चुनें: git-branch, checklist। पूरे ऐप में आइकन को एक समान रखता है; कस्टम छवियाँ स्वीकार नहीं की जातीं. |
entry | प्लगइन फ़ोल्डर के सापेक्ष HTML फ़ाइल। |
width | पिक्सेल में वैकल्पिक डिफ़ॉल्ट पैनल चौड़ाई, 240 से 640, डिफ़ॉल्ट 360। उपयोगकर्ता आकार बदलने के लिए खींच सकते हैं और आकार याद रखा जाता है। |
पेज रनटाइम
पेज एक सैंडबॉक्स में चलता है (sandbox + contextIsolation, कोई नोड नहीं, होस्ट ऐप डेटा तक कोई पहुंच नहीं) और केवल window.pluginHost पर कुछ तरीकों के माध्यम से अपनी प्लगइन प्रक्रिया से बात कर सकता है। अपनी खुद की शैलियाँ लाएँ; नीचे दिए गए उदाहरण के अनुसार ऐप की प्रकाश/अंधेरे योजना का पालन करने की अनुशंसा की जाती है।
अनुशंसित पैटर्न: पहले लोड पर invoke() के साथ अपने स्वयं के क्वेरी टूल में से एक को कॉल करें और इसे details में संरचित डेटा लौटाएं; बाद में मतदान के बजाय प्लगइन प्रक्रिया से प्रत्येक परिवर्तन को ui_push से पुश करें। जब AI बातचीत में डेटा बदलता है, तो पैनल तुरंत रीफ्रेश हो जाता है।
07फ़्लोटिंग पैनल (यूआई)
ui: { entry, title } एक स्टैंडअलोन फ़्लोटिंग विंडो (900×700) घोषित करता है जिसे उपयोगकर्ता प्लगइन सूची में "⋯" मेनू से खोलते हैं; निकट आने पर यह नष्ट हो जाता है। पृष्ठ परिवेश और window.pluginHost एपीआई डॉक किए गए दृश्यों के समान हैं, और ui_push फ़्लोटिंग पैनल और डॉक किए गए दृश्यों दोनों पर वितरित किया जाता है। कभी-कभी खोले जाने वाले बड़े पैनलों के लिए उपयुक्त; उस सामग्री के लिए views का उपयोग करें जो सत्र के बगल में रहना चाहिए।
08सत्र टूलबार आइकन (सत्रक्रिया)
प्रति प्लगइन अधिकतम एक स्थायी आइकन। इसे क्लिक करने से खाली तर्कों के साथ tool कॉल आती है, इसलिए उस टूल को पैरामीटर के बिना कुछ सार्थक करना होगा।
| मैदान | विवरण |
|---|---|
tool | क्लिक पर कॉल करने का टूल. |
icon | अनुमतिप्राप्त आइकन नाम. |
tooltip | पाठ पर होवर करें. |
visibleTool | वैकल्पिक। जब सेट किया जाता है, तो इसे रेंडर करने से पहले खाली तर्कों के साथ कॉल किया जाता है और परिणाम में बूलियन details.visible तय करता है कि आइकन दिखता है या नहीं। रनटाइम जांच के लिए उपयोगी जैसे "क्या वर्तमान फ़ोल्डर एक गिट रिपॉजिटरी है"। |
09सेटिंग्स (कॉन्फ़िगरेशन)
घोषित प्रविष्टियाँ सेटिंग पृष्ठ पर प्लगइन कॉन्फ़िगरेशन के अंतर्गत दिखाई देती हैं। होस्ट उपयोगकर्ता द्वारा बदले गए मानों को संग्रहीत करता है और उन्हें प्रत्येक call_tool पर context.config के रूप में पास करता है (id द्वारा कुंजीबद्ध, defaultValue पर वापस आता है), चाहे कॉल एआई, टूलबार आइकन या आपके पैनल से आती है। आपको उनसे कभी भी पूछने की आवश्यकता नहीं है।
| type | के रूप में प्रस्तुत किया गया | डिफॉल्टवैल्यू प्रकार |
|---|---|---|
select | एकल-विकल्प सूची; विकल्प optionsTool से आते हैं | string |
boolean | गिल्ली टहनी | boolean |
string | टेक्स्ट इनपुट, ब्लर पर प्रतिबद्ध | string |
number | संख्या इनपुट | number |
10कमांड पैलेट/शॉर्टकट/संदर्भ मेनू
"खाली तर्कों के साथ एक टूल को कॉल करें" के लिए तीनों अलग-अलग प्रवेश बिंदु हैं; एक प्लगइन कई घोषित कर सकता है।
| मैदान | आकार | विवरण |
|---|---|---|
commands | { tool, icon, title }[] | Ctrl/Cmd+K कमांड पैलेट में दिखाया गया है और उपयोगकर्ता द्वारा इसे खोजने के बाद ट्रिगर किया गया है। |
keybindings | { command, key }[] | command को commands[] में एक प्रविष्टि के tool के बराबर होना चाहिए। key mod+shift+g नोटेशन का उपयोग करता है, जहां mod macOS पर Cmd है और अन्यत्र Ctrl है। अन्य शॉर्टकट्स के साथ टकराव की सांख्यिकीय रूप से जाँच नहीं की जाती है, इसलिए असामान्य संयोजन चुनें। |
menus | { "session/context": { tool, icon, title }[] } | सत्र पंक्ति पर मेनू में जोड़ा गया. अभी केवल यही स्थान उपलब्ध है. |
11दस्तावेज़ पार्सर्स (दस्तावेज़ पार्सर्स)
जब उपयोगकर्ता किसी फ़ाइल को इनपुट बॉक्स में छोड़ता है, तो होस्ट MIME प्रकार द्वारा सक्षम प्लगइन्स द्वारा घोषित पार्सर्स को देखता है और फ़ाइल सामग्री को आधार 64 के रूप में मिलान toolName पर भेजता है। यह वह टूल नहीं है जिसे AI कॉल करने का निर्णय लेता है, इसलिए not को tools के अंतर्गत पार्सर टूल को भी सूचीबद्ध करें, अन्यथा इसे AI-कॉल करने योग्य टूल के रूप में प्रदर्शित किया जाएगा।
12रिवर्स आरपीसी (host_request)
प्लगइन प्रक्रिया में कोई इलेक्ट्रॉन एपीआई नहीं है। जब इसे वास्तविक सिस्टम क्षमता की आवश्यकता होती है तो यह होस्ट को host_request भेजता है, जो host_response या host_error के साथ उत्तर देता है। यह चैनल call_tool से पूर्णतः स्वतंत्र है; आप टूल कॉल को संभालते समय या टाइमर से इसका उपयोग कर सकते हैं।
| capability | params | result | शर्त लगाना |
|---|---|---|---|
show_notification | { title, body?, viewId? } | { shown: true } / { shown: false, reason: "disabled" | "unsupported" } | notifications अनुमति की आवश्यकता है। जब उपयोगकर्ता सेटिंग्स में डेस्कटॉप नोटिफिकेशन बंद कर देता है तो त्रुटि के बजाय अक्षम लौटाता है। जब viewId आपके डॉक किए गए दृश्यों में से किसी एक को इंगित करता है, तो अधिसूचना पर क्लिक करने से ऐप सामने आ जाता है और उस दृश्य का विस्तार होता है। |
render_pdf | { outputPath, title, content } | {} | सामग्री मार्कडाउन है; होस्ट अपने अंतर्निर्मित रेंडरर के साथ आउटपुटपाथ पर एक पीडीएफ प्रस्तुत करता है। |
13जीवन चक्र
| अवस्था | व्यवहार |
|---|---|
| शुरू | डिफ़ॉल्ट रूप से आलसी: ऐप के साथ शुरू नहीं हुआ, आपके किसी टूल (एआई, टूलबार आइकन, पैनल, कमांड, दस्तावेज़ पार्सिंग) में पहली कॉल पर फोर्क किया गया। ऐप लॉन्चिंग समाप्त होने के ठीक बाद activationEvents: ["onStartupFinished"] शुरू होने की घोषणा करने वाले प्लगइन्स; इसका उपयोग केवल उन प्लगइन्स के लिए करें जिन्हें बैकग्राउंड टाइमर (रिमाइंडर, पोलिंग) की आवश्यकता होती है, सामान्य टूल प्लगइन्स के लिए नहीं। |
| निवासी | एक बार शुरू होने के बाद प्रक्रिया सक्रिय रहती है और टूल कॉल में इसका पुन: उपयोग किया जाता है। आप मेमोरी में स्थिति को कैश कर सकते हैं, लेकिन मान लें कि इसे किसी भी समय पुनः आरंभ किया जा सकता है। |
| टकरा जाना | यदि प्रक्रिया अप्रत्याशित रूप से समाप्त हो जाती है तो होस्ट इसे पुनः आरंभ करता है: तुरंत, फिर 5 और 15 सेकंड के बाद। लगातार 3 विफलताओं के बाद इसे "क्रैश" के रूप में चिह्नित किया जाता है और अब दोबारा प्रयास नहीं किया जाता है; उपयोगकर्ता प्लगइन पेज पर स्थिति देखते हैं। इन-फ़्लाइट सभी रिटर्न त्रुटियों को कॉल करता है। |
| अक्षम/अनइंस्टॉल/पुनः इंस्टॉल करें | प्रक्रिया समाप्त हो गई है और डॉक किए गए दृश्य और फ्लोटिंग पैनल नष्ट हो गए हैं; पुनः स्थापित करने से पूरा फ़ोल्डर बदल जाता है। |
| लॉग्स | आपका stdout/stderr प्लगइन आईडी के साथ उपसर्ग वाली ऐप लॉग फ़ाइल में लिखा जाता है। डिबगिंग के लिए सादा console.log पर्याप्त है; "डिबगिंग एवं FAQ" देखें। |
ELECTRON_RUN_AS_NODE=1 से शुरू होती है, cwd प्लगइन इंस्टॉल फ़ोल्डर है, और नोड संस्करण ऐप के साथ बंडल किए गए इलेक्ट्रॉन से मेल खाता है। विश्व स्तर पर स्थापित किसी भी पैकेज पर निर्भर न रहें और यह न मानें कि npx मौजूद है।14पैकेजिंग एवं प्रकाशन
पैकेजिंग
आर्काइव रूट पर manifest.json के साथ प्लगइन फ़ोल्डर को ज़िप करें। यदि आपके पास तृतीय-पक्ष निर्भरताएँ हैं, तो पूरे node_modules को शिपिंग करने के बजाय पहले उन्हें esbuild/webpack के साथ एक फ़ाइल में बंडल करें।
बाज़ार में प्रकाशन
AnBoWork → टूल्स → प्लगइन्स → "मार्केटप्लेस" टैब → ऊपरी दाएं कोने में "प्लगइन प्रकाशित करें", फिर ज़िप अपलोड करें। सबमिशन समीक्षा में प्रवेश करते हैं, जो जांचता है कि मैनिफ़ेस्ट घोषणा कोड (विशेष रूप से अनुमतियाँ) से मेल खाती है। एक बार स्वीकृत होने के बाद, अन्य उपयोगकर्ता इसे बाज़ार में ढूंढ और इंस्टॉल कर सकते हैं, और एआई आवश्यकता पड़ने पर स्वचालित रूप से उपयोगकर्ताओं के लिए सत्यापित प्लगइन्स इंस्टॉल कर सकता है।
अपडेट
टक्कर version और फिर से प्रकाशित करें। ऐप इंस्टॉल किए गए संस्करण की तुलना मार्केटप्लेस संस्करण से करता है और अपडेट करने का संकेत देता है; पुनः स्थापित करने से उपयोगकर्ता की सक्षम स्थिति और सेटिंग्स मान बने रहते हैं।
15पूर्ण उदाहरण: टोडो क्वाड्रंट
एक वास्तविक, कार्यशील प्लगइन (छंटाई की गई): एआई सभी चीजों को जोड़ और हटा सकता है, दायां साइडबार एक बोर्ड दिखाता है जो वास्तविक समय में ताज़ा होता है, और यह सिस्टम अधिसूचना अनुस्मारक भेज सकता है। इन तीनों को चेन करने से टूल प्रोटोकॉल, डॉक्ड-व्यू पुश और रिवर्स आरपीसी शामिल हो जाते हैं।
16डिबगिंग और अक्सर पूछे जाने वाले प्रश्न
| लक्षण | कारण और निवारण |
|---|---|
| इंस्टॉल पर मेनिफेस्ट सत्यापन विफल हो जाता है | जैसा कि संदेश इंगित करता है, "मैनिफ़ेस्ट फ़ील्ड्स" तालिका के सामने प्रत्येक फ़ील्ड की जाँच करें: आईडी प्रारूप, मुख्य/प्रविष्टि में .. नहीं होना चाहिए, आइकन को अनुमति दी जानी चाहिए, कीबाइंडिंग कमांड को कमांड में मौजूदा टूल को इंगित करना चाहिए, चौड़ाई 240 और 640 के बीच होनी चाहिए। |
| एआई कभी भी मेरे टूल को कॉल नहीं करता | लगभग हमेशा एक description समस्या: ट्रिगर अस्पष्ट है या यह अंग्रेजी में नहीं लिखा है। "अच्छा विवरण लिखना" देखें। यह भी जांचें कि टूल का नाम किसी अन्य टूल से न टकराए। |
| कॉल का समय समाप्त (30 सेकंड) | प्रविष्टि स्क्रिप्ट ने tool_result का उत्तर नहीं दिया। आमतौर पर requestId की प्रतिध्वनि नहीं होती, संदेश type गलत लिखा जाता है, या स्क्रिप्ट स्टार्टअप पर फेंक दी जाती है और बाहर निकल जाती है। ऐप लॉग में [plugin:your-id] से पहले जुड़ी पंक्तियाँ देखें। |
| प्लगइन स्थिति "क्रैश्ड" दिखाती है | लगातार 3 असफल शुरुआत. आमतौर पर लापता पैकेज का require; प्लगइन फ़ोल्डर में node index.js चलाने से यह पुन: उत्पन्न होता है। ठीक करने के बाद, प्लगइन पेज पर प्लगइन को बंद करें और फिर से चालू करें। |
| पैनल खाली खुलता है | गलत entry पथ, या पृष्ठ पर JS त्रुटि। पेज बिना नोड के require के सैंडबॉक्स में चलता है; केवल window.pluginHost उपलब्ध है। |
| अधिसूचना प्रकट नहीं होती | क्रम में जांचें: मैनिफ़ेस्ट घोषित करता है notifications; परिणाम shown:false नहीं है (उपयोगकर्ता ने डेस्कटॉप सूचनाएं बंद कर दीं); ओएस AnBoWork से सूचनाओं की अनुमति देता है। |
| सेटिंग्स मान पढ़ने योग्य नहीं हैं | मान message.context.config[id] में हैं, params में नहीं। |
लॉग फ़ाइल स्थान
| ओएस | पथ |
|---|---|
| macOS | ~/Library/Logs/AnBoWork/main.log |
| Windows | %USERPROFILE%\AppData\Roaming\AnBoWork\logs\main.log |