跳至主要內容

Studio 部署

Studio 是在瀏覽器中執行的 React 單頁應用程式(SPA),會連線至執行中的 Mastra 伺服器。

部署 Studio 主要有兩種方式:

  • Mastra platform 為你提供代管 Studio,並可透過連結與團隊共用存取權
  • 在自己的基礎架構上自行代管 Studio,可與 Mastra 伺服器一同部署,也能獨立部署為 SPA

本頁將說明如何在自己的基礎架構上部署 Studio。部署細節會依需求與設定而有很大差異,因此這裡著重介紹通用原則與可用選項。

快速開始
「快速開始」的直接連結

執行 Studio 最簡單的方式是使用 mastra studio 指令。

mastra dev 會同時執行 Studio 與開發用 API;mastra studio 則用來提供獨立的靜態 UI,並連線至已在執行的 Mastra 伺服器。因此如有需要,你可以讓 Studio 與 Mastra 伺服器分開,獨立部署。

開啟終端機並全域安裝 mastra CLI:

npm install -g mastra

執行 mastra studio 指令:

mastra studio

在瀏覽器中開啟 localhost:3000 即可查看 Studio UI。預設會嘗試連線至在 http://localhost:4111 執行的 Mastra 伺服器。若找不到伺服器,畫面會顯示表單,讓你輸入 Mastra 執行個體 URL 與 API 前綴。

此指令使用 Node 內建的 http 模組與 serve-handler 提供靜態檔案。

備註

若將 Studio 代管於子路徑下(例如在 Nginx 後方的 /agents),請先設定 MASTRA_STUDIO_BASE_PATH 再啟動 Studio:

MASTRA_STUDIO_BASE_PATH=/agents mastra studio

這會更新 HTML 基底 URL 與靜態資產路由,讓獨立 Studio 能在該子路徑下正常運作。

Mastra platform
「Mastra platform」的直接連結

如需 Mastra platform 上的代管 Studio,請參閱 Mastra platform 上的 Studio。

執行伺服器
「執行伺服器」的直接連結

將 mastra studio 作為長時間執行的處理程序,與執行其他 Node.js 服務沒有不同。部署的所有最佳實務、工具與選項也同樣適用。你可以使用 PM2 等處理程序管理工具、Docker,或支援 Node.js 應用程式的雲端服務。如同任何 Web 服務,你必須確保 CORS 設定正確並監控錯誤。

警告

Studio 連線至 Mastra 伺服器後,便能完整存取 Agent、Workflow 和 Tool。請務必在正式環境中妥善保護(例如置於驗證機制或 VPN 後方),防止未經授權的存取。

詳情請參閱驗證文件。

與 API 一同部署
「與 API 一同部署」的直接連結

你也可以讓 Studio 與 Mastra 伺服器一同提供服務,只需部署及管理單一服務。

若要這麼做,請使用 --studio 旗標執行 mastra build:

mastra build --studio

此指令會建立 .mastra/output/studio 資料夾,其中包含建置完成的 Studio 資產。定義 MASTRA_STUDIO_PATH 環境變數後,Mastra 伺服器也能提供 Studio UI。

MASTRA_STUDIO_PATH=.mastra/output/studio node .mastra/output/index.mjs

使用 CDN
「使用 CDN」的直接連結

自動部署
「自動部署」的直接連結

部分雲端 Provider提供將 Studio 與無伺服器函式一同部署的選項。目前支援的 Provider 為:

手動部署
「手動部署」的直接連結

你無法直接將建置完成的 Studio 資產部署至 CDN,因為 UI 依賴部分執行階段設定。只要進行一些額外設定,即可從建置資產建立獨立 SPA,並部署至任何靜態代管服務。

依照以下範例使用 Vite 建立 SPA。

  1. 建立新資料夾並初始化 Node.js 專案:

    mkdir studio-spa
    cd studio-spa
    npm init
  2. 安裝 vite 與 mastra 相依套件:

    npm install vite mastra
  3. 在 package.json 中加入建置指令碼:

    package.json
    {
    "scripts": {
    "build": "vite build"
    }
    }
  4. 建立預留位置 index.html 檔案:

    index.html
    <!doctype html>
    <html>
    <head></head>
    <body></body>
    </html>
  5. 建立 vite.config.js 檔案。此檔案會將建置完成的 Studio 資產複製至 dist 資料夾,並以環境變數值取代 HTML 中的 %%PLACEHOLDER%% 值。

    vite.config.js
    import { defineConfig, loadEnv } from 'vite'
    import { readFileSync, cpSync, writeFileSync } from 'node:fs'
    import { resolve, join } from 'node:path'

    const studioDir = resolve(import.meta.dirname, 'node_modules/mastra/dist/studio')

    export default defineConfig(({ mode }) => {
    const env = loadEnv(mode, process.cwd(), 'MASTRA_')

    return {
    plugins: [
    {
    name: 'mastra-studio',
    closeBundle() {
    const outDir = resolve(import.meta.dirname, 'dist')
    cpSync(studioDir, outDir, { recursive: true })

    const indexPath = join(outDir, 'index.html')
    const html = readFileSync(indexPath, 'utf-8')
    writeFileSync(
    indexPath,
    html.replaceAll(/%%(\w+)%%/g, (_, key) => env[key] ?? ''),
    )
    },
    },
    ],
    build: {
    emptyOutDir: true,
    },
    }
    })
  6. 建立含有必要環境變數的 .env 檔案。

    .env
    MASTRA_SERVER_HOST=localhost
    MASTRA_SERVER_PORT=4111
    MASTRA_SERVER_PROTOCOL=http
    MASTRA_API_PREFIX=/api
    MASTRA_HIDE_CLOUD_CTA=false
    MASTRA_CLOUD_API_ENDPOINT=
    MASTRA_EXPERIMENTAL_FEATURES=false
    MASTRA_TEMPLATES=false
    MASTRA_TELEMETRY_DISABLED=true
    MASTRA_REQUEST_CONTEXT_PRESETS=
    MASTRA_THEME_TOGGLE=false
    MASTRA_EXPERIMENTAL_UI=false
    MASTRA_STUDIO_BASE_PATH=
  7. 執行建置指令碼,在 dist 資料夾中產生靜態檔案:

    npm run build
  8. 將代管 Provider 指向 dist 資料夾並進行部署!