MastraBrowser 클래스
그만큼MastraBrowser클래스는 브라우저 자동화 공급자의 추상 기본 클래스입니다. 공통 인터페이스에는 브라우저 시작 및 스레드 격리, 스크린캐스트 스트리밍 및 입력 이벤트가 포함됩니다.
MastraBrowser를 직접 인스턴스화하지 마세요. 대신 Provider 구현을 사용하세요.
AgentBrowser: 참조를 사용한 결정적 브라우저 자동화StagehandBrowser: 자연어를 활용한 AI 기반 브라우저 자동화BrowserViewer: CDP URL 삽입을 통한 CLI 기반 브라우저 자동화
사용예사용예에 대한 직접 링크
import { Agent } from '@mastra/core/agent'
import { AgentBrowser } from '@mastra/agent-browser'
const browser = new AgentBrowser({
headless: true,
viewport: { width: 1280, height: 720 },
scope: 'thread',
})
export const browserAgent = new Agent({
id: 'browser-agent',
name: 'Browser Agent',
instructions: 'You can browse the web to find information.',
model: 'openai/gpt-5.6-sol',
browser,
})
생성자 매개변수생성자 매개변수에 대한 직접 링크
headless?:
viewport?:
timeout?:
cdpUrl?:
scope?:
onLaunch?:
onClose?:
screencast?:
format?:
quality?:
maxWidth?:
maxHeight?:
everyNthFrame?:
속성속성에 대한 직접 링크
다음 속성(id, name, provider)은 추상 속성이며 구체적인 Provider 구현에서 정의해야 합니다.
id:
name:
provider:
headless:
status:
행동 양식행동 양식에 대한 직접 링크
수명주기수명주기에 대한 직접 링크
ensureReady()ensureready에 대한 직접 링크
브라우저가 실행되고 사용할 준비가 되었는지 확인합니다. Tool 실행 전에 자동으로 호출됩니다. 기본 클래스에서 구현됩니다.
await browser.ensureReady()
close()close에 대한 직접 링크
브라우저를 닫고 모든 리소스를 정리합니다. 경쟁 조건에 안전한 처리를 사용하여 기본 클래스에서 구현됩니다.
await browser.close()
isBrowserRunning()isbrowserrunning에 대한 직접 링크
브라우저가 현재 실행 중인지 확인합니다.
const isRunning = browser.isBrowserRunning()
보고: boolean
스레드 관리스레드 관리에 대한 직접 링크
setCurrentThread(threadId)setcurrentthreadthreadid에 대한 직접 링크
브라우저 작업을 위한 현재 스레드 ID를 설정합니다. Agent 런타임에서 내부적으로 사용됩니다.
browser.setCurrentThread('thread-123')
getCurrentThread()getcurrentthread에 대한 직접 링크
현재 스레드 ID를 가져옵니다.
const threadId = browser.getCurrentThread()
보고: string
hasThreadSession(threadId)hasthreadsessionthreadid에 대한 직접 링크
스레드에 활성 브라우저 세션이 있는지 확인합니다.
const hasSession = browser.hasThreadSession('thread-123')
보고: boolean
closeThreadSession(threadId)closethreadsessionthreadid에 대한 직접 링크
특정 스레드의 브라우저 세션을 닫습니다. '스레드' 범위를 사용하면 해당 스레드의 브라우저 인스턴스를 닫습니다. '공유' 범위를 사용하면 스레드 상태가 지워집니다.
await browser.closeThreadSession('thread-123')
ToolTool에 대한 직접 링크
getTools()gettools에 대한 직접 링크
Agent와 함께 사용할 브라우저 Tool을 반환합니다. 각 공급자는 해당 Model에 따라 다양한 Tool을 반환합니다.
const tools = browser.getTools()
보고: Record<string, Tool>
스크린캐스트스크린캐스트에 대한 직접 링크
startScreencast(options?, threadId?)startscreencastoptions-threadid에 대한 직접 링크
브라우저 프레임 스트리밍을 시작합니다. 프레임 이벤트를 내보내는 ScreencastStream을 반환합니다.
const stream = await browser.startScreencast({ format: 'jpeg', quality: 80 }, 'thread-123')
stream.on('frame', frame => {
console.log('Frame received:', frame.data.length, 'bytes')
})
stream.on('stop', reason => {
console.log('Screencast stopped:', reason)
})
보고: Promise<ScreencastStream>
입력 주입입력 주입에 대한 직접 링크
injectMouseEvent(params, threadId?)injectmouseeventparams-threadid에 대한 직접 링크
브라우저에 마우스 이벤트를 삽입합니다. 실시간 상호작용을 위해 Studio에서 사용됩니다.
await browser.injectMouseEvent({
type: 'mousePressed',
x: 100,
y: 200,
button: 'left',
clickCount: 1,
})
injectKeyboardEvent(params, threadId?)injectkeyboardeventparams-threadid에 대한 직접 링크
브라우저에 키보드 이벤트를 삽입합니다. 실시간 상호작용을 위해 Studio에서 사용됩니다.
await browser.injectKeyboardEvent({
type: 'keyDown',
key: 'Enter',
code: 'Enter',
})
상태상태에 대한 직접 링크
getState(threadId?)getstatethreadid에 대한 직접 링크
URL 및 탭을 포함하여 현재 브라우저 상태를 가져옵니다.
const state = await browser.getState('thread-123')
console.log('Current URL:', state.currentUrl)
console.log('Tabs:', state.tabs)
보고: Promise<BrowserState>
interface BrowserState {
currentUrl: string | null
tabs: BrowserTabState[]
activeTabIndex: number
}
interface BrowserTabState {
id: string
url: string
title: string
}
getCurrentUrl(threadId?)getcurrenturlthreadid에 대한 직접 링크
현재 페이지 URL을 가져옵니다.
const url = await browser.getCurrentUrl()
보고: Promise<string | null>
브라우저 범위브라우저 범위에 대한 직접 링크
scope 옵션은 대화 스레드 간에 브라우저 인스턴스를 공유하는 방식을 제어합니다.
| 범위 | 설명 | 사용 사례 |
|---|---|---|
'shared' | 모든 스레드가 하나의 브라우저 인스턴스를 공유합니다 | 충돌하지 않는 작업을 비용 효율적으로 처리할 때 |
'thread' | 각 스레드에 자체 브라우저 인스턴스가 제공됩니다 | 동시 사용자를 완전히 격리할 때 |
// Shared browser for all threads
const sharedBrowser = new AgentBrowser({
scope: 'shared',
})
// Isolated browser per thread
const isolatedBrowser = new AgentBrowser({
scope: 'thread',
})
cdpUrl을 사용하여 외부 브라우저에 연결하면 새 브라우저 인스턴스를 생성할 수 없으므로 범위가 자동으로 'shared'로 대체됩니다.
클라우드 브라우저 Provider클라우드 브라우저 Provider에 대한 직접 링크
다음을 사용하여 클라우드 브라우저 서비스에 연결합니다.cdpUrl option:
// Static CDP URL
const browser = new AgentBrowser({
cdpUrl: 'wss://browser.example.com/ws',
})
// Dynamic CDP URL (e.g., session-based)
const browser = new AgentBrowser({
cdpUrl: async () => {
const session = await createBrowserSession()
return session.wsUrl
},
})
관련된관련된에 대한 직접 링크
- Agent브라우저: 결정론적 브라우저 자동화
- Stagehand브라우저: AI 기반 브라우저 자동화
- 브라우저 개요: 브라우저 자동화에 대한 개념 가이드