跳至主要內容

SandboxProvider

SandboxProvider 是套件用來向 MastraEditor 註冊 Sandbox 的介面。Editor 會在 Workspace hydrate 時呼叫 createSandbox(config),並以已儲存 StorageWorkspaceRef Sandbox 配置的 provider id 作為查找鍵。

內置的 local Sandbox Provider 會自動註冊。外部 Provider(例如 E2B)則透過 MastraEditorConfig.sandboxes 提供。

使用範例
使用範例 的直接連結

src/mastra/index.ts
import { MastraEditor } from '@mastra/editor'
import { e2bSandboxProvider } from '@mastra/e2b'

new MastraEditor({
sandboxes: {
[e2bSandboxProvider.id]: e2bSandboxProvider,
},
})

屬性
屬性 的直接連結

id:

string
唯一的 Provider 標識符(例如 "local""e2b")。每個使用此 Provider 的已儲存 Workspace,其 StorageSandboxConfig.provider 都必須與此值相符。

name:

string
在 UI 顯示、方便使用者閱讀的名稱。

description?:

string
在 Workspace Sandbox 選擇器中顯示的簡短描述。

configSchema?:

Record<string, unknown>
描述 Provider 專屬配置的 JSON Schema。UI 會使用它呈現配置表單。

createSandbox:

(config: TConfig) => WorkspaceSandbox | Promise<WorkspaceSandbox>
從已儲存的配置建立執行階段 WorkspaceSandbox 實例。在 Workspace hydrate 時呼叫。

實作 Provider
實作 Provider 的直接連結

src/providers/my-sandbox.ts
import type { SandboxProvider, WorkspaceSandbox } from '@mastra/core/editor'

export const mySandboxProvider: SandboxProvider<{ apiKey: string }> = {
id: 'my-sandbox',
name: 'My Sandbox',
description: 'Cloud sandbox for command execution.',
configSchema: {
type: 'object',
required: ['apiKey'],
properties: {
apiKey: { type: 'string' },
},
},
async createSandbox(config): Promise<WorkspaceSandbox> {
return createMySandbox({ apiKey: config.apiKey })
},
}

註冊後,管理員可在 inline Workspace 配置或已儲存的 StorageWorkspaceRef 中引用此 Provider。