跳至主要內容

StagehandBrowser 類別

StagehandBrowser 類別透過 Stagehand 提供由 AI 驅動的瀏覽器自動化功能。它使用自然語言指令進行互動,而非元素參照。

如果你希望由 AI 解讀自然語言並執行瀏覽器操作,請使用 StagehandBrowser。如要透過元素參照進行確定性自動化,請參閱 AgentBrowser

使用範例
使用範例 的直接連結

src/mastra/agents/index.ts
import { Agent } from '@mastra/core/agent'
import { StagehandBrowser } from '@mastra/stagehand'

const browser = new StagehandBrowser({
headless: true,
model: 'openai/gpt-5.6-sol',
selfHeal: true,
})

export const browserAgent = new Agent({
id: 'browser-agent',
name: 'Browser Agent',
instructions: `You can browse the web using natural language.
Use stagehand_act to perform actions like "click the login button".
Use stagehand_extract to get data from pages.`,
model: 'openai/gpt-5.6-sol',
browser,
})

建構函式參數
建構函式參數 的直接連結

headless?:

boolean
= true
是否以無頭模式執行瀏覽器。

viewport?:

{ width: number; height: number } | 'window'
= { width: 1280, height: 720 }
瀏覽器視窗區域的尺寸。'window' 會配合實際瀏覽器視窗,而且只適用於透過 CDP 連線的情況;在本機啟動的瀏覽器則會改用預設尺寸。

env?:

'LOCAL' | 'BROWSERBASE'
= 'LOCAL'
執行瀏覽器的環境。使用 'BROWSERBASE' 在雲端執行。

apiKey?:

string
Browserbase API 金鑰。當 env 為 'BROWSERBASE' 時必須提供。

projectId?:

string
Browserbase 項目 ID。當 env 為 'BROWSERBASE' 時必須提供。

model?:

string | ModelConfiguration
= 'openai/gpt-5.5'
AI 操作的模型設定。可以是類似 'openai/gpt-5.5' 的字串,亦可以是包含 modelName、apiKey 及 baseURL 的物件。

selfHeal?:

boolean
= true
啟用可自動修復的選擇器。啟用後,即使最初的選擇器失效,Stagehand 亦會使用 AI 尋找元素。

domSettleTimeout?:

number
= 5000
操作後等待 DOM 穩定的逾時時間(毫秒)。

verbose?:

0 | 1 | 2
= 1
記錄詳細程度。0 = 靜默、1 = 只記錄錯誤、2 = 詳細記錄。

systemPrompt?:

string
AI 操作所使用的自訂系統提示。

cdpUrl?:

string | (() => string | Promise<string>)
用來連接現有瀏覽器的 CDP WebSocket URL 或 HTTP 端點。HTTP 端點會在內部解析為 WebSocket。

scope?:

'shared' | 'thread'
= 'thread' (or 'shared' when cdpUrl is provided)
瀏覽器實例在各執行緒之間的作用範圍。

timeout?:

number
= 30000
Stagehand 操作的預設逾時時間(毫秒)。

onLaunch?:

(args: { browser: MastraBrowser }) => void | Promise<void>
瀏覽器準備就緒後呼叫的回呼函式。

onClose?:

(args: { browser: MastraBrowser }) => void | Promise<void>
瀏覽器關閉前呼叫的回呼函式。

screencast?:

ScreencastOptions
將瀏覽器影格串流至 Studio 的設定。

recording?:

BrowserRecordingOptions
加入瀏覽器錄影 Tool 的 alpha 選項。提供 outputDir,即可將 browser_record 及 browser_record_caption 加入 Tool 集。你亦可設定 maxDurationMs、maxWidth 及 maxHeight,作為每段錄影的預設值。

excludeTools?:

StagehandToolName[]
要從瀏覽器 Tool 集排除的 Tool 名稱。對於不支援視覺等特定功能的模型,可使用此選項停用個別 Tool。

Tools
Tools 的直接連結

StagehandBrowser 提供 7 個由 AI 驅動的瀏覽器自動化 Tool。

設定 recording 後,StagehandBrowser 亦會加入 alpha 版 browser_recordbrowser_record_caption Tool。詳情請參閱瀏覽器錄影(alpha)

核心 Tool:

Tool說明
stagehand_act使用自然語言指令執行操作
stagehand_extract從頁面擷取結構化資料
stagehand_observe探索頁面上的實用元素
stagehand_navigate前往 URL
stagehand_tabs管理瀏覽器分頁
stagehand_screenshot擷取 PNG 螢幕截圖(預設只擷取視窗區域;設定 fullPage: true 可擷取整個頁面)
stagehand_close關閉瀏覽器

如要排除特定 Tool,請在建構函式中傳入 excludeTools

