Overlay : montrer ce que fait l'IA
L'Overlay est la couche visuelle que Daimon dessine par-dessus l'écran pour que la personne devant la machine voie où l'IA regarde et agit : cadre, projecteur, curseur, bandeau. Il est purement présentationnel.
Les cinq outils ont les mêmes propriétés :
- ils n'ont aucun niveau d'autorisation et ne sont pas soumis au plafond ;
- ils ne bloquent jamais et n'échouent jamais ;
- ils renvoient toujours
{"ok": true}, même si aucune fenêtre d'overlay n'est en cours d'exécution : l'ordre est alors simplement abandonné. Unokne prouve donc pas que la marque est visible ; - le réglage « Présence à l'écran » du panneau active l'overlay.
- par défaut (
anti_feedbackvauttruedans la configuration), les marques de l'Overlay sont invisibles de toute capture d'écran, y comprisvue_snapshot: l'IA ne voit jamais ses propres marques. Vous les voyez à l'écran, mais elles n'apparaissent pas dans une capture ; c'est pourquoi cette documentation n'en montre aucune. Sous macOS, l'overlay est une fenêtre sans interaction qui couvre l'écran principal.
Unité des coordonnées
Ici, les coordonnées sont des pixels globaux bruts, déjà résolus par vous. Il n'y a ni space, ni display, ni region (contrairement aux Mains, qui parlent en points). Ne passez pas de pixels d'image : convertissez-les d'abord avec vue_resolve.
Le helper de l'Overlay
Les marques sont dessinées par un processus à part, le helper (Daimon overlay). Il se termine de lui-même : 60 secondes après son lancement s'il n'a eu aucun client, et 3 secondes après le départ de son dernier client.
Le client relance le helper quand un envoi échoue faute de helper, à condition que « Présence à l'écran » soit activé, et au plus une fois toutes les 5 secondes. Activer « Présence à l'écran » dans le panneau lance aussi le helper ; le désactiver ne l'arrête pas et ne le relance pas.
Pour savoir si le helper vit, appelez daimon_doctor et lisez la clé overlay. Le journal overlay.log, dans le dossier de données de Daimon, note overlay: bound, puis overlay: start enabled=<true|false> au démarrage, et overlay: exit reason=<idle|startup> à la sortie, chaque ligne précédée d'un horodatage UTC.
| Outil | Rôle | Niveau |
|---|---|---|
overlay_highlight | Cadre arrondi autour d'une région, avec libellé | aucun |
overlay_spotlight | Assombrit l'écran sauf une région | aucun |
overlay_cursor | Halo de curseur synthétique | aucun |
overlay_banner | Bandeau coloré selon un niveau | aucun |
overlay_clear | Efface toutes les marques | aucun |
overlay_highlight
Dessine un rectangle arrondi stylé, avec un libellé facultatif, autour d'une région.
| Paramètre | Type | Défaut | Obligatoire | Rôle |
|---|---|---|---|---|
x | entier | aucun | oui | Bord gauche |
y | entier | aucun | oui | Bord haut |
width | entier | aucun | oui | Largeur |
height | entier | aucun | oui | Hauteur |
label | chaîne | "" | non | Libellé affiché avec le cadre |
Exemple d'appel
{ "x": 400, "y": 300, "width": 220, "height": 60, "label": "Bouton Envoyer" }Retour : {"ok": true}.
overlay_spotlight
Assombrit l'écran sauf un trou dégagé sur la région.
| Paramètre | Type | Défaut | Obligatoire | Rôle |
|---|---|---|---|---|
x, y | entier | aucun | oui | Coin haut-gauche de la région |
width, height | entier | aucun | oui | Dimensions de la région |
Exemple d'appel : { "x": 400, "y": 300, "width": 220, "height": 60 }
Retour : {"ok": true}.
overlay_cursor
Place le halo de curseur synthétique sur un point global.
| Paramètre | Type | Défaut | Obligatoire | Rôle |
|---|---|---|---|---|
x, y | entier | aucun | oui | Point |
Exemple d'appel : { "x": 510, "y": 330 }
Retour : {"ok": true}.
overlay_banner
Affiche un bandeau coloré selon un niveau, avec un texte.
| Paramètre | Type | Défaut | Obligatoire | Rôle |
|---|---|---|---|---|
text | chaîne | aucun | oui | Texte du bandeau |
level | chaîne | "L1" | non | Couleur : default, L1, L2, L3, L4 ou gate |
Exemple d'appel
{ "text": "Daimon remplit le formulaire", "level": "L2" }Retour : {"ok": true}.
Pièges : un niveau inconnu retombe sur default, sans erreur.
overlay_clear
Efface toutes les marques d'overlay actuellement à l'écran.
Paramètres : aucun. Retour : {"ok": true}.