SDK для убудоў
Плагін апісваецца **адзін 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Артыфакт ніколі не пакідае інстанцыю. - Супольнасць (для ўсіх) — загрузіце ўпакаваны, падпісаны артэфакт з Мае ўбудовы ў вашым асабістым кабінеце пасля рэцэнзіі штучнага інтэлекту і чалавечай мадэрацыі ён падпісваецца і публікуецца для супольнасці каталог
Бачыць Апублікаванне плагіна для поўнага крок за крокам праходжання
Дзе далей
- Апублікаванне плагіна — прыватная бакавая загрузка і супольнаснае публікаванне праз асабісты кабінет, агляд і мадэрацыя
- Інтэграцыі без кода — гэты
openapiіmcpвіды падрабязна - Устаноўка і абнаўленні — што рухае
install[], варот здароўя, давер і падпісаныя абнаўленні. - Рынак: агляд і ўзроўні — дзе як жыве кожны від і чым афіцыйны каталог адрозніваецца ад суполкі.