English · Русский
Каталог исполняемых .py-плагинов для движка auto-lzt.
Плагин — это код, который выполняется в процессе движка, с вашими токенами и вашими деньгами. Песочницы нет by design. Поэтому каталог владельческий: плагин ставит владелец стенда из меню бота /plugins, никогда через публичный API.
Не путайте с lzt-flows: там модули-графы, это данные, их публикует кто угодно. Здесь — код.
| Плагин | Версия | Что делает |
|---|---|---|
steam-autobuy |
1.0.0 | автопокупка Steam-аккаунтов: узлы steam.search и steam.fast_buy, бюджет и фильтры, dry_run включён по умолчанию |
LZT_FLOW_PLUGIN_INDEX_URL=https://raw.githubusercontent.com/open-lzt/lzt-plugins/main/plugins.json
LZT_FLOW_PLUGIN_INDEX_TOKEN=<github PAT> # только для приватного каталога, read-доступ repoДальше: бот читает plugins.json, скачивает source_url (zip), распаковывает в .system/plugins/<name>/. Рантайм подхватывает плагин на следующем рестарте, не сразу.
{
"schema_version": 1,
"plugins": [
{
"name": "steam-autobuy",
"version": "1.0.0",
"description": "Автопокупка Steam-аккаунтов: поиск с фильтрами и бюджетом + покупка (steam.search, steam.fast_buy). dry_run включён по умолчанию.",
"source_url": "https://raw.githubusercontent.com/open-lzt/lzt-plugins/main/dist/steam-autobuy.zip",
"requirements": []
}
]
}requirements — pip-пакеты, ставятся один раз при установке. Пусто, если хватает того, что движок уже несёт.
Лежит внутри плагина, рядом с кодом.
{
"schema_version": 1,
"name": "steam-autobuy",
"version": "1.0.0",
"description": "Автопокупка Steam-аккаунтов: узлы steam.search + steam.fast_buy (бюджет, dry_run).",
"entry": "plugin.py",
"requirements": []
}Точка входа обязана экспортировать PRE_INIT — список функций, которые движок вызывает при загрузке. POST_INIT и SHUTDOWN опциональны.
REGISTRATIONS = [
NodeRegistration(
node_type=NodeType(
key="steam.search",
category=NodeCategory.LOGIC,
input_schema=SteamSearchInput,
output_schema=SteamSearchOutput,
idempotent=True,
capabilities=frozenset({NodeCapability.MARKET_READ}),
),
impl=SteamSearchNode,
),
NodeRegistration(
node_type=NodeType(
key="steam.fast_buy",
category=NodeCategory.ACTION,
input_schema=SteamFastBuyInput,
output_schema=SteamFastBuyOutput,
idempotent=False,
capabilities=frozenset({NodeCapability.MARKET_MUTATE, NodeCapability.MONEY}),
),
impl=SteamFastBuyNode,
),
]
def _register(ctx: PluginLoadContext) -> PluginLoadedContext:
loaded = PluginLoadedContext()
loaded.nodes.extend(REGISTRATIONS)
return loaded
PRE_INIT = [_register]capabilities — что узел вправе делать. MONEY и MARKET_MUTATE означают реальные траты, idempotent=False — повтор не бесплатен. Схемы входа и выхода — Pydantic-модели.
Полный рабочий пример — plugins/steam-autobuy/plugin.py.
plugins/<name>/—plugin.py(экспортируетPRE_INIT) иmanifest.json.- Заархивировать файлы плагина в
dist/<name>.zip,plugin.py— в корне архива. - Дописать запись в
plugins.json:name,version,description,source_url,requirements.
CI, автоматической валидации, тестов и файла LICENSE. Проверка плагина — на владельце, который его ставит.
auto-lzt — движок · lzt-flows — модули-графы · весь стенд