Незаметный AI-ассистент прямо поверх экрана

16 авг 2026
1,150
261
4
4 недели

Недавно наткнулся на любопытный оpen-source проект под названием cue. Это небольшое приложение, которое висит полупрозрачным окном поверх всех остальных программ, слушает происходящее на созвонах, смотрит на экран и выдает подсказки в реальном времени. Самое интересное здесь даже не работа с LLM, а то, как утилита скрывает себя от трансляции экрана в Zoom, Google Meet или Teams.

cue first-run tutorial

Если вам доводилось видеть платные сервисы вроде Cluely или Interview Coder, то концепция покажется знакомой. Разработчик cue решил собрать бесплатный аналог с открытым исходным кодом (лицензия GPL-3.0), куда можно подключить собственный API-ключ и не платить за сторонние подписки.

Как устроен этот ассистент

Приложение разделяет входящую информацию на три независимых потока.

Первый поток — ваш экран. Утилита делает скриншот в момент нажатия горячей клавиши или отправки запроса.

Второй поток — ваш микрофон. cue слушает голос владельца компьютера и переводит речь в текст.

Реклама

Третий поток — системный звук (то, что говорят собеседники в наушниках). На Windows захват аудио из системы работает через системный loopback без лишних телодвижений. На macOS начиная с версии 14.4 задействован ScreenCaptureKit через флаги Chromium.

Каналы собеседника и пользователя обрабатываются раздельно, поэтому модель точно понимает, кто какую реплику произнес. Затем контекст отправляется в выбранную языковую модель, а ответ выводится прямо в плавающее окно по словам (стримингом).

Что умеет делать cue

Интерфейс выглядит как компактная стеклянная панель. Пространство вокруг нее кликабельно, поэтому она не мешает нажимать на кнопки в редакторе кода или браузере.

Вот основные сценарии работы с утилитой:

  • Разбор задач на экране. Нажимаете комбинацию клавиш (по умолчанию Ctrl+H на Windows или Cmd+H на macOS), приложение снимает экран с кодом или условием задачи и выдает ход решения, рабочий код и оценку сложности по времени и памяти.
  • Подсказки по ходу диалога. Кнопка «What should I say?» анализирует последние фразы собеседника и предлагает логичный вариант ответа.
  • Резюме и вопросы. Можно нажать на кнопку подведения итогов беседы или сгенерировать уточняющие вопросы по теме разговора.
  • Ответы на свободные вопросы. В поле ввода можно напечатать любой вопрос, объединяя скриншот открытого окна и историю недавнего обсуждения.

В настройках есть поле для резюме. Туда можно вставить свой профессиональный бэкграунд, и ассистент будет опираться на реальный опыт при ответах на вопросы с подвохом.

Локальная транскрипция и выбор моделей

В проект заложена концепция Bring Your Own Key (BYOK). Серверов у автора нет, телеметрия отсутствует, а ключи хранятся локально в файле cue-data.json.

Поддерживаются OpenAI, Anthropic Claude, Google Gemini, Azure AI Foundry, а также любые локальные или кастомные эндпоинты, совместимые с OpenAI Chat Completions (например, Ollama или vLLM).

Если не хочется отправлять аудиопоток в облако, транскрипцию речи можно переключить на whisper.cpp. В настройках аудио выбирается локальный режим и скачивается нужная модель, от базовой base.en до многоязычных и квантованных вариантов. Приложение поднимает локальный процесс whisper-server на временном порту и прогоняет очереди аудио через него. Аудиоданные на диск не сбрасываются, оставаясь исключительно в оперативной памяти.

Как окно остается невидимым при демонстрации экрана

Самая любопытная техническая деталь cue — защита от попадания в скриншоты и трансляции. Это не магия видеокарты и не хак с прозрачностью.

Внутри Electron вызывается метод setContentProtection(true), который обращается напрямую к системным механизмам операционной системы:

  1. В Windows применяется вызов SetWindowDisplayAffinity с флагом WDA_EXCLUDEFROMCAPTURE. Оконный менеджер Windows (DWM) просто исключает окно из всех потоков захвата. В старых сборках Windows 10 (до 2004) это приводило к черному прямоугольнику, но на свежих версиях окно становится полностью невидимым для захвата.
  2. В macOS выставляется флаг NSWindowSharingNone. Он сообщает оконному серверу о необходимости скрывать окно из стримов. Правда, начиная с macOS 15.4 Apple немного изменила поведение API, поэтому на свежих релизах стопроцентная невидимость не гарантируется.

Для Zoom есть нюанс. В настройках клиента нужно включить продвинутый режим с фильтрацией окон:

Zoom screen capture mode setting

Без этой галочки Zoom пытается захватывать сырой экран в обход фильтров приватности окон. Для Google Meet и Microsoft Teams ничего настраивать не нужно, они уважают системные флаги по умолчанию.

Установка и запуск

Проще всего забрать готовый бинарник со страницы релизов репозитория. Доступны сборки для Windows x64 и macOS на процессорах Apple Silicon.

Если хочется собрать проект из исходников, потребуется Node.js версии 22.12 или новее. Сборка не требует тяжелых нативных тулчейнов, так как автор намеренно написал клиент на чистом HTML, CSS и JS без лишних фреймворков:

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

Если планируете использовать локальный Whisper из исходников, перед первым запуском нужно подготовить бинарники:

npm run prepare:whisper

После старта приложения останется выдать разрешения на микрофон и запись экрана (на macOS), а затем вставить API-ключ в настройках.

В сухом остатке

cue — это наглядный пример того, как стандартными средствами Electron и системных API можно собрать удобного компаньона для созвонов, брейнштормов или решения технических задач. Код в репозитории компактный и хорошо читается, поэтому проект отлично подойдет еще и тем, кто хочет разобраться с захватом аудиопотоков и управлением видимостью окон в десктопных приложениях.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.