const browser = new StagehandBrowser({
excludeTools: ['stagehand_screenshot'],
})

Tool 參考
Tool 參考 的直接連結

stagehand_act
stagehand_act 的直接連結

使用自然語言指令執行操作。AI 會解讀你的指令,並執行適當的瀏覽器操作。

// Tool input
{
"instruction": "click the login button",
"variables": { "username": "john" },
"useVision": true,
"timeout": 30000
}

// With variable substitution
{
"instruction": "type %email% into the email field",
"variables": { "email": "user@example.com" }
}
參數類型說明
instructionstring自然語言指令(必須)
variablesRecord<string, string>用於替換 %variableName% 的變數(選填)
useVisionboolean啟用視覺功能(選填)
timeoutnumber逾時時間(毫秒,選填)

傳回:

interface ActResult {
success: boolean
message?: string
action?: string
url?: string
}

stagehand_extract
stagehand_extract 的直接連結

使用自然語言指令從頁面擷取結構化資料。

// Basic extraction
{
"instruction": "extract all product names and prices"
}

// With schema for structured output
{
"instruction": "extract the product information",
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"price": { "type": "number" },
"inStock": { "type": "boolean" }
}
}
}

傳回:

interface ExtractResult<T = unknown> {
success: boolean
data?: T
hint?: string
error?: string
url?: string
}

stagehand_observe
stagehand_observe 的直接連結

探索頁面上的實用元素。傳回元素清單,當中包括各元素的選擇器及說明。

// Find specific elements
{
"instruction": "find all buttons related to checkout"
}

// Find all interactive elements
{
"onlyVisible": true
}
參數類型說明
instructionstring自然語言指令(選填;省略即尋找所有元素)
onlyVisibleboolean只包括可見元素(選填)
timeoutnumber逾時時間(毫秒,選填)

傳回:

interface ObserveResult {
success: boolean
actions: StagehandAction[]
url?: string
}

interface StagehandAction {
selector: string
description: string
method?: string
arguments?: string[]
}

stagehand_navigate
stagehand_navigate 的直接連結

前往 URL。

// Tool input
{
"url": "https://example.com",
"waitUntil": "domcontentloaded"
}
參數類型說明
urlstring要開啟的 URL(必須)
waitUntil"load" | "domcontentloaded" | "networkidle"判定導覽完成的時機(選填)

stagehand_tabs
stagehand_tabs 的直接連結

管理瀏覽器分頁。

// List all tabs
{ "action": "list" }

// Open new tab
{ "action": "new", "url": "https://example.com" }

// Switch to tab by index
{ "action": "switch", "index": 0 }

// Close tab by index (or current if omitted)
{ "action": "close", "index": 1 }

stagehand_screenshot
stagehand_screenshot 的直接連結

將目前頁面擷取為 PNG 螢幕截圖(預設只擷取視窗區域;設定 fullPage: true 可擷取整個頁面)。此 Tool 會傳回具備視覺功能的模型可直接解讀的圖像內容。如果你只需要文字或結構化資料,請使用 stagehand_observestagehand_extract

// Viewport only (default)
{}

// Full scrollable page
{ "fullPage": true }
參數類型說明
fullPageboolean擷取整個可捲動頁面,而非只擷取視窗區域(選填,預設值:false)

stagehand_close
stagehand_close 的直接連結

關閉瀏覽器並清理資源。

// Tool input (no parameters required)
{}

使用 Browserbase
使用 Browserbase 的直接連結

使用 Browserbase 在雲端執行 Stagehand:

const browser = new StagehandBrowser({
env: 'BROWSERBASE',
apiKey: process.env.BROWSERBASE_API_KEY,
projectId: process.env.BROWSERBASE_PROJECT_ID,
model: 'openai/gpt-5.6-sol',
})

模型設定
模型設定 的直接連結

設定 Stagehand 操作所使用的 AI 模型:

// String format: "provider/model"
const browser = new StagehandBrowser({
model: 'openai/gpt-5.6-sol',
})

// Object format for custom configuration
const browser = new StagehandBrowser({
model: {
modelName: 'gpt-5.4',
apiKey: process.env.OPENAI_API_KEY,
baseURL: 'https://api.openai.com/v1',
},
})

AgentBrowser 與 StagehandBrowser 比較
AgentBrowser 與 StagehandBrowser 比較 的直接連結

比較項目AgentBrowserStagehandBrowser
方式確定性參照(@e5自然語言
精準度精確指定元素由 AI 解讀
靈活性必須先建立快照直接使用指令
使用情境可重現的自動化適應性自動化
速度較快(不需要 AI 推論)較慢(需要 AI 推論)

如需精確、可重現的自動化,請選擇 AgentBrowser。如需靈活的自然語言互動,請選擇 StagehandBrowser