BrowserViewer
BrowserViewer 類別為以 CLI 為基礎的 Tool 提供瀏覽器自動化功能。它會透過 Playwright 啟動 Chrome、提供 Chrome DevTools Protocol(CDP)URL,並自動將該 URL 注入經由 Workspace Tool 執行的 CLI 指令。
當 Agent 透過 browser-use、agent-browser 或 browse 等 CLI Tool 操控瀏覽器時,請使用 BrowserViewer。如要使用以 SDK 為基礎的瀏覽器自動化功能,請使用 AgentBrowser 或 StagehandBrowser。
使用範例使用範例 的直接連結
import { Workspace, LocalSandbox } from '@mastra/core/workspace'
import { Memory } from '@mastra/memory'
import { BrowserViewer } from '@mastra/browser-viewer'
import { Agent } from '@mastra/core/agent'
const workspace = new Workspace({
sandbox: new LocalSandbox({
workingDirectory: './workspace',
}),
browser: new BrowserViewer({
cli: 'browser-use',
headless: false,
}),
})
const browserAgent = new Agent({
id: 'browser-agent',
model: 'openai/gpt-5.6-sol',
workspace,
instructions: 'You are a web automation assistant.',
memory: new Memory(),
})
連接現有瀏覽器連接現有瀏覽器 的直接連結
const viewer = new BrowserViewer({
cli: 'browser-use',
cdpUrl: 'ws://127.0.0.1:9222/devtools/browser/abc123',
})
提供 cdpUrl 後,BrowserViewer 會連接現有瀏覽器,而不會啟動新瀏覽器。scope 預設為 'shared'。
建構函式參數建構函式參數 的直接連結
cli:
headless?:
cdpUrl?:
cdpPort?:
scope?:
viewport?:
executablePath?:
onLaunch?:
onClose?:
screencast?:
屬性屬性 的直接連結
id:
name:
provider:
providerType:
cli:
status:
方法方法 的直接連結
生命週期生命週期 的直接連結
launch(threadId?)launchthreadid 的直接連結
啟動 Chrome。scope 為 'shared' 時,會啟動一個共用瀏覽器;scope 為 'thread' 時,則會為指定的 thread 啟動瀏覽器。
await viewer.launch()
await viewer.launch('thread-123')
ensureReady()ensureready 的直接連結
確保瀏覽器已啟動並準備就緒。scope 為 'thread' 時,會按需要為目前的 thread 建立新瀏覽器。
await viewer.ensureReady()
isBrowserRunning(threadId?)isbrowserrunningthreadid 的直接連結
檢查瀏覽器是否正在執行。scope 為 'thread' 時,會檢查指定的 thread。
const running = viewer.isBrowserRunning()
const threadRunning = viewer.isBrowserRunning('thread-123')
傳回:boolean
close()close 的直接連結
關閉所有瀏覽器實例並清理資源。
await viewer.close()
存取 CDP存取 CDP 的直接連結
getCdpUrl(threadId?)getcdpurlthreadid 的直接連結
傳回目前或指定 thread 的 CDP WebSocket URL。CLI Tool 會使用此 URL 連接受管理的瀏覽器。
const cdpUrl = viewer.getCdpUrl()
// => 'ws://127.0.0.1:52481/devtools/browser/abc...'
傳回:string | null
connectToExternalCdp(cdpUrl, threadId?)connecttoexternalcdpcdpurl-threadid 的直接連結
透過 CDP URL 連接外部瀏覽器以進行 screencast。當 Agent 提供自己的瀏覽器 endpoint(例如雲端瀏覽器服務)時,可使用此方法。BrowserViewer 會連接瀏覽器以進行 screencast,但不會管理瀏覽器的生命週期。
await viewer.connectToExternalCdp('wss://cloud.example.com/session', 'thread-123')
ScreencastScreencast 的直接連結
startScreencast(options?)startscreencastoptions 的直接連結
開始串流瀏覽器 frame。此方法會傳回發出 frame 事件的 ScreencastStream。分頁切換時,它會建立新的 CDP session,自動處理分頁切換。
const stream = await viewer.startScreencast({
format: 'jpeg',
quality: 80,
})
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 的直接連結
透過 CDP 將滑鼠事件注入瀏覽器,供 Studio 即時互動使用。
await viewer.injectMouseEvent({
type: 'mousePressed',
x: 100,
y: 200,
button: 'left',
clickCount: 1,
})
injectKeyboardEvent(params, threadId?)injectkeyboardeventparams-threadid 的直接連結
透過 CDP 將鍵盤事件注入瀏覽器,供 Studio 即時互動使用。
await viewer.injectKeyboardEvent({
type: 'keyDown',
key: 'Enter',
code: 'Enter',
})
支援的 CLI支援的 CLI 的直接連結
每個 CLI 都必須分別安裝,並各自發佈一個 Skill,讓 Agent 學會相關指令和 Workflow。透過 workspace_execute_command 執行 CLI 指令時,Mastra 會偵測該指令,並使用正確的 flag 自動注入 CDP URL。
與 SDK Provider 不同,BrowserViewer 不會提供 Agent Tool。Agent 會改為透過 workspace_execute_command 使用 CLI 指令。
agent-browseragent-browser 的直接連結
設定值:'agent-browser' · CDP flag:--cdp
npm install -g agent-browser
npx skills add vercel-labs/agent-browser
browser-usebrowser-use 的直接連結
設定值:'browser-use' · CDP flag:--cdp-url
pip install browser-use
npx skills add browser-use/browser-use --skill browser-use
browse(指令:browse)browse-command-browse 的直接連結
設定值:'browse' · CDP flag:--ws
npm install -g browse
browse skills install
相關內容相關內容 的直接連結
- BrowserViewer 指南:設定及使用逐步說明
- MastraBrowser:基礎類別 API 參考
- Workspace 概覽:Workspace 設定