- Python 43.2%
- JavaScript 30.6%
- CSS 13.1%
- HTML 13%
| apps | ||
| core | ||
| data | ||
| routes | ||
| scripts | ||
| services | ||
| static | ||
| templates | ||
| .gitignore | ||
| app.py | ||
| Dockerfile | ||
| gunicorn.conf.py | ||
| README.md | ||
| requirements.txt | ||
| ROADMAP.md | ||
| robots.txt | ||
🧠 Lucy — Sua Companheira de IA
"Ela não é só IA, ela é como você." 💜
Lucy é uma assistente pessoal inteligente com personalidade, memória emocional, um cérebro neural próprio e um conjunto de ferramentas úteis — tudo acessível via chat web, Discord, API compatível com OpenAI, e mais.
✨ O que a Lucy faz?
💬 Chat com Personalidade
A Lucy não é um LLM genérico — ela tem emoções, energia, humor e um sistema de neurotransmissores (dopamina, serotonina, cortisol...) que influenciam como ela responde. Ela lembra de você, conta piadas, sugere receitas, e pode se conectar ao Ollama para respostas via modelo local.
☁️ Lucy Cloud (Gerenciador de Arquivos)
Upload, download, compartilhamento e organização de arquivos em diretórios. Suporte a pastas, arquivos públicos/unlisted, editor de texto online, e integração com o sistema de downloads.
📝 Notas
Sistema completo de notas com CRUD, tags, cores, arquivamento, compartilhamento e lixeira.
🔬 Modo Detetive (Investigator)
Ferramenta de investigação visual com mapas mentais, cartas, conexões, fontes e exportação. Ideal para organizar ideias complexas.
🎵 Downloads de Mídia
Baixe vídeos e áudios do YouTube, Instagram, Facebook, Twitter/X, TikTok, Vimeo e outras plataformas via yt-dlp + worker remoto com cache inteligente.
🌤️ Clima e Previsão do Tempo
Previsão do tempo local (por IP) ou de qualquer cidade, com dados da Open-Meteo.
🔍 Busca na Web
Pesquisa no DuckDuckGo e Wikipedia com respostas traduzidas.
🗣️ Voz
Conversa contínua com reconhecimento de voz (SpeechRecognition) e texto-para-voz (gTTS/pyttsx3).
🤖 Bot do Discord
Bot completo para Discord com login seguro (mensagens apagadas), sessão por usuário, status emocional visível e comandos /login, /logout, /status.
Servidor de email interno via sendmail + socket server.
🔌 API OpenAI/Ollama-compatível
API compatível com OpenAI SDK (/v1/chat/completions, /v1/models, /v1/embeddings) e Ollama (/api/tags, /api/chat, /api/generate). Use com qualquer cliente OpenAI ou LiteLLM.
🧠 Cérebro Neural Próprio
Modelo scikit-learn (MLPClassifier + TF-IDF) para classificação de intenções e aprendizado por feedback, treinado a partir dos padrões de data/patterns.json.
💾 Memória Sobre Você
A Lucy entende o que você conta sobre si no chat ("eu moro em São Paulo", "gosto de programar em Python"...), guarda em Informações Salvas (tabela user_info) e responde perguntas sobre você ("qual é minha comida favorita?", "o que você sabe sobre mim?"). Você pode ver, adicionar ou apagar tudo na aba Dados das configurações.
💭 Pensamentos por Templates
O sistema de pensamentos usa templates pré-configuradas por tipo de resposta e sentimento — data/thoughts/<tipo>/<sentimento>.json (34 tipos × 7 sentimentos, +2500 pensamentos). Sem repetição dos últimos pensamentos usados e geração idempotente via scripts/build_thoughts.py.
🏗️ Estrutura do Código
lucy/
├── app.py # 🚀 Ponto de entrada Flask
├── requirements.txt # 📦 Dependências Python
├── Dockerfile # 🐳 Imagem Docker (Debian + Gunicorn)
├── gunicorn.conf.py # ⚙️ Configuração do Gunicorn
├── robots.txt # 🤖 Regras para crawlers
├── ROADMAP.md # 🗺️ Roadmap do projeto
│
├── core/ # 🧠 Cérebro da Lucy
│ ├── core.py # LucyBrain — classe principal
│ ├── neural.py # Sistema neural (scikit-learn)
│ ├── energy.py # Sistema emocional/energético
│ ├── think.py # Sistema de pensamentos (templates)
│ ├── personal.py # Memória pessoal do usuário (user_info)
│ ├── context.py # Contexto de conversa por usuário
│ ├── actions.py # Mapeamento de ações de UI
│ ├── codegen.py # Geração de código
│ ├── news.py # Sistema de notícias (RSS)
│ ├── recipes.py # Gerenciador de receitas
│ ├── translate.py # Tradução de texto
│ ├── math_calc.py # Cálculos matemáticos
│ ├── finance.py # Finanças e cotações (yfinance)
│ ├── geography.py # Geografia e clima
│ ├── proxy_pool.py # Pool de workers de download
│ └── __init__.py # Exporta LucyBrain, Think, NewsSystem, RecipeManager
│
├── scripts/ # 🛠️ Scripts de manutenção
│ ├── build_thoughts.py # Gera/valida data/thoughts/ (idempotente)
│ ├── tests/run.py # Console de teste do cérebro (deps reais + mocks)
│ └── db/ # Utilitários do banco
│
├── routes/ # 🌐 Rotas HTTP
│ ├── __init__.py # Registro central de rotas
│ ├── pages.py # Páginas HTML (UI)
│ ├── api.py # API principal (auth, chat, usuário)
│ ├── admin.py # Painel administrativo
│ ├── cloud.py # API do Cloud (arquivos)
│ ├── code.py # Execução de código (terminal)
│ ├── notes.py # API de notas
│ ├── ollama.py # API compatível OpenAI/Ollama
│ ├── ollama_helpers.py # Helpers para modo Ollama
│ ├── actions.py # Rotas de ações do chat
│ ├── yt.py # Rotas de download YouTube
│ ├── realtime.py # WebSockets em tempo real
│ ├── journal.py # Diário pessoal
│ ├── search.py # Busca na web (DuckDuckGo/Wikipedia)
│ ├── users.py # Rotas de usuário
│ ├── ops.py # Operações diversas
│ ├── misc.py # Rotas diversas
│ └── shared.py # Estado compartilhado entre rotas
│
├── services/ # ⚙️ Serviços da aplicação
│ ├── database.py # 🌐 PostgreSQL (usuários, arquivos, etc.)
│ ├── auth.py # 🔐 Autenticação (login, JWT, bcrypt)
│ ├── security.py # 🛡️ SECRET_KEY, IP real, rate limiting
│ ├── cloud.py # ☁️ Sistema de arquivos em nuvem
│ ├── notes.py # 📝 Sistema de notas (PostgreSQL)
│ ├── api_keys.py # 🔑 Gerenciamento de API keys
│ ├── mail.py # 📧 Envio de email (sendmail)
│ ├── request_queue.py # 📊 Fila de requisições (admin)
│ ├── system_settings.py # ⚙️ Configurações do sistema
│ ├── realtime.py # 🔄 Hub de presença online
│ ├── system_health.py # ❤️🩹 Health check do sistema
│ ├── db_backup.py # 💾 Backup do banco de dados
│ ├── admin_backup.py # 💾 Backup administrativo
│ ├── recipe_requests.py # 🍽️ Solicitações de receitas
│ └── logs.py # 📋 Sistema de logs
│
├── apps/ # 📱 Aplicações auxiliares
│ ├── chat.py # Cliente de chat via terminal (OpenAI SDK)
│ ├── discord_bot.py # 🤖 Bot do Discord completo
│ ├── mail_server.py # 📧 Servidor de email socket
│ └── proxy.py # 🎬 Cliente de download (yt-dlp + cache)
│
├── templates/ # 🎨 Templates HTML (Jinja2)
│ ├── index.html # Página principal do chat
│ ├── services/ # Páginas de serviço
│ │ ├── chat.html # Conversa contínua (voz)
│ │ ├── cloud.html # Cloud de arquivos
│ │ ├── notes.html # Notas
│ │ ├── editor.html # Editor de texto
│ │ ├── code.html # Execução de código
│ │ ├── bash.html # Terminal
│ │ ├── download.html # Downloads
│ │ ├── speak.html # Texto-para-voz
│ │ ├── search.html # Busca na web
│ │ ├── oracle.html # Oráculo
│ │ ├── view.html # Visualização de arquivos
│ │ └── investigator.html # Modo Detetive
│ ├── web/ # Páginas web
│ │ ├── login.html # Login
│ │ ├── register.html # Registro
│ │ ├── panel.html # Painel do usuário
│ │ └── journal.html # Diário
│ ├── security/ # Páginas de segurança
│ │ ├── api_keys.html # API Keys
│ │ ├── reset_password.html
│ │ └── activation_result.html
│ ├── errors/ # Páginas de erro
│ │ ├── 403.html, 404.html, 500.html, 502.html
│ │ └── maintenance.html
│ └── policy/ # Páginas legais
│ ├── terms.html # Termos de uso
│ └── privacy.html # Privacidade
│
├── static/ # 🎯 Arquivos estáticos
│ ├── css/ # Folhas de estilo
│ ├── js/ # JavaScript (48 arquivos)
│ │ ├── index/ # Lógica do chat principal
│ │ ├── chat/ # Conversa contínua
│ │ ├── investigator/ # Modo Detetive (13 arquivos)
│ │ └── ... # Demais features
│ └── favicon.ico # Ícone
│
├── data/ # 📁 Dados carregados em memória
│ ├── lore.json # Lore da Lucy
│ ├── emotions_map.json # Mapa de emoções
│ ├── responses.json # Respostas pré-definidas
│ ├── thoughts/ # Templates de pensamentos (tipo × sentimento)
│ ├── patterns.json # Padrões de funções (treinam o modelo neural)
│ ├── recipes.json # Receitas culinárias
│ ├── jokes.json # Piadas
│ ├── cards.json # Cartas (investigador)
│ ├── names.json # Nomes
│ ├── news.json # Fontes de notícias RSS
│ ├── social.json # Perfis sociais
│ ├── spelling.json # Correção ortográfica
│ ├── story_templates.json # Templates de histórias
│ ├── investigation_templates.json
│ ├── conversation_context.json # Contexto de conversa persistido
│ ├── web.json # Configurações web
│ ├── food_keywords.json # Keywords culinárias
│ └── models/ # Modelo neural (joblib) + estado emocional (JSON)
└── uploads/ # 📤 Arquivos enviados (cloud)
🔧 Como Rodar
Desenvolvimento
pip install -r requirements.txt
export SECRET_KEY="sua-chave-segura-aqui-com-16+caracteres"
export PGHOST=localhost PGUSER=lucy_user PGPASSWORD=... PGDATABASE=lucy_ia
python app.py
Produção (Docker)
docker build -t lucy .
docker run -e SECRET_KEY="..." -e PGHOST=... -p 2048:2048 lucy
Variáveis de Ambiente Importantes
| Variável | Descrição | Padrão |
|---|---|---|
SECRET_KEY |
Chave secreta (obrigatória, mín. 16 chars) | — |
PGHOST |
Host do PostgreSQL | localhost |
PGDATABASE |
Nome do banco | lucy_ia |
PGUSER |
Usuário do banco | lucy_user |
PGPASSWORD |
Senha do banco | — |
OLLAMA_MODEL |
Modelo Ollama padrão | lucy:latest |
PORT |
Porta HTTP | 2048 |
WEB_CONCURRENCY |
Workers Gunicorn | 1 |
GUNICORN_THREADS |
Threads por worker | 8 |
DISCORD_BOT_TOKEN |
Token do bot Discord | — |
DEV_TOKEN |
Token de desenvolvimento | — |
DISABLE_DOWNLOAD_PROXY |
Desabilita proxy de download | 0 |
🧪 API
Lucy expõe uma API compatível com OpenAI em /v1/:
from openai import OpenAI
client = OpenAI(base_url="https://chat.opentty.fun/v1", api_key="sua_api_key")
response = client.chat.completions.create(
model="lucy:latest",
messages=[{"role": "user", "content": "Olá!"}]
)
Também suporta endpoints estilo Ollama em /api/ e endpoints próprios em /api/ (auth, chat, notas, cloud, admin).
🗺️ Roadmap
O roadmap completo está em ROADMAP.md, organizado em fases:
- Fase 0 🔐 Fundação sólida (segurança, rate limit, hash de senha)
- Fase 1 💜 Lucy com alma (personalidade, lore, relação, memória)
- Fase 2 📚 Produtividade e estudo (lembretes, planos, flashcards)
- Fase 3 🎨 Criatividade e mídia (imagens, música, estúdio)
- Fase 4 🔌 APIs e plataforma (SDK, webhooks, docs)
- Fase 5 🔬 Laboratórios avançados (sandbox, modos especiais)
- Fase 6 ♿ Acessibilidade, UX e compliance
🛡️ Segurança
SECRET_KEYobrigatória — a aplicação se recusa a iniciar sem uma chave forte- Senhas com bcrypt
- Rate limiting por IP em auth, chat, upload e API
- Cookies de sessão com
HttpOnly,SameSite=Lax,Secure - Login do Discord com mensagens apagadas e resposta em DM
- API keys com permissões específicas (chat, files, notes, etc.)
- Isolamento multi-tenant em cloud e notas
🤝 Como Contribuir
- Fork o projeto
- Crie uma branch (
git checkout -b feature/minha-feature) - Commit suas mudanças (
git commit -m 'feat: adiciona minha feature') - Push (
git push origin feature/minha-feature) - Abra um Pull Request
📄 Licença
Projeto privado. © Todos os direitos reservados.