BrowserViewer
La classe BrowserViewer fournit l’automatisation de navigateur aux outils basés sur CLI. Elle lance Chrome via Playwright, expose une URL Chrome DevTools Protocol (CDP) et l’injecte automatiquement dans les commandes CLI exécutées via les outils de workspace.
Utilisez BrowserViewer lorsque votre agent pilote un navigateur à l’aide d’un outil CLI tel que browser-use, agent-browser ou browse. Pour l’automatisation de navigateur basée sur un SDK, utilisez AgentBrowser ou StagehandBrowser.
Exemple d’utilisationLien direct vers Exemple d’utilisation
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(),
})
Connexion à un navigateur existantLien direct vers Connexion à un navigateur existant
const viewer = new BrowserViewer({
cli: 'browser-use',
cdpUrl: 'ws://127.0.0.1:9222/devtools/browser/abc123',
})
Lorsque cdpUrl est fourni, BrowserViewer se connecte au navigateur existant au lieu d’en lancer un nouveau. La portée est par défaut définie sur 'shared'.
Paramètres du constructeurLien direct vers Paramètres du constructeur
cli:
headless?:
cdpUrl?:
cdpPort?:
scope?:
viewport?:
executablePath?:
onLaunch?:
onClose?:
screencast?:
PropriétésLien direct vers Propriétés
id:
name:
provider:
providerType:
cli:
status:
MéthodesLien direct vers Méthodes
Cycle de vieLien direct vers Cycle de vie
launch(threadId?)Lien direct vers launchthreadid
Lance Chrome. Pour la portée 'shared', lance un seul navigateur partagé. Pour la portée 'thread', lance un navigateur pour le thread spécifié.
await viewer.launch()
await viewer.launch('thread-123')
ensureReady()Lien direct vers ensureready
S’assure que le navigateur est lancé et prêt. Pour la portée 'thread', crée si nécessaire un nouveau navigateur pour le thread actuel.
await viewer.ensureReady()
isBrowserRunning(threadId?)Lien direct vers isbrowserrunningthreadid
Vérifie si un navigateur est en cours d’exécution. Pour la portée 'thread', vérifie le thread spécifié.
const running = viewer.isBrowserRunning()
const threadRunning = viewer.isBrowserRunning('thread-123')
Renvoie : boolean
close()Lien direct vers close
Ferme toutes les instances de navigateur et libère les ressources.
await viewer.close()
Accès CDPLien direct vers Accès CDP
getCdpUrl(threadId?)Lien direct vers getcdpurlthreadid
Renvoie l’URL WebSocket CDP du thread actuel ou spécifié. Les outils CLI utilisent cette URL pour se connecter au navigateur géré.
const cdpUrl = viewer.getCdpUrl()
// => 'ws://127.0.0.1:52481/devtools/browser/abc...'
Renvoie : string | null
connectToExternalCdp(cdpUrl, threadId?)Lien direct vers connecttoexternalcdpcdpurl-threadid
Se connecte à un navigateur externe par URL CDP pour la diffusion d’écran. Utilisez cette méthode lorsque l’agent fournit son propre point de terminaison de navigateur (par exemple, un service de navigateur dans le cloud). BrowserViewer se connecte pour la diffusion d’écran sans gérer le cycle de vie du navigateur.
await viewer.connectToExternalCdp('wss://cloud.example.com/session', 'thread-123')
Diffusion d’écranLien direct vers Diffusion d’écran
startScreencast(options?)Lien direct vers startscreencastoptions
Commence à diffuser les images du navigateur. Renvoie un ScreencastStream qui émet des événements d’image. Gère automatiquement le changement d’onglet en créant de nouvelles sessions CDP lorsque les onglets changent.
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)
})
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 navigateur via CDP. Utilisé par Studio pour l’interaction en direct.
await viewer.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 navigateur via CDP. Utilisé par Studio pour l’interaction en direct.
await viewer.injectKeyboardEvent({
type: 'keyDown',
key: 'Enter',
code: 'Enter',
})
CLI prises en chargeLien direct vers CLI prises en charge
Chaque CLI doit être installée séparément. Chacune publie aussi une skill qui enseigne à l’agent ses commandes et ses workflows. Lorsqu’une commande CLI s’exécute via workspace_execute_command, Mastra la détecte et injecte automatiquement l’URL CDP avec l’indicateur approprié.
Contrairement aux fournisseurs SDK, BrowserViewer ne fournit pas d’outils d’agent. L’agent utilise à la place les commandes CLI via workspace_execute_command.
agent-browserLien direct vers agent-browser
Valeur de configuration : 'agent-browser' · Indicateur CDP : --cdp
npm install -g agent-browser
npx skills add vercel-labs/agent-browser
browser-useLien direct vers browser-use
Valeur de configuration : 'browser-use' · Indicateur CDP : --cdp-url
pip install browser-use
npx skills add browser-use/browser-use --skill browser-use
browse (commande : browse)Lien direct vers browse-command-browse
Valeur de configuration : 'browse' · Indicateur CDP : --ws
npm install -g browse
browse skills install
Articles connexesLien direct vers Articles connexes
- Guide BrowserViewer : présentation de la configuration et de l’utilisation
- MastraBrowser : référence de l’API de la classe de base
- Présentation de Workspace : configuration de Workspace