O seu ditado nunca deveria simplesmente sumir

Você dita um pensamento longo, a inserção falha, o texto some. Por que apps de ditado perdem palavras e o histórico local, só de texto, do Keebye.

Teodor Deleanu10 de julho de 20268 min de leitura

Noventa segundos de exatamente-como-eu-queria-dizer — uma descrição completa de PR, uma resposta cuidadosa a um cliente — e aí algo pequeno dá errado no momento da inserção. A janela alvo não estava em foco. A colagem não pegou. O app soluçou. E o texto simplesmente sumiu. Não salvo em algum lugar. Não parado em um buffer. Sumiu. Qualquer pipeline de ditado que trata a inserção como a única cópia da transcrição tem esse modo de falha.

O que vem depois é um tipo específico e desproporcional de raiva, e eu acho que é justificada. Os segundos perdidos não são o ponto. O ponto é que você fez o trabalho — você compôs o pensamento, você o disse bem, a máquina até o transcreveu corretamente — e a ferramenta destruiu o resultado por causa de um problema de entrega. A segunda tomada nunca é tão boa quanto a primeira. Quem já reditou um parágrafo de memória sabe que você não o reproduz; você produz um primo mais sem graça dele.

Eu mesmo já perdi ditados assim, em outras ferramentas, antes de o Keebye existir. É uma das pequenas emergências em torno das quais o app foi construído.

Por que o texto ditado simplesmente desaparece?

Isto não é o bug de um fornecedor. É uma decisão de projeto no nível da categoria, e vale entender por que a categoria a tomou.

Um app de ditado é um cano, não um editor. A fala entra por uma ponta; o texto sai pela outra, na janela de outra pessoa — um terminal, uma caixa do Slack, um Google Doc. Não existe documento próprio, que é exatamente o que torna essas ferramentas invisíveis e rápidas. Mas significa que a transcrição muitas vezes existe por precisamente um instante: a inserção. E a inserção é a etapa mais frágil de todo o pipeline. Ela depende de qual janela está em foco no milissegundo da entrega, de a área de transferência não ser disputada por outro app, de as permissões de Acessibilidade estarem de bom humor, de o aplicativo alvo aceitar entrada sintética. Quando qualquer coisa disso falha, um cano puro não tem nada atrás. A água está no chão.

Há também um motivo de princípio para as ferramentas serem tímidas em guardar cópias: um log de tudo o que você ditou é sensível. Os seus ditados são as suas mensagens, os seus prompts, as suas decisões meio formadas. Um fornecedor que os armazena — especialmente em qualquer lugar próximo de uma nuvem — criou um passivo, e o jeito fácil de evitar o passivo é não guardar nada. Os usuários herdam essa cautela como efemeridade: o ditado mais seguro, da perspectiva do fornecedor, é o que nunca existiu.

Eu entendo a lógica. Só acho que ela otimiza para a parte errada. O modo de falha de manter histórico local é um arquivo no seu próprio disco. O modo de falha de não guardar nada é o seu trabalho evaporando porque uma janela perdeu o foco.

O que o Keebye guarda, e onde

Então o Keebye mantém um histórico, ligado por padrão, e aqui está com precisão o que isso significa — nem mais, nem menos.

Com o histórico ativado, todo ditado concluído é gravado em um banco SQLite local no seu Mac (rusqlite, modo WAL, para quem se importa com o encanamento). O arquivo fica no diretório de suporte do app — com.keebye.app/keebye.db — e nunca sai da máquina. Não há sincronização, nem upload, nem conta à qual ele esteja atrelado. É um arquivo, no seu disco, seu.

A recuperação é projetada em torno das duas formas pelas quais você realmente perde texto. O caso comum — a inserção acabou de falhar, um segundo atrás — tem o caminho mais rápido: o menu da bandeja tem um item Copy Last Dictation. Clique nele, o seu ditado mais recente vai para a área de transferência, cole onde ele deveria ter ido, siga em frente. O caso mais raro — "eu ditei alguma coisa na terça e preciso dela de volta" — passa por Dictation History…, uma janela com a lista completa: pesquisável, com exclusão por entrada e um limpar-tudo para quando você quiser a lousa zerada.

