Classe MastraBrowser
La classe MastraBrowser est la classe de base abstraite des Providers d'automatisation de Browser. Son interface commune couvre le lancement du Browser et l'isolation des fils de discussion, ainsi que le streaming du screencast et les événements d'entrée.
Vous n'instanciez pas directement MastraBrowser. Utilisez plutôt l'implémentation d'un Provider :
AgentBrowser: automatisation déterministe du Browser au moyen de référencesStagehandBrowser: automatisation du Browser reposant sur l'IA et le langage naturelBrowserViewer: automatisation du Browser fondée sur la CLI avec injection d'une URL CDP
Exemple d'utilisationLien direct vers Exemple d'utilisation
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,
})
Paramètres du constructeurLien direct vers Paramètres du constructeur
headless?:
viewport?:
timeout?:
cdpUrl?:
scope?:
onLaunch?:
onClose?:
screencast?:
format?:
quality?:
maxWidth?:
maxHeight?:
everyNthFrame?:
PropriétésLien direct vers Propriétés
Les propriétés suivantes (id, name, provider) sont abstraites et doivent être définies par les implémentations concrètes des Providers :
id:
name:
provider:
headless:
status:
MéthodesLien direct vers Méthodes
Cycle de vieLien direct vers Cycle de vie
ensureReady()Lien direct vers ensureready
Vérifie que le Browser est lancé et prêt à être utilisé. Appelée automatiquement avant l'exécution d'un Tool. Implémentée dans la classe de base.
await browser.ensureReady()
close()Lien direct vers close
Ferme le Browser et nettoie toutes les ressources. Implémentée dans la classe de base avec une gestion sûre des conditions de concurrence.
await browser.close()
isBrowserRunning()Lien direct vers isbrowserrunning
Vérifie si le Browser est en cours d'exécution.
const isRunning = browser.isBrowserRunning()
Renvoie : boolean
Gestion des fils de discussionLien direct vers Gestion des fils de discussion
setCurrentThread(threadId)Lien direct vers setcurrentthreadthreadid
Définit l'identifiant du fil de discussion actuel pour les opérations du Browser. Utilisée en interne par l'environnement d'exécution de l'Agent.
browser.setCurrentThread('thread-123')
getCurrentThread()Lien direct vers getcurrentthread
Récupère l'identifiant du fil de discussion actuel.
const threadId = browser.getCurrentThread()
Renvoie : string
hasThreadSession(threadId)Lien direct vers hasthreadsessionthreadid
Vérifie si un fil de discussion possède une session Browser active.
const hasSession = browser.hasThreadSession('thread-123')
Renvoie : boolean
closeThreadSession(threadId)Lien direct vers closethreadsessionthreadid
Ferme la session Browser d'un fil de discussion précis. Avec la portée 'thread', ferme l'instance de Browser de ce fil. Avec la portée 'shared', efface l'état du fil.
await browser.closeThreadSession('thread-123')
ToolsLien direct vers Tools
getTools()Lien direct vers gettools
Renvoie les Tools du Browser à utiliser avec les Agents. Chaque Provider renvoie des Tools différents selon son modèle.
const tools = browser.getTools()
Renvoie : Record<string, Tool>
Diffusion d'écranLien direct vers Diffusion d'écran
startScreencast(options?, threadId?)Lien direct vers startscreencastoptions-threadid
Démarre le streaming des frames du Browser. Renvoie un ScreencastStream qui émet des événements de frame.
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)
})
Renvoie : Promise<ScreencastStream>
Injection d'entréesLien direct vers Injection d'entrées
injectMouseEvent(params, threadId?)Lien direct vers injectmouseeventparams-threadid
Injecte un événement de souris dans le Browser. Utilisée par Studio pour l'interaction en direct.
await browser.injectMouseEvent({
type: 'mousePressed',
x: 100,
y: 200,
button: 'left',
clickCount: 1,
})
injectKeyboardEvent(params, threadId?)Lien direct vers injectkeyboardeventparams-threadid
Injecte un événement de clavier dans le Browser. Utilisée par Studio pour l'interaction en direct.
await browser.injectKeyboardEvent({
type: 'keyDown',
key: 'Enter',
code: 'Enter',
})
ÉtatLien direct vers État
getState(threadId?)Lien direct vers getstatethreadid
Récupère l'état actuel du Browser, notamment l'URL et les onglets.
const state = await browser.getState('thread-123')
console.log('Current URL:', state.currentUrl)
console.log('Tabs:', state.tabs)
Renvoie : Promise<BrowserState>
interface BrowserState {
currentUrl: string | null
tabs: BrowserTabState[]
activeTabIndex: number
}
interface BrowserTabState {
id: string
url: string
title: string
}
getCurrentUrl(threadId?)Lien direct vers getcurrenturlthreadid
Récupère l'URL de la page actuelle.
const url = await browser.getCurrentUrl()
Renvoie : Promise<string | null>
Portée du BrowserLien direct vers Portée du Browser
L'option scope contrôle la manière dont les instances de Browser sont partagées entre les fils de discussion :
| Portée | Description | Cas d'utilisation |
|---|---|---|
'shared' | Tous les fils partagent une seule instance de Browser | Économique pour les tâches sans conflit |
'thread' | Chaque fil possède sa propre instance de Browser | Isolation complète des utilisateurs simultanés |
// Shared browser for all threads
const sharedBrowser = new AgentBrowser({
scope: 'shared',
})
// Isolated browser per thread
const isolatedBrowser = new AgentBrowser({
scope: 'thread',
})
Lorsque vous utilisez cdpUrl pour vous connecter à un Browser externe, la portée utilise automatiquement 'shared', car vous ne pouvez pas lancer de nouvelles instances de Browser.
Providers Browser cloudLien direct vers Providers Browser cloud
Connectez-vous à des services Browser cloud au moyen de l'option 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
},
})
Voir aussiLien direct vers Voir aussi
- AgentBrowser : automatisation déterministe du Browser
- StagehandBrowser : automatisation du Browser reposant sur l'IA
- Présentation de Browser : guide conceptuel de l'automatisation de Browser