Dictarea ta nu ar trebui să dispară pur și simplu
Dictezi un gând lung, inserarea eșuează, textul dispare. De ce aplicațiile de dictare pierd cuvinte și ce istoric local, doar text, păstrează Keebye.
Nouăzeci de secunde de exact-cum-am-vrut-să-spun — o descriere completă de PR, un răspuns atent către un client — și apoi ceva mic o ia razna fix în momentul inserării. Fereastra țintă nu avea focus. Paste-ul nu a prins. Aplicația s-a poticnit. Iar textul pur și simplu nu mai e. Nesalvat undeva. Nu stă într-un buffer. Dus. Orice pipeline de dictare care tratează inserarea drept singura copie a transcrierii are acest mod de eșec.
Ce urmează e un tip de furie specific și disproporționat și cred că e justificat. Nu secundele pierdute sunt esența. Esența e că tu ai făcut munca — ai compus gândul, l-ai spus bine, mașina chiar l-a transcris corect — iar instrumentul a distrus rezultatul din cauza unei probleme de livrare. A doua încercare nu e niciodată la fel de bună ca prima. Oricine a redictat un paragraf din memorie știe că nu îl reproduci; produci o verișoară mai fadă a lui.
Am pierdut și eu dictări așa, în alte instrumente, înainte să existe Keebye. E una dintre micile urgențe în jurul cărora a fost construită aplicația.
De ce dispare pur și simplu textul dictat?
Ăsta nu e bugul unui singur furnizor. E o decizie de design la nivel de categorie și merită înțeles de ce a luat-o categoria.
O aplicație de dictare e o țeavă, nu un editor. Vorbirea intră pe un capăt; textul iese pe celălalt, în fereastra altcuiva — un terminal, o casetă de Slack, un Google Doc. Nu există niciun document propriu, ceea ce e exact ce face instrumentele astea invizibile și rapide. Dar înseamnă că transcrierea există adesea pentru exact un moment: inserarea. Iar inserarea e cel mai fragil pas din tot pipeline-ul. Depinde de ce fereastră are focus în milisecunda livrării, de faptul că nu se ia altă aplicație la întrecere cu clipboardul, de dispoziția permisiunilor de Accesibilitate, de faptul că aplicația țintă acceptă în general input sintetic. Când oricare dintre astea eșuează, o țeavă pură nu are nimic în spate. Apa e pe podea.
Mai există și un motiv de principiu pentru care instrumentele au fost sfioase cu păstrarea de copii: un jurnal cu tot ce ai dictat vreodată e sensibil. Dictările tale sunt mesajele tale, prompturile tale, deciziile tale pe jumătate formate. Un furnizor care le stochează — mai ales oriunde în apropierea unui cloud — a creat o răspundere, iar modul ușor de a evita răspunderea e să nu păstrezi nimic. Utilizatorii moștenesc precauția aceea sub formă de efemeritate: cea mai sigură dictare, din perspectiva furnizorului, e cea care nu a existat niciodată.
Înțeleg logica. Doar cred că optimizează pentru partea greșită. Modul de eșec al păstrării unui istoric local e un fișier pe propriul tău disc. Modul de eșec al păstrării a nimic e munca ta evaporându-se pentru că o fereastră a pierdut focusul.
Ce păstrează Keebye și unde
Așa că Keebye ține un istoric, activ implicit, și iată exact ce înseamnă asta — nici mai mult, nici mai puțin.
Cu istoricul activat, fiecare dictare încheiată e scrisă într-o bază de date SQLite locală, pe Mac-ul tău (rusqlite, mod WAL, pentru cine ține la instalație). Fișierul stă în directorul de app-support — com.keebye.app/keebye.db — și nu părăsește niciodată mașina. Nu există sincronizare, nici încărcare, niciun cont de care să fie atașat. E un fișier, pe discul tău, deținut de tine.
Recuperarea e proiectată în jurul celor două feluri în care pierzi de fapt text. Cazul comun — inserarea tocmai a eșuat, acum o secundă — are calea cea mai rapidă: meniul din tray are un element Copy Last Dictation. Dai clic pe el, cea mai recentă dictare a ta e în clipboard, o inserezi unde trebuia să ajungă, mergi mai departe. Cazul mai rar — „am dictat ceva marți și îmi trebuie înapoi" — trece prin Dictation History…, o fereastră cu lista completă: căutabilă, cu ștergere pe intrare și cu golire totală pentru când vrei tabla ștearsă.
Retenția e de 30 de zile, aplicată automat. Curățarea rulează când se deschide baza de date și din nou după fiecare inserare, așa că fereastra e cu adevărat de 30 de zile, nu „30 de zile, aproximativ, când apucăm noi". Iar dacă vrei vechiul comportament efemer — unii chiar ar trebui, și ajung imediat la cine — istoricul e o setare (history_enabled), iar dezactivarea lui înseamnă că nu se mai scrie absolut nimic.
Doar text. Niciodată audio.
Partea la care țin cel mai mult e ce nu este istoricul. Este doar text. Schema istoricului lui Keebye nu are nicio coloană de audio — nu o setare de retenție audio setată implicit pe oprit, ci nicio coloană. Înregistrările în sine nu sunt stocate niciodată. Asta e structural, prin design: o transcriere a lui „răspunde-i lui Andrei că migrarea alunecă o săptămână" e destul de sensibilă; sunetul vocii tale spunând-o, cu marcaj de timp, e un artefact de alt ordin, iar eu nu am vrut ca aplicația să fie măcar capabilă să-l acumuleze.
Încă o nuanță care contează mai mult decât numărul ei de cuvinte: dacă dictezi într-un câmp securizat — un input de tip parolă — istoricul nu îl înregistrează. Singurul loc în care până și o urmă de text e greșită e singurul loc în care nu păstrăm una.
Asta e aceeași postură ca restul aplicației — speech-to-text-ul rulează on-device, despre care am scris în contextul dictării în limba ta — dar istoricul e locul în care postura e pusă la încercare, pentru că istoricul e singurul loc în care Keebye îți persistă cuvintele. Local, doar text, autoștergându-se: mi s-a părut forma care merită să fie activă implicit.
Limitele sincere
Secțiunea de sinceritate, ca de obicei.
Nu poți reasculta. Doar-text taie în ambele sensuri. Dacă transcrierea a fost greșită — modelul a auzit prost un nume, a mutilat un număr — istoricul păstrează fidel textul greșit, iar audio-ul care ar putea rezolva disputa s-a dus, prin design. Pentru majoritatea cazurilor de recuperare asta nu contează; eșecul a fost inserarea, nu transcrierea. Dar dacă voiai istoricul dictărilor ca arhivă de memo-uri vocale, nu asta e, în mod intenționat.
Treizeci de zile înseamnă treizeci de zile. Istoricul e o plasă de siguranță, nu o arhivă. Dacă o dictare contează dincolo de o lună, casa ei e documentul în care ai dictat-o, nu baza de date a aplicației. Curățarea nu întreabă.
Doar-local înseamnă doar-local. Istoricul tău nu te urmează de la o mașină la alta. Dictarea făcută pe desktop nu e recuperabilă de pe laptop. Prezint asta ca pe o funcție de confidențialitate, și chiar este una — nimic nu se sincronizează pentru că nimic nu se transmite — dar nu am să mă prefac că nu e și o limitare. E și una, și alta. Ar trebui să știi care dintre ele e pentru tine înainte să te bazezi pe ea.
Și cazul-limită: dacă ești persoana al cărei model de amenințare spune nicio urmă, deloc, dezactivează istoricul. E o singură setare, iar aplicația o respectă complet. Activ-implicit e alegerea corectă pentru majoritatea utilizatorilor, care ar prefera să-și recapete paragraful de marțea trecută; nu ar trebui să fie o capcană pentru ceilalți.
Munca nu ar trebui să aibă un singur punct de eșec
Motivul mai profund pentru care există funcția asta: îmi conduc ziua ca lane-uri paralele — agenți construind în unele ferestre, oameni așteptând în altele — iar vocea e canalul care le hrănește pe toate. Fluxul acela de lucru e toată premisa articolului Cum conduci Claude Code cu vocea. Un canal care își distruge ocazional propriul conținut nu e un canal pe care să-ți construiești ziua de lucru. Dezvoltatorii se așteaptă la căi de recuperare — undo, loguri, reflog-uri, coș de gunoi — și totuși multe fluxuri de dictare nu expun niciun echivalent când o inserare eșuează.
Dacă cântărești instrumente din categoria asta, comparațiile noastre sunt sincere și despre unde strălucesc altele: Keebye vs Superwhisper și Keebye vs Wispr Flow. Iar textul care dispare are o plângere-soră — primul cuvânt al dictării tale mâncat înainte să se trezească microfonul — despre care am scris în de ce aplicațiile de dictare îți mănâncă primul cuvânt.
Keebye este în acces anticipat pentru macOS. Începe proba gratuită mai jos, dictează un paragraf, ratează deliberat fereastra țintă, apoi folosește Copy Last Dictation ca să recuperezi textul. Focusul greșit tot costă un pas de recuperare; nu mai trebuie să coste gândul.
Fă recuperabilă următoarea dictare lungă
Începe proba gratuită și testează Copy Last Dictation înainte să încredințezi vocii o descriere lungă de PR.
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.
Citește mai departe
De ce aplicațiile de dictare îți mănâncă primul cuvânt
Apeși hotkey-ul, vorbești, primul cuvânt e tăiat. De ce pornirea la rece taie cuvinte și cum ajută un microfon deja pornit cu un pre-roll de 500 ms.
Dictarea prompturilor către agenți paraleli, lane cu lane
Rularea a doi sau trei agenți de programare simultan face din prompt gâtuirea. Un flux vocal pentru a hrăni lane-uri paralele fără să pleci din cel curent.
Claude Code cu vocea: lucru pe lane-uri paralele
Agenții AI au făcut din tastare un blocaj. Un flux practic pentru dictarea de prompturi, review-uri și schimbări de direcție pe lane-uri paralele în macOS.