会写 HTML,就会写插件。
插件本质上就是一个网页(HTML / CSS / JS)。写好网页后,在「宇宙核」内用插件打包器一键打包成 .cbplugin 文件,发给任何用户即可安装运行。
更快的路径:AI 一键生成——在 AI 对话里描述需求("做一个电子木鱼"),AI 直接产出可安装的插件。
插件可以是单文件,也可以是多文件目录(.cbplugin 本质是 zip 包):
my-plugin/
├── manifest.json // 插件清单(必需)
├── index.html // 入口页面(entry 指向它)
├── style.css // 可选资源
└── app.js // 可选脚本
{
"pluginId": "a3f8c1d2-9b4e-4f6a-8c5d-1e2f3a4b5c6d", // UUID v4 唯一标识(推荐系统自动生成)
"id": "mobi.reader", // 旧式短 ID(兼容)
"name": "MOBI 阅读器",
"version": "1.2.0",
"author": "YuzhouHe",
"description": "阅读 MOBI / AZW3 电子书",
"icon": "📖", // Emoji / 图片 URL / Base64
"entry": "index.html",
"permissions": ["file.read", "storage"],
"fileTypes": ["mobi", "azw3"] // 文件路由:外部文件按类型自动打开
}
| 字段 | 必填 | 说明 |
|---|---|---|
pluginId | ✓ | UUID v4 唯一标识,系统级防冲突;推荐让打包器自动生成 |
id | — | 旧式短 ID(如 mobi.reader),新插件建议省略,仅作兼容 |
name | ✓ | 插件显示名称(中文即可) |
version | ✓ | 语义化版本号,如 1.2.0 |
author | — | 作者名 |
description | — | 一句话功能说明,用于插件市场展示 |
icon | — | Emoji、图片 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 次/分钟,防滥用 |
| 路径隔离 | 插件只能读写自己的沙盒目录(路径穿越防护) |
| 权限中心 | permissions 声明 + 逐项授权,行为全程可审计 |
| JS 桥接 | 通过桥接 API 调用原生能力(存储 / 剪贴板 / 文件等),基础库由宿主自动注入 |
插件 ID 使用 UUID v4(122 位随机熵),碰撞概率可忽略不计——即使用户侧 ID 重复,也不会互相覆盖或误删。推荐由打包器自动生成;手动指定时请用完整 UUID 格式(8-4-4-4-12),打包器会做格式校验。
在「宇宙核」的 AI 对话中直接描述需求:
你 → 做一个电子木鱼,点击敲击,要带声音和动画
AI → ✅ 已生成插件「电子木鱼」,可一键安装运行
AI 生成的插件自动注入基础库(存储 / 剪贴板 / 深色模式适配),生成后即可在插件中心安装使用;不满意随时在编辑页让 AI 继续改。