Умеете HTML? Умеете создавать плагины.
Плагин — это по сути веб-страница (HTML / CSS / JS). Напишите страницу и упакуйте её упаковщиком плагинов внутри CosmosBox в файл .cbplugin — отправьте любому, и он установится и заработает.
Более быстрый путь: генерация ИИ в один клик — опишите потребность в ИИ-чате ("сделай цифровую деревянную рыбу"), и ИИ создаст устанавливаемый плагин.
Плагин может быть одним файлом или каталогом из нескольких файлов (.cbplugin — по сути zip-пакет):
my-plugin/
├── manifest.json // манифест плагина (обязательно)
├── index.html // входная страница (entry указывает на неё)
├── style.css // опциональные ресурсы
└── app.js // опциональные скрипты{
"pluginId": "a3f8c1d2-9b4e-4f6a-8c5d-1e2f3a4b5c6d", // уникальный ID UUID v4 (генерируется упаковщиком)
"id": "mobi.reader", // старый короткий ID (совместимость)
"name": "MOBI Reader",
"version": "1.2.0",
"author": "YuzhouHe",
"description": "Читает электронные книги MOBI / AZW3",
"icon": "📖", // Эмодзи / URL изображения / Base64
"entry": "index.html",
"permissions": ["file.read", "storage"],
"fileTypes": ["mobi", "azw3"] // файловая маршрутизация: автоматическое открытие по типу
}| Поле | Обязательно | Описание |
|---|---|---|
pluginId | ✓ | Уникальный ID UUID v4, защита от коллизий на уровне системы; рекомендуется автогенерация упаковщиком |
id | — | Старый короткий ID (например, mobi.reader); для новых плагинов опускайте — только совместимость |
name | ✓ | Отображаемое имя плагина |
version | ✓ | Семантическая версия, например 1.2.0 |
author | — | Имя автора |
description | — | Описание в одну строку для маркета плагинов |
icon | — | Эмодзи, URL изображения или изображение Base64 |
entry | ✓ | Относительный путь входного файла (обычно index.html) |
permissions | ✓ | Декларация разрешений (например, file.read / storage), выдаются по одному в центре разрешений |
fileTypes | — | Декларируемые расширения файлов для файловой маршрутизации (автооткрытие извне) |
.cbplugin; платные/приватные → .encplugin (шифрование AES + двойное подтверждение пароля)pack_plugins.ps1 — запустите его после правок, чтобы пересобрать все .cbplugin (автоматически пропускает .git / node_modules / build)..cbplugin | .encplugin | |
|---|---|---|
| Назначение | Публичная раздача | Платная / приватная раздача |
| Содержимое | Открытый zip | Шифрование AES |
| Импорт | Установка напрямую | Ввод пароля (автодиалог при внешнем открытии) |
⚠️ Пароли зашифрованных плагинов невосстановимы — потеря пароля означает, что плагин никогда не удастся расшифровать. Храните их бережно.
Плагины работают в изолированном WebView — открытость и безопасность одновременно:
| Механизм | Описание |
|---|---|
| Внедрение заголовков CSP | Meta-тег + HTTP-заголовок, двойной путь; ограничивает загрузку внешних скриптов |
| Отключение eval / Function | Полное покрытие Object.defineProperty, запрет динамического кода |
| Лимит сети | Сетевые запросы плагинов ограничены 60/мин против злоупотреблений |
| Изоляция путей | Плагины читают/пишут только свой каталог песочницы (защита от path traversal) |
| Центр разрешений | Декларации permissions + выдача по одному, каждое действие проверяемо |
| JS-мост | Нативные возможности через мост API (хранилище / буфер обмена / файлы…), базовая библиотека внедряется хостом |
ID плагинов используют UUID v4 (122 бита случайной энтропии) — коллизии практически невозможны, поэтому дублирующиеся пользовательские ID никогда не перезаписывают и не удаляют друг друга. Рекомендуется автогенерация упаковщиком; при ручном задании используйте полный формат UUID (8-4-4-4-12) — упаковщик проверит формат.
Опишите потребность прямо в ИИ-чате CosmosBox:
Вы → Сделай цифровую деревянную рыбу; по нажатию — звук с анимацией
ИИ → ✅ Плагин «Цифровая деревянная рыба» создан — установка и запуск в один кликПлагины, созданные ИИ, автоматически получают базовую библиотеку (хранилище / буфер обмена / адаптация тёмной темы) и сразу устанавливаются из центра плагинов; не нравится — попросите ИИ продолжить правки на странице редактирования.