AiHummer
हिन्दी
साइन इन करेंखाता
v1.0.x
{ }Swagger

प्लगइन एसडीके

v1.0.x · अपडेट किया गया 2026-06-27

एक प्लगइन द्वारा वर्णित किया जाता है एक manifest.json. विकास के दौरान मैनिफेस्ट को मान्य करने वाला अनुबंध वही है जिसे प्लेटफ़ॉर्म इंस्टॉल समय पर लागू करता है, इसलिए एक मैनिफेस्ट जो सफल होता है validate क्या एक घोषणापत्र है जिसे बाज़ार स्वीकार करेगा। aihummer plugin CLI पूरे जीवनचक्र को कवर करता है: स्कैफोल्ड से साइनिंग और प्रकाशन तक।

एक मैनिफेस्ट, एक अनुबंध

एक प्लगइन के पास ठीक एक ही सत्य का स्रोत होता है — इसका manifest.json. यह प्लगइन प्रकार घोषित करता है (kind), इसे कैसे कॉन्फ़िगर किया गया है (config[]), इसकी क्षमताओं, और — होस्ट-लोकल सेवाओं के लिए — install[] कदम और स्टार्ट कमांड जो सिस्टमडीडिप्लॉयर चलता है। क्योंकि विकास और स्थापना में एक ही सत्यापन अनुबंध का उपयोग होता है, इसलिए “मान्य मैनिफेस्ट” और “स्थापनीय प्लगइन” का अर्थ एक ही है।

[!NOTE] मैनिफेस्ट किसी प्लगइन का वर्णन करता है संधि, इसकी स्टोर-पेज नाम नहीं। मशीन slug निर्देशिका/बंडल नाम (निजी साइड-लोड) से आता है या से जो सबमिशन आप भरते हैं «मेरे प्लगइन्स» जब एक समुदाय प्लगइन प्रकाशित कर रहे हों — देखना एक प्लगइन प्रकाशित करना.

कमांड लाइन इंटरफ़ेस

aihummer plugin विकास, पैकेजिंग और प्रकाशन कमांड को बंडल करता है:

# Scaffold a manifest (kind: connector | service | openapi | mcp)
aihummer plugin init <kind> [dir]

# Validate a manifest against the install contract
aihummer plugin validate <manifest.json>

# Generate an ed25519 author key (writes <prefix>.key and <prefix>.pub)
aihummer plugin keygen [--out <prefix>]

# Build and package the plugin into a release tarball + .sha256
aihummer plugin package <dir> [--out <file>] [--slug <slug>] [--build "<cmd>"]

# Sign the release identity (slug\0version\0source_ref); with --manifest the
# signature is embedded into the manifest.signature field
aihummer plugin sign --key <priv> [--manifest <m.json>] <bundle|dir>

# Upload a private plugin into your own instance (side-load)
aihummer plugin publish --private --instance <url> --token <admin> <bundle.tar.gz>

प्रकाशित करने के लिए समुदाय सभी के लिए प्लगइन, आप करते हैं नहीं एक CLI कमांड का उपयोग करें — आप अपने पैक किए हुए, साइन किए गए आर्टिफैक्ट को अपलोड करते हैं मेरे प्लगइन्स व्यक्तिगत कैबिनेट में (अपलोड → एआई समीक्षा → मॉडरेशन)। देखें एक प्लगइन प्रस्तुत करें.

आदेश यह क्या करता है
init <kind> [dir] एक स्टार्टर लिखता है manifest.json चुने हुए प्रकार के लिए।
validate <m.json> इंस्टॉल के समान अनुबंध के साथ मैनिफेस्ट को मान्य करता है।
keygen लेखक कुंजी जोड़ी उत्पन्न करता है: .key (निजी, गुप्त रखें) और .pub, प्रिंट करता है key id.
package <dir> निर्माण (वैकल्पिक) --build) और पैक करता है <slug>-<version>.tar.gz के साथ --strip-components=1 लेआउट, लिखता है .sha256. कभी भी पैक नहीं करता .env, *.key, node_modules, .git.
sign --key <priv> रिलीज़ पहचान के संकेत; हस्ताक्षर और मुद्रित करता है key id; के साथ --manifest हस्ताक्षर को मैनिफेस्ट में सम्मिलित करता है।
publish --private आपके इंस्टेंस पर एक बंडल अपलोड करता है POST /v1/admin/modules/upload.

