Agent desktop un controle fiable des applications
|

Agent Desktop : un contrôle fiable des applications macOS pour les agents IA

📌 AGENT DESKTOP est un outil en ligne de commande open-source (Apache-2.0), écrit en Rust, qui donne à n’importe quel agent IA une manipulation fiable des applications de bureau macOS. Plutôt que de deviner ce qui se passe à l’écran à partir de pixels ou de captures, il lit la vraie structure d’interface de chaque application via l’arbre d’accessibilité du système et agit dessus : cliquer, taper, cocher, faire défiler, gérer fenêtres et notifications. Les références d’éléments restent stables, les actions se relancent sans danger, et la consommation de tokens chute fortement sur les applications denses grâce à un parcours progressif de l’interface.

Là où de nombreuses solutions d’automatisation se contentent de « voir » l’écran, Agent Desktop comprend l’interface. Chaque commande snapshot génère un arbre d’accessibilité avec des références stables du type @s8f3k2p9:e3 : une capture, un élément. Ces références qualifiées embarquent l’identifiant exact de la capture, ce qui lève toute ambiguïté quand l’interface bouge. Les actions relancent l’identification de la cible au moment de l’exécution : un élément déplacé peut être retrouvé, un élément disparu renvoie une erreur explicite (STALE_REF), et si plusieurs cibles plausibles existent, aucune n’est choisie arbitrairement — la commande signale AMBIGUOUS_TARGET. La valeur affichée d’un champ (un timer, un texte) n’est jamais traitée comme une identité, donc un champ dont le contenu change reste actionnable.

Au quotidien, le workflow s’articule autour d’une boucle simple : observer, décider, agir, re-observer. Une première commande snapshot renvoie les éléments interactifs et leurs références, l’agent décide de la prochaine action, l’exécute via click, type, press, select ou toggle, puis re-photographie l’interface pour vérifier le changement. C’est valable pour Safari, Finder, Xcode, Slack, Notes ou System Settings : tout ce qui expose un arbre d’accessibilité. Les commandes couvrent l’observation (snapshot, screenshot, find, get, is, list-surfaces), l’interaction (click, double et triple clic, clic droit, type, set-value, select, toggle, check, expand, scroll), le clavier, la souris (hover, drag, mouse-click), les notifications macOS, le presse-papiers, la gestion des applications et des fenêtres (launch, close-app, focus-window, resize, move, minimize, maximize), avec des primitives d’attente robustes (wait –element, –window, –text, –notification).

📌 Points clés d’Agent Desktop :

  • 🗂️ Compréhension réelle de l’interface : l’arbre d’accessibilité remplace les suppositions basées sur les pixels, avec des références d’éléments stables.
  • 📉 Parcours squelette progressif : jusqu’à 78 à 96 % de tokens en moins sur les apps denses (Slack, VS Code, Notion), avec des sous-arbres explorés à la demande.
  • 🔒 Actions discrètes par défaut : le mode headless ne déplace ni le focus, ni le curseur réel, ni le presse-papiers.
  • 🧩 Interop Chromium via CDP : launch –cdp expose un port DevTools vérifié, pilotable avec Playwright, Puppeteer ou agent-browser.
  • 🔗 Bibliothèque FFI C-ABI : une lib précompilée pour Python, Swift, Go, Ruby, Node et C, chargée une seule fois en mémoire.
  • 🕒 Sessions et traces : enregistrement JSONL automatique, visualisation HTML à fichier unique et sessions partagées pour des agents multiples.
  • 👀 Curseur d’agent : une superposition qui montre où l’agent va cliquer, avec label, couleur et tracé vivant.
  • 🖥️ Portabilité annoncée : aujourd’hui macOS, avec Windows et Linux planifiés pour l’arbre d’accessibilité et les interactions.

Les sessions tracent tout le travail d’un agent. Une session avec enregistrement activé écrit automatiquement des segments JSONL dans le dossier local ~/.agent-desktop/sessions, consultables via trace show (chronologie bornée pour les agents) et exportables en un fichier HTML statique autonome qui embarque la frise et les captures. Les sessions se partagent entre plusieurs agents pour des flux collaboratifs : chaque agent agit sur les références de sa propre capture, et son identité se configure par variable d’environnement. Un curseur d’agent en option montre à l’utilisateur ce que l’agent s’apprête à faire : le pointeur se déplace sur un tracé humain, affiche un label d’intention, dessine une vague sur le clic et un contour coloré autour de l’élément.

Agent Desktop fonctionne entièrement en local, à partir d’un binaire unique. L’installation passe par npm install -g agent-desktop, qui télécharge automatiquement le binaire précompilé, ou par npx sans installation, ou encore par une compilation depuis les sources (Rust). L’environnement requis est macOS 13 ou plus, avec Rust 1.89+ pour la compilation. Les permissions système se vérifient et se demandent de manière propre : l’accessibilité est indispensable, la capture d’écran et l’automatisation ne sont requises que pour des commandes précises, et les vérifications simples ne déclenchent jamais de prompt. Chaque permission est un objet JSON explicite avec un état et, le cas échéant, une suggestion de correction.

Au final, Agent Desktop transforme le bureau macOS en surface d’action fiable pour les agents IA : au lieu de deviner des coordonnées et de risquer une action irrécupérable, l’agent lit l’interface réelle, pointe un élément stable et vérifie le résultat. L’efficacité se mesure dans la réduction drastique des tokens sur les apps denses, la sécurité des actions relancées après une erreur, et la souplesse d’intégration de n’importe quel langage ou framework de pilotage. C’est une base technique solide pour donner des mains fiables aux modèles, sans dépendre d’un service cloud.

Publications similaires

Laisser un commentaire