跳到正文

適用版本: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 也可以放進 Extension 和技能的套件裡一起安裝;每次開啟,Cowork 都同樣驗證簽章。

上限
app.asar512 MB;媒體放進 app.asar.unpacked/(unpackDir 或 unpack)
app.asar.unpacked/100,000 個檔案,8 GB

相關 ​

適用於 Micromeet Cowork 0.1.41 · build 261111110020