AiHummer
Türkçe
Oturum açHesap
v1.0.x
{ }Swagger

Eklenti SDK

v1.0.x · güncellendi 2026-06-27

Bir eklenti tarafından tanımlanır bir manifest.json. Geliştirme sırasında manifesti doğrulayan sözleşme, platformun yükleme sırasında uyguladığı sözleşmeyle aynıdır, bu nedenle geçen bir manifest validate marketplace’in kabul edeceği bir manifestodur. aihummer plugin CLI tüm yaşam döngüsünü kapsar: iskandardan imzalamaya ve yayımlamaya kadar.

Bir manifest, bir sözleşme

Bir eklentinin tam olarak bir doğruluk kaynağı vardır — bu onun manifest.json. Eklenti türünü beyan eder (kind), nasıl yapılandırıldığı (config[]), yetenekleri ve — ana bilgisayar yerel hizmetleri için — install[] adımlar ve başlat komutu SystemdDağıtıcı çalışır. Çünkü geliştirme ve kurulum aynı doğrulama sözleşmesini kullanır, “geçerli manifest” ve “yüklenebilir eklenti” aynı şeyi ifade eder.

[!NOTE] Manifest, bir eklentiyi tanımlar sözleşme, mağaza sayfası adı değil. makine slug dizin/paket adından (özel yan yükleme) veya şundan gelir doldurduğunuz başvuru «Eklentilerim» bir topluluk eklentisi yayınlarken — görmek Bir eklenti yayımlamak.

CLI

aihummer plugin geliştirme, paketleme ve yayınlama komutlarını bir araya getirir:

# 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ınlamak için topluluk herkes için eklenti, sen yaparsın değil bir CLI komutu kullanın — paketlenmiş, imzalanmış artefaktı kendi sisteminizden yükleyin Eklentilerim kişisel kabinette (yükle → AI inceleme → moderasyon). Bakınız Bir eklenti gönder.

Komut Ne yapar
init <kind> [dir] Bir başlangıç yazar manifest.json seçilmiş tür için.
validate <m.json> Yükleme ile aynı sözleşmeyi kullanarak manifesti doğrular.
keygen Yazar anahtar çiftini oluşturur: .key (özel, gizli tut) ve .pub, yazdırır key id.
package <dir> Yapılar (isteğe bağlı) --build) ve paketler içine <slug>-<version>.tar.gz ile bir --strip-components=1 düzen, yazar .sha256. Asla paketlemez .env, *.key, node_modules, .git.
sign --key <priv> Serbest bırakma kimliğini imzalar; imzayı basar ve key id; ile --manifest İmzanın manifestoya gömülmesini sağlar.
publish --private Bir paketi örneğinizin üzerine yükler POST /v1/admin/modules/upload.

Hem özel yan yükleme hem de kişisel kabine aracılığıyla topluluk yayıncılığı ile ilgili yayın yolları ayrıntılı olarak Bir eklenti yayımlamak.

Manifest alanları

Bir alanın gerekli olup olmadığı şuna bağlıdır nazik ve eklentinin halka açık olup olmadığına. Temel ve kimlik alanları:

Alan Tür Gerekli Amaç
kind dizi her zaman Tür: connector | service | openapi | mcp.
version dizi evet Eklenti sürümü (semver), örn. 1.0.0.
contract dizi kanallar için Sözleşme Kimliği, örn. aihummer.channel.v1.
scope dizi hayır Erişim modeli: shared (varsayılan) veya personal.
capabilities dizi[] hayır Beyan edilen yetenekler.
config nesne[] hayır Yapılandırma formu alanları; her biri ihtiyaç duyar key, artı label, secret, required.
oauth nesne hayır OAuth2 (authorize_url, token_url, scopes[]) bir kullanıcının hesabını bağlamak için.
signature dizi imzalandığında base64 ed25519 imzası sürüm kimliği üzerinde (gömülü olarak sign).

Türe özgü alanlar — tam olarak bir blok … göre doldurulur kind:

