AiHummer
Azərbaycanca
Daxil olŞəxsi kabinet
v1.1.x
{ }Swagger

Plugin SDK

v1.1.x · yeniləndi 2026-06-27

Bir plugin tərəfindən təsvir olunur bir manifest.json. İnkişaf zamanı manifesti təsdiqləyən müqavilə, platformanın quraşdırma zamanı tətbiq etdiyi müqavilə ilə eynidir, beləliklə keçən manifest validate bazarın qəbul edəcəyi bir manifestdir. aihummer plugin CLI bütün həyat dövrünü əhatə edir: skaffolddan imzalamağa və yayımlamaya qədər.

Bir yük siyahısı, bir müqavilə

Bir plagin tam olaraq bir həqiqət mənbəyinə sahibdir — onun manifest.json. Bu plugin növünü elan edir (kind), necə konfiqurasiya olunduğu (config[]), onun imkanları və — ev sahibi yerli xidmətləri üçün — install[] addımlar və başlatma əmri ki SystemdDeployer işlədir. Çünki inkişaf və quraşdırma eyni doğrulama müqaviləsindən istifadə edir, “etibarlı manifest” və “quraşdırıla bilən plagin” eyni şeyi ifadə edir.

[!NOTE] Manifest bir plaqinin müqavilə, onun mağaza səhifəsinin adı deyil. maşın slug direktoriya/bağlamanın adından (özəl yan yükləmə) və ya doldurduğunuz təqdimat «Mənim əlavələrim» icma əlavəsini nəşr edərkən — görmək Plugin dərc etmək.

Əmr sətri interfeysi

aihummer plugin inkişaf, paketləmə və yayım əmrlərini birləşdirir:

# 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>

Yayımlamaq üçün icma hər kəs üçün plagin, sən edirsən yox CLI əmri istifadə edin — paketlənmiş, imzalanmış artefaktı yükləyirsiniz Mənim Pluginlərim şəxsi kabinetdə (yüklə → AI yoxlaması → moderasiya). Bax Plugin göndərin.

Əmr Nə edir
init <kind> [dir] Başlanğıc yazır manifest.json seçilmiş növ üçün.
validate <m.json> Manifesti quraşdırma ilə eyni müqavilə ilə təsdiqləyir.
keygen Müəllif açar cütlüyünü yaradır: .key (şəxsi, gizli saxla) və .pub, çap edir key id.
package <dir> Quruluşlar (əlavə seçim) --build) və qablaşdırır <slug>-<version>.tar.gz ilə --strip-components=1 tərtibat, yazır .sha256. Heç vaxt bağlamır .env, *.key, node_modules, .git.
sign --key <priv> Buraxılış şəxsiyyətini imzalayır; imzanı çap edir və key id; ilə --manifest imzanı manifestə yerləşdirir.
publish --private Paketi instansiyanıza yükləyir POST /v1/admin/modules/upload.

Hər iki nəşr yolu — şəxsi yükləmə və şəxsi kabinet vasitəsilə icma nəşri — ətraflı şəkildə göstərilmişdir Plugin dərc etmək.

Manifest sahələri

Bir sahənin tələb olunub-olunmaması asılıdır nəcib və plaginin ictimai olub-olmamasından asılı olaraq. Baza və identifikasiya sahələri:

Sahə Növ Tələb olunur Məqsəd
kind sətir həmişə Növ: connector | service | openapi | mcp.
version sətir bəli Plugin versiyası (semver), məsələn 1.0.0.
contract sətir kanallar üçün Müqavilə ID-si, məsələn aihummer.channel.v1.
scope sətir xeyr Giriş modeli: shared (sayılan) və ya personal.
capabilities sətir[] xeyr Bəyən edilmiş imkanlar.
config obyekt[] xeyr Konfiqurasiya forma sahələri; hər biri lazımdır key, üstəgəl label, secret, required.
oauth obyekt xeyr OAuth2 (authorize_url, token_url, scopes[]) istifadəçinin hesabını qoşmaq üçün.
signature sətir imzalandıqda buraxılış şəxsiyyəti üzərində base64 ed25519 imzası (daxil edilmiş sign).

Növə xas sahələr — dəqiq bir blok doldurulması asılı olaraq kind:

Sahə Nəcib üçün Tələb olunur Məqsəd
host_native.exec_start birləşdirici, xidmət bəli Uzunömürlü xidməti işlədən əmrdir.
host_native.runtime konektor, xidmət, mcp xeyr node | python | binary.
host_native.install konektor, xidmət, mcp xeyr Quraşdırma addımları (shell əmrləri massivini), çıxarışdan sonra hostda işlədin.
host_native.port birləşdirici, xidmət xeyr Üstünlük verilən TCP portu (yerləşdirən tərəfindən dəyişdirilə bilər $PORT).
host_native.health_path birləşdirici, xidmət xeyr Sağlamlıq yoxlaması yolu (əsasən /healthz).
openapi.spec_url openapi bəli OpenAPI 3.x spesifikasiyasının URL-i.
openapi.base_url openapi xeyr Üstünlük vermək servers[0].url.
openapi.allowed_hosts openapi xeyr Sintez edilmiş alətlər üçün çıxış icazə siyahısı.
openapi.auth openapi xeyr Xəritə securityScheme → gizli ad.
openapi.tool_prefix openapi xeyr Alət adı prefiksi.
mcp.transport mcp bəli stdio və ya http.
mcp.command / mcp.args mcp (stdio) bəli, stdio üçün Server icra edilə bilən faylı və arqumentlər.
mcp.url mcp (http) bəli http üçün MCP son nöqtə URL-i.
mcp.auth_header / mcp.secret_token_key mcp (http) xeyr Daşıyıcı token üçün başlıq və gizli açar.

Mağaza səhifəsi və şəxsiyyət sahələri (icma plaginləri üçün)

Manifest həmçinin nəşriyyatın kimliyini və mağaza səhifəsi sahələrini daşıya bilər. Bir üçün icma plugin bunlar kataloqda göstərilənlərdir, amma siz adətən onları daxil edirsiniz «Mənim əlavələrim» tətbiqi təqdim etdiyiniz zaman şəxsi kabinetinizdəki mağaza səhifəsi (ad, təsvirlər, ikon, ekran şəkilləri, kateqoriya, bağış linki) vasitəsilə, deyil ki, manifestdə əl ilə. Özəl yan yükləmə heç birinə ehtiyac yoxdur — belə bir plagin nümunə səviyyəsində etibarlı sayılır.

Sahə Növ Tələb olunur Məqsəd
visibility sətir xeyr public | private | unlisted. Boş = irsi/ilk tərəf (şəxsiyyət tələb olunmur).
publisher sətir ictimaiyyət üçün Nəşriyyat ad sahəsi, ^[a-z0-9][a-z0-9-]{1,38}$. İctimai salyangozlara ad verilir @publisher/slug.
publisher_key_id sətir ictimaiyyət üçün key id artefaktın imzalandığı açarın.
description sətir ictimaiyyət üçün Kataloqdakı mağaza səhifəsinin qısa təsviri.
icon sətir ictimaiyyət üçün Plugin ikonu: an https:// URL və ya data: URI.
screenshots sətir[] xeyr Mağaza səhifəsinin ekran görüntüləri (array of https:// URL-lər; hər biri boş olmayan).

[!TIP] Qaç aihummer plugin validate təqdim etməzdən əvvəl. Quraşdırma və yoxlama müqavilə eynidir, beləliklə, yerli olaraq keçən bir manifest hər ikisi tərəfindən qəbul ediləcək bazar yerinin yerləşdiricisi tərəfindən və şəxsi kabinetinizdə bazar yeri nəzərdən keçirilməsi vasitəsilə.

Minimal təzahürlər

A service dəstək (nə aihummer plugin init service yazır):

{
  "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 }
  ]
}

Sıfır-kod openapi manifest daha da qısadır — sadəcə spesifikasiyaya işarə edir:

{
  "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 }
  ]
}

Bir mcp manifest (stdio nəqliyyatı):

{
  "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"] }
}

Manifestdən bazara

Təsdiqləndikdən sonra, bir plaqin paketlənir (package), imzalanmış (sign) və iki yolla dərc olunmuş:

  • Şəxsi (özün üçün) — Admin UI vasitəsilə instansiyanıza yan yük edin və ya publish --private. Əşya heç vaxt nümunəni tərk etmir.
  • İcma (hər kəs üçün) — paketlənmiş, imzalanmış faylı yükləyin Mənim Pluginlərim şəxsi kabinetinizdə; Süni intellekt nəzərdən keçirildikdən və insan moderasiyasından sonra imzalanır və icmaya yayımlanır kataloq.

Görmək Plugin dərc etmək tam keçid üçün.

Növbəti haradır