दोनों प्रकाशन मार्ग — निजी साइड-लोड और व्यक्तिगत कैबिनेट के माध्यम से सामुदायिक प्रकाशन — पर विस्तार से बताया गया है एक प्लगइन प्रकाशित करना.

मैनिफेस्ट फ़ील्ड

किसी फील्ड की आवश्यकता इस पर निर्भर करती है दयालु और यह प्लगइन सार्वजनिक है या नहीं। बेस और पहचान फ़ील्ड:

मैदान लिखें आवश्यक उद्देश्य
kind स्ट्रिंग हमेशा प्रकार: connector | service | openapi | mcp.
version स्ट्रिंग हाँ प्लगइन संस्करण (सेमवर), उदाहरण के लिए 1.0.0.
contract स्ट्रिंग चैनलों के लिए संपर्क आईडी, उदाहरण के लिए aihummer.channel.v1.
scope स्ट्रिंग नहीं एक्सेस मॉडल: shared (डिफ़ॉल्ट) या personal.
capabilities स्ट्रिंग[] नहीं घोषित क्षमताएँ।
config वस्तु[] नहीं कॉन्फ़िग फॉर्म फ़ील्ड; प्रत्येक की आवश्यकता है key, प्लस label, secret, required.
oauth वस्तु नहीं OAuth2 (authorize_url, token_url, scopes[]) एक उपयोगकर्ता के खाते को जोड़ने के लिए।
signature स्ट्रिंग जब हस्ताक्षर किया गया रिलीज़ पहचान पर base64 ed25519 हस्ताक्षर (एम्बेड किया गया द्वारा sign).

प्रकार-विशिष्ट फ़ील्ड — ठीक एक ब्लॉक इस पर निर्भर करके भरा जाता है kind:

मैदान दयालु के लिए आवश्यक उद्देश्य
host_native.exec_start कनेक्टर, सेवा हाँ कमांड जो लंबे समय तक चलने वाली सेवा को चलाता है।
host_native.runtime कनेक्टर, सेवा, एमसीपी नहीं node | python | binary.
host_native.install कनेक्टर, सेवा, एमसीपी नहीं इंस्टॉल चरण (शेल कमांड्स की सूची), निष्कर्षण के बाद होस्ट पर चलाएं।
host_native.port कनेक्टर, सेवा नहीं पसंदीदा TCP पोर्ट (तैनात करने वाला इसे पुनः असाइन कर सकता है $PORT).
host_native.health_path कनेक्टर, सेवा नहीं हेल्थ-चेक पथ (डिफ़ॉल्ट /healthz).
openapi.spec_url ओपनएपीआई हाँ OpenAPI 3.x विनिर्देश का URL।
openapi.base_url ओपनएपीआई नहीं अधिकारपूर्वक बदलना servers[0].url.
openapi.allowed_hosts ओपनएपीआई नहीं सिंथेसाइज किए गए टूल्स के लिए एग्रीस अलाउलिस्ट।
openapi.auth ओपनएपीआई नहीं नक्शा securityScheme → गुप्त नाम।
openapi.tool_prefix ओपनएपीआई नहीं उपकरण-नाम उपसर्ग।
mcp.transport एमसीपी हाँ stdio या http.
mcp.command / mcp.args एमसीपी (स्ट्डियो) हाँ, स्टडियो के लिए सर्वर निष्पादन योग्य और तर्क।
mcp.url एमसीपी (एचटीटीपी) हाँ http के लिए एमसीपी एंडपॉइंट यूआरएल।
mcp.auth_header / mcp.secret_token_key एमसीपी (एचटीटीपी) नहीं बेयरर टोकन के लिए हेडर और सीक्रेट कुंजी।

स्टोर-पेज और पहचान फ़ील्ड (समुदाय प्लगइन्स के लिए)

मैनिफेस्ट में प्रकाशक की पहचान और स्टोर-पृष्ठ फ़ील्ड भी शामिल हो सकते हैं। एक के लिए समुदाय प्लगइन ये हैं जो कैटलॉग दिखाता है, लेकिन आप आम तौर पर इन्हें इसमें दर्ज करते हैं «मेरे प्लगइन्स» सबमिशन समय आपके व्यक्तिगत कैबिनेट में स्टोर पेज (नाम, विवरण, आइकन, स्क्रीनशॉट, श्रेणी, दान लिंक) में दर्ज करें, मैनिफेस्ट में हाथ से नहीं। एक निजी साइड-लोड को इनमें से किसी की भी आवश्यकता नहीं होती — ऐसा प्लगइन उदाहरण स्तर पर भरोसेमंद होता है।

