pluginkit (s-pluginkit)
Кит ПЛАГИНОВ платформы китов: один владелец группы точек входа, общий механизм видов, реестр объявленного, доставка навыков и манифест их состава.
Родился волной 6 (Atlas #2717) выделением из шлюза gateway и из двух
китов-контрактов (socialkit, aichatkit).
Зачем
| До волны 6 | Что было не так |
|---|---|
Имя группы skillery.plugins — ДВА независимых литерала (socialkit.registry.PLUGIN_GROUP, adapterkit.registry.PLUGIN_ENTRY_POINT_GROUP) |
Совпадали только потому, что их правили руками синхронно. Расхождение молчаливое: навык доезжает туда, где его не ищут, — пустой перечень вместо ошибки |
| Механизм видов дублируется почти дословно у соцсетей и у чатов | Разбор, знающий про СОСТАВНОЙ вид (deep_research), и разбор, не знающий, отвечают разными сервисами на одно имя |
| Манифеста состава нет вовсе | Навыки живут ТОЛЬКО ссылками в окружении инструмента, а uv tool install --force сносит окружение целиком. Восстанавливать было не из чего |
| Механизма команд из точек входа нет | Навык приносил умение, но не приносил способа им воспользоваться |
| Совет печатает только тех, кого позвали | Исключённые кандидаты и причины не фигурируют в выводе вовсе — «навык молчит» и «навык не поставлен» неразличимы |
Состав
pluginkit.groups—PLUGIN_GROUP,COMMAND_GROUP.pluginkit.kinds—capability_id,service_of,identity_methods,method_of,resolve_method,uniformity_problems.pluginkit.registry— чтение реестра объявленного (метаданные, без импорта тел).pluginkit.discovery— поиск пакетов-навыков на диске по ихpyproject.toml.pluginkit.delivery— доставка навыков в окружение, добор спутников.pluginkit.manifest— состав на диске + план автодоустановки.pluginkit.commands— команды CLI из точек входа.pluginkit.roster— разбор кандидатов с причинами исключения.
Закон слоёв
pluginkit не импортирует НИ ОДИН другой кит экосистемы (включая corekit):
socialkit, aichatkit и adapterkit берут отсюда имя группы и механизм видов,
поэтому обратная зависимость завела бы цикл. Единственная внешняя зависимость —
packaging (канон имён дистрибутивов, PEP 503/508).
Манифест состава
from pluginkit import manifest
from pluginkit.discovery import discover_plugin_packages
manifest.record(discover_plugin_packages([Path("~/PROJECT/_storage").expanduser()]))
# ... переустановка продукта уносит окружение ...
пакеты, исчезли, беда = manifest.autoheal_plan()
Файл лежит ВНЕ окружения инструмента (%LOCALAPPDATA%/skillery/plugins.json или
$XDG_DATA_HOME/skillery/plugins.json); путь переопределяется переменной
PLUGINKIT_MANIFEST.
Metadata
Release files for s-pluginkit 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| s_pluginkit-0.1.0.tar.gz | 77.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| s_pluginkit-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 120.3 kB
Release files / s_pluginkit-0.1.0.tar.gz
| Download URL | s_pluginkit-0.1.0.tar.gz |
|---|---|
| Size | 77.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8a4afe5c7587c6ab30587dcf75d2fed9006dd32dfb68980d4f3691c712267ffd
|
|
BLAKE2b-256 checksum How to use checksums |
0510184d1d010c23644220fc66115754b9c5ba7e393610696079206b9e9b6f2b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / s_pluginkit-0.1.0-py3-none-any.whl
| Download URL | s_pluginkit-0.1.0-py3-none-any.whl |
|---|---|
| Size | 42.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7e9e4fafadde1d6e4586531c983de44346dcf12efe3d61ddbb91a6fbe925cd68
|
|
BLAKE2b-256 checksum How to use checksums |
0345e4311a91ae1ab67d785f149d5b58841e53cf688cac5a252ecb7bee71304a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|