IsolatedVmCodeModeTransport
この機能はベータ版です。API が安定するまでは、メジャーバージョンを上げずに破壊的変更が行われる可能性があります。
IsolatedVmCodeModeTransport クラスは、Code mode プログラムを isolated-vm を利用したプロセス内の V8 isolate で実行します。isolate が実行境界となるため、Workspace Sandbox は不要です。プログラムからファイルシステム、ネットワーク、プロセス、モジュールにはアクセスできません。利用できる機能は、ホスト上の実際の Tool を呼び出す external_* 関数だけです。
デフォルトの StdioCodeModeTransport と異なり、この Transport はプロセスを生成せず、一時ファイルも書き込みません。そのため、OS レベルのサンドボックスを利用できないサーバーレス環境やマルチテナントホストに適しています。
インストールインストールへの直接リンク
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/isolated-vm
pnpm add @mastra/isolated-vm
yarn add @mastra/isolated-vm
bun add @mastra/isolated-vm
isolated-vm はネイティブアドオンです。一般的なプラットフォーム向けのビルド済みバイナリが提供されているため、通常は追加のセットアップは必要ありません。対応するビルド済みバイナリがないプラットフォームではソースからのコンパイルに切り替わるため、その場合のみ C++ ツールチェーンが必要です。
Node.js 20 以降では、ホストプロセスを --no-node-snapshot フラグ付きで起動する必要があります。このフラグがないと、isolate の作成時にプロセスがクラッシュします。フラグが指定されていない場合、コンストラクターはエラーをスローします。サーバーの起動時にフラグを渡すか、NODE_OPTIONS で設定してください。
NODE_OPTIONS=--no-node-snapshot npm run dev
使用方法使用方法への直接リンク
Transport を createCodeMode() の第2引数として渡します。sandbox は不要です。
import { createCodeMode } from '@mastra/core/tools'
import { IsolatedVmCodeModeTransport } from '@mastra/isolated-vm'
const { tool, instructions } = createCodeMode(
{ tools: { getTopProducts, getProductRatings } },
new IsolatedVmCodeModeTransport({ memoryLimitMb: 128 }),
)
コンストラクターのパラメーターコンストラクターのパラメーターへの直接リンク
options?:
memoryLimitMb?:
動作の仕組み動作の仕組みへの直接リンク
実行のたびに、独自のヒープを持つ新しい isolate が作成されます。TypeScript はホスト上で esbuild によって除去され、その後プログラムが isolate 内で評価されます。各 external_* 呼び出しでは、双方向とも JSON 文字列として isolate の境界を越えるため、ホストオブジェクトへの参照がモデル作成のコードに漏れることはありません。許可リスト、Tool の検証、Request Context、トレースは、ほかの Transport と同様にすべてホスト上で実行されます。
createCodeMode() に設定した timeout は、非同期処理の停止と同期処理の無限ループの両方に適用されます。isolate は実行のたびに破棄されます。