首页/开发者文档/示例代码

示例代码

插件开发最小可运行示例:存储、加密、消息

示例代码

最小插件

<!-- index.html -->
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>我的插件</title></head>
<body>
  <h1 id="title">你好,宇宙核</h1>
  <button onclick="save()">保存</button>
  <button onclick="load()">读取</button>
  <script>
    const KEY = 'greeting';
    async function save() {
      await window.toolbox.storage.set(KEY, 'Hello from plugin!');
    }
    async function load() {
      const v = await window.toolbox.storage.get(KEY);
      document.getElementById('title').textContent = v || '(空)';
    }
  </script>
</body>
</html>

加密数据存储(宿主加密通道)

// storage.* 走宿主加密通道,落盘为密文(Keystore 密钥保护)
async function storageSetItem(key, value) {
  await window.toolbox.storage.set(key, value);
}
async function storageGetItem(key) {
  return await window.toolbox.storage.get(key);
}

// 保存加密数据
await storageSetItem('dataBlob', JSON.stringify({ payload: '机密' }));
// 读取
const encrypted = await storageGetItem('dataBlob');

改密自愈(重包装数据密钥)

// 安全中心改密后:宿主下发 oldKey,插件用它解旧密文 → 新 key 重加密
const key = await window.toolbox.getKey();
const oldKey = await window.toolbox.getOldKey();
if (oldKey) {
  const plain = decryptWith(oldKey, await loadCiphertext());
  await saveCiphertext(encryptWith(key, plain));
}

完整开发流程

  1. 新建目录,编写 manifest.json + index.html
  2. 本地调试(浏览器直开即可,toolbox 缺失时用 Mock)
  3. 用「插件打包器」打包为 .cbplugin
  4. 在 App 中导入安装 → 权限管理中授权
MATRIX MODE: ON — 再输入一次或按 ESC 退出