打包與簽章 尚未發布
要讓人登入的 Mini App(請見登入)以已簽章的封裝交付:檔案打進一個 app.asar,加上一個 manifest.json,再加上 Micromeet 對兩者的簽章。Cowork 開啟 Mini App 時驗證簽章,頁面讀取每個檔案時再依簽章逐一比對;檔案被改過就關閉這個 Mini App。沒有簽章或簽章驗證不過的封裝,Cowork 不會開啟,並告訴使用者這個 Mini App 未經認證。
封裝的結構
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_code | 12 位數字,建置時間 YYMMDDHHmmss |
entry | app.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 外掛,每次建置後寫出封裝:
// 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 才需要伺服器網域;頁面請求別的介面不受它們限制。
- 把後端的位址告訴 Micromeet,例如
https://api.example.com:HTTPS、主機名稱、不帶路徑;每個 Mini App 最多 20 個。 - Micromeet 給你一個檔案:
https://api.example.com/micromeet-miniapp-<16 個字元>.txt,內容是一串 token。把它放在這個位址,用 HTTPS 回傳 200,不能轉址。 - Micromeet 取回這個檔案來驗證網域。檔案要一直留著:檔案不在了,這個網域就不再算數,登入也會停止。
- 在封裝裡寫上這些網域:
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 的規則自行檢查:
micromeet-miniapp verify miniapp-package # 檢查封裝
micromeet-miniapp verify miniapp-package --signed # 簽章之後:簽章能驗證通過同一個版本不能登記兩次:每次交出新的建置都要改 version。
交付
micromeet-miniapp zip miniapp-package # → ai.example.app-1.0.0.zip使用者在 Cowork 裡請 Agent 安裝這個 zip(miniapp_install)。Cowork 把每個版本放在各自的資料夾,舊版本在它的分頁關閉後刪除。已簽章的 Mini App 也可以放進 Extension 和技能的套件裡一起安裝;每次開啟,Cowork 都同樣驗證簽章。
| 上限 | |
|---|---|
app.asar | 512 MB;媒體放進 app.asar.unpacked/(unpackDir 或 unpack) |
app.asar.unpacked/ | 100,000 個檔案,8 GB |
相關
- 開發登入 Mini App 從登記到登入跑通
- 封裝規範 封裝必須符合的全部規則,以及誰檢查
- 登入 在 Mini App 裡讓使用者登入
- 概覽 Mini App SDK 的全部模組