Alan Nazik için Gerekli Amaç
host_native.exec_start bağlayıcı, hizmet evet Uzun ömürlü servisi çalıştıran komut.
host_native.runtime bağlayıcı, servis, mcp hayır node | python | binary.
host_native.install bağlayıcı, servis, mcp hayır Kurulum adımları (kabuk komutları dizisi), çıkarma işleminden sonra ana bilgisayarda çalıştırın.
host_native.port bağlayıcı, hizmet hayır Tercih edilen TCP bağlantı noktası (kurulum yapan kişi tarafından yeniden atanabilir $PORT).
host_native.health_path bağlayıcı, hizmet hayır Sağlık kontrol yolu (varsayılan /healthz).
openapi.spec_url openapi evet OpenAPI 3.x spesifikasyonunun URL’si.
openapi.base_url openapi hayır Üzerine yazmak servers[0].url.
openapi.allowed_hosts openapi hayır Sentezlenmiş araçlar için çıkış izin listesi.
openapi.auth openapi hayır Harita securityScheme → gizli isim.
openapi.tool_prefix openapi hayır Araç adı öneki.
mcp.transport mcp evet stdio veya http.
mcp.command / mcp.args mcp (stdio) evet stdio için Sunucu yürütülebilir dosyası ve argümanları.
mcp.url mcp (http) evet http için MCP uç noktası URL’si.
mcp.auth_header / mcp.secret_token_key mcp (http) hayır Bearer jetonu için başlık ve gizli anahtar.

Mağaza sayfası ve kimlik alanları (topluluk eklentileri için)

Manifest ayrıca yayıncı kimliği ve mağaza sayfası alanlarını da taşıyabilir. Bir topluluk eklenti bunlar katalogda gösterilenlerdir, ama genellikle onları içine girersiniz «Eklentilerim» gönderim sırasında kişisel kabininizdeki mağaza sayfası (isim, açıklamalar, simge, ekran görüntüleri, kategori, bağış bağlantısı) yerine manifestoda elle. Özel bir yan yükleme bunların hiçbirine ihtiyaç duymaz — böyle bir eklenti örnek seviyesinde güvenilmiştir.

Alan Tür Gerekli Amaç
visibility dizi hayır public | private | unlisted. Boş = eski/önceden var olan (kimlik gereksinimi yok).
publisher dizi kamusal Yayıncı ad alanı, ^[a-z0-9][a-z0-9-]{1,38}$. Genel sümüklüböcekler adlandırılır @publisher/slug.
publisher_key_id dizi kamusal key id artifaktın imzalandığı anahtarın.
description dizi kamusal Katalogdaki mağaza sayfası açıklaması.
icon dizi kamusal Eklenti simgesi: bir https:// URL veya bir data: URI.
screenshots dizi[] hayır Mağaza sayfası ekran görüntüleri (dizisi https:// URL’ler; her biri boş olmayan).

[!TIP] Koş aihummer plugin validate göndermeden önce. Kurulum ve doğrulama sözleşmeler aynıdır, bu nedenle yerel olarak geçen bir beyan her iki durumda da kabul edilecektir pazar yeri dağıtıcısı tarafından ve kişisel kabininizde pazar yeri incelemesi tarafından.

Minimal tezahürler

A service iskelet (ne aihummer plugin init service yazıyor):

{
  "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 kısa — sadece spesifikasyona işaret ediyor:

{
  "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 manifesto (stdio taşımacılığı):

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

Manifestten pazara

Doğrulamadan sonra, bir eklenti paketlenir (package), imzalı (sign) ve iki şekilde yayımlanmış:

  • Özel (kendin için) — Admin UI üzerinden veya publish --private. Eser nesne asla örnekten ayrılmaz.
  • Topluluk (herkes için) — paketlenmiş, imzalanmış eseri şuradan yükleyin Eklentilerim kişisel dolabınızda; Yapay zekâ incelemesi ve insan moderasyonundan sonra imzalanır ve topluluğa yayınlanır. katalog.

Gör Bir eklenti yayımlamak tam rehber için.

Sırada neresi