Composer Cursor — место, где происходит большая часть тяжёлой работы ИИ: правки в нескольких файлах, рефакторы, скаффолд новой фичи. Это и место, где печать рушится быстрее всего. Промпты, дающие хорошие правки, длинные: контекст, ограничения, что трогать и что нет, почему. Печатать 200 слов посреди задачи — трение.
Это гид по использованию голоса именно с Cursor — composer, inline chat и ask mode — на Mac.
Почему голос подходит Cursor лучше других ИИ-инструментов
Cursor использует ваш промпт, чтобы решить, какие файлы загрузить в контекст. Чем длиннее и конкретнее — тем лучше его выбор. Двухстрочный напечатанный промпт даёт окно из двух файлов. Произнесённый абзац с путями, поведением и ограничениями — десяток правильных.
Вторая причина: промпты composer — batch-операции. Описываете единицу работы, а не разговор. Батчи любят контекст наперёд. Голос так и делает: начало с ситуации, потом запрос, в конце ограничения. Это форма, которую Cursor хочет.
Как выглядит хороший устный промпт для Cursor
Печатно (43 слова):
Отрефакторь AuthGuard под новую систему прав. Сейчас проверяет роли напрямую — не масштабируется.
Устно (180 слов):
Компонент AuthGuard в src/components/auth/AuthGuard.tsx сейчас проверяет роли напрямую: user.role равно admin или user.role равно editor. Мы только что выкатили новую систему прав в src/lib/permissions.ts с hasPermission и useHasPermission. Хочу отрефакторить AuthGuard, чтобы он принимал нужное право как prop вместо проверки ролей. Посмотри, как новая система используется в src/components/admin/UserList.tsx — там паттерн. Сохрани обратную совместимость: пропом может быть roles или permission; если оба — используй permission. Обнови три callsite в src/pages, которые используют AuthGuard с roles, переведи их на permission. Не трогай легаси-админку под src/pages/admin-legacy — её сносим следующий спринт, мигрировать не стоит.
Cursor выдаёт второй случай за один проход. По первому — получите diff, который ошибается в трёх файлах и пропускает callsite’ы.
Разница не в вашем интеллекте — в том, заставила ли вас фрикшен печати сжимать контекст.
Настройка голоса под Cursor на Mac
Cursor — Electron, поэтому работает всё, что вставляет текст у курсора. Три варианта:
Встроенная диктовка Apple
Бесплатно, on-device на macOS Tahoe. Включается в Системных настройках > Клавиатура > Диктовка. Нажали клавишу — поговорили — нажали ещё раз. Работает в любой панели Cursor.
Где плохо: техсловарь. Пути файлов, имена переменных и библиотек, CLI — Apple их ломает. «src slash components slash auth guard dot tsx» становится мусором. Норм для естественного языка, мучительно для код-промптов.
Wispr Flow, Superwhisper и другие диктовалки
Расшифровывают с лучшей обработкой техлексики. Вставляют у курсора, как Apple Dictation, но с очисткой, длинной точностью и (по приложению) облаком/локалью.
Vext с YOLO Mode
Vext — наш вариант. $49 разово, локальный Parakeet на Apple Silicon, плюс фича специально под ИИ-инструменты: YOLO авто-отправляет промпт после вставки. Сказали, отпустили — composer уже выполняет.
Сетап под Cursor:
- Установка:
brew install muvon/tap/vext - Разрешите Accessibility
- В Settings > Modes включите Enhance для диктовки (чистка)
- Включите YOLO, если хотите авто-отправку
- Откройте Cursor, кликните в composer, удерживайте клавишу, говорите
Шаг Enhance важнее, чем кажется. Сырой ввод даёт composer’у грязный текст, который тратит токены и сбивает выбор файлов. Чистый ("проблема в том, что…" вместо "ну то есть проблема в типа эм…") передаёт ту же мысль с меньшим шумом.
Где использовать голос в Cursor
Промпты composer — наибольший выигрыш. Многофайловые правки с описанием ситуации, изменения и ограничений.
Inline chat (Cmd+K) — нормально для промптов среднего размера. «Переведи эту функцию на async/await, форму обработки ошибок сохрани» — читается естественно вслух.
Ask mode — для исследовательских вопросов. «Почему этот компонент перерисовывается на каждый ввод пользователя? Пройди по пропам и посмотри на context provider’ы».
Tab autocomplete — не парьтесь. Поток слишком быстрый, чтобы голос помогал.
Чат-панель для уточнений — голосом — содержательное («посмотри реализацию в fooService.ts и объясни, почему мы там ловим ошибку валидации»), печатью — короткое («да», «ещё раз», «другой подход»).
Что меняется в работе с настроенным голосом
Холодный старт
Первое сообщение в сессии Cursor — самое важное; он сеет контекст. Печатью сжимаете, голосом — выводите вперёд:
Делаю страницу настроек биллинга. У нас React + TanStack Query для фетчинга, Zustand для клиентского стейта, дизайн-система в src/ui. Нужно встроить Stripe customer portal — есть stripeService.ts с createPortalSession, на фронте не подключён. Хочу страницу app/settings/billing: показать текущий план, кнопка «открыть портал Stripe в новой вкладке», следующая дата и сумма счёта. Используй карточки из дизайн-системы. Новых зависимостей не добавляй.
Этого Cursor’у хватает, чтобы за раз скаффолдить страницу.
Багрепорты ИИ
Баги — нарратив, и устно идут быстрее и точнее:
Автосейв редактора иногда сохраняет старый контент. Воспроизводится сложно, но кажется поймал. Когда пользователь печатает быстро и сеть медленная, оптимистичный апдейт ставит локальный стейт в новое содержимое, но если ответ предыдущего сейва приходит после нового, локальный стейт перезатирается старым. Гонка где-то в useAutoSave в src/hooks/useAutoSave.ts. Посмотри порядок запросов и почини. Используй инкрементальный sequence number, чтобы запоздавшие ответы дропались.
Code review коллеги
Откройте диф в Cursor, надиктовывайте комментарии через composer с «оставь комментарий, который говорит…» — гораздо быстрее печати. Особенно хорошо, когда нужно сформулировать обоснование, а не просто показать строку.
Частые вопросы
В Cursor есть встроенный голос?
Толком нет. Нативной диктовки нет — опираетесь на macOS или сторонние. Cursor для голосовых инструментов — просто Electron-поле, что и удобно: всё, что вставляет в Mac, вставит и в Cursor.
ИИ не путается от разговорных фраз?
GPT-4o и Claude Sonnet нормально обрабатывают разговорную речь. Слова-паразиты и рестарты — давно в тренировочных данных. Риск — не понимание, а лишние токены. Это решается очисткой типа Enhance в Vext.
Стоит ли диктовать код?
Нет. Диктуйте естественную часть — контекст, замысел, ограничения. Когда нужен фрагмент кода — вставляйте. Голос — для того, что дольше печатать, чем думать.
Честный компромисс
Системная диктовка чего-то стоит — деньги, загрузка модели, разрешение Accessibility, неловкая первая неделя «разговоров с компьютером». Wispr Flow — $15/мес и кроссплатформенно. Vext — $49 разово и только локально на Apple Silicon. Apple Dictation — бесплатно, но ограниченно.
Если живёте в Cursor — то есть пишете больше промптов, чем писем — платное приложение окупится за пару недель сэкономленной печати. Если используете Cursor эпизодически — Apple Dictation хватит.
В любом случае разблокировка одна и та же: промпты становятся длиннее, потому что говорить легче, чем печатать, а Cursor отвечает на длинные лучше. Очистка — бонус.