Nenhum assistente acerta de primeira

rysOS, o assistente executivo que estou treinando no meu Raspberry Pi


Eu queria um assistente executivo. Alguém que lesse a minha agenda, o meu e-mail, a ata da reunião de que acabei de sair e o áudio que gravei no carro, e que fizesse algo útil com tudo isso sem me pedir para abrir uma tela e dizer onde guardar cada coisa.

Ninguém começa um emprego sabendo como o chefe trabalha. Um assistente humano erra nas primeiras semanas, pergunta muito e vai entendendo aos poucos quem é quem, o que é urgente e o que pode esperar. Com um assistente de IA acontece o mesmo. Ele também não acerta de primeira, e o erro mais comum é esquecer isso e esperar um produto pronto.

Foi assim que tratei o rysOS. Ele lê as minhas fontes reais, o Google Calendar, o Gmail, a transcrição das reuniões e o meu diário falado, e escreve num cofre, que é como chamo a minha pasta de notas em arquivos de texto simples. Roda como serviço no meu Raspberry Pi e é só meu. O que mais importa nele é que aprende comigo. Eu corrijo, ele guarda a correção, e a ideia é que com o tempo precise de menos ajuda. O meu papel é acompanhar, corrigir e ensinar. Este texto conta como isso funciona na prática.

Terminal com a saída do comando rysos status, mostrando o cofre conectado, as contas Google autenticadas, o Gemini pronto e o uso de tokens do dia.
Figura 1. O rysOS no terminal do Raspberry Pi. Ilustração gerada por IA, com nomes e dados fictícios. O formato segue o do rysOS.

Um assistente que pergunta quando não sabe

A primeira coisa que exigi dele foi que nunca invente. Dê a um chatbot comum um convite de calendário sem descrição e peça a pauta da reunião. Ele devolve uma pauta plausível, bem escrita e falsa. Num registro que vai virar o meu histórico de decisões, isso é inaceitável. Então, quando o convite chega sem pauta, na prática com menos de quinze caracteres de descrição, o modelo nem é consultado. O resumo diz que o convite veio sem pauta. Fica mais seco, e eu prefiro assim.

Do mesmo jeito, quando uma transcrição cita uma pessoa, um projeto ou uma decisão que ele não consegue ligar com segurança a algo que já existe, ele pergunta. Abre uma nota de triagem, com uma linha para cada dúvida, e eu respondo no próprio Obsidian com uma palavra: NOVO para criar, "= Nome Exato" para ligar a uma nota que já existe, IGNORAR para descartar. Se a mesma pessoa está pendente em outras transcrições, a resposta vale para todas. Eu respondo uma vez, e ele não esquece.

Obsidian com a nota de triagem de uma reunião, listando pessoas e um projeto que o rysOS não conseguiu ligar sozinho, cada um com a linha de resolução para responder.
Figura 2. Nota de triagem no Obsidian: uma linha por dúvida, respondida com NOVO, = Nome Exato ou IGNORAR. Ilustração gerada por IA, com nomes e dados fictícios. O formato segue o do rysOS.

Ele também guarda o que aprende. Registra os termos que se repetem e as vezes em que confirmo ou corrijo a forma como classificou uma mensagem, e volta a usar esse histórico nas próximas.

O dia dele

Às sete da manhã ele busca os eventos do dia e os e-mails novos e prepara, para cada reunião, um resumo do que se sabe sobre ela. Um boleto que vence hoje vira um foco no painel do dia, e os que vencem depois viram lembrete. A cada quinze minutos ele olha uma pasta. Quando eu largo ali a transcrição de uma reunião, ou o áudio do diário chega já transcrito, ele monta a ata, cria a nota e guarda o arquivo original.

Converso com ele pelo Telegram. Uma pergunta minha nunca vira nota, uma captura vaga recebe uma resposta em vez de virar rascunho, e "boleto pago" fecha o foco correspondente. Às onze da noite chega o balanço do dia.

Conversa no Telegram com o bot rysOS: a mensagem boleto do condomínio pago, a confirmação do foco concluído e o balanço executivo do dia.
Figura 3. Conversa com o rysOS no Telegram: um boleto marcado como pago e o balanço do dia. Ilustração gerada por IA, com nomes e dados fictícios. O formato segue o do rysOS.

O que ele aprendeu errando

Ele errou de formas que eu não esperava, e cada erro mudou o que ele faz hoje.

Por causa de dois nomes iguais, ele passou um dia e meio recriando as mesmas decisões a cada quinze minutos e deixou mais de 730 arquivos repetidos na pasta. Hoje um problema numa decisão não atrapalha as outras. Nesse ponto ele ainda não pegou o jeito por completo, porque o nome das decisões ainda pode colidir, e eu sigo de olho.

