>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
JavaScript

Un assistant IA discret juste au-dessus de votre écran

Récemment, je suis tombé sur un projet open source intéressant appelé cue. C'est une petite application qui survole les autres programmes sous forme de fenêtre semi-transparente, écoute les appels, observe votre écran et fournit des indices en temps réel. La partie la plus intéressante ici n'est même pas l'intégration LLM, mais la façon dont l'utilitaire se cache du partage d'écran dans Zoom, Google Meet ou Teams.

cue first-run tutorial

Si vous avez vu des services payants comme Cluely ou Interview Coder, le concept vous sera familier. Le développeur de cue a décidé de créer un équivalent gratuit et open source (licence GPL-3.0) où vous pouvez brancher votre propre clé API et éviter les abonnements tiers.

Comment fonctionne cet assistant

L'application divise les informations entrantes en trois flux indépendants.

Premier flux — votre écran. L'utilitaire prend une capture d'écran lorsque vous appuyez sur un raccourci ou envoyez une requête.

Deuxième flux — votre microphone. cue écoute la voix du propriétaire de l'ordinateur et transcrit la parole en texte.

Troisième flux — audio système (ce que les autres participants disent à travers vos écouteurs). Sous Windows, la capture audio système fonctionne via le mode loopback sans configuration supplémentaire. Sur macOS à partir de la version 14.4, elle utilise ScreenCaptureKit via les drapeaux Chromium.

Les canaux des participants et de l'utilisateur sont traités séparément, donc le modèle sait exactement qui a dit quelle ligne. Ensuite, le contexte est envoyé au modèle de langage choisi, et la réponse est transmise mot par mot directement dans la fenêtre flottante.

Ce que cue peut faire

L'interface ressemble à un panneau de verre compact. L'espace autour est cliquable, donc il n'interfère pas avec les boutons de votre éditeur de code ou de votre navigateur.

Voici les principaux scénarios d'utilisation :

  • Décomposer les tâches à l'écran. Vous appuyez sur une combinaison de touches (Ctrl+H sous Windows ou Cmd+H sous macOS par défaut), et l'application capture l'écran avec du code ou une description de tâche et affiche les étapes de solution, le code fonctionnel et les estimations de complexité temporelle et spatiale.
  • Indices de dialogue en temps réel. Le bouton « Que devrais-je dire ? » analyse les dernières lignes de l'autre personne et suggère une réponse logique.
  • Résumés et questions. Vous pouvez appuyer sur un bouton pour résumer la conversation ou générer des questions clarifiantes sur le sujet.
  • Questions ouvertes. Vous pouvez taper n'importe quelle question dans le champ de saisie, en combinant la capture d'écran de la fenêtre ouverte et l'historique de la discussion récente.

Les paramètres incluent un champ CV. Vous pouvez y coller votre parcours professionnel, et l'assistant s'appuiera sur une expérience réelle pour répondre aux questions délicates.

Transcription locale et sélection du modèle

Le projet suit le concept Bring Your Own Key (BYOK). L'auteur n'a pas de serveurs, il n'y a pas de télémétrie, et les clés sont stockées localement dans le fichier cue-data.json.

Les fournisseurs pris en charge incluent OpenAI, Anthropic Claude, Google Gemini, Azure AI Foundry, ainsi que tout point de terminaison local ou personnalisé compatible avec OpenAI Chat Completions (par exemple, Ollama ou vLLM).

Si vous ne souhaitez pas envoyer le flux audio vers le cloud, vous pouvez basculer la transcription vocale vers whisper.cpp. Dans les paramètres audio, vous sélectionnez le mode local et téléchargez le modèle nécessaire, du modèle de base base.en aux variantes multilingues et quantifiées. L'application lance un processus whisper-server local sur un port temporaire et met en file d'attente l'audio via celui-ci. Les données audio ne sont pas écrites sur le disque, restant uniquement en RAM.

Comment la fenêtre reste invisible lors du partage d'écran

Le détail technique le plus intéressant de cue est sa protection contre l'apparition dans les captures d'écran et les flux. Ce n'est pas une astuce de carte graphique ni un hack de transparence.

Dans Electron, la méthode setContentProtection(true) est appelée, qui accède directement aux mécanismes au niveau système du système d'exploitation :

  1. Sous Windows, l'appel SetWindowDisplayAffinity est utilisé avec le drapeau WDA_EXCLUDEFROMCAPTURE. Le gestionnaire de fenêtres de Windows (DWM) exclut simplement la fenêtre de tous les flux de capture. Dans les anciennes versions de Windows 10 (avant 2004), cela se traduisait par un rectangle noir, mais sur les versions plus récentes, la fenêtre devient complètement invisible pour la capture.
  2. Sur macOS, le drapeau NSWindowSharingNone est défini. Il demande au serveur de fenêtre de masquer la fenêtre des flux. Cependant, à partir de macOS 15.4, Apple a légèrement changé le comportement de l'API, donc sur les versions récentes, l'invisibilité à 100 % n'est pas garantie.

Il y a une nuance pour Zoom. Dans les paramètres du client, vous devez activer le mode avancé avec le filtrage de fenêtre :

Zoom screen capture mode setting

Sans cette case cochée, Zoom tente de capturer l'écran brut en contournant les filtres de confidentialité des fenêtres. Pour Google Meet et Microsoft Teams, aucune configuration supplémentaire n'est nécessaire — ils respectent les drapeaux système par défaut.

Installation et exécution

Le moyen le plus simple est de récupérer un binaire prêt à l'emploi depuis la page des versions du dépôt. Les builds sont disponibles pour Windows x64 et macOS sur les processeurs Apple Silicon.

Si vous souhaitez compiler le projet depuis les sources, vous aurez besoin de Node.js version 22.12 ou ultérieure. La compilation ne nécessite pas d'outils natifs lourds, car l'auteur a intentionnellement écrit le client en HTML, CSS et JS purs sans frameworks supplémentaires :

git clone https://github.com/Blueturboguy07/cue.git
cd cue
npm install
npm start

Si vous prévoyez d'utiliser Whisper local depuis les sources, vous devez préparer les binaires avant le premier lancement :

npm run prepare:whisper

Après avoir démarré l'application, vous devrez accorder les autorisations de microphone et d'enregistrement d'écran (sur macOS), puis coller votre clé API dans les paramètres.

En résumé

cue est un exemple clair de comment les fonctionnalités standard d'Electron et des API système peuvent être combinées pour créer un compagnon pratique pour les appels, le brainstorming ou la résolution de problèmes techniques. Le code du dépôt est compact et bien lisible, donc le projet est également excellent pour quiconque souhaite comprendre la capture de flux audio et le contrôle de la visibilité des fenêtres dans les applications de bureau.

Projets similaires