Диктовка, която оцелява в терминала

Поставянето на диктовка тихо се проваля в терминали, SSH, tmux и не-QWERTY подредби. Защо клипбордът се проваля и какво прави режимът на писане.

Teodor Deleanu10 юли 2026 г.7 мин четене

Разработчиците, които пробват инструменти за диктовка, често удрят на провал с много конкретна форма. Инструментът работи прекрасно в демонстрацията. Работи в Notes, в Slack, в браузъра. После фокусирате терминал, диктувате изречение и или не се появява нищо, или се появява нещо, което не сте казали, или се появява половината, а другата половина сега мистериозно е в клипборда ви. Понякога работи локално и умира в мига, в който влезете по SSH в някоя машина.

Моделът е достатъчно постоянен, за да не смятам, че е бъг в един-единствен продукт. Той е следствие от начина, по който цялата категория вмъква текст — и се проваля точно на местата, където живее разработчикът.

Това има по-голямо значение сега, отколкото преди две години. Ако управлявате Claude Code с глас — работният процес, който описах в Управление на Claude Code с глас — тогава терминалът не е едно приложение сред много. Той е приложението. Там кацат промптите ви, там агентите ви чакат пренасочване, там цялата работа с паралелни линии или става, или не. Инструмент за диктовка, който е капризен в терминали, за един vibecoder е капризен в единствената си работа.

Защо поставянето се чупи точно там, където живеят разработчиците?

Ето механиката на ниво категория. Повечето инструменти за диктовка вмъкват текст по един и същ начин: слагат транскрибираното ви изречение в системния клипборд, после синтезират натискане на Cmd+V към фокусираното приложение. Това е разумно подразбиране — поставянето е мигновено, работи в почти всяко GUI поле за текст и почти не изисква инженерна работа за всяко приложение поотделно.

Проблемът е всичко, от което това допускане тихо зависи.

Зависи от това фокусираното приложение да третира Cmd+V като „постави“. Терминалите често не го правят — много от тях ползват Cmd+V за нещо друго или за нищо, tmux и vim имат собствени представи какво значи поставяне, а отдалечена SSH сесия може да изтълкува залп поставен текст по начини, които локалната машина не може да предвиди. Bracketed paste, copy-mode, insert-mode срещу normal-mode: светът на терминала е пълен със състояния, в които синтетичното поставяне каца погрешно или не каца никъде.

Зависи от това клипбордът да е наличен и незащитен. Мениджърите на клипборда го пренаписват. Мениджърите на пароли нарочно го изчистват или защитават — мярка за сигурност, която мълчаливо превръща „постави диктовката ми“ в „не постави нищо“. И дори когато всичко работи, инструментът току-що е презаписал онова, което сте копирали. SHA-то на комита, което сте носили между прозорците, го няма — заменено е от вашето собствено изречение. За човек, който жонглира с няколко линии, това не е драскотина; клипбордът вършеше работа.

И зависи — това е частта, която изненадва хората — от подредбата на клавиатурата ви. Когато инструмент премине към симулиране на натискания, наивният начин е да се изпращат кодове на клавиши: физическите позиции. Кодовете на клавишите се превръщат в знаци през вашата подредба. При QWERTY кодът за „V“ дава V. При Dvorak същата физическа позиция е друга буква. Така че инструмент, който симулира скан-кодове при подредба Dvorak, AZERTY или Colemak, произвежда текст, който изглежда минал през шифър със замяна. Потребителите съобщават за безсмислица и предполагат, че разпознаването на реч се е провалило. Не се е провалило — речта е била идеална, вмъкването я е разбъркало.

Нищо от това не е злонамереност или мързел от нечия страна. Поставянето през клипборда е правилното подразбиране за 90-те процента от случаите. Просто разработчиците прекарват деня си в другите 10.

Какво всъщност значи „напиши го вместо това“

Keebye има настройка insert_mode с две стойности: paste, която е по подразбиране, и type.

Режимът на писане не поставя. На macOS той използва CGEventKeyboardSetUnicodeString — API, който закача самия Unicode текст към синтетично клавишно събитие. Знакът се носи в самото събитие, а не се търси през подредбата на клавиатурата ви. Това го прави независим от подредбата по конструкция: Dvorak, AZERTY, Colemak, каквото и да ползвате, текстът, който пристига, е текстът, който е бил транскрибиран, защото никога не е имало превод от скан-код към знак, който да се обърка.

