Диктуйте ревью кода на своём языке
Код — на английском. Комментарии в ревью — не обязательно. Как диктовать замечания на одном из 25 языков на устройстве и зачем закреплять язык.
В инструментах для разработчиков зашито тихое допущение: код на английском, значит и разработчик тоже. Ключевые слова английские. Названия библиотек английские. Сообщения об ошибках английские. А раз так, рассуждение идёт дальше: диктовка для разработчиков может быть только английской, и никто не расстроится.
Ревью кода ломает это допущение сразу. Комментарий в ревью — это не код. Это предложение, обращённое к человеку, и в очень многих командах этот человек говорит на вашем родном языке. Румынская команда, делающая ревью сервиса на Rust, пишет румынские комментарии об английских идентификаторах. Польская команда делает то же самое по-польски, немецкая — по-немецки. Код остаётся английским; разговор о коде — нет.
Диктовка необычно хороша для комментариев в ревью, потому что ревью — это чтение, а набор текста чтение прерывает. Но хороша она только тогда, когда работает на том языке, на котором комментарий и написан. Эта статья — о том, как это сделать: какие языки Keebye покрывает на устройстве, как ведёт себя закрепление языка и где границы. Если вам нужен сам аргумент, почему это важно, он в статье диктовка для разработчиков не должна быть только английской; здесь — практическое продолжение.
Почему комментарии в ревью — идеальная цель для диктовки
У комментария в ревью три свойства, которые делают его подходящим для голоса лучше, чем почти любой другой текст разработчика.
Он короткий. Большинство комментариев — от одного до трёх предложений. Это один вдох, одно удержание горячей клавиши, одна фраза.
Это проза. В отличие от сообщения коммита с жёстким форматом или конфига с точным синтаксисом, комментарий в ревью — просто то, как вы объяснили бы проблему вслух. «Здесь ретраи бесконечны, если сокет так и не ответит; ограничь их». Произнесённая и набранная версии почти одинаковы.
Он случается, когда глаза заняты. Вы читаете диф. В момент, когда вы останавливаетесь, чтобы набрать текст, вы теряете в нём место. Диктовка позволяет продолжать читать и произнести комментарий в поле ввода, в которое вы уже кликнули.
Теперь добавьте языковое измерение. Если ваша команда делает ревью по-польски, англоязычный инструмент диктовки навязывает выбор: делать ревью по-английски (неестественно, и коллеги, возможно, будут читать медленнее) или набирать руками (потеряв всю выгоду). Ни то ни другое вам не нужно.
Что Keebye действительно поддерживает
Здесь важны два движка на устройстве, и о них стоит говорить точно.
Движок по умолчанию настроен на английский. Он быстрый, им пользуется большинство, и это не тот движок, который нужен для польского комментария в ревью. Направленный на неанглийскую речь, он выдаст фонетически правдоподобный английский, который вы не говорили.
Второй движок, Canary, покрывает ровно 25 языков: болгарский, хорватский, чешский, датский, нидерландский, английский, эстонский, финский, французский, немецкий, греческий, венгерский, итальянский, латышский, литовский, мальтийский, польский, португальский, румынский, русский, словацкий, словенский, испанский, шведский и украинский. Он включается по желанию, загружается один раз, а дальше работает офлайн, как и всё остальное в Keebye. Не сотня языков; двадцать пять, перечисленных поимённо, и если вашего в списке нет, эта статья вам пока не поможет.
Есть ещё вариант использовать в качестве движка родное распознавание речи Apple — оно приносит своё покрытие языков на вашем Mac. Это отдельный путь с другими характеристиками; остальная часть статьи — про Canary.
Закрепите язык, не давайте угадывать
Самая важная настройка для неанглийского ревью — закрепление языка.
Автоопределение звучит как правильное значение по умолчанию, но для разработчиков оно неправильное. Комментарии в ревью плотно набиты английскими идентификаторами: именами функций, названиями пакетов, словами «null», «async» и «callback». Комментарий, на восемьдесят процентов румынский и на двадцать состоящий из английских токенов, даёт определителю языка ровно тот смешанный сигнал, с которым он справляется хуже всего. Он переключится посреди предложения или решит, что всё это было по-английски, — и вы получите уверенно неправильную расшифровку. Подробно разбор этого отказа — в статье закрепите язык диктовки.
С Canary язык в Keebye задаётся явно. Закрепите румынский — и модель декодирует румынский; английские идентификаторы внутри вашей фразы обрабатываются как заимствования, а не как доказательство того, что вы сменили язык. Распознавание необычного идентификатора всё ещё может быть неидеальным, но сам язык перестаёт быть подбрасыванием монетки.
Одна поведенческая деталь, которую стоит знать: закреплённый язык считывается для следующей фразы. Меняете закрепление — и диктовка, которую вы собираетесь сделать, использует его; та, что вы уже отпустили, заново не расшифровывается. На практике это значит: сначала переключитесь, потом говорите. Если вы за день делаете ревью на двух языках, переключение обходится дёшево. В меню в строке меню доступен короткий список из 11 языков для быстрого переключения, а в настройках — все 25.
Сессия ревью, продиктованная
Вот как выглядит сессия в команде, которая делает ревью по-румынски.
Вы открываете пул-реквест. В меню уже закреплён румынский со вчерашнего дня, так что делать нечего. Читаете первый файл. Третий фрагмент — цикл ретраев без ограничения. Кликаете в поле комментария, удерживаете правую ⌘, произносите комментарий по-румынски, отпускаете. Текст приходит: «э-э» и фальстарт убраны очисткой по правилам, а идентификатор reconnectSocket цел, потому что неделю назад вы добавили его в пользовательский словарь.
Следующий файл. Комментарий, который вы хотите оставить, — это предложение с кодом, а не проза. Его вы набираете руками; диктовать диф — плохой опыт на любом языке.
Позже в тред приходит участник из другой команды и пишет по-английски. Вы хотите ответить по-английски. Клик по меню, английский из короткого списка — и следующая фраза декодируется как английская. Отвечаете и переключаетесь обратно.
Ничему из этого не нужно окно. Keebye остаётся в строке меню; горячая клавиша работает в том приложении, которое в фокусе, — будь то вкладка браузера с ревью, десктопный Git-клиент или терминал с консольным инструментом для ревью.
Честные ограничения
Двадцать пять языков, а не все. Если вы делаете ревью на турецком, японском, арабском или любом языке вне списка Canary, второй движок его не покрывает. Родной движок Apple, возможно, покроет — в зависимости от языковой поддержки вашей системы, — но это другой движок с другим поведением.
Быстрый список — одиннадцать. Английский, румынский, французский, немецкий, испанский, итальянский, португальский, нидерландский, польский, русский и украинский — в двух кликах. Остальные четырнадцать — в настройках. Если в вашей ежедневной паре, скажем, чешский и финский, одна половина пары идёт через настройки.
Идентификаторы остаются идентификаторами. Речевая модель на любом языке спотыкается на snake_case_names. Словарь помогает с повторяющимися, остальное правите руками. Перечитывайте комментарий, прежде чем отправить.
Никакой живой расшифровки. Canary расшифровывает по отпусканию клавиши, одним пакетом. Слова не будут появляться, пока вы говорите. Для комментария в ревью длиной в одно-три предложения это едва заметно.
Доводка опциональна, по умолчанию всё буквально. Если включить доводку локальной LLM на устройстве, она подчистит структуру предложений, а защита достоверности откатится к сырой расшифровке, когда в результате видна серьёзная потеря токенов, разрастание или повторы. Эта защита — эвристика; она не проверяет, что ваш смысл уцелел. В комментариях ревью, где перевёрнутое отрицание меняет вердикт, большинство оставляет доводку выключенной и позволяет работать очистке по правилам.
Куда это встраивается
Если закрепление языка — главная для вас функция, Keebye vs Wispr Flow сравнивает оба инструмента по тому, где выполняется распознавание и как обрабатывается язык, включая то, где Wispr Flow подходит лучше. Для более общего случая — диктовки, когда руки на дифе, — есть руководство для разработчиков, а настройку разбирает руководство для Mac.
Допущение, что разработчики говорят только по-английски, никогда не было правдой. Оно было просто удобно инструментам. Делать ревью на своём языке, голосом, с распознаванием, которое никогда не покидает вашу машину, — не нишевая просьба. Это то, что делала бы большая часть людей, пишущих софт, если бы инструменты позволяли.
Делайте ревью на языке, на котором думаете
Начните бесплатный пробный период, закрепите свой язык и продиктуйте один комментарий в ревью так, как сказали бы его коллеге.
Start free trialEarly access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.
Читать дальше
Автоопределение постоянно ошибается: закрепите язык
Диктовка всё время попадает не в тот язык? Автоопределение мечется на двуязычной речи по своей природе. Закрепите язык один раз — и он останется закреплённым.
Почему разработчикам нужна диктовка на разных языках
Код на английском; рабочий день часто нет. Многоязычная диктовка на устройстве для сообщений в Slack, ревью и документов на своём языке.
Диктовать промпты параллельным агентам: дорожка за дорожкой
Два-три кодовых агента сразу — и узким местом становится сам промпт. Голосовой процесс: кормить параллельные дорожки, не покидая текущую.