小程序概览
小程序是直接在 AISCouncil 平台内运行的沙箱 Web 应用程序。它们使用自定义功能扩展平台 —— 从设备同步工具到可视化页面构建器 —— 同时在安全的、权限控制的环境中运行。
什么是小程序?
小程序是一个标准的 HTML/CSS/JS Web 应用程序,在平台内的沙箱 iframe 中运行。用户不是导航到单独的网站,而是从侧边栏中的应用部分启动小程序。应用程序替换聊天区域,并通过 window.ais SDK 访问平台 API。
小程序可以:
- 读取和发送聊天消息以与 AI 模型交互
- 本地存储数据,具有每应用隔离存储
- 访问机器人配置以了解哪个模型处于活动状态
- 显示通知和对话框通过平台 UI
- 读取用户信息进行个性化
- 注册钩子以扩展平台行为
它们如何工作
+---------------------------+
| AISCouncil |
| (host page) |
| |
| +---------------------+ |
| | Sandboxed iframe | |
| | (null origin) | |
| | | |
| | window.ais SDK | |
| | | | |
| +---|------------------+ |
| | postMessage |
| v |
| Message Bridge |
| (permission check) |
| (method dispatch) |
+---------------------------+
-
SDK 注入 —— 当小程序启动时,平台创建沙箱 iframe 并在您的应用代码之前注入
window.aisSDK(约 2 KB)作为<script>前言。 -
postMessage 桥接 —— 每个 SDK 调用(
ais.storage.get(),ais.chat.send()等)向宿主页发送postMessage。宿主验证调用应用的权限并将请求分派到适当的平台模块。 -
响应 —— 结果通过
postMessage发送回 iframe,SDK 在那里解析相应的 Promise。
安全模型
小程序在严格的安全沙箱中运行:
| 保护 | 如何实现 |
|---|---|
| 空来源 | sandbox="allow-scripts allow-forms" —— 没有 allow-same-origin,所以 iframe 获得空来源 |
| 无父 DOM 访问 | 无法读取或修改宿主页的 DOM、localStorage 或 cookie |
| 无法对宿主来源进行网络访问 | 无法向 aiscouncil.net 发起同源请求 |
| 权限门控 API** | 存储之外的每个 SDK 方法都需要用户明确授予权限 |
| 每应用存储隔离 | 存储键带有 mp:{app-name}: 前缀 —— 应用无法读取彼此的数据 |
| 内容寻址缓存 | 入口 HTML 在安装时获取并缓存,而不是每次启动时从网络加载 |
小程序仍然可以向外部来源发起网络请求(它们自己的 CDN、第三方 API 等),因为 allow-scripts 允许 fetch() 和 XMLHttpRequest。network:fetch 权限用于未来通过平台代理的请求,而不是限制出站网络访问。
权限对话框
当用户安装小程序时,权限对话框显示应用名称、描述和它请求的权限列表。用户必须在安装继续之前批准。仅请求 storage(始终允许)的应用仍会显示对话框以保持透明。
与其他平台的比较
| 功能 | aiscouncil 小程序 | WeChat 小程序 | Chrome 扩展 | PWA |
|---|---|---|---|---|
| 运行时 | 沙箱 iframe | 自定义 WebView | 隔离世界 + service worker | 完整浏览器标签页 |
| 最大大小 | 5 MB (HTML) / 50 MB (包) | 2-20 MB | 无硬性限制 | 无限制 |
| 需要审查 | 否(直接安装) | 是(强制) | 是(Chrome Web Store) | 否 |
| 离线支持 | 是(安装时缓存) | 是 | 是 | 是(Service Worker) |
| 平台 API | window.ais SDK | wx API | chrome API | 仅 Web API |
| 安全模型 | 空来源 iframe | 自定义沙箱 | 内容安全策略 | 同源 |
| 分发 | URL、文件上传、注册表 | 仅 WeChat Store | Chrome Web Store | 仅 URL |
查找和安装应用
从应用商店
- 点击左侧边栏中的应用图标(或移动端页眉中的应用网格图标)
- 浏览应用面板底部的应用商店部分
- 点击任何应用卡片上的安装
- 在对话框中查看权限并点击允许
通过 URL(侧载)
- 在应用面板中,找到侧载部分
- 将清单 URL 粘贴到文本字段中
- 点击安装
- 查看权限并批准
通过文件上传
- 在应用面板中,点击上传应用
- 选择
.html文件(单文件应用)或.ais包(ZIP 存档) - 查看权限并批准
请参阅侧载应用获取所有安装方法的完整详情。
启动和关闭应用
启动: 点击任何已安装应用卡片上的打开按钮。应用替换聊天区域并接管主内容面板。
关闭: 应用可以通过调用 ais.close() 自行关闭,或者用户可以点击应用标题栏中的 X 按钮返回聊天视图。
当应用关闭时:
- iframe 被销毁,其消息处理程序被删除
- 聊天区域恢复
- 应用中任何未保存的状态丢失(应用应使用
ais.storage持久化数据)
内置应用
平台附带两个内置小程序:
设备同步
在设备之间同步配置文件、API 密钥和设置。支持三种传输方式:
- 局域网同步 —— 同一网络上设备之间的直接连接
- 二维码 —— 扫描代码配对设备
- 互联网中继 —— 通过 API 进行 WebRTC 信令,用于不同网络上的设备
权限:storage, config:read, auth:read, ui:toast, secrets:sync
应用构建器
使用 AI 内容生成可视化构建网页。选择模板,使用活动 AI 模型编辑部分,并导出为 URL 或 HTML 文件。使用自定义 slug 直接发布到 bcz.co。
权限:storage, chat:read, chat:write, ui:toast, auth:read, pages:publish
下一步
- SDK 参考 ——
window.ais的完整 API 文档 - 教程:构建您的第一个应用 —— 创建小程序的分步指南
- 清单参考 ——
manifest.json的架构文档 - 侧载应用 —— 从 URL、文件和包安装应用
- 发布到注册表 —— 将您的应用分发给社区