Aller au contenu principal

Classe AgentBrowser

La classe AgentBrowser fournit une automatisation déterministe du navigateur à l’aide de la bibliothèque agent-browser. Elle utilise des snapshots de l’arbre d’accessibilité et des références d’éléments (par exemple @e5) pour des interactions précises et reproductibles.

Utilisez AgentBrowser lorsque vous avez besoin d’une automatisation fiable et déterministe du navigateur. Pour des interactions en langage naturel reposant sur l’IA, consultez StagehandBrowser.

Exemple d’utilisation
Lien direct vers Exemple d’utilisation

src/mastra/agents/index.ts
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. Use browser_snapshot to see the page structure,
then interact with elements using their refs (e.g., @e5).`,
model: 'openai/gpt-5.6-sol',
browser,
})

Paramètres du constructeur
Lien direct vers Paramètres du constructeur

headless?:

boolean
= true
Indique si le navigateur doit s’exécuter en mode headless (sans interface utilisateur visible).

viewport?:

{ width: number; height: number } | 'window'
= { width: 1280, height: 720 }
Dimensions de la zone d’affichage du navigateur, ou 'window' pour correspondre à la fenêtre réelle plutôt qu’à une taille fixe.

timeout?:

number
= 30000
Délai d’expiration par défaut, en millisecondes, des opérations du navigateur.

cdpUrl?:

string | (() => string | Promise<string>)
URL WebSocket CDP permettant de se connecter à un navigateur existant. Utile pour les Providers de navigateurs cloud.

scope?:

'shared' | 'thread'
= 'thread' (ou 'shared' lorsque cdpUrl est fourni)
Portée de l’instance du navigateur. 'shared' partage un navigateur entre tous les fils. 'thread' fournit à chaque fil son propre navigateur.

onLaunch?:

(args: { browser: MastraBrowser }) => void | Promise<void>
Callback appelé une fois le navigateur prêt.

onClose?:

(args: { browser: MastraBrowser }) => void | Promise<void>
Callback appelé avant la fermeture du navigateur.

screencast?:

ScreencastOptions
Configuration de l’envoi en streaming des images du navigateur vers Studio.

recording?:

BrowserRecordingOptions
Option alpha permettant d’ajouter des Tools d’enregistrement du navigateur. Fournissez outputDir pour ajouter browser_record et browser_record_caption à l’ensemble de Tools. Vous pouvez aussi définir maxDurationMs, maxWidth et maxHeight comme valeurs par défaut de chaque enregistrement.

excludeTools?:

BrowserToolName[]
Noms des Tools à exclure de l’ensemble de Tools du navigateur. Utilisez cette option pour désactiver certains Tools avec les modèles qui ne prennent pas en charge des fonctionnalités telles que la vision.

Tools
Lien direct vers Tools

AgentBrowser fournit 16 Tools déterministes d’automatisation du navigateur. Tous les Tools qui interagissent avec des éléments utilisent les références du snapshot de l’arbre d’accessibilité.

Lorsque recording est configuré, AgentBrowser ajoute également les Tools alpha browser_record et browser_record_caption. Consultez Enregistrement du navigateur (alpha).

Tools principaux
Lien direct vers Tools principaux

ToolDescription
browser_gotoAccéder à une URL
browser_snapshotObtenir un snapshot de l’arbre d’accessibilité avec les références d’éléments
browser_clickCliquer sur un élément à partir de sa référence
browser_typeSaisir du texte dans un élément
browser_pressAppuyer sur des touches du clavier
browser_selectSélectionner une option dans une liste déroulante
browser_scrollFaire défiler la page ou un élément
browser_screenshotCapturer une image au format PNG (zone d’affichage par défaut ; définir fullPage: true pour la page entière)
browser_closeFermer le navigateur

Tools étendus
Lien direct vers Tools étendus

ToolDescription
browser_hoverSurvoler un élément
browser_backRevenir en arrière dans l’historique du navigateur
browser_dialogGérer les boîtes de dialogue du navigateur (alert, confirm, prompt)
browser_waitAttendre les changements d’état d’un élément
browser_tabsGérer les onglets du navigateur (list, new, switch, close)
browser_dragGlisser-déposer des éléments
browser_evaluateExécuter du JavaScript dans la page (solution de dernier recours)

Pour exclure certains Tools, transmettez excludeTools au constructeur :

const browser = new AgentBrowser({
excludeTools: ['browser_screenshot'],
})

Référence des Tools
Lien direct vers Référence des Tools

browser_goto
Lien direct vers browser_goto

Accède à une URL.

// Tool input
{
"url": "https://example.com",
"waitUntil": "domcontentloaded",
"timeout": 30000
}
ParamètreTypeDescription
urlstringURL à ouvrir
waitUntil"load" | "domcontentloaded" | "networkidle"Moment auquel considérer la navigation comme terminée (facultatif)
timeoutnumberDélai d’expiration de la navigation en ms (facultatif)

browser_snapshot
Lien direct vers browser_snapshot

Obtient un snapshot de l’arbre d’accessibilité de la page. Renvoie des références d’éléments telles que @e5, à utiliser avec les autres Tools.

// Tool input
{
"interactiveOnly": true,
"maxDepth": 10
}
ParamètreTypeDescription
interactiveOnlybooleanInclure uniquement les éléments interactifs (facultatif)
maxDepthnumberProfondeur maximale de l’arbre (facultatif)

Exemple de sortie :

[document] Example Page
[banner]
[link @e1] Home
[link @e2] About
[main]
[heading @e3] Welcome
[textbox @e4] Search...
[button @e5] Submit

browser_click
Lien direct vers browser_click

Clique sur un élément à l’aide de sa référence issue du snapshot.

{
"ref": "@e5",
"button": "left",
"clickCount": 1,
"modifiers": ["Control", "Shift"]
}
ParamètreTypeDescription
refstringRéférence de l’élément issue du snapshot (requise)
button"left" | "right" | "middle"Bouton de la souris (facultatif)
clickCountnumberNombre d’activations, 2 pour un double clic (facultatif)
modifiersstring[]Touches de modification (facultatif)

browser_type
Lien direct vers browser_type

Saisit du texte dans un élément d’entrée.

// Tool input
{
"ref": "@e4",
"text": "search query",
"clear": true,
"delay": 50
}
ParamètreTypeDescription
refstringRéférence de l’élément issue du snapshot (requise)
textstringTexte à saisir (requis)
clearbooleanEffacer d’abord le contenu existant (facultatif)
delaynumberDélai entre les frappes en ms (facultatif)

browser_press
Lien direct vers browser_press

Appuie sur des touches du clavier.

// Tool input
{
"key": "Enter",
"modifiers": ["Control"]
}

// Key combinations
{ "key": "Control+a" }
{ "key": "Control+c" }
ParamètreTypeDescription
keystringNom de la touche (par exemple « Enter », « Tab », « Escape », « Control+a ») (requis)
modifiersstring[]Touches de modification (facultatif)

browser_select
Lien direct vers browser_select

Sélectionne une option dans une liste déroulante. Fournissez value, label ou index.

// Tool input - by value
{
"ref": "@e10",
"value": "option-value"
}

// Tool input - by label
{
"ref": "@e10",
"label": "Option Text"
}

// Tool input - by index
{
"ref": "@e10",
"index": 0
}

browser_scroll
Lien direct vers browser_scroll

Fait défiler la page ou un élément donné.

// Tool input
{
"direction": "down",
"amount": 300,
"ref": "@e15"
}
ParamètreTypeDescription
direction"up" | "down" | "left" | "right"Sens du défilement (requis)
amountnumberNombre de pixels à faire défiler, 300 par défaut (facultatif)
refstringÉlément à faire défiler ; fait défiler la page si omis (facultatif)

browser_hover
Lien direct vers browser_hover

Survole un élément afin de déclencher les effets de survol.

// Tool input
{
"ref": "@e7"
}

browser_back
Lien direct vers browser_back

Revient en arrière dans l’historique du navigateur.

// Tool input (no parameters required)
{}

browser_dialog
Lien direct vers browser_dialog

Gère les boîtes de dialogue du navigateur (alert, confirm, prompt). Clique sur un élément qui déclenche une boîte de dialogue, puis la traite.

// Tool input
{
"triggerRef": "@e5",
"action": "accept",
"text": "response"
}
ParamètreTypeDescription
triggerRefstringÉlément qui déclenche la boîte de dialogue (requis)
action"accept" | "dismiss"Traitement de la boîte de dialogue (requis)
textstringTexte des boîtes de dialogue prompt (facultatif)

browser_wait
Lien direct vers browser_wait

Attend qu’un élément atteigne un état donné.

// Tool input
{
"ref": "@e20",
"state": "visible",
"timeout": 30000
}
ParamètreTypeDescription
refstringRéférence de l’élément à attendre (facultative)
state"visible" | "hidden" | "attached" | "detached"État à attendre (facultatif)
timeoutnumberTemps d’attente maximal en ms (facultatif)

browser_tabs
Lien direct vers browser_tabs

Gère les onglets du navigateur.

// 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
{ "action": "close", "index": 1 }

browser_drag
Lien direct vers browser_drag

Fait glisser un élément vers un emplacement cible.

// Tool input
{
"sourceRef": "@e10",
"targetRef": "@e20"
}
ParamètreTypeDescription
sourceRefstringÉlément à faire glisser (requis)
targetRefstringÉlément cible du dépôt (requis)

browser_evaluate
Lien direct vers browser_evaluate

Exécute du JavaScript dans le contexte de la page. Utilisez-le comme solution de dernier recours lorsque les autres Tools ne couvrent pas votre cas d’utilisation.

// Tool input
{
"script": "document.title",
"returnValue": true
}
ParamètreTypeDescription
scriptstringJavaScript à exécuter (requis)
returnValuebooleanIndique s’il faut renvoyer le résultat (facultatif)

browser_screenshot
Lien direct vers browser_screenshot

Capture une image de la page actuelle au format PNG (zone d’affichage par défaut ; définissez fullPage: true pour capturer la page entière). Renvoie un contenu d’image que les modèles dotés de fonctionnalités de vision peuvent interpréter directement. Utilisez browser_snapshot si vous avez uniquement besoin de texte ou de données structurées.

// Viewport only (default)
{}

// Full scrollable page
{ "fullPage": true }
ParamètreTypeDescription
fullPagebooleanCapturer toute la page défilable plutôt que la seule zone d’affichage (facultatif, valeur par défaut : false)

browser_close
Lien direct vers browser_close

Ferme le navigateur et libère les ressources.

// Tool input (no parameters required)
{}

Fonctionnement des références
Lien direct vers Fonctionnement des références

Le Tool browser_snapshot renvoie un arbre d’accessibilité avec des références d’éléments telles que @e1, @e2, etc. Ces références sont des identifiants stables à utiliser avec les autres Tools :

  1. Appelez browser_snapshot pour afficher la structure de la page
  2. Trouvez l’élément avec lequel vous souhaitez interagir
  3. Utilisez sa référence avec des Tools d’interaction tels que browser_type ou browser_scroll.
// 1. Get snapshot
// Returns: [textbox @e4] Search... [link @e5] Home

// 2. Type in the search box
{ "tool": "browser_type", "input": { "ref": "@e4", "text": "mastra" } }

// 3. Navigate to home
{ "tool": "browser_goto", "input": { "url": "https://example.com" } }