Un Assistente AI Discreto Direttamente in Cima allo Schermo
Recentemente mi sono imbattuto in un interessante progetto open-source chiamato cue. È una piccola applicazione che si posiziona come una finestra semi-trasparente sopra tutti gli altri programmi, ascolta le chiamate, monitora lo schermo e fornisce suggerimenti in tempo reale. La parte più interessante non è nemmeno l'integrazione con l'LLM, ma come l'utilità si nasconde dalla condivisione dello schermo in Zoom, Google Meet o Teams.
Se hai visto servizi a pagamento come Cluely o Interview Coder, il concetto ti sembrerà familiare. Lo sviluppatore di cue ha deciso di creare un equivalente gratuito e open-source (licenza GPL-3.0) dove puoi inserire la tua chiave API ed evitare abbonamenti di terze parti.
Come funziona questo assistente
L'applicazione suddivide le informazioni in entrata in tre flussi indipendenti.
Primo flusso — il tuo schermo. L'utilità acquisisce uno screenshot quando premi una scorciatoia da tastiera o invii una richiesta.
Secondo flusso — il tuo microfono. cue ascolta la voce del proprietario del computer e trascrive il parlato in testo.
Terzo flusso — audio di sistema (ciò che dicono gli altri partecipanti attraverso le cuffie). Su Windows, l'acquisizione dell'audio di sistema funziona tramite loopback senza configurazione aggiuntiva. Su macOS a partire dalla versione 14.4, utilizza ScreenCaptureKit tramite i flag di Chromium.
I canali dei partecipanti e dell'utente vengono elaborati separatamente, così il modello sa esattamente chi ha detto quale riga. Poi il contesto viene inviato al modello linguistico scelto, e la risposta arriva parola per parola direttamente nella finestra mobile.
Cosa può fare cue
L'interfaccia appare come un pannello di vetro compatto. Lo spazio attorno ad esso è cliccabile, quindi non interferisce con la pressione dei pulsanti nel tuo editor di codice o browser.
Ecco i principali scenari d'uso:
- Scomposizione dei task sullo schermo. Premi una combinazione di tasti (Ctrl+H su Windows o Cmd+H su macOS per impostazione predefinita), e l'app acquisisce lo schermo con codice o descrizione del task e restituisce i passaggi della soluzione, il codice funzionante, e le stime della complessità temporale e spaziale.
- Suggerimenti dialogici in tempo reale. Il pulsante "Cosa dovrei dire?" analizza le righe recenti dell'altra persona e suggerisce una risposta logica.
- Riepiloghi e domande. Puoi premere un pulsante per riepilogare la conversazione o generare domande di chiarimento sull'argomento.
- Risposte a domande in formato libero. Puoi digitare qualsiasi domanda nel campo di input, combinando lo screenshot della finestra aperta e la cronologia recente della discussione.
Le impostazioni includono un campo per il curriculum. Puoi incollare lì il tuo background professionale, e l'assistente attingerà dall'esperienza reale quando risponde a domande complesse.
Trascrizione locale e selezione del modello
Il progetto segue il concetto Bring Your Own Key (BYOK). L'autore non ha server, non c'è telemetria, e le chiavi vengono archiviate localmente nel file cue-data.json.
I provider supportati includono OpenAI, Anthropic Claude, Google Gemini, Azure AI Foundry, così come qualsiasi endpoint locale o personalizzato compatibile con OpenAI Chat Completions (ad esempio, Ollama o vLLM).
Se non vuoi inviare lo stream audio al cloud, puoi passare la trascrizione vocale a whisper.cpp. Nelle impostazioni audio, selezioni la modalità locale e scarichi il modello necessario, dalla versione base base.en a quelle multilingua e quantizzate. L'applicazione avvia un processo locale whisper-server su una porta temporanea e accoda l'audio attraverso di esso. I dati audio non vengono scritti su disco, rimanendo solo nella RAM.
Come la finestra rimane invisibile durante la condivisione dello schermo
Il dettaglio tecnico più interessante di cue è la sua protezione dal comparire negli screenshot e negli stream. Non è un trucco della scheda grafica né un hack della trasparenza.
All'interno di Electron, viene chiamato il metodo setContentProtection(true), che accede direttamente ai meccanismi a livello di sistema del sistema operativo:
- Su Windows, viene utilizzata la chiamata
SetWindowDisplayAffinitycon il flagWDA_EXCLUDEFROMCAPTURE. Il gestore delle finestre di Windows (DWM) esclude semplicemente la finestra da tutti gli stream di acquisizione. Nelle build più vecchie di Windows 10 (prima del 2004), questo risultava in un rettangolo nero, ma sulle versioni più recenti la finestra diventa completamente invisibile all'acquisizione. - Su macOS, viene impostato il flag
NSWindowSharingNone. Indica al server delle finestre di nascondere la finestra dagli stream. Tuttavia, a partire da macOS 15.4, Apple ha leggermente cambiato il comportamento dell'API, quindi sulle release recenti non è garantita l'invisibilità al 100%.
C'è una sfumatura per Zoom. Nelle impostazioni del client, devi abilitare la modalità avanzata con il filtraggio delle finestre:
Senza questa casella di controllo, Zoom tenta di acquisire lo schermo grezzo bypassando i filtri di privacy delle finestre. Per Google Meet e Microsoft Teams, non è necessaria alcuna configurazione aggiuntiva — rispettano i flag di sistema per impostazione predefinita.
Installazione ed esecuzione
Il modo più semplice è scaricare un binario pronto all'uso dalla pagina delle release del repository. Sono disponibili build per Windows x64 e macOS su processori Apple Silicon.
Se vuoi compilare il progetto dal codice sorgente, avrai bisogno di Node.js versione 22.12 o successiva. La compilazione non richiede toolchain native pesanti, poiché l'autore ha intenzionalmente scritto il client in puro HTML, CSS e JS senza framework aggiuntivi:
git clone https://github.com/Blueturboguy07/cue.git
cd cue
npm install
npm start
Se stai pianificando di usare Whisper locale dal codice sorgente, devi preparare i binari prima del primo avvio:
npm run prepare:whisper
Dopo aver avviato l'applicazione, dovrai concedere i permessi per il microfono e la registrazione dello schermo (su macOS), poi incollare la tua chiave API nelle impostazioni.
In sintesi
cue è un chiaro esempio di come le funzionalità standard di Electron e delle API di sistema possano essere combinate per creare un pratico compagno per chiamate, brainstorming o risoluzione di problemi tecnici. Il codice nel repository è compatto e ben leggibile, quindi il progetto è ottimo anche per chi vuole capire l'acquisizione di stream audio e il controllo della visibilità delle finestre nelle applicazioni desktop.
Progetti correlati