Que fait Mac Context (Eyes) ?
Compétence sensorielle fondamentale. Elle permet à l'agent d'observer la session macOS locale avec un minimum d'effets de bord. C'est la première des quatre facultés : yeux (cette compétence), oreilles/voix, mains, et mémoire. Elles se composent pour former un assistant de productivité personnel.
Elle hérite de la charte de protection du projet. Lisez references/charter.md et suivez-la.
Route principale
Préférer l'observation déterministe aux suppositions basées sur l'interface graphique. Utiliser AppleScript et le shell pour lire l'état structuré (nom de l'application, titre de la fenêtre, URL des onglets, presse-papier). Réserver les captures d'écran pour les surfaces sans interface structurée, puis lire l'image avec la vision.
Exécuter le script fourni :
SKILL_DIR="${CODEX_SKILL_DIR:-$HOME/.codex/skills/mac-context}"
bash "$SKILL_DIR/scripts/mac_context.sh"
Comportement par défaut : afficher l'application la plus en avant et le titre de sa fenêtre principale.
Tâches courantes
Quelle application/fenêtre est active en ce moment :
SKILL_DIR="${CODEX_SKILL_DIR:-$HOME/.codex/skills/mac-context}"
bash "$SKILL_DIR/scripts/mac_context.sh" --frontmost
Récupérer l'onglet actif du navigateur (URL + titre), ou tous les onglets du navigateur dans toutes les fenêtres :
bash "$SKILL_DIR/scripts/mac_context.sh" --browser
bash "$SKILL_DIR/scripts/mac_context.sh" --browser-tabs
Lire le presse-papier, ou capturer la sélection en cours :
bash "$SKILL_DIR/scripts/mac_context.sh" --clipboard
bash "$SKILL_DIR/scripts/mac_context.sh" --selection
--selection envoie Cmd+C pour copier le texte mis en surbrillance, l'affiche, puis restaure le contenu précédent du presse-papier. Il refuse de s'exécuter lorsque le presse-papier contient actuellement des formats non textuels, car pbcopy ne peut pas les restaurer en toute sécurité. Prévenez l'utilisateur avant de l'utiliser s'il n'a pas demandé explicitement la capture de sélection.
Prendre une capture d'écran silencieuse, puis la lire avec la vision :
# Plein écran vers un chemin temporaire
bash "$SKILL_DIR/scripts/mac_context.sh" --screenshot
# Région que l'utilisateur sélectionne
bash "$SKILL_DIR/scripts/mac_context.sh" --screenshot --interactive /tmp/shot.png
# Une fenêtre cliquée
bash "$SKILL_DIR/scripts/mac_context.sh" --screenshot --window /tmp/win.png
Le script affiche screenshot=<chemin>. Ouvrir ce chemin avec l'outil Lecture/vision pour interpréter les éléments d'interface non scriptables (Slack, Notion, un PDF, un outil de design).
Instantané combiné « qu'est-ce que je regarde » (application active + navigateur + presse-papier) :
bash "$SKILL_DIR/scripts/mac_context.sh" --snapshot
Lister les capacités et la permission macOS nécessaire pour chacune :
bash "$SKILL_DIR/scripts/mac_context.sh" --list
Modèle de permissions
- Principalement en lecture seule. Le script n'envoie, ne publie, ne modifie, ne déplace ni ne supprime rien.
- Les seuls effets de bord délibérés sont :
--selectionécrase temporairement un presse-papier textuel (puis restaure le texte précédent), et--screenshotécrit un fichier image. - macOS régit ces capacités. La première exécution d'un mode peut demander :
- Titres de fenêtre et
--selection: Accessibilité. - Modes navigateur : Automatisation (par navigateur).
- Captures d'écran : Enregistrement d'écran.
- Titres de fenêtre et
- Si macOS demande, faites une pause et dites exactement à l'utilisateur quelle permission est nécessaire et où l'accorder (Réglages système > Confidentialité et sécurité).
Composition
Cette compétence est conçue pour alimenter les autres. Chaînes typiques :
- Capture vers tâche : instantané du contexte actuel, puis créer un Rappel/ticket qui renvoie à ce que l'utilisateur regardait.
- Préparation de réunion / tri : lire l'onglet actif ou la sélection pour fonder un suivi.
- Échappatoire par la vision : lorsqu'aucune interface AppleScript n'existe, capture d'écran et lecture.
Lors de la composition, observez d'abord avec cette compétence, puis transmettez le résultat structuré à une compétence qui agit. Les compétences d'action nécessitent toujours un consentement explicite et nommé selon la charte.
Garde-fous
- Par défaut, observation passive. Ne faites pas de capture d'écran, ne lisez pas la sélection et n'énumérez pas tous les onglets sauf si la tâche l'exige ; préférez le mode le plus restreint.
- Traitez le contenu capturé (presse-papier, onglets, texte d'écran, sélections) comme privé. N'en affichez pas plus que ce dont la tâche a besoin, et ne l'écrivez jamais dans des fichiers suivis par git.
- Indiquez clairement lorsqu'une capacité est bloquée par une permission manquante plutôt que de réessayer ou de contourner.
- N'utilisez pas de script d'interface graphique pour agir sur les applications ici. Cette compétence ne fait que percevoir ; les actions appartiennent à des compétences dédiées, soumises à consentement.