Em reuniões que chegavam pelas minhas outras contas de e-mail, ele não me reconhecia e criava um link para uma nota que não existia. Ninguém me avisou, e só reparei depois. Agora ele usa a lista completa dos meus e-mails.

Um relatório chegou a dizer que 26 das minhas 27 notas de recursos eram duplicadas. Fui olhar antes de juntar, e eram 26 notas diferentes com o mesmo nome. Juntar tudo teria apagado a coleção. Cada uma ganhou um nome novo. Esse erro era do relatório, e quem o pegou fui eu.

A varredura do cofre chegou a levar mais de 20 minutos por causa de uma configuração da conexão com o Google Drive. Ajustei, e hoje leva cerca de 11 segundos.

As regras que eu mantenho

Acompanhar um assistente é manter algumas regras que não mudam, mesmo quando relaxá-las parece melhor.

A estrutura, com pastas, campos e links, é sempre montada por código, e o modelo só escreve frases. Assim, quando uma nota sai errada, sei se o defeito foi no código ou numa frase da IA. A falta de informação conta como informação, e por isso ele diz que não sabe em vez de preencher a lacuna. Ele reconhece as coisas pelo que aconteceu de fato: uma reunião por data e participantes, um boleto por vencimento e credor, uma transcrição pelo conteúdo do arquivo. Por isso um e-mail reenviado, ou um arquivo largado duas vezes, nunca gera duas notas.

Obsidian com uma nota de reunião: contexto que diz que o convite veio sem pauta, decisões, próximos passos e, abaixo, as notas escritas à mão.
Figura 4. Ata de reunião no Obsidian: o que a máquina escreve fica no topo, e as minhas notas ficam abaixo. Ilustração gerada por IA, com nomes e dados fictícios. O formato segue o do rysOS.

O cofre tem quatro áreas fixas: Negócios & Governança, Saúde & Vitalidade, Patrimônio & Finanças e Família & Relacionamentos. Com um vocabulário fechado, dá para perguntar "o que está pendente em Saúde" e receber a resposta completa. Nas notas de reunião, o que a máquina escreve fica no topo, e o que eu escrevo no corpo nunca é sobrescrito.

E o cofre é uma pasta de arquivos Markdown sincronizada com o Google Drive. Se o Obsidian sumisse amanhã, os arquivos continuariam onde estão, e qualquer IA, inclusive uma que ainda não existe, poderia lê-los.

O que ele não faz

Um assistente humano é melhor em tudo o que exige julgamento: negociar, ler uma sala, decidir o que não fazer. Se o seu gargalo é julgamento, contrate uma pessoa.

Um chatbot com plugins de agenda e e-mail é mais rápido de montar. Sem alguém supervisionando, ele um dia vai inventar algo plausível, e você só vai descobrir depois de usar o fato falso numa decisão real. As ferramentas no-code servem melhor a times. O rysOS é para uma pessoa só, com uma conta Google, um cofre e um usuário autorizado no Telegram. Isso é uma limitação de verdade.

O que esperar

Ele não decide por mim. O que ele faz é melhorar à medida que eu o acompanho. Uma reunião vira nota sem eu digitar. Uma pessoa citada em seis reuniões acumula o histórico na própria página, sem que eu tenha escrito esse histórico. Uma decisão registrada hoje é uma linha que vou reler daqui a três meses para saber se eu estava certo. Nada do que eu já soube se perde, nada do que ele não sabe é inventado, e tudo pode ser rastreado até a fonte.

Isso só continua valendo enquanto eu continuar olhando. Se eu parar de acompanhar, ele para de aprender e os erros voltam a passar sem ninguém ver. Escrevi este texto para lembrar disso: o rysOS é um assistente novo, e assistentes novos precisam de atenção e de tempo para pegar o jeito.

O código

O código está no GitHub, com o nome meOS: github.com/rodrigoyujisato/meOS. É aberto, com licença MIT. Nome, e-mails e caminhos viram configuração num arquivo .env, e o repositório não guarda nenhum dado meu. Para rodar você precisa de uma chave do Gemini e, se quiser que ele leia agenda e e-mail, de uma conta Google. O README traz o passo a passo, e o sistema fala português.

Obrigado, Luis

Luis Alt, obrigado pela provocação em explorar as possibilidades do Obsidian, que veio do seu LifeOS (luisalt.com/LifeOS). Admiro o profissional, com a sua história no Design de Serviço no Brasil e no mundo. Admiro ainda mais a pessoa, sempre gentil e brilhante.

Um abraço, Rodrigo