Projeto autoral
Meu Chat Pessoal

A inteligência artificialno seu espaçode trabalho.

App desktop para conversar com modelos de IA, com projetos e histórico no computador.

Conversa com IA por API, com projetos e histórico no computador.

App desktopIA por APIPessoal

  • Tauri 2
  • React 19
  • Rust
  • TypeScript
Projeto autoral
Meu Chat Pessoal

A inteligência artificialno seu espaçode trabalho.

App desktop para conversar com modelos de IA, com projetos e histórico no computador.

  • Tauri 2
  • React 19
  • Rust
  • TypeScript

Conversa com IA por API, com projetos e histórico no computador.

App desktopIA por APIPessoal

  • Tauri 2
  • React 19
  • Rust
  • TypeScript

PortfólioMeu Chat Pessoal

A conversa

A resposta chega aos pedaços.

A resposta aparece enquanto é escrita, e o botão Parar corta no meio, sem esperar o fim. Escolha o esforço de raciocínio e faça uma pergunta; depois ligue a fila cheia e veja o programa esperar e tentar de novo.

Esforço de raciocínio

Simular falha

Meu Chat Pessoal · Conversa

  1. Escolha uma pergunta aqui embaixo.

As regras são as do programa (provedor/conversar.rs): a resposta chega em fluxo; o 429 de fila e os erros 500, 502, 503 e 504 ganham até três novas tentativas, com 1, 2 e 4 segundos de espera; o 429 de cota estourada é mostrado na hora. As respostas aqui são escritas para a demonstração.

O custo antes

Quanto vai custar, antes de mandar.

Antes de cada envio o programa estima quantos tokens a conversa vai usar. Depois, o serviço diz o número real, e a estimativa aprende com o erro. Marque o que vai junto e mande algumas vezes.

O que vai junto

Serviço

A estimativa

4.472Estimado

0,4% de 1M · fator 1,00×

 

O fator aprendendo

A conta é a do programa: caracteres ÷ 4,2 e cada imagem até 1.024 tokens; o fator fica entre 0,5× e 4×, um por serviço (lib.rs, calibrar_tokens). O quanto cada serviço difere da estimativa aqui é um exemplo.

Cena do projeto: três janelas do programa ligadas a uma pasta, com o histórico, a pasta de trabalho e a configuração

Um espaço para cada projeto. Conversas sob seu controle.

Configurações por projeto, modelos via API e histórico local.

02 / Fluxo de trabalhoTudo fica no seu computador.

Para o modelo entender um projeto, o programa junta a pasta num texto só. O que é gerado, pesado ou secreto fica de fora; o que parece cópia vira sugestão, e quem decide é você. Mexa nas escolhas e empacote.

📁 meu-projeto
  • ▸ .git640 arq. · 0 tokGerado · sai sempre
  • ▸ assets31 arq. · 0 tokNão é texto · sai
  • ▸ backup-antigo39 arq. · 58.200 tok
  • chave.pem1 arq. · 600 tokChave · barrada
  • ▸ dist23 arq. · 310.400 tokGerado · sai sempre
  • ▸ docs6 arq. · 9.400 tok
  • ▸ node_modules12.480 arq. · 4.102.000 tokGerado · sai sempre
  • package-lock.json1 arq. · 98.300 tokGerado · sai sempre
  • package.json1 arq. · 420 tok
  • README.md1 arq. · 1.900 tok
  • ▸ src42 arq. · 61.300 tok
  • ▸ src-tauri18 arq. · 27.900 tok

61arquivos

89.620tokens

O pacote, em ordem alfabética

# meu-projeto
São 61 arquivos. A árvore vem primeiro e depois o conteúdo de cada um.

=== package.json ===
=== src ===
=== src-tauri ===

Lembrado na pasta

.meuchat.json
{
 "excluir": [
  "backup-antigo"
 ],
 "semDocumentacao": true
}

As listas são as do programa (projeto/varredura.rs): pastas geradas como node_modules, dist e .git, imagens, compactados e travas de pacote saem sempre; chaves e certificados são barrados sem opção; arquivo acima de 400 KB também fica de fora. A ordem alfabética existe porque o cache do serviço só acerta quando o começo do texto se repete.

Antes de gravar

Cada mudança é conferida antes.

Quando o modelo propõe mexer num arquivo, o programa confere tudo antes de gravar: o trecho tem de existir exatamente uma vez, ninguém escreve fora da pasta e arquivo novo não sobrescreve nada. Escolha uma proposta e aplique.

src/enviar.ts1 ocorrência
export async function enviar(texto: string) {
  if (!texto.trim()) return;
  setCarregando(true);
  const resposta = await mandar(texto);
  setCarregando(false);
  mostrar(resposta);
  setCarregando(false);
  return "Enviado";
}
Repositório Git

As regras são as do programa (edicao/verificar.rs e aplicar.rs): conferência de novo na hora de gravar, tudo ou nada, sem cópia de segurança escondida; o Git só avisa quando a gravação encosta em arquivos que você mesmo mudou; desfazer volta apenas o que o programa escreveu.

Saldo e horário

O relógio que economiza.

No DeepSeek, fora do horário de pico o preço cai pela metade. O relógio abaixo já está no seu fuso e marca agora; arraste a hora ou troque o dia para ver a faixa mudar. Ao lado, o saldo e o gasto, sempre separados.

Horário de pico, no seu fuso

Fora de picoAté 22hO serviço cobra a metade agora.

Seu fuso: UTC−3.

Saldo e gasto, separados

SaldoUS$ 9,92

Gasto de hojeUS$ 0,029

Gasto da semana

US$ 0,021Qui
US$ 0,048Sex
US$ 0,012Sáb
US$ 0,094Dom
US$ 0,035Seg
US$ 0,006Ter
US$ 0,029Qua

As telas de verdade

As regras são as do programa (pico.ts e custo.rs): pico de 01h às 04h e de 06h às 10h UTC, de segunda a sexta. Só o DeepSeek tem endereço de saldo e tabela de preço; nos outros, o programa mostra tokens em vez de inventar valor. O dia do gasto é o do seu fuso. Os valores da semana são um exemplo.

As tecnologias

Do que é feito, peça por peça

Um programa de computador enxuto: a tela é React dentro do Tauri 2, e tudo o que fala com a internet, lê o projeto ou grava arquivo é feito em Rust, do lado do computador. Escolha uma peça para ver o que ela faz aqui e em que arquivo está.

10tecnologias, em 3 camadas

Tela

Janela e sistema

Conversa