> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ko/llms.txt # 격리된Vm코드모드전송 :::실험적 이 기능은 베타 버전입니다. API가 안정될 때까지 주요 버전 변경 없이 주요 변경 사항이 발생할 수 있습니다. ::: `IsolatedVmCodeModeTransport` 클래스는 [Code mode](https://mastra.zisheng.pro/ko/docs/agents/code-mode) 프로그램을 [isolated-vm](https://github.com/laverdet/isolated-vm)이 지원하는 프로세스 내 V8 isolate에서 실행합니다. isolate 자체가 실행 경계이므로 Workspace Sandbox가 필요하지 않습니다. 프로그램은 파일 시스템, 네트워크, 프로세스 또는 모듈에 액세스할 수 없습니다. 유일한 기능은 호스트의 실제 Tool을 다시 호출하는 `external_*` 함수입니다. 기본 `StdioCodeModeTransport`와 달리 이 transport는 프로세스를 생성하거나 임시 파일을 쓰지 않으므로 OS 수준의 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를 생성합니다. TypeScript는 esbuild를 사용해 호스트에서 제거된 후 프로그램이 isolate 내에서 평가됩니다. 모든 `external_*` 호출은 양방향으로 JSON 문자열을 사용해 isolate 경계를 통과하므로, 호스트 객체 참조가 Model이 작성한 코드로 유출되지 않습니다. 허용 목록, Tool 검증, 요청 컨텍스트, tracing은 다른 transport와 마찬가지로 모두 호스트에서 실행됩니다. `createCodeMode()`에 구성된 `timeout`은 비동기 중단과 동기 무한 루프 모두에 적용되며, isolate는 실행할 때마다 폐기됩니다. ## 관련된 - [코드 모드](https://mastra.zisheng.pro/ko/docs/agents/code-mode) - [createCodeMode() 참조](https://mastra.zisheng.pro/ko/reference/tools/create-code-mode)