Vue : voir l'écran
Vue est l'organe de perception de l'écran. Il capture, convertit des coordonnées, localise un texte visible et mémorise la topologie de vos écrans. Tous ses outils sont en lecture seule et ne sont pas soumis au plafond des Mains. Vue ne lit pas l'écran à votre place : il renvoie des images et des positions, c'est au modèle de les interpréter.
| Outil | Rôle | Niveau |
|---|---|---|
vue_displays | Lister les écrans actifs | lecture |
vue_snapshot | Capturer un écran (image PNG et contrat de coordonnées) | lecture |
vue_resolve | Convertir pixel d'image et point global, sans capturer | lecture |
vue_find | Localiser un libellé visible par OCR | lecture |
vue_calibrate | Enregistrer la topologie d'écrans sous un nom | lecture |
vue_profile | Lire le profil apparié à l'environnement actuel | lecture |
vue_profile_brief | Brief d'amorçage pour un sous-agent | lecture |
vue_pilot_brief | Paquet de délégation par tâche | lecture |
Erreurs communes
Une erreur de Vue ne plante jamais le serveur : elle revient sous la forme {"error": "<code>", "message": "<détail>"}.
| Code | Signification |
|---|---|
permission_denied | Une autorisation système manque (Enregistrement de l'écran) |
invalid_arguments | Un argument est invalide |
index_out_of_range | L'indice display n'existe pas |
capture_failed | La capture a échoué |
exclusions_unreadable | Le fichier d'exclusions est cassé ; le message nomme le fichier et la ligne, jamais la valeur fautive |
En cas de doute sur une permission, appelez d'abord daimon_doctor.
vue_displays
Liste tous les écrans actifs. C'est le point de départ : l'indice index renvoyé est la valeur à passer comme display aux autres outils.
Paramètres : aucun.
Retour : une liste d'objets {index, width, height, is_main, origin: {x, y}, dpi}.
Exemple d'appel : vue_displays sans argument.
Pièges : l'origine d'un écran secondaire peut être négative dans le bureau global.
vue_snapshot
Capture un écran et le renvoie sous forme d'image, après censure et expurgation.
| Paramètre | Type | Défaut | Obligatoire | Rôle |
|---|---|---|---|---|
display | entier | 0 | non | Indice d'écran, tel que listé par vue_displays |
max_width | entier | 720 | non | Plafond de réduction de l'image servie, en pixels d'image ; 0 le désactive |
region | objet {x, y, width, height} | écran entier | non | Sous-région à capturer, en points, locale à l'écran, bornée à l'écran |
Niveau : lecture.
Exemple d'appel
{ "display": 0, "max_width": 1440, "region": { "x": 0, "y": 0, "width": 800, "height": 600 } }Retour : deux blocs de contenu, dans cet ordre : (1) un bloc texte contenant le contrat JSON coord_space, (2) un bloc image PNG en base64 (image/png). Tout le coord_space est exprimé en points, l'unité dans laquelle main_click agit ; image_scale est le nombre de pixels d'image servis par point. coord_space.region rapporte ce qui a réellement été capturé, et coord_space.secret_rects_available dit si le masquage par champ secret a pu s'exécuter.
Censure. Les fenêtres des applications que vous protégez (apps, secret_apps des exclusions) ne sont jamais refusées : elles sont censurées, remplacées par un aplat opaque #3A2A5C, comme les zones déclarées et les champs secrets ; le reste de l'écran est servi. Quand une règle existe, le bloc texte porte aussi :
| Champ | Valeurs | Sens |
|---|---|---|
censored | booléen | Une censure a été appliquée |
censored_reason | none, zones, unstable, unknown | Raison |
censored_rects | liste de {x, y, width, height} | Zones censurées, en points globaux, rognées à la capture |
Erreurs : voir Erreurs communes.
Pièges
- Une zone
#3A2A5Cest du contenu masqué, pas un écran vide. - Avec
unstableouunknown, les fenêtres protégées n'ont pas pu être placées, même après une nouvelle capture automatique : toute l'image est l'aplat. Réessayez. - Sous macOS, la barre des menus est aussi censurée tant qu'une application protégée est au premier plan.
- La valeur par défaut de
max_widthest 720 : demandez davantage pour du détail fin. - Sous Windows, un point est un pixel physique de l'écran virtuel et
backing_scalevaut toujours 1.0. - Daimon n'interprète pas l'image : regardez-la vous-même.
vue_resolve
Convertit un pixel d'image (vu dans un vue_snapshot de display) en point global, et inversement, sans capturer. Utilisez-le plutôt que de calculer vous-même décalage et échelle : un couple résolu est directement cliquable.
| Paramètre | Type | Défaut | Obligatoire | Rôle |
|---|---|---|---|---|
display | entier | 0 | non | Indice d'écran |
max_width | entier | 720 | non | Le même plafond que le snapshot d'origine ; 0 le désactive |
region | objet {x, y, width, height} | écran entier | non | La même région que le snapshot, en points, locale à l'écran |
image_x, image_y | nombre | aucun | non | Pixel d'image à convertir (les deux ensemble) |
global_x, global_y | nombre | aucun | non | Point global à convertir en pixel d'image (les deux ensemble) |
source | chaîne | "probe" | non | "probe" lit la géométrie vivante des écrans ; "profile" lit le profil de calibration apparié, avec repli sur probe si aucun ne correspond |
Niveau : lecture.
Exemple d'appel
{ "display": 0, "max_width": 720, "image_x": 360, "image_y": 200 }Retour : {global_x, global_y} si vous passez image_x/image_y, {image_x, image_y} si vous passez global_x/global_y.
Erreurs : voir Erreurs communes.
Pièges : max_width et region doivent être identiques à ceux du snapshot, sinon la conversion est fausse.
vue_find
Repli de Vue : localise un libellé visible par OCR sur l'appareil et renvoie des coordonnées globales cliquables, en points. Utile quand touche_tree et touche_probe restent muets (applications Win32 anciennes, dessinées sur mesure, Electron) et qu'il n'y a donc pas d'arbre d'accessibilité à cliquer.
| Paramètre | Type | Défaut | Obligatoire | Rôle |
|---|---|---|---|---|
text | chaîne | aucun | oui | Texte à localiser à l'écran |
display | entier | 0 | non | Indice d'écran |
max_width | entier | 720 | non | Plafond de réduction de la capture interne ; 0 le désactive |
region | objet {x, y, width, height} | écran entier | non | Sous-région de recherche, en points, locale à l'écran |
min_score | nombre | 0.6 | non | Score minimal, dans [0, 1], pour compter un succès |
source | chaîne | "probe" | non | "probe" ou "profile", comme pour vue_resolve |
Niveau : lecture.
Exemple d'appel
{ "text": "Enregistrer", "display": 0, "min_score": 0.6 }Retour : {found, text, score, image_x, image_y, global_x, global_y, candidates}. En cas d'échec, candidates contient les 5 libellés visibles les plus proches. Passez global_x et global_y tels quels à main_click (espace global par défaut).
Erreurs : voir Erreurs communes. Sous Windows, une langue OCR manquante est signalée comme une erreur, jamais comme un échec vide.
Pièges
- Le moteur est celui du système : Apple Vision sur une build macOS compilée avec
--features apple-vision,Windows.Media.Ocrsous Windows. Toute autre build embarque le moteur facticeFakeOcr: aucune vraie reconnaissance, toujours un échec. - L'OCR lit l'image censurée : aucun mot touchant une zone censurée n'est renvoyé. Avec une règle d'exclusion, la réponse ajoute
censoredetcensored_reason. - C'est un localisateur, pas un interprète : il renvoie une position.
vue_calibrate
Fige la topologie d'écrans actuelle sous un nom (écriture idempotente : même nom, mise à jour) et renvoie le profil enregistré. Un profil permet à vue_resolve et vue_find d'utiliser source="profile".
| Paramètre | Type | Défaut | Obligatoire | Rôle |
|---|---|---|---|---|
name | chaîne | aucun | oui | Nom du profil |
Niveau : lecture (l'outil enregistre un profil de calibration, il n'agit pas sur l'écran).
Exemple d'appel : { "name": "bureau-deux-ecrans" }
Retour : le profil enregistré.
vue_profile
Indique le profil de calibration apparié à la topologie d'écrans actuelle, ou signale un environnement inconnu avec les noms de profils connus.
Paramètres : aucun. Niveau : lecture.
vue_profile_brief
Produit le brief d'amorçage d'un sous-agent délégué : porte d'appariement du profil et indices d'écrans adressables.
| Paramètre | Type | Défaut | Obligatoire | Rôle |
|---|---|---|---|---|
expected | chaîne | aucun | non | Nom de profil à vérifier |
Niveau : lecture. Exemple d'appel : { "expected": "bureau-deux-ecrans" }
vue_pilot_brief
Produit le paquet de délégation d'une tâche : une porte go/no-go et un prompt prêt à coller pour un sous-agent, pour l'objectif donné. Aucun appel d'IA n'est fait.
| Paramètre | Type | Défaut | Obligatoire | Rôle |
|---|---|---|---|---|
objective | chaîne | aucun | oui | Objectif de la tâche déléguée |
expected | chaîne | aucun | non | Nom de profil attendu |
Niveau : lecture.
Exemple d'appel
{ "objective": "Relever le numéro de version affiché dans la fenêtre À propos", "expected": "bureau-deux-ecrans" }Pièges : si la porte n'est pas prête, calibrez d'abord (vue_calibrate) plutôt que de piloter à l'aveugle.