Второто свойство на режима на писане е онова, което вълнува хората в терминала: той изобщо не докосва клипборда. Нула операции с клипборда по този кодов път. Съдържанието на клипборда ви си остава ваше — SHA-то оцелява, мениджърът на пароли няма от какво да се пази, мениджърът на клипборда няма какво да запише.

И тъй като терминалите и отдалечените сесии могат да се задавят от текст, който пристига по-бързо, отколкото който и да е човек пише, режимът на писане нарочно се темпорира: текстът влиза на части от 16 знака с пауза от 4 милисекунди между частите. Достатъчно бързо, за да кацне изречение доста под секунда; достатъчно премерено, за да го приеме tmux панел през SSH като натискания, с които може да върви в крачка, а не като буца, която трябва да тълкува.

Режимът на поставяне още го има и още е по подразбиране, защото наистина е по-бърз за големи блокове текст в обикновени GUI приложения — съобщение от три абзаца в Slack пристига като едно поставяне, а не като поток от части. Впрочем и режимът на поставяне е взел урока за подредбите: синтетичното Cmd+V използва физическия код на клавиша V, така че самото поставяне не се чупи при подредби, различни от QWERTY, както може да се случи при подходите с търсене по знак.

Практичната настройка за работа с агенти е проста: превключете insert_mode на type, фокусирайте терминала, в който върви Claude Code, задръжте клавиша, изговорете пренасочването и пуснете. Промптът пристига така, както биха пристигнали натискания на клавиши, защото откъдето терминалът гледа, точно това са. Стъпка по стъпка същата настройка, включително спецификите за SSH и tmux, е в гласова диктовка за терминала на macOS.

Честните ограничения

Режимът на писане е по-бавен от поставянето при дълъг текст — това е аритметика, не дефект. Насечените натискания с паузи отнемат повече време от едно събитие за поставяне и ако диктувате няколко абзаца в документ, режимът на поставяне ще се усеща по-пъргав. Точно затова поставянето остава по подразбиране, а режимът на писане е нещо, което включвате в настройките; правилният режим зависи от това накъде отива текстът ви.

Някои приложения ограничават скоростта или филтрират синтетичния вход, обикновено от съображения за сигурност, и никоя стратегия за вмъкване не избягва това напълно — приложение, което отказва синтетични събития, ги отказва от всеки инструмент за диктовка.

И да сме наясно какво твърди и какво не твърди тази статия: оплакването „поставянето се чупи в терминали“ е модел в цялата категория диктовка, а не дефект, присъщ само на някой конкурент. Другите инструменти имат свои отговори и свои силни страни — написахме честни сравнения в Keebye срещу Superwhisper и Keebye срещу Wispr Flow, включително за това къде всеки от тях може да ви пасне по-добре.

Вмъкването е негламурната половина на диктовката

Разпознаването на реч получава цялото внимание — имена на модели, твърдения за точност, брой езици. Но инструментът за диктовка има две задачи: да ви чуе правилно и после да докара текста там, където е курсорът ви, без да го изгуби или осакати. Втората задача звучи тривиално и точно там категорията тихо проваля разработчиците, защото втората задача е лесна в TextEdit и трудна в tmux панел на отдалечена машина при подредба Dvorak.

Ако промптите ви кацат в терминали — а ако управлявате агенти за код, кацат — вмъкването не е бележка под линия. То е разликата между инструмент, който демонстрирате, и инструмент, който ползвате. Между другото, сродните начини на провал имат същия вкус: изяждането на първата дума от диктовката заради студен старт на микрофона е друго оплакване в цялата категория с механично обяснение и го описахме в Защо приложенията за диктовка изяждат първата ви дума.

Keebye е в ранен достъп за macOS. Ако диктовката ви някога е изчезвала някъде между устата ви и терминала, започнете безплатния си пробен период по-долу, включете режима на писане и повторете същия промпт. Копираното SHA си остава в клипборда, докато думите пристигат като написан Unicode.

Тествайте най-трудния си път през терминала

Започнете безплатния пробен период, включете режима на писане и опитайте промпта през SSH или tmux, който обикновено чупи поставянето.

Start free trial

Early access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.

Продължете да четете