मैदान लिखें आवश्यक उद्देश्य
visibility स्ट्रिंग नहीं public | private | unlisted. खाली = लेगसी/प्रथम-पक्ष (कोई पहचान आवश्यकता नहीं)।
publisher स्ट्रिंग सार्वजनिक के लिए प्रकाशक नामस्थान, ^[a-z0-9][a-z0-9-]{1,38}$. सार्वजनिक स्लग्स को नाम दिया जाता है @publisher/slug.
publisher_key_id स्ट्रिंग सार्वजनिक के लिए key id उस कुंजी के साथ जिस पर कलाकृति साइन की गई है।
description स्ट्रिंग सार्वजनिक के लिए कैटलॉग में स्टोर-पृष्ठ का संक्षिप्त वर्णन।
icon स्ट्रिंग सार्वजनिक के लिए प्लगइन आइकन: एक https:// यूआरएल या एक data: यूआरआई.
screenshots स्ट्रिंग[] नहीं स्टोर-पेज स्क्रीनशॉट्स (ऐरे ऑफ https:// URLs; प्रत्येक खाली नहीं)।

[!TIP] भागो aihummer plugin validate जमा करने से पहले। इंस्टॉल और सत्यापन ठेका समान होते हैं, इसलिए एक मैनिफेस्ट जो स्थानीय रूप से पास होता है वह दोनों जगह स्वीकार किया जाएगा मार्केटप्लेस डिप्लॉयर और आपके व्यक्तिगत कैबिनेट में मार्केटप्लेस समीक्षा द्वारा।

न्यूनतम अभिव्यक्तियाँ

service मचान (क्या aihummer plugin init service लिखता है):

{
  "version": "1.0.0",
  "kind": "service",
  "scope": "shared",
  "contract": "aihummer.channel.v1",
  "host_native": {
    "runtime": "node",
    "install": ["npm ci --omit=dev"],
    "exec_start": "node dist/main.js",
    "port": 8800,
    "health_path": "/healthz"
  },
  "config": [
    { "key": "api_token", "label": "API token", "secret": true, "required": true }
  ]
}

एक शून्य-कोड openapi मैनीफेस्ट और भी छोटा है — यह सिर्फ स्पेक की ओर इशारा करता है:

{
  "version": "1.0.0",
  "kind": "openapi",
  "scope": "shared",
  "openapi": {
    "spec_url": "https://api.example.com/openapi.json",
    "tool_prefix": "example_",
    "allowed_hosts": ["api.example.com"],
    "auth": { "bearerAuth": "api_token" }
  },
  "config": [
    { "key": "api_token", "label": "API token", "secret": true, "required": true }
  ]
}

एक mcp मेनिफेस्ट (स्ट्डिओ ट्रांसपोर्ट):

{
  "version": "1.0.0",
  "kind": "mcp",
  "scope": "shared",
  "host_native": { "runtime": "node", "install": ["npm ci --omit=dev"] },
  "mcp": { "transport": "stdio", "command": "node", "args": ["server.js"] }
}

मैनिफेस्ट से मार्केटप्लेस तक

मान्यकरण के बाद, एक प्लगइन पैक किया जाता है (package), पर हस्ताक्षरित (sign) और दो तरीकों में से किसी एक तरीके से प्रकाशित किया गया:

  • निजी (अपने लिए) — अपने इंस्टेंस में एडमिन यूआई के माध्यम से साइड-लोड करें या publish --privateवस्तु कभी भी उदाहरण को नहीं छोड़ती।
  • समुदाय (सभी के लिए) — पैकेज किए गए, हस्ताक्षरित आर्टिफैक्ट को अपलोड करें मेरे प्लगइन्स आपके व्यक्तिगत अलमारी में; एआई समीक्षा और मानव मध्यस्थता के बाद इसे हस्ताक्षरित किया जाता है और समुदाय में प्रकाशित किया जाता है कैटलॉग.

देखो एक प्लगइन प्रकाशित करना पूर्ण मार्गदर्शन के लिए।

अगला कहाँ