跳到正文

适用版本:Cowork 0.1.46 · 适用于所有 Cowork 用户

查看 Markdown

打包与签名 尚未发布 ​

要登录用户的 Mini App(见登录)以签名包交付:文件打进一个 app.asar,加一个 manifest.json,再加上 Micromeet 对两者的签名。Cowork 打开 Mini App 时验签名,页面读每个文件时再按签名逐个比对;文件被改过就关闭这个 Mini App。没有签名或签名验不过的包,Cowork 不会打开,并告诉用户这个 Mini App 未经认证。

包的结构 ​

text
manifest.json         { appId, name, version, version_code, entry, asar, domains, asarHeaderSha256, signature }
app.asar              构建出的页面、脚本和样式,每个文件的 SHA-256 摘要记在它的文件头里
app.asar.unpacked/    大的媒体文件(视频、音频),放在 app.asar 外面;摘要仍在它的文件头里
INSTALL.md            可选:给安装它的 Agent 的步骤
字段说明
appId小写反向域名,如 ai.example.app;Micromeet 登记这个 Mini App 时给出
name字符串,或 { zh, en };1–60 个字符
version字母、数字、.、+、-;最多 32 个
version_code12 位数字,构建时间 YYMMDDHHmmss
entryapp.asar 里的入口页面;默认 index.html
domains页面要请求的服务器域名;由插件的 domains 选项写入(见下面的「服务器域名」)
asarHeaderSha256 · signature由下面的工具写入;不要手改

Cowork 从 miniapp://<appId>/ 提供页面,内容策略是 script-src 'self':脚本都要放在文件里(不能有内联 <script>),/assets/app.js 这样的绝对路径可以用。签名的 Mini App 在每个 Cowork 账号下各有一份存储,一个人看不到另一个人存的东西。

构建 ​

@micromeet-ai/miniapp-sdk(在 Micromeet 的 GitLab 包仓库;访问权限请找 Micromeet)提供一个 Vite 插件,每次构建后写出包:

js
// vite.config.js
import { defineConfig } from 'vite';
import { miniapp } from '@micromeet-ai/miniapp-sdk/vite';

export default defineConfig({
  plugins: [miniapp({ appId: 'ai.example.app', name: { en: 'Example', zh: '示例' }, unpackDir: 'media' })]
});

vite build 之后会写出 miniapp-package/,版本取自 package.json。名为 .DS_Store、__MACOSX、.git、node_modules 的文件不会打进去。不用 Vite 时,micromeet-miniapp pack --src dist --out miniapp-package --app-id … --name … --version … 做同样的事。

服务器域名 ​

Mini App 要和它自己的后端一起完成登录:页面把一次性 code 发给后端(见登录)。后端的地址就是 Mini App 的服务器域名;没有验证过的服务器域名的版本,不能登录任何人。只有要用 Micromeet 登录的 Mini App 才需要服务器域名;页面请求别的接口不受它们限制。

  1. 把后端的地址告诉 Micromeet,如 https://api.example.com:HTTPS、主机名、不带路径;每个 Mini App 最多 20 个。
  2. Micromeet 给你一个文件:https://api.example.com/micromeet-miniapp-<16 个字符>.txt,内容是一串 token。把它放在这个地址,用 HTTPS 返回 200,不能跳转。
  3. Micromeet 取回这个文件来验证域名。文件要一直留着:文件不在了,这个域名就不再算数,登录也会停止。
  4. 在包里写上这些域名:
js
miniapp({ appId: 'ai.example.app', name: { en: 'Example' }, domains: ['https://api.example.com'] })

不用 Vite 时:micromeet-miniapp pack … --domain https://api.example.com。域名随版本一起签名,所以改了域名就是一个新版本。开发时,http://localhost:<端口> 或 http://127.0.0.1:<端口> 在 Micromeet 允许的环境里不用放文件。

交给 Micromeet 签名 ​

每个版本由 Micromeet 登记并签名:Micromeet 自己的 Core 读 app.asar,逐个文件核对摘要,再对文件头签名;签名写进 manifest.json。交出包之前,先按 Cowork 和 Micromeet 的规则自查:

bash
micromeet-miniapp verify miniapp-package            # 检查包
micromeet-miniapp verify miniapp-package --signed   # 签名之后:签名能验过

同一个版本不能登记两次:每次交出新的构建都要改 version。

交付 ​

bash
micromeet-miniapp zip miniapp-package    # → ai.example.app-1.0.0.zip

用户在 Cowork 里让 Agent 安装这个 zip(miniapp_install)。Cowork 把每个版本放在自己的文件夹里,旧版本在它的标签页关掉后删除。签名的 Mini App 也可以放进扩展和技能的包里一起装;每次打开,Cowork 都同样验签名。

上限
app.asar512 MB;媒体放进 app.asar.unpacked/(unpackDir 或 unpack)
app.asar.unpacked/100,000 个文件,8 GB

相关 ​

适用于 Micromeet Cowork 0.1.41 · build 261111110020