Le contrôle du navigateur OpenClaw
Une API HTTP locale et une référence en ligne de commande bâties sur des captures et des références, avec une moitié HTTP qui reste fermée tant qu’une variable d’environnement n’est pas définie.
Un assistant capable de naviguer n’est utile que si sa façon de désigner une page est assez stable pour être scriptée. OpenClaw expose le même runtime de navigateur de trois façons, un outil d’agent, une ligne de commande, et une API HTTP locale optionnelle pour les intégrations locales. La moitié HTTP est facultative, et tant que la variable d’environnement concernée n’est pas définie dans l’environnement du service de passerelle et que la passerelle n’est pas redémarrée, rien n’écoute sur le port de contrôle local, même si l’outil et la ligne de commande continuent de fonctionner. La référence qui l’accompagne est d’une franchise inhabituelle sur ce qui est volatil, ce qui est vérifié ailleurs et ce qui casse dès que la page navigue.
Comment désigner les éléments
- Les poignées d’onglet sont limitées à un hôte ou un nœud de navigateur et à un profil, l’identifiant de cible suggéré renvoyé par la liste des onglets est la poignée à préférer, les libellés et les poignées courtes sont acceptés, et les identifiants de cible bruts fonctionnent encore mais restent des valeurs de diagnostic volatiles.
- Les actions prennent une référence produite par une capture plutôt qu’un sélecteur CSS, ce qui est une restriction volontaire, et le clic par coordonnées de fenêtre existe pour les cas où une position visible est la seule cible fiable.
- Trois styles de capture coexistent, une capture IA avec des références natives qualifiées par cadre, une capture par rôle résolue par une recherche de rôle d’accessibilité avec un index pour les doublons, et une capture de l’arbre d’accessibilité dont les références ne sont actionnables que lorsqu’elles peuvent être liées via les identifiants de document du moteur.
- Les références ne survivent pas à une navigation, un lot s’arrête après une navigation validée du cadre principal, y compris un rechargement de la même adresse, et signale le numéro d’action atteint avec un compte d’actions ignorées, et les références d’accessibilité inconnues ou périmées échouent immédiatement au lieu de retomber sur un autre sélecteur.
Les listes d’onglets sont des observations, pas une autorisation : chaque lecture de contenu ou action ultérieure applique ses propres contrôles.
L’exécution en lot
La commande de lot exécute un tableau d’actions imbriquées en un seul appel, de sorte qu’un plan peut combiner une attente, un clic, une saisie et une évaluation sans un aller-retour par étape. Ce qu’elle accepte est une union fermée de types d’action et non des sous-commandes quelconques, ce qui explique pourquoi ouvrir une page, naviguer et prendre une capture se situent tous hors du lot. Les références viennent d’une capture prise avant le début du lot, et toute action imbriquée qui change l’état de la page peut invalider les références qui la suivent, si bien que les actions modifiantes vont en premier ou dans un lot ultérieur après une nouvelle capture. Une action imbriquée peut omettre l’identifiant de cible ou reprendre celui de la requête, mais un identifiant imbriqué explicite qui désigne un autre onglet est rejeté avant l’exécution de la moindre action. Par défaut le lot s’arrête à la première erreur et le tableau de résultats s’achève là, tandis qu’une option de continuation le fait couvrir toutes les actions. Chaque entrée rapporte son propre résultat dans l’ordre, un lot imbriqué occupe un seul résultat parent qui rapporte la première erreur de son enfant, et chaque lot applique son propre réglage d’arrêt sur erreur indépendamment de son parent. Toute entrée en échec fait sortir la commande avec un code non nul, et la réponse complète et ordonnée reste disponible dans un format lisible par une machine. Les plans lus depuis un fichier ou l’entrée standard sont plafonnés à un million d’octets, et les profils de session existante ne prennent pas du tout en charge le lot.
Des limites à connaître
- Plusieurs fonctions ont besoin de Playwright, dont la navigation, les actions, les captures IA, les captures d’élément par sélecteur et l’export PDF complet, tandis que les captures d’accessibilité, les captures par rôle via une socket de débogage par onglet et les captures d’écran de page ordinaires fonctionnent encore sans lui.
- Un jeton de vue en direct est émis une seule fois, compte quarante-huit caractères hexadécimaux, expire après soixante secondes et ne peut être consommé qu’une fois, les jetons invalides, expirés et réutilisés étant rejetés avant la bascule en socket.
- Les images du flux sont cadencées à environ vingt images par seconde, les spectateurs lents sautent des images au lieu de constituer une file, une navigation retire immédiatement la session de capture, et une nouvelle session ne démarre qu’une fois l’adresse autorisée.
Les envois de fichiers sont limités à la racine temporaire d’envoi d’OpenClaw et aux médias entrants gérés, que l’outil navigateur peut désigner par une référence de média ou par un chemin relatif à le bac à sable, tandis que la traversée, les liens symboliques, les liens physiques et les chemins locaux arbitraires sont rejetés.
Pourquoi refuser les sélecteurs
La conception choisit systématiquement l’option la plus stricte. Les sélecteurs CSS ne sont pas acceptés pour les actions parce qu’une référence issue d’une capture relie l’action à quelque chose que l’agent a réellement observé, et une liste d’onglets est décrite comme une observation plutôt qu’une permission, chaque lecture ou action ultérieure étant contrôlée à nouveau pour elle-même. Une navigation bloquée renvoie une adresse vide et une raison au lieu de divulguer l’adresse ou les détails de résolution. L’évaluation et les attentes par prédicat exécutent du JavaScript arbitraire dans le contexte de la page, l’injection de prompt peut les orienter, et la référence dit clairement que cela peut être désactivé dans la configuration quand ce n’est pas nécessaire. Le profil de navigateur peut contenir des sessions connectées, il mérite donc le même soin qu’un coffre d’identifiants, et c’est là que les approbations d’outils et l’injection de prompt entrent dans la conversation. Les points de débogage distants sont puissants, le conseil est de les tunneliser et de les protéger, et l’hôte est censé rester en boucle locale ou sur un réseau privé. Lue d’un bloc, la page ressemble moins à une visite d’API qu’à une liste des façons dont l’automatisation de navigateur tourne mal.
Sur Diali
Sur Diali, chaque client fait tourner son propre assistant, et la configuration d’exécution est générée depuis le tableau de bord puis remplacée à chaque version, si bien qu’elle n’est pas un fichier à entretenir à la main. L’état vit sur un volume persistant, avec des instantanés quotidiens et une restauration en un clic grâce à l’option Sauvegardes (incluse avec Max). OpenClaw hébergé sur Diali décrit la forme hébergée et Les tarifs Diali indique ce qu’elle coûte.
- Les références viennent des captures et meurent à la navigation.
- L’API HTTP locale reste fermée tant qu’on ne l’active pas.
- L’évaluation exécute du JavaScript dans la page, traitez-la comme un risque.
Arrêtez de lire, construisez le vôtre
Configurez un agent, choisissez un canal, et faites-le travailler dans l’application que vous gardez déjà ouverte.
