Փլագինի հրապարակում
Փլագին ստեղծե՞լ եք Փլագինի SDK-ով։ Կարող եք հրապարակել այն երկու ռեժիմով.
- Մասնավոր (ձեզ համար) — side-load ձեր instance-ի մեջ։ Արտեֆակտը երբեք չի լքում այն։
- Հանրային (բոլորի համար) — ներկայացրեք AiHummer-ի կուրացված պաշտոնական կատալոգին PR-ի միջոցով։
Անալոգիա. ձեռքով .vsix տեղադրելը (մասնավոր) ընդդեմ VS Code
Marketplace-ում հրապարակելու (հանրային). մասնավոր npm registry ընդդեմ հանրայինի։
Մասնավոր ռեժիմ — side-load ձեր instance-ի մեջ
Օգտագործեք սա, երբ փլագինն անհրաժեշտ է միայն ձեզ. ներքին կոնեկտոր, հատուկ ինտեգրացիա, թեստային build։
Քայլեր
- Փաթեթավորեք և ստորագրեք փաթեթը.
aihummer plugin package ./my-plugin aihummer plugin sign --key author.key --manifest ./my-plugin/manifest.json my-plugin-1.0.0.tar.gz - Վերբեռնեք այն instance-ի մեջ երկու եղանակներից մեկով.
- Ադմին UI → Plugins → “Upload plugin” — քաշեք փաթեթը. կամ
- CLI:
aihummer plugin publish --private --instance https://your-instance \ --token <admin-token> my-plugin-1.0.0.tar.gz
- Կուլիսներում սա
POST /v1/admin/modules/uploadէ (multipart,integrations:write). արտեֆակտը հայտնվում է instance-ի blob store-ում (AIHUMMER_BLOB_DIR)blob:ref-ի տակ, և կատալոգում գրանցվում է տողorigin = local-private,visibility = privateարժեքներով։ - Փլագինը հայտնվում է marketplace-ում Private պիտակով և տեղադրվում նորմալ ուղով — մեկուսացված systemd միավոր + առողջության դարպաս։
Վստահություն. ֆիքսված բանալին և trust store-ը
Մասնավոր արտեֆակտները պարտադիր պետք է ստորագրված լինեն։ Երբ վերբեռնում եք փլագին, որը ստորագրված է անհայտ բանալիով, Ադմին UI-ն ձեզ հուշում է հաստատել հեղինակի բանալին instance-ի trust store-ի մեջ (մեկ սեղմում)։ Հաստատվելուց հետո ստորագրությունը ստուգվում է ամեն տեղադրման և թարմացման ժամանակ։
- Պաշտոնական աղբյուրից արտեֆակտները ստուգվում են core-ում ֆիքսված registry բանալու դեմ — վստահելի է լռելյայն, լրացուցիչ քայլ չկա։
- Մասնավոր արտեֆակտները ստուգվում են instance-ի trust store-ի բանալիների դեմ։
- Չստորագրված փաթեթները մերժվում են — բացառությամբ dev ռեժիմի լոկալ կրկնության համար.
AIHUMMER_PLUGIN_DEV_UNSIGNED=1։
[!WARNING]
AIHUMMER_PLUGIN_DEV_UNSIGNED=1-ն անջատում է ստորագրության ստուգումը և նախատեսված է միայն լոկալ մշակման համար։ Երբեք մի միացրեք այն արտաքինից հասանելի instance-ի վրա։
Հանրային ռեժիմ — հանրային registry
Փլագինը յուրաքանչյուր instance-ի համար հասանելի դարձնելու համար ներկայացրեք այն հանրային
registry-ին
AiHummer/marketplace-catalog
PR-ի միջոցով. ավտոմատացված ստուգումներ + վերանայում, և հաստատման դեպքում AiHummer-ը հակա-ստորագրում է
թողարկումը։
Քայլեր
- Մեկանգամյա — գրանցեք հրապարակողին։ Գեներացրեք բանալի և ամրագրեք
namespace-ը.
Սա ամրագրում էaihummer plugin keygen # prints the public key (base64) and key id@younamespace-ը։ Մասնավոր բանալին պահեք ձեզ մոտ — այն ստորագրում է յուրաքանչյուր ներկայացում։ - Հոստավորեք արտեֆակտը կայուն HTTPS URL-ի վրա (արտեֆակտը հոսթավորվում է հեղինակի կողմից, ոչ թե AiHummer-ի)։
- Բացեք PR կատալոգի համար.
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-key-ն ավելացնում էpublishers/<you>.json(անհրաժեշտ է միայն ձեր առաջին ներկայացման ժամանակ)։ - CI դարպասները վավերացնում են ներկայացումը (տես ստորև), AI վերանայումը տեղադրում է ռիսկի վճիռ, և AiHummer-ի maintainer-ը վերանայում և merge է անում ձեռքով։
- Merge-ի դեպքում թողարկումը հակա-ստորագրվում է ֆիքսված registry բանալիով և
հրապարակվում առանձին
community-catalog.json-ում CDN-ի վրա։ Յուրաքանչյուր instance, որ ավելացրել է այս աղբյուրը, տեսնում է փլագինը. core-ը վստահում է դրան ֆիքսված բանալու միջոցով — ոչ մի օպերատորի վստահության քայլ չի պահանջվում։
Ներկայացման պայմանագիրը
PR-ն ավելացնում է երկու ֆայլ (ձևը գեներացվում է publish --public-ով և
կայուն է).
publishers/<publisher>.json — մեկանգամյա գրանցում.
{
"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 — ներկայացում (մեկը՝ յուրաքանչյուր տարբերակի գծի համար).
{
"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>-ին։channel∈stable | beta։artifact_url-ը.tar.gz-ն է, որ հոսթավորված է հեղինակի կողմից։publisher_key_id-ն պետք է համապատասխանի գրանցված հրապարակողիkey_id-ին։- Ստորագրված թողարկման ինքնությունը =
slug \x00 version \x00 artifact_urlբայթերը։ - Հանրային ներկայացման համար ներդրված
manifest-ը պետք է կրիdescription,icon(և ընտրովի՝screenshots) — տես store-page դաշտեր։
[!TIP]
aihummer plugin publish --public-ը հավաքում է այս ֆայլերը ճիշտ ձևով և ձեզ համար բացում է PR-ը — JSON-ը ձեռքով խմբագրելու կարիք չկա։
Մոդերացիա
Յուրաքանչյուր ներկայացում անցնում է ավտոմատացված ստուգում (ներկայացման պայմանագիր, ստորագրություն և անվտանգության սկան), այնուհետև խորհրդատվական AI ռիսկի վերանայում, և վերջում՝ պարտադիր մարդկային վերանայում AiHummer-ի թիմի կողմից։ Ոչ ավտոմատացումը, ոչ AI-ն երբեք ինքն իրեն merge չի անում — որոշումը միշտ maintainer-ինն է, և ոչինչ չի հասնում կատալոգ առանց նրա հաստատման։ Հրապարակված փլագինը, որը հետագայում հայտնաբերվում է որպես վնասակար կամ կոտրված, կարող է չեղարկվել և հանվել կատալոգից հաջորդ համաժամացման ժամանակ։
Համայնքային կատալոգը որպես լրացուցիչ աղբյուր
Հանրային փլագինները հրապարակվում են առանձին community-catalog.json-ում, որը
չի վերագրում կուրացված առաջին կողմի կատալոգը։ Instance-ն ավելացնում է այն որպես լրացուցիչ
աղբյուր Plugins → Sources-ում (կամ POST /v1/admin/modules/catalog/sources)։ Տես
Տեղադրում և թարմացումներ և
Ակնարկ և մակարդակներ։
Ո՞ւր հաջորդիվ
- Փլագինի SDK — manifest-ի դաշտերը և
aihummer pluginհրամանները։ - Տեղադրում և թարմացումներ — բազմ-աղբյուր, վստահության մոդելը, ստորագրված թարմացումներ, դասակարգում։
- Marketplace. ակնարկ և մակարդակներ — պաշտոնական ընդդեմ համայնքային registry-ի։