Плагин 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 буйругун колдонуңуз — сиз таңгакталган, кол коюлган артефактты жүктөйсүз Менин плагиндерим жеке кабинетте (жүктөө → AI карап чыгуу → модерация). Караңыз Плагинди жөнөтүү.
| Буйрук | Бул эмне кылат |
|---|---|
init <kind> [dir] |
Баштапкы нерсени жазат manifest.json таңдалган түр үчүн. |
validate <m.json> |
Манисти уруксат менен орнотуу сыяктуу келишим менен текшерет. |
keygen |
Автордун ачкыч жуптарын түзөт: .key (жеке, купуя сакта) жана .pub, басып чыгарат key id. |
package <dir> |
Куралат (ык.) --build) жана салат <slug>-<version>.tar.gz билен --strip-components=1 жазууFormatting, жазат .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 |
жол | каналдар үчүн | Контракт ID, мисалы aihummer.channel.v1. |
scope |
жол | жок | Кирүү модели: shared (адаттагы) же personal. |
capabilities |
жол[] | жок | Жариятталган мүмкүнчүлүктөр. |
config |
объект[] | жок | Форма талааларын жөндөө; ар бирине муктаж key, плюс label, secret, required. |
oauth |
объект | жок | OAuth2 (authorize_url, token_url, scopes[]) колдонуучунун аккаунтун туташтыруу үчүн. |
signature |
жол | кол коюлган учурда | base64 ed25519 кол тамгасы чыгаруу идентификациясы боюнча (энбedded аркылуу sign). |
Типке мүнөздүү талаалар — такыр бир блок ошолорго жараша толтурулат kind:
| Дала | Мейиримдүү үчүн | Талап кылынат | Максат |
|---|---|---|---|
host_native.exec_start |
байланыштыргыч, кызмат | ооба | Узак мөөнөттүү кызматты иштеткен команда. |
host_native.runtime |
коннектор, кызмат, mcp | жок | node | python | binary. |
host_native.install |
коннектор, кызмат, mcp | жок | Орнотуу кадамдары (bash буйруктарынын массиви), чыгаруу процессинен кийин хостто иштетилет. |
host_native.port |
байланыштыргыч, кызмат | жок | Тандалган TCP порту (жайгаштыруучу кайра тааный алат аркылуу $PORT). |
host_native.health_path |
байланыштыргыч, кызмат | жок | Ден-соолукту текшерүү жолу (демейки) /healthz). |
openapi.spec_url |
ачыкAPI | ооба | OpenAPI 3.x спецификациясынын URL дареги. |
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 үчүн | MCP аяктагы URL. |
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 же a data: URI. |
screenshots |
жол[] | жок | Дүкөн-баракча скриншоттору (массив https:// URLдер; ар бири бош эмес). |
[!TIP] Жүр
aihummer plugin validateтапшыруудан мурун. Орнотуу жана текшерүү келишимдер бирдей, андыктан жергиликтүү деңгээлде кабыл алынган манифест экөө тең кабыл алынат соода аянтчасынын жайгаштыруучусу жана жеке кабинетиңиздеги соода аянтчасынын карап чыгышы аркылуу.
Минималдуу манифесттер
A 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 манIFEST (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) жана эки жол менен жарыяланган:
- Жеке (өзүң үчүн) — Админ UI аркылуу же анын экземплярына кошумча жүктөө
publish --private. Артефакт эч качан инстанциядан чыкпайт. - Жамаат (бардыгы үчүн) — таңгакталган, кол коюлган объектти жүктөө Менин плагиндерим жеке кабинетиңде; AI карап чыгуу жана адамдык модерациядан кийин ал кол коюлуп, коомчулукка жарыяланат каталог.
Көрүү Плагин жарыялоо толук жол көрсөтмө үчүн.
Кайда кийинки
- Плагин жарыялоо — жеке тараптан жүктөө жана жеке кабинети аркылуу коомдук басып чыгаруулар, көзөмөл жана модерация.
- Нөл коддуу интеграциялар — бул
openapiжанаmcpтүрлөрүн кенен түшүндүрүү. - Орнотуу жана жаңыртуулар — эмне түрткү берет
install[], саламаттык сактоо эшиги, ишеним жана кол коюлган жаңыртуулар. - Marketplace: кыскача маалымат жана катмарлар — кайда ар кандай түр кандай жашарын жана расмий каталог коомчулуктан кантип айырмаланарын.