Plugin çap etmek
Plugin SDK bilen plugin gurduňyzmy? Ony iki rejede çap edip bilersiňiz:
- Hususy (özüňiz üçin) — öz gurnamaňyza side-load. Artefakt ony hiç haçan terk etmeýär.
- Jemgyýetçilik (hemmeler üçin) — PR arkaly seçilen resmi AiHummer kataloguna iberiň.
Analogiýa: .vsix-i el bilen gurnamak (hususy) garşy VS Code
Marketplace-e çap etmek (jemgyýetçilik); hususy npm registri garşy jemgyýetçilik biri.
Hususy reje — gurnamaňyza side-load
Bu plugin diňe size gerek bolanda ulanyň: içerki birikdiriji, ýörite integrasiýa, synag gurluşy.
Ädimler
- Bukjany gaplaň we gol çekiň:
aihummer plugin package ./my-plugin aihummer plugin sign --key author.key --manifest ./my-plugin/manifest.json my-plugin-1.0.0.tar.gz - Ony gurnama iki ýoluň biri bilen ýükläň:
- Admin UI → Plugins → “Upload plugin” — bukjany süýräň; ýa-da
- CLI:
aihummer plugin publish --private --instance https://your-instance \ --token <admin-token> my-plugin-1.0.0.tar.gz
- Içki tarapda bu
POST /v1/admin/modules/upload(multipart,integrations:write): artefakt gurama blob dükanyna (AIHUMMER_BLOB_DIR)blob:ref bilen düşýär we katalog setiriorigin = local-private,visibility = privatebilen hasaba alynýar. - Plugin marketplace-de Private belgisi bilen peýda bolýar we adaty ýol arkaly gurnalýar — izolirlenen systemd birligi + saglyk derwezesi.
Ynam: berkidilen açar we ynam dükany
Hususy artefaktlar gol çekilen bolmaly. Näbelli açar bilen gol çekilen plugini ýüklaniňizde, Admin UI sizi gurama ynam dükanyna awtoryň açaryny tassyklamaga ündeýär (bir basyş). Tassyklanandan soň, gol her gurnamada we täzelenmede barlanýar.
- Resmi çeşmeden artefaktlar özekde berkidilen registr açary garşysynda barlanýar — deslapky ýagdaýda ynamly, goşmaça ädim ýok.
- Hususy artefaktlar gurama ynam dükanyndaky açarlar garşysynda barlanýar.
- Gol çekilmedik bukjalar ret edilýär — ýerli iterasiýa üçin dev rejesinden başga:
AIHUMMER_PLUGIN_DEV_UNSIGNED=1.
[!WARNING]
AIHUMMER_PLUGIN_DEV_UNSIGNED=1gol barlagyny öçürýär we diňe ýerli işläp düzme üçin niýetlenendir. Ony daşardan elýeterli gurnamada hiç haçan işjeňleşdirmäň.
Jemgyýetçilik rejesi — jemgyýetçilik registri
Plugini her gurnama elýeterli etmek üçin, ony jemgyýetçilik
registrine
AiHummer/marketplace-catalog
PR arkaly iberiň: awtomatiki barlaglar + syn, we tassyklamada AiHummer relizi
garşy-gol çekýär.
Ädimler
- Bir gezeklik — çap edijini hasaba alyň. Açar dörediň we
ady ätiýaçlandyryň:
Buaihummer plugin keygen # prints the public key (base64) and key id@youadyny ätiýaçlandyrýar. Hususy açary özüňize saklaň — ol her iberişe gol çekýär. - Artefakty durnukly HTTPS URL-de ýerleşdiriň (artefakt awtor tarapyndan ýerleşdirilýär, AiHummer tarapyndan däl).
- Kataloga PR açyň:
aihummer plugin publish --public --dir ./my-plugin --key author.key \ --artifact-url https://you.example.com/my-plugin-1.0.0.tar.gz \ --publisher you --description "What the plugin does" --icon https://you.example.com/icon.svg \ [--screenshot https://you.example.com/1.png ...] [--channel stable|beta] \ [--register-key author.pub]--register-keypublishers/<you>.jsongoşýar (diňe ilkinji iberişiňizde gerek). - CI derwezeleri iberişi barlaýar (aşaga serediň), AI syny töwekgelçilik höküm çykarýar we AiHummer maintainer el bilen synlap, birleşdirýär.
- Birleşdirmekde reliz berkidilen registr açary bilen garşy-gol çekilýär we CDN-de
aýratyn
community-catalog.json-a çap edilýär. Bu çeşmäni goşan her gurnama plugini görýär; özek oňa berkidilen açar arkaly ynanýar — her operator üçin ynam ädimi gerek däl.
Iberiş şertnamasy
PR iki faýl goşýar (görnüş publish --public tarapyndan döredilýär we
durnukly):
publishers/<publisher>.json — bir gezeklik hasaba alyş:
{
"publisher": "acme",
"public_key": "<base64 std ed25519 public key>",
"key_id": "<sha256(public_key)[:16] in hex>",
"contact": "you@example.com"
}
catalog/<publisher>/<slug>/plugin.json — iberiş (her wersiýa setiri üçin biri):
{
"publisher": "acme",
"slug": "hello-tool",
"namespaced_slug": "@acme/hello-tool",
"version": "1.0.0",
"channel": "stable",
"artifact_url": "https://acme.example.com/hello-tool-1.0.0.tar.gz",
"license": "MIT",
"publisher_key_id": "bd68f2deedad25b1",
"signature": "<base64 ed25519 over the release identity>",
"manifest": { "...the full Manifest object..." }
}
namespaced_slug@<publisher>/<slug>-a deň bolmaly.channel∈stable | beta.artifact_urlawtor tarapyndan ýerleşdirilen.tar.gz-dyr.publisher_key_idhasaba alnan çap edijiniňkey_id-i bilen gabat gelmeli.- Gol çekilen reliz şahsyýeti =
slug \x00 version \x00 artifact_urlbaýtlary. - Jemgyýetçilik iberişi üçin gömülen
manifestdescription,icon(we islege göräscreenshots) götermeli — serediň dükan-sahypa meýdanlary.
[!TIP]
aihummer plugin publish --publicbu faýllary dogry görnüşde ýygnaýar we siziň üçin PR açýar — JSON-y el bilen üýtgetmegiň zerurlygy ýok.
Moderasiýa
Her iberiş awtomatiki barlagdan (iberiş şertnamasy, gol we howpsuzlyk skany), soňra maslahat beriji AI töwekgelçilik synyndan we ahyrynda AiHummer topary tarapyndan hökmany adam synyndan geçýär. Ne awtomatiýa, ne-de AI hiç haçan özbaşdak birleşdirmeýär — karar elmydama maintainer-iňki, we olaryň tassyklamasy bolmazdan hiç zat kataloga ýetmeýär. Soňra zyýanly ýa-da döwük diýlip tapylan çap edilen plugin ýatyrylyp we indiki sinhronda katalogdan aýrylyp bilner.
Goşmaça çeşme hökmünde jemgyýet katalogy
Jemgyýetçilik pluginleri seçilen birinji tarap katalogyny üýtgetmeýän aýratyn
community-catalog.json-a çap edilýär. Gurnama ony Plugins → Sources bölüminde
goşmaça çeşme hökmünde goşýar (ýa-da POST /v1/admin/modules/catalog/sources). Serediň
Gurnamak we täzelenmeler we
Umumy syn we derejeler.
Indiki ädim
- Plugin SDK — manifest meýdanlary we
aihummer pluginbuýruklary. - Gurnamak we täzelenmeler — köp çeşme, ynam modeli, gol çekilen täzelenmeler, tertipleşdirme.
- Marketplace: umumy syn we derejeler — resmi garşy jemgyýet registri.