createCodeMode()
추가된 항목: @mastra/core@1.38.0
createCodeMode() 함수는 Agent가 여러 Tool을 사용하는 계산을 하나의 TypeScript 함수로 실행할 수 있도록 Tool과 생성된 지침을 반환합니다. 생성된 코드는 Workspace Sandbox에서 실행되며, 각 external_* 호출은 유효성 검사, 요청 컨텍스트 및 Tracing을 거쳐 호스트에서 실제 Tool을 실행합니다.
개념적 개요는 다음을 참조하세요.Code mode.
사용예사용예에 대한 직접 링크
코드 모드 Tool을 만들고, 생성된 지침을 Agent에 추가하고, 반환된 Tool을 동일한 ID로 등록합니다.
src/mastra/agents/shop-agent.ts
import { Agent } from '@mastra/core/agent'
import { createCodeMode, createTool } from '@mastra/core/tools'
import { LocalSandbox } from '@mastra/core/workspace'
import { z } from 'zod'
const getTopProducts = createTool({
id: 'getTopProducts',
description: 'Get top selling products',
inputSchema: z.object({ limit: z.number() }),
outputSchema: z.object({
products: z.array(z.object({ id: z.string(), name: z.string(), totalSales: z.number() })),
}),
execute: async ({ limit }) => fetchTopProducts(limit),
})
const getProductRatings = createTool({
id: 'getProductRatings',
description: 'Get ratings for a product',
inputSchema: z.object({ productId: z.string() }),
outputSchema: z.object({ ratings: z.array(z.object({ score: z.number() })) }),
execute: async ({ productId }) => fetchRatings(productId),
})
const { tool, instructions } = createCodeMode({
tools: { getTopProducts, getProductRatings },
sandbox: new LocalSandbox(),
})
export const shopAgent = new Agent({
id: 'shop-assistant',
name: 'shop-assistant',
instructions: ['You are a helpful shopping assistant.', instructions],
model: 'openai/gpt-5.6-sol',
tools: { execute_typescript: tool },
})
매개변수매개변수에 대한 직접 링크
config:
CodeModeConfig
코드 모드 Tool 및 생성되는 지침의 구성입니다.
CodeModeConfig
tools:
ToolsInput
생성된 코드에
external_<id> 함수로 노출되는 Tool입니다. 이 Tool만 호출할 수 있습니다.sandbox?:
WorkspaceSandbox
생성된 코드를 실행하는 데 사용되는 Sandbox입니다. Agent가 Sandbox를 제공하는 Workspace에서 실행되거나 전송 계층이 자체 실행 경계(예:
IsolatedVmCodeModeTransport)를 제공하지 않는 한 필수입니다. 호스트에서 명시적으로 실행하려면 new LocalSandbox()를 전달하세요.timeout?:
number
실행 제한 시간(밀리초)입니다.
id?:
string
생성되는 Tool ID입니다.
transport?:
CodeModeTransport
Sandbox에서 생성된 코드를 실행하는 데 사용할 선택적 전송 구현입니다. 기본 전송은 Workspace Sandbox 프로세스 API를 통해 stdio JSON-RPC를 사용합니다.
requiresSandbox: false를 선언하는 전송(예: IsolatedVmCodeModeTransport)은 Sandbox 없이 실행됩니다.보고보고에 대한 직접 링크
다음을 반환합니다.CodeModeResult object.
tool:
Tool<any, any>
생성된 코드 모드 Tool입니다. 기본 ID는
execute_typescript입니다.instructions:
string
구성된 Tool에 대한 형식 지정된
external_* 선언이 포함된 생성된 Model 지침입니다.코드모드Tool결과코드모드Tool결과에 대한 직접 링크
생성된 Tool은CodeModeToolResult.
success:
boolean
생성된 코드가 예외를 발생시키지 않고 완료될 때까지 실행되었는지 여부입니다.
result?:
unknown
생성된 코드가 반환한 값입니다.
logs?:
string[]
console.log, console.info, console.warn, console.error에서 캡처한 콘솔 출력을 순서대로 나열합니다.error?:
{ message: string; name?: string; line?: number }
생성된 코드가 예외를 발생시키거나 실행에 실패한 경우의 오류 세부 정보입니다.
{ message: string; name?: string; line?: number }
message:
string
오류 메시지입니다.
name?:
string
사용 가능한 경우 오류 이름입니다.
line?:
number
사용 가능한 경우 실패와 관련된 줄 번호입니다.
검사 지침검사 지침에 대한 직접 링크
Tool 집합에 대해 생성되는 정확한 Prompt 내용을 확인하려면 createCodeModeInstructions()를 사용하세요.
src/mastra/tools/code-mode-instructions.ts
import { createCodeModeInstructions } from '@mastra/core/tools'
console.log(
createCodeModeInstructions({
tools: { getTopProducts, getProductRatings },
}),
)
지침에는 사용 계약과 구성된 각 Tool에 대해 형식이 지정된 declare function external_<id>(...) 줄이 포함됩니다. Tool ID는 유효한 TypeScript 함수 이름으로 정리되며, 정리된 이름이 충돌하면 오류가 발생합니다.
createCodeModeTool()createCodeModeTool()에 대한 직접 링크
Tool만 필요하고 지침을 별도로 관리하려면 createCodeModeTool()을 사용하세요. 대부분의 Agent는 Tool과 일치하는 지침을 함께 유지할 수 있도록 createCodeMode()을 사용해야 합니다.
src/mastra/tools/code-mode-tool.ts
import { createCodeModeTool } from '@mastra/core/tools'
import { LocalSandbox } from '@mastra/core/workspace'
export const codeModeTool = createCodeModeTool({
tools: { getTopProducts, getProductRatings },
sandbox: new LocalSandbox(),
})