Plugina SDK
Plugin kirjeldatakse kui üks manifest.json. Leping, mis kinnitab manifesteerimist arendamise ajal, on sama, mida platvorm rakendab installimisel, seega manifesteerimine, mis läbib validate on manifest, mida turg aktsepteerib. aihummer plugin CLI katab kogu elutsükli: alates raamistikust kuni allkirjastamise ja avaldamiseni.
Üks manifeest, üks leping
Laiendil on täpselt üks tõeallikas — selle manifest.json. See deklareerib pistikprogrammi tüübi (kind), kuidas see on seadistatud (config[]), selle võimekuse ja — hosti-põhiste teenuste puhul — install[] sammud ja käivituskäsk, mis SystemdDeployer töötab. Kuna arendamine ja paigaldamine kasutavad sama valideerimislepingut, tähendavad „kehtiv manifest“ ja „paigaldatav plugin“ sama asja.
[!NOTE] Manifest kirjeldab pistikprogrammi leping, mitte selle poe lehe nimi. masin
slugtuleb kataloogi/paki nimest (privaatne külglaadimine) või sellest täidetav esitamine «Minu pistikprogrammid» kogukonna pistikprogrammi avaldamisel — see Plugina avaldamine.
Käsklusrida
aihummer plugin koondab arenduse, pakendamise ja avaldamise käsud:
# 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>
Avaldada kogukond plugin kõigile, sina teed ei kasutage CLI käsku — laadite üles pakitud, allkirjastatud artefakti oma Minu pluginad isiklikus kabinetis (laadi üles → tehisintellekti ülevaatus → modereerimine). Vaata Esita pistikprogramm.
| Käsk | Mida see teeb |
|---|---|
init <kind> [dir] |
Kirjutab algaja manifest.json valitud tüübi jaoks. |
validate <m.json> |
Kontrollib manifesti sama lepingu alusel nagu install. |
keygen |
Genereerib autori võtme paari: .key (privaatne, hoia saladuses) ja .pub, prindib key id. |
package <dir> |
Versioonid (valikuline) --build) ja pakib sisse <slug>-<version>.tar.gz koos --strip-components=1 paigutus, kirjutab .sha256. Ei paki kunagi .env, *.key, node_modules, .git. |
sign --key <priv> |
Allkirjastab vabastuse identiteedi; trükib allkirja ja key id; koos --manifest manustab allkirja manifesti sisse. |
publish --private |
Laadib teie eksemplari jaoks paketi üles POST /v1/admin/modules/upload. |
Mõlemad avaldamise teed — privaatne külglaadimine ja kogukonna avaldamine isikliku kontori kaudu — on üksikasjalikult kirjeldatud Plugina avaldamine.
Manifesti väljad
Kas väli on nõutav, sõltub sellest lahke ja kas pistikprogramm on avalik. Baasi- ja identiteediväljad:
| Väli | Tüüp | Nõutav | Eesmärk |
|---|---|---|---|
kind |
string | alati | Sõbralik connector | service | openapi | mcp. |
version |
string | jah | Pistikprogrammi versioon (semver), nt. 1.0.0. |
contract |
string | kanalite jaoks | Lepingu ID, nt aihummer.channel.v1. |
scope |
string | ei | Juurdepääsumudel: shared (vaikimisi) või personal. |
capabilities |
string[] | ei | Deklareeritud võimed. |
config |
objekt[] | ei | Seadista vormiväljad; igaüht on vaja key, pluss label, secret, required. |
oauth |
ese | ei | OAuth2 (authorize_url, token_url, scopes[]) kasutaja konto ühendamiseks. |
signature |
string | allkirjastamisel | base64 ed25519 allkiri väljalaske identiteedi üle (manustatud poolt sign). |
Tüübispetsiifilised väljad — täpselt üks plokk täidetakse sõltuvalt kind:
| Väli | Hea jaoks | Nõutav | Eesmärk |
|---|---|---|---|
host_native.exec_start |
liides, teenus | jah | Käsk, mis käivitab pikaajaliselt töötava teenuse. |
host_native.runtime |
liides, teenus, mcp | ei | node | python | binary. |
host_native.install |
liides, teenus, mcp | ei | Paigaldusetapid (shell-käskude massiiv), käivitage hostil pärast pakkimist lahtipakkimist. |
host_native.port |
liides, teenus | ei | Eelistatud TCP-port (paigaldaja võib vajadusel määrata uuesti kaudu $PORT). |
host_native.health_path |
liides, teenus | ei | Tervisekontrolli tee (vaikimisi /healthz). |
openapi.spec_url |
avatudliides | jah | OpenAPI 3.x spetsifikatsiooni URL. |
openapi.base_url |
avatudliides | ei | Ülekirjutamine servers[0].url. |
openapi.allowed_hosts |
avatudliides | ei | Väljuva liikluse lubatud nimekiri sünteesitud tööriistade jaoks. |
openapi.auth |
avatudliides | ei | Kaart securityScheme → salanimi. |
openapi.tool_prefix |
avatudliides | ei | Tööriista nime eesliide. |
mcp.transport |
mcp | jah | stdio või http. |
mcp.command / mcp.args |
mcp (stdio) | jah stdio jaoks | Serveri käivitatav fail ja argumendid. |
mcp.url |
mcp (http) | jah http jaoks | MCP lõpp-punkti URL. |
mcp.auth_header / mcp.secret_token_key |
mcp (http) | ei | Päis ja salavõti kandjatokeni jaoks. |
Pood-lehekülje ja identiteedi väljad (kogukonna pistikprogrammide jaoks)
Manifest võib samuti kanda kirjastaja identiteedi ja poe-lehe välju. Selleks kogukond pluginid, need on need, mida kataloog näitab, kuid tavaliselt sisestate need «Minu pistikprogrammid» poodi lehekülg teie isiklikus kabinetis esitamise ajal (nimi, kirjeldused, ikoon, ekraanipildid, kategooria, annetuse link) mitte käsitsi manifesti kaudu. Eravastupuu laadimine ei vaja neist ühtegi — selline plugin on usaldusväärne instantsi tasemel.
| Väli | Tüüp | Nõutav | Eesmärk |
|---|---|---|---|
visibility |
string | ei | public | private | unlisted. Tühi = pärand/esmase osapoole (identiteedi nõuet ei ole). |
publisher |
string | avalikuks | Väljaandja nimetüüp ^[a-z0-9][a-z0-9-]{1,38}$. Avalikke limuseid nimetatakse @publisher/slug. |
publisher_key_id |
string | avalikuks | key id võtme all, millega artifakt on allkirjastatud. |
description |
string | avalikuks | Poe lehe kirjeldus kataloogis. |
icon |
string | avalikuks | Pistikprogrammi ikoon: an https:// URL või a data: URI. |
screenshots |
string[] | ei | Poe lehe kuvatõmmised (järjend https:// URL-id; iga mitte-tühi). |
[!TIP] Jookse
aihummer plugin validateenne kui esitate. Paigaldamine ja valideerimine leping on identsed, nii et manifes, mis läbib kohalikult, aktsepteeritakse mõlemal turuväljaandja poolt ja turu ülevaatuse poolt teie isiklikus kabinetis.
Minimaalne avaldus
A service telling aihummer plugin init service kirjutab):
{
"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 }
]
}
Nullkood openapi manifest on veelgi lühem — see viitab lihtsalt spetsifikatsioonile:
{
"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 }
]
}
Üks mcp manifest (stdio transport):
{
"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"] }
}
Manifetist turule
Pärast valideerimist pakitakse pistikprogramm (package), allkirjastatud (sign) ja avaldatud ühel kahest viisil:
- Privaatne (enda jaoks) — paigalda oma eksemplari kaudu Admin UI või
publish --private. Artefakt ei lahku kunagi eksemplarist. - Kogukond (kõigile) — laadige üles pakitud, allkirjastatud artefakt aadressilt Minu pluginad teie isiklikus kabinetis; pärast tehisintellekti ülevaatust ja inimese modereerimist see allkirjastatakse ja avaldatakse kogukonnale kataloog.
See Plugina avaldamine täieliku juhendi jaoks.
Kuhu edasi
- Plugina avaldamine — privaatne külglaadimine ja kogukonna avaldamine isikliku kabineti kaudu, ülevaatus ja modereerimine.
- Nullkoodiga integratsioonid — see
openapijamcpliigid üksikasjalikult. - Paigalda ja uuendused — mis ajendab
install[], tervisevärav, usaldus ja allkirjastatud värskendused. - Turul: ülevaade ja tasemed — kus iga liik elab ja kuidas ametlik kataloog erineb kogukonnast.