AiHummer
Беларуская
УвайсціАсабісты кабінет
v1.1.x
{ }Swagger

SDK для убудоў

v1.1.x · абноўлена 2026-06-27

Плагін апісваецца **адзін manifest.json**Кантракт, які пацвярджае манифест падчас распрацоўкі, з’яўляецца тым жа, які платформа прымяняе пад час ўстаноўкі, таму манифест, які праходзіць validate з’яўляецца маніфестам, які рынак прыме. aihummer plugin CLI ахоплівае ўвесь жыццёвы цыкл: ад каркаса да падпісання і публікацыі.

Адзін манифест, адзін кантракт

Плагін мае дакладна адну крыніцу праўды — сваю manifest.jsonГэта аб’яўляе тып убудовы (kind), як гэта наладжана (config[]), яго магчымасці, і — для сэрвісаў, якія размешчаны на хосце — install[] крокі і каманда старт SystemdРазгортвальнік працуе. Паколькі распрацоўка і ўстаноўка выкарыстоўваюць адзіны кантракт праверкі, «дахавы манифест» і «ўстанаўліваемы плагін» маюць аднолькавае значэнне.

[!NOTE] Манаграм апісвае плагін кантракт, а не назва яго старонкі ў краме. Тое машына slug паходзіць з назвы каталога/пакета (прыватнае ўстаноўка) або з форма, якую вы запаўняеце «Мае плагіны» пры публікацыі плагіна супольнасці — бачыць Апублікаванне плагіна.

CLI

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 радок так Версія плагіна (semver), напрыклад 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 канэктар, сэрвіс, мкап не Крокі ўстаноўкі (масіў каманд shell), запускаюцца на хосце пасля распакавання.
host_native.port злучальнік, паслуга не Пераважны порт TCP (распрацоўшчык можа пераназначыць праз $PORT).
host_native.health_path злучальнік, паслуга не Шлях праверкі здароўя (па змаўчанні /healthz).
openapi.spec_url адкрытыAPI так URL спецыфікацыі OpenAPI 3.x
openapi.base_url адкрытыAPI не Перазапіс servers[0].url.
openapi.allowed_hosts адкрытыAPI не Спіс дазволеных выхадаў для сінтэзаваных інструментаў.
openapi.auth адкрытыAPI не Карта securityScheme → сакрэтнае імя.
openapi.tool_prefix адкрытыAPI не Прыстаўка імя інструмента.
mcp.transport мсп так stdio ці http.
mcp.command / mcp.args mcp (stdio) так для stdio Выконваемы файл сервера і аргументы.
mcp.url mcp (http) так для http URL канцавай кропкі MCP
mcp.auth_header / mcp.secret_token_key mcp (http) не Загаловак і сакрэтны ключ для маркера носьбіта.

Паля старонкі крамы і ідэнтычнасці (для супольнасных убудоў)

Манафест таксама можа змяшчаць ідэнтыфікацыю выдаўца і палі старонкі крамы. супольнасць плагін гэта тое, што паказвае каталог, але звычайна вы ўводзіце іх у «Мае плагіны» старонка крамы ў вашым асабістым кабінеце пад час падачы (назва, апісанні, значок, скрыншоты, катэгорыя, спасылка для ахвяраванняў), а не ўручную ў манифесте. Прыватная загрузка не патрабуе ні аднаго з іх — такі плагін давераны на ўзроўні інстанцыі.

Поле Тып Патрабуецца Мэта
visibility радок не public | private | unlisted. Пусты = спадчына/першапартыйны (не патрабуецца ідэнтычнасць).
publisher радок для грамадскасці Правайдэр імяпрасторы ^[a-z0-9][a-z0-9-]{1,38}$Грамадскія слизнякі названы @publisher/slug.
publisher_key_id радок для грамадскасці key id пад ключом, якім падпісаны артэфакт.
description радок для грамадскасці Кароткае апісанне старонкі крамы ў каталозе.
icon радок для грамадскасці Іконка плагіна: выключана https:// URL або а data: URI
screenshots радок[] не Скрыншоты старонкі крамы (масіў https:// URL-адрасы; кожны непусты.

[!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 манифест (stdio транспарт):

{
  "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Артыфакт ніколі не пакідае інстанцыю.
  • Супольнасць (для ўсіх) — загрузіце ўпакаваны, падпісаны артэфакт з Мае ўбудовы ў вашым асабістым кабінеце пасля рэцэнзіі штучнага інтэлекту і чалавечай мадэрацыі ён падпісваецца і публікуецца для супольнасці каталог

Бачыць Апублікаванне плагіна для поўнага крок за крокам праходжання

Дзе далей