MastraBrowser クラス
MastraBrowser クラスは、ブラウザ自動化 Provider の抽象基底クラスです。共通インターフェースには、ブラウザの起動とスレッドの分離に加え、スクリーンキャストのストリーミングと入力イベントが含まれます。
MastraBrowser を直接インスタンス化することはありません。代わりに、次の Provider 実装を使用します。
AgentBrowser: refs を使用した決定論的なブラウザ自動化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への直接リンク
特定のスレッドのブラウザセッションを閉じます。'thread' scope では、そのスレッドのブラウザインスタンスを閉じます。'shared' scope では、スレッドの状態をクリアします。
await browser.closeThreadSession('thread-123')
ToolToolへの直接リンク
getTools()gettoolsへの直接リンク
Agent で使用するブラウザ Tool を返します。各 Provider は、そのモデルに応じた異なる 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ブラウザの scopeへの直接リンク
scope オプションは、会話スレッド間でブラウザインスタンスを共有する方法を制御します。
| 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 を使用して外部ブラウザへ接続する場合、新しいブラウザインスタンスを生成できないため、scope は自動的に 'shared' へフォールバックします。
クラウドブラウザ Providerクラウドブラウザ Providerへの直接リンク
cdpUrl オプションを使用してクラウドブラウザサービスへ接続します。
// 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
},
})
関連項目関連項目への直接リンク
- AgentBrowser: 決定論的なブラウザ自動化
- StagehandBrowser: AI 駆動のブラウザ自動化
- Browser の概要: ブラウザ自動化の概念ガイド