La plupart des entreprises ont au moins une application totalement dépourvue d'API. Les outils des leçons précédentes ne peuvent pas l'atteindre, car il n'y a rien à appeler.
Meridian, un cabinet de conseil en ingénierie fictif, possède l'une de ces applications. Il s'agit d'un ancien gestionnaire de plans appelé PlotDesk, également fictif. Chaque vendredi, une personne passe la journée à cliquer sur les mêmes écrans pour exporter des jeux de plans PDF. PlotDesk n'a ni API ni ligne de commande. Il n'a que des fenêtres et des boutons.
L'utilisation de l'ordinateur permet à Claude de faire fonctionner PlotDesk à travers ces fenêtres et boutons, exactement comme le ferait une personne, en regardant des captures d'écran et en décidant où cliquer et quel texte saisir.
Meridian souhaite que Claude exporte le jeu de plans PDF du jour pour le projet MEG-2026-0142.
Identifier qui effectue chaque action
Via l'API, Claude ne se connecte jamais au bureau. Tout ce que Claude produit est une réponse contenant des appels d'outils. Votre programme est le programme Python qui appelle la Messages API. C'est lui qui effectue chaque action sur le bureau et renvoie le résultat.
Voici la boucle. Claude demande une capture d'écran. Votre programme en prend une et la renvoie sous forme d'image. Claude la regarde et envoie l'action suivante, comme un clic à des coordonnées données ou du texte à saisir. Votre programme exécute l'action, et la boucle se répète jusqu'à ce que la tâche soit terminée. Il s'agit de la même boucle d'outils que vous avez déjà, à ceci près que certains résultats sont des captures d'écran.
L'export complet de Meridian a nécessité sept actions.
| Action de Claude | Ce qui s'est passé |
|---|---|
screenshot | Claude trouve la fenêtre de PlotDesk |
left_click | Sur le champ Numéro de projet |
type | MEG-2026-0142 |
left_click | Sur Ouvrir |
screenshot | PlotDesk affiche le projet : Remplacement de la station de pompage, 22 feuilles |
left_click | Sur Exporter en PDF |
screenshot | La barre d'état indique « Exporté MEG-2026-0142_plots.pdf » |
Exécuter le bureau dans un conteneur dédié
Claude agit en fonction de ce qui se trouve à l'écran. Du texte présent dans une page web ou une image peut remplacer vos instructions ou conduire Claude à commettre des erreurs. Pour limiter les dégâts qu'une action erronée peut causer, attribuez au bureau un conteneur ou une machine virtuelle dédiée qui ne contient que ce dont la tâche a besoin. Configurez-le ainsi :
- Chaque session obtient un conteneur dédié.
- Le conteneur ne contient aucun identifiant et aucun répertoire monté depuis l'hôte.
- Le conteneur ne peut atteindre que les hôtes réseau utilisés par la tâche.
Votre programme et votre clé API restent en dehors du conteneur.
Rédigez les actions et laissez le SDK exécuter la boucle
Les SDK Python et TypeScript disposent d'une classe appelée le jeu d'outils ordinateur (computer toolset). Vous en créez une sous-classe et rédigez une méthode pour chaque action dont la tâche a besoin. La classe construit pour vous l'entrée tools du jeu d'outils et se trouve en version bêta. En Python, elle nécessite la version 1.12.0 ou ultérieure du SDK.
Meridian implémente trois des actions du jeu d'outils : screenshot, left_click et type. Toute action que vous n'implémentez pas est envoyée à l'API comme désactivée.
Chaque méthode tient en une ligne qui délègue le travail à backend. Il s'agit de votre propre enveloppe autour de ce qui contrôle le bureau, comme un client VNC ou xdotool. Cet exemple VNC minimal en Python et TypeScript(s’ouvre dans un nouvel onglet) est un bon point de départ, mais il n'est pas destiné à la production.
Passez une instance de votre classe dans tools, ainsi que la requête. Tool Runner, un assistant du SDK, exécute la boucle pour vous jusqu'à ce que Claude réponde sans appel d'outil.
En octobre 2026, ce jeu d'outils(s’ouvre dans un nouvel onglet) est disponible sur Claude API et sur Claude Models on Google Cloud (géré par Google). Amazon Bedrock, Microsoft Foundry et Claude Platform on AWS disposent des versions bêta antérieures de l'outil. Celles-ci utilisent une entrée tools différente et un en-tête bêta, un en-tête de requête qui active une fonctionnalité bêta.
Faire approuver les clics et la saisie par une personne
Lorsque vous créez l'instance, passez une fonction appelée confirm. Le SDK l'appelle avant chaque action. Si elle renvoie True, l'action est exécutée. Toute autre réponse refuse l'action, et Claude est informé qu'une personne l'a refusée.
confirm voit l'action et son entrée, mais pas l'écran. Une personne qui observe le bureau peut voir ce qui se trouve à l'endroit où Claude souhaite cliquer. Ainsi, Meridian approuve automatiquement les captures d'écran et envoie chaque clic et chaque action type à son opérateur, la personne qui surveille le bureau.
Voici le programme de Meridian. Trois noms qu'il contient proviennent du propre code de Meridian, pas du SDK : backend, ask_operator et TASK. ask_operator montre à l'opérateur l'action et renvoie sa réponse, et TASK contient la requête.
Décider quand l'utilisation de l'ordinateur convient
Chaque capture d'écran reste dans la conversation, de sorte que chaque étape coûte plus cher que la précédente. Ainsi, lorsque le logiciel dispose d'un serveur MCP (un service qui propose ses fonctions à Claude sous forme d'outils), d'une API ou d'une ligne de commande, utilisez plutôt cela. L'utilisation de l'ordinateur est destinée aux logiciels qui ne disposent d'aucun de ces moyens, comme PlotDesk.
Si la tâche se limite à des pages web, l'outil d'utilisation du navigateur(s’ouvre dans un nouvel onglet) est mieux adapté. Il lit et agit directement sur la page elle-même et ne nécessite pas de bureau complet.
Points clés à retenir
- Claude demande des actions, et votre programme les exécute.
- Le bureau s'exécute dans un conteneur dédié pour chaque session.
- Vous n'implémentez que les actions dont la tâche a besoin.
- La fonction
confirmde Meridian envoie chaque clic et chaque actiontypeà une personne pour approbation. - Utilisez une interface directe lorsqu'elle existe, et l'utilisation de l'ordinateur lorsqu'aucune n'existe.