A retenção é de 30 dias, aplicada automaticamente. A poda roda quando o banco abre e de novo depois de cada inserção, então a janela é genuinamente de 30 dias, não "30 dias, mais ou menos, quando der". E se você quer o antigo comportamento efêmero — algumas pessoas deveriam querer, e já chego em quem —, o histórico é um ajuste (history_enabled), e desligá-lo significa que nada é gravado.

Só texto. Nunca áudio.

A parte com que eu mais me importo é o que o histórico não é. Ele é só texto. O esquema de histórico do Keebye não tem coluna de áudio — não é um ajuste de retenção de áudio desligado por padrão, é ausência de coluna. As gravações em si nunca são armazenadas. Isso é estrutural, por projeto: uma transcrição de "responda ao Andrei que a migração atrasa uma semana" já é sensível o bastante; o som da sua voz dizendo isso, com data e hora, é um artefato de outra ordem, e eu não queria que o app fosse capaz de acumulá-lo.

Mais uma nuance que importa mais do que a contagem de palavras dela: se você dita em um campo seguro — uma entrada estilo senha —, o histórico não registra. O único lugar onde até um rastro em texto seria errado é o único lugar onde não guardamos um.

Essa é a mesma postura do resto do app — a fala para texto roda on-device, sobre o que escrevemos no contexto de ditar no seu próprio idioma —, mas o histórico é onde a postura é testada, porque o histórico é o único lugar em que o Keebye persiste as suas palavras. Local, só texto e que se apaga sozinho pareceu o formato que merece vir ligado por padrão.

Os limites honestos

Seção de honestidade, como sempre.

Você não pode reouvir. Só texto corta dos dois lados. Se a transcrição estava errada — o modelo ouviu um nome errado, estropiou um número —, o histórico preserva fielmente o texto errado, e o áudio que resolveria a disputa se foi por projeto. Para a maioria dos casos de recuperação isso não importa; a falha foi a inserção, não a transcrição. Mas se você queria o histórico de ditados como um arquivo de memos de voz, não é isso, de propósito.

Trinta dias são trinta dias. O histórico é uma rede de segurança, não um arquivo permanente. Se um ditado importa além de um mês, a casa dele é o documento em que você o ditou, não o banco de dados do app. A poda não pergunta.

Só local significa só local. O seu histórico não segue você entre máquinas. O ditado que você fez no desktop não é recuperável do laptop. Estou apresentando isso como recurso de privacidade, e é um — nada sincroniza porque nada é transmitido —, mas não vou fingir que também não é uma limitação. É as duas coisas. Você deveria saber qual delas ela é para você antes de depender disso.

E o caso de fronteira: se você é a pessoa cujo modelo de ameaça diz nenhum rastro, desligue o histórico. É um ajuste, e o app o respeita completamente. Ligado por padrão é a escolha certa para a maioria dos usuários, que prefere ter o parágrafo da terça-feira de volta; isso não deveria virar uma armadilha para os demais.

O trabalho não deveria ter um ponto único de falha

A razão mais profunda de este recurso existir: eu conduzo o meu dia como lanes paralelas — agentes construindo em algumas janelas, humanos esperando em outras — e a voz é o canal que alimenta todas elas. Esse fluxo é a premissa inteira de Dirigindo o Claude Code com a sua voz. Um canal que ocasionalmente destrói a própria carga não é um canal sobre o qual você constrói um dia de trabalho. Desenvolvedores esperam caminhos de recuperação — desfazer, logs, reflogs, lixeira —, mas muitos fluxos de ditado não oferecem equivalente quando uma inserção falha.

Se você está pesando ferramentas nesta categoria, as nossas comparações são honestas sobre onde as outras também brilham: Keebye vs Superwhisper e Keebye vs Wispr Flow. E o texto que some tem uma queixa irmã — a primeira palavra do seu ditado sendo comida antes de o microfone acordar —, sobre a qual escrevemos em por que apps de ditado comem a sua primeira palavra.

O Keebye está em acesso antecipado para macOS. Comece o teste grátis abaixo, dite um parágrafo, erre a janela alvo de propósito e depois use o Copy Last Dictation para recuperar o texto. Foco errado ainda custa uma etapa de recuperação; ele não precisa mais custar o pensamento.

Torne o próximo ditado longo recuperável

Comece o teste grátis e teste o Copy Last Dictation antes de confiar uma descrição longa de PR à voz.

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.

Continue lendo