> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-HK/llms.txt # IsolatedVmCodeModeTransport > **Beta:** 此功能目前處於 beta 階段。在 API 穩定之前,即使主版本號未有提升,也可能出現破壞性變更。 `IsolatedVmCodeModeTransport` 類別會在進程內的 V8 isolate 中執行 [Code mode](https://mastra.zisheng.pro/zh-HK/docs/agents/code-mode) 程式,並由 [isolated-vm](https://github.com/laverdet/isolated-vm) 提供支援。isolate 是執行邊界,因此毋須 Workspace Sandbox:程式無法存取檔案系統、網絡、進程或模組。它唯一具備的功能是 `external_*` 函式,這些函式會回呼主機上的實際 Tools。 與預設的 `StdioCodeModeTransport` 相比,此 Transport 不會產生進程或寫入暫存檔案,因此非常適合無法使用作業系統層級 Sandbox 的無伺服器及多租戶主機。 ## 安裝 **npm**: ```bash npm install @mastra/isolated-vm ``` **pnpm**: ```bash pnpm add @mastra/isolated-vm ``` **Yarn**: ```bash yarn add @mastra/isolated-vm ``` **Bun**: ```bash bun add @mastra/isolated-vm ``` `isolated-vm` 是原生附加元件。它為常見平台提供預先建置的二進制檔案,因此安裝時通常毋須額外設定。只有在平台沒有相符的預先建置版本、需要改為從源碼編譯時,才需要 C++ 工具鏈。 在 Node.js 20 或之後的版本,必須使用 `--no-node-snapshot` 旗標啟動主機進程,否則建立 isolate 會令進程崩潰。如果缺少此旗標,建構函式會拋出錯誤。啟動伺服器時傳入此旗標,或透過 `NODE_OPTIONS` 設定: ```bash NODE_OPTIONS=--no-node-snapshot npm run dev ``` ## 用法 將 Transport 作為第二個引數傳入 `createCodeMode()`。毋須 `sandbox`: ```typescript import { createCodeMode } from '@mastra/core/tools' import { IsolatedVmCodeModeTransport } from '@mastra/isolated-vm' const { tool, instructions } = createCodeMode( { tools: { getTopProducts, getProductRatings } }, new IsolatedVmCodeModeTransport({ memoryLimitMb: 128 }), ) ``` ## 建構函式參數 **options** (`IsolatedVmCodeModeTransportOptions`): isolate 的設定。 **options.memoryLimitMb** (`number`): V8 isolate 的堆積記憶體上限(以 MiB 為單位)。超出上限的程式會被終止,而 Tool 會傳回錯誤結果。 ## 運作方式 每次執行都會建立一個擁有獨立堆積記憶體的新 isolate。主機會使用 esbuild 移除 TypeScript 語法,然後在 isolate 內評估程式。每次 `external_*` 呼叫都會以雙向 JSON 字串跨越 isolate 邊界,因此主機物件的參考不會洩漏至模型編寫的代碼中。允許清單、Tool 驗證、請求內容及追蹤全部都在主機上執行,與其他 Transport 相同。 在 `createCodeMode()` 設定的 `timeout` 同時適用於非同步停滯及同步無限循環,而 isolate 會在每次執行後釋放。 ## 相關內容 - [Code mode](https://mastra.zisheng.pro/zh-HK/docs/agents/code-mode) - [createCodeMode() 參考](https://mastra.zisheng.pro/zh-HK/reference/tools/create-code-mode)