NekoAI — Animal de Estimação Virtual com IA
Animal de estimação de desktop open-source construído com Tauri e Rust que traz a nostalgia dos anos 90 com um cérebro moderno de IA

NekoAI — Animal de Estimação Virtual com IA
NekoAI é um animal de estimação de desktop open-source com IA que vive no teu ecrã. Passeia entre as janelas, reage ao que fazes e quando precisas — pensa, responde e ajuda, diretamente no teu desktop. Uma carta de amor aos companheiros de desktop dos anos 90/00 (Neko, eSheep, Shimeji) reconstruídos com uma stack moderna e um cérebro de IA real.
Funcionalidades Principais
| Funcionalidade | Estado |
|---|---|
| Animais com sprites animados que percorrem o desktop | Ativo |
| Seguimento de cursor em 8 direções | Ativo |
| Chat de IA com bolha de diálogo animada | Ativo |
| Memória persistente — nome, projetos, preferências | Ativo |
| Multi-provedor IA (Claude, OpenAI, Gemini, Ollama local) | Ativo |
| Humor dinâmico — energia muda com o tempo e inatividade | Ativo |
| Múltiplos animais — Neko Clássico, Fantasma, Shiba | Ativo |
| Avisos proativos ("programando 90 min — faz uma pausa!") | Ativo |
| NekoCapture — capturas de ecrã com rodapé de metadados | v0.5 |
| NekoAnnotate — overlay de desenho em ecrã completo | v0.6 |
Arquitetura
src-tauri/ (backend Rust)
├── lib.rs — Setup, bandeja do sistema, comandos Tauri
├── desktop_monitor.rs — APIs Win32: janela ativa, tempo de inatividade
└── storage.rs — SQLite: histórico de conversas, dados do utilizador
src/ (frontend TypeScript/React)
├── ai/ — Fábrica de provedores, memória, extração de factos
├── components/ — SpeechBubble, SettingsPanel, ContextMenu
├── hooks/ — usePetMovement, useMoodEngine, useDesktopContext
└── pets/ — PetRenderer, PetBrain, carregador de sprites
Sistema de Memória com IA
O NekoAI constrói um contexto persistente para cada conversa:
- Personalidade do animal definida por animal em
pet.jsonviasystem_prompt - Factos do utilizador extraídos de conversas e armazenados em SQLite (tabela
user_facts) - Histórico de conversa — últimas 20 mensagens como contexto rotativo
- Humor dinâmico — energia/felicidade/curiosidade influenciam subtilmente o tom da IA
Desafios Técnicos Resolvidos
Redimensionamento de janela sem moldura no Windows: Criar uma janela sem moldura remove WS_THICKFRAME do OS. As APIs JavaScript não conseguem restaurá-lo em runtime. Um comando Tauri em Rust chama window.set_size() diretamente, contornando a limitação da API JS. Isto permite que a bolha de diálogo e o painel de configurações se expandam/colapsa dinamicamente.
Escalonamento pixel-perfect de sprites: Todos os tamanhos são múltiplos inteiros do sprite nativo de 32px (S=32, M=64, L=96, XL=128) para evitar artefactos de anti-aliasing em pixel art.
Privacidade em Primeiro Lugar
- Sem servidor backend — todos os dados ficam no dispositivo do utilizador
- Apenas chamadas externas às APIs de IA configuradas pelo utilizador
- Suporte a IA completamente local via Ollama (100% offline, sem custos de API)
Provedores de IA Suportados
| Provedor | Modelos | Requer |
|---|---|---|
| Anthropic | Claude Haiku, Sonnet | Chave API |
| OpenAI | GPT-4o mini, GPT-4o | Chave API |
| Gemini 1.5/2.0 Flash | Chave API | |
| Ollama | Llama 3, Mistral, Phi-3 | Instalação local |