agent-browser : CLI Rust rapide pour l'automatisation de navigateurs AI
agent-browser : CLI Rust rapide pour l'automatisation de navigateurs AI
Pourquoi un nouvel outil pour l'automatisation de navigateurs ?
Les agents AI sont de plus en plus amenés à interagir avec des pages web réelles : tester les flux UI, récupérer du contenu dynamique ou crawler des sites e‑commerce. Les outils existants comme Selenium ou Playwright sont des bibliothèques fantastiques, mais ils sollicitent une courbe d'apprentissage, un surcroît d'installation et souvent un runtime lourd. Si un système AI (Claude, GPT‑4, Gemini, etc.) devait contrôler un navigateur, il serait pratique de rendre cette capacité accessible via une interface en ligne de commande légère, pouvant être invoquée depuis n'importe quel langage.
Voici agent-browser – un exécutable unique qui inclut un binaire Rust rapide sur macOS, Linux et Windows, avec un retour arrière automatique vers Node.js lorsque le binaire natif est indisponible. Il communique avec un démon Node.js possédant une instance Playwright, vous offrant toute la puissance de Playwright (Chromium, Firefox, WebKit) tout en gardant le CLI rapide et déterministe.
Démarrage rapide
# Installer globalement via npm
npm install -g agent-browser
# Télécharger le Chromium inclus
agent-browser install
# Ouvrir un site
agent-browser open https://example.com
# Prendre un instantané basé sur référence
agent-browser snapshot --json
# Cliquer sur un bouton par référence
agent-browser click @e2
# Prendre une capture d'écran
agent-browser screenshot page.png
# Fermer
agent-browser close
Options d'installation
- Rust natif –
pnpm build:nativenécessite Rust 1.75+. Offre le meilleur temps de démarrage. - Fallback Node.js – Fonctionne partout mais légèrement plus lent.
- Dépendances Linux –
agent-browser install --with-depsinstallera automatiquement les dépendances niveau système de Playwright.
Fonctionnalités & Commandes
| Catégorie | Commande | Description |
|---|---|---|
| Core | open <url> |
Naviguer vers une URL (alias : goto, navigate). |
click <sel> |
Cliquer un élément. | |
fill <sel> <text> |
Effacer et saisir dans une entrée. | |
screenshot [path] |
Capture d'écran pleine page ou du viewport. | |
snapshot |
Produire un arbre d'accessibilité avec références déterministes (@e1, @e2). |
|
wait <selector> |
Attendre la visibilité ou une condition personnalisée. | |
eval <js> |
Exécuter du JavaScript arbitraire. | |
close |
Terminer l'instance du navigateur. | |
| Localisateurs sémantiques | find role button click --name "Submit" |
Clique par rôle ARIA et nom. |
find text "Sign In" click |
Clique par texte affiché. | |
| Isolation de session | agent-browser --session chat1 open https://foo.com |
Créer des sessions isolées pour des agents parallèles. |
| Sans tête / Avec interface | --headed |
Afficher l'interface graphique pour le débogage. |
| Diffusion | AGENT_BROWSER_STREAM_PORT=9223 agent-browser open https://example.com |
Ouvre un WebSocket diffusant les frames du viewport (utile pour le « pair browsing »). |
| Auth & En-têtes | --headers '{"Authorization": "Bearer <token>"}' |
Définir des en-têtes HTTP par origine pour l'accès API, en sautant les interfaces de connexion. |
| Débogage & Journalisation | trace start, trace stop |
Enregistrer les traces CDP pour le débogage. |
Aperçu de l'architecture
- Rust CLI – Analyse les commandes, construit un DSL JSON, et les envoie au démon.
- Démon Node.js – Lance et gère le navigateur Playwright ; maintient le processus actif entre les appels.
- Conception Client‑Démon – Un démon par système, de sorte que les commandes répétées ne paient pas le coût de lancement d'une nouvelle instance Chromium.
Comment les agents AI l'utilisent
- Ouvrir une page.
- Instantané avec
--json. Le résultat contient un arbre structuré (role,name,ref). - Le raisonneur AI analyse l'arbre pour trouver la référence cible (par ex.,
@e3pour une boîte mail). - Agir en utilisant les commandes CLI (
click @e3,fill @e4 "[email protected]"). - Re‑instantané si la page change, puis répéter.
La sortie JSON du CLI est minuscule (~2‑3 KB) et idéale pour les LLM avec un nombre limité de tokens de prompt.
Cas d'utilisation
| Scénario | Comment agent-browser aide |
|---|---|
| Tests CI/CD | Automatiser les tests UI dans les jobs CI sans configuration. |
| Fonctions Serverless | Déployer une Lambda minimale qui exécute un navigateur basé sur CLI pour le scraping ou des tâches d'intégration. |
| Agent‑In‑The‑Loop | Associer un AI à un humain en diffusant le viewport via WebSocket. |
| Analytique sans tête | Collecter les données de formulaire ou les prix produits sans surcharge GUI. |
| Contournement API | Envoyer directement les en-têtes d'authentification pour bypasser les pages de login et accéder aux API protégées. |
Exemple : Créer un mini‑scraper en 10 lignes
#!/usr/bin/env node
const { execSync } = require('child_process');
execSync('agent-browser install');
execSync('agent-browser open https://books.toscrape.com');
const data = execSync('agent-browser snapshot -i --json').toString();
const snapshot = JSON.parse(data).data.snapshot;
console.log('Page has books:', snapshot.children.filter(c=>c.role==='link').length);
execSync('agent-browser close');
Exécutez-le avec node scrape.js et vous obtiendrez un compte rapide des liens de livres, le tout via le CLI.
Performance & Fiabilité
- Le binaire Rust natif démarre en < 50 ms sur macOS – contre les homologues Node‑only qui prennent 200–300 ms.
- Le démon reste résidant après le premier lancement, de sorte que les commandes suivantes sont quasiment instantanées.
- Fonctionne sur toutes les plateformes majeures ; le binaire est distribué via les releases GitHub.
S'impliquer
- Contributions bienvenues sur GitHub : créez une fork, soumettez une PR, ou ouvrez des tickets de bugs.
- Vous voulez plus de sémantique ? Ajoutez de nouvelles actions
findou soutenez plus de moteurs de navigateur. - La documentation évolue – consultez le dossier
docs/et la sortie--helpdu CLI pour les commandes les plus récentes.
Dernières réflexions
agent‑browser apporte l'automatisation web à portée de main pour tout système AI ou développeur grâce à une seule commande. Sa combinaison de rapidité Rust, de polyvalence Playwright et d'instantanés de références conviviaux AI le rend un outil incontournable pour les tests, le scraping et la construction de workflows centrés sur l'agent. Que vous automatisiez un pipeline CI ou associez un grand modèle linguistique à une navigation en direct, agent‑browser vous offre une interface légère, déterministe et facile à programmer, adaptée à un shell ou à une fonction serverless.
Bonne automatisation !