🧬 Identidade e Personalidade
SOUL.md, AGENTS.md, USER.md, sistema AIEOS para exportar personalidade e perfis intercambiáveis por contexto.
SOUL.md é o arquivo mais importante do workspace/. Define nome, pronomes, tom de voz (formal/casual), valores éticos, estilo de resposta, preferências técnicas e até senso de humor do assistente.
Um SOUL.md bem escrito transforma o Jarvis de um chatbot genérico em um parceiro com personalidade consistente. É a diferença entre "Como posso ajudar?" e "Direto ao ponto: o que está travado?"
Persona design, system prompt injection, tom consistente, valores como guardrails, estilo de comunicação.
AGENTS.md contém regras explícitas de comportamento: sempre pedir confirmação antes de deletar arquivos, nunca executar código sem revisão em modo autônomo, priorizar segurança sobre velocidade.
Regras explícitas são mais confiáveis do que esperar que o LLM "entenda" o que você quer. AGENTS.md é o seu contrato de uso com o assistente.
Regras positivas (SEMPRE), regras negativas (NUNCA), prioridades de tarefa, escalonamento para humano.
USER.md contém informações sobre o criador: nome, stack técnica favorita, empresa, fuso horário, projetos em andamento. O Jarvis usa isso para personalizar todas as respostas.
Sem USER.md, o assistente responde genericamente. Com USER.md bem preenchido, ele sugere Python quando você prefere Python, e sabe que você usa Vim, não VS Code.
Perfil do usuário, preferências técnicas, contexto profissional, personalização de respostas.
AIEOS é o formato de exportação de identidade do INTELECTO. Permite serializar a personalidade completa (SOUL + AGENTS + USER) em um único arquivo portável.
Você pode ter múltiplos Jarvis com personalidades diferentes — um para trabalho, um para projetos pessoais — e alternar entre eles instantaneamente.
Serialização de identidade, perfis intercambiáveis, import/export de personalidade, multi-persona.
O INTELECTO suporta múltiplos perfis de SOUL.md. Você pode ter "Atlas-Dev" para codificação (direto, técnico), "Atlas-Meeting" para contexto corporativo (formal, diplomático) e alternar com um comando.
Contextos diferentes exigem tons diferentes. Um assistente que só fala de uma forma é limitado. Perfis intercambiáveis dão flexibilidade real.
Profile switching, context-aware personality, workspace profiles, hot-swap de identidade.
Escrever SOUL.md é um processo iterativo. Você escreve, testa com perguntas reais, observa respostas inesperadas e refina as instruções até o comportamento ser consistente com o que quer.
Nenhum SOUL.md fica perfeito na primeira versão. O processo de refinamento é a habilidade de prompt engineering mais importante para assistentes pessoais.
Prompt engineering iterativo, edge cases de personalidade, consistency testing, calibração de tom.
💬 Canais de Comunicação
Telegram como canal principal, WhatsApp, Discord, Slack, E-mail IMAP e implementação de BaseChannel.
Telegram oferece API robusta, polling ou webhooks, envio de arquivos, botões inline e grupos. É o canal mais fácil de configurar e o mais confiável para uso pessoal intenso.
A maioria das demos e casos reais de assistentes pessoais usam Telegram. Dominar esse canal primeiro acelera todos os outros — o padrão BaseChannel é o mesmo.
BotFather, polling vs webhook, inline keyboards, chat_id, allowed users, message types.
BaseChannel define 3 métodos abstratos: start() que inicializa a conexão, send(user_id, message) que entrega a resposta, e stop() que fecha graciosamente. Qualquer plataforma que implemente esses 3 é um canal válido.
O Agent nunca sabe qual canal está usando — ele só chama send(). Essa abstração permite trocar Telegram por Discord em minutos sem alterar o Agent.
Interface abstrata, adapter pattern, channel-agnostic agent, graceful shutdown.
WhatsApp via Meta Business API requer aprovação, mas é o canal mais usado no Brasil. O INTELECTO implementa WhatsAppChannel que usa webhooks do Meta para receber mensagens e a API para enviar.
Para uso profissional no Brasil, WhatsApp é insubstituível. Ter um Jarvis que responde no WhatsApp é uma vantagem competitiva para freelancers e empresas.
Meta Business API, webhook verification, phone number ID, template messages, rate limits.
Discord e Slack são canais ideais para equipes. O DiscordChannel usa discord.py e suporte a slash commands. O SlackChannel usa a Events API com OAuth para workspace empresarial.
Um assistente que vive no Discord/Slack da equipe responde perguntas do time inteiro, automatiza fluxos de trabalho e elimina reuniões desnecessárias.
Bot permissions, slash commands, event subscriptions, workspace scopes, mention handling.
O EmailChannel usa IMAP para monitorar uma caixa de entrada e SMTP para enviar respostas. O Jarvis pode responder e-mails automaticamente ou gerar rascunhos para revisão humana.
Triagem automática de e-mails é um dos casos de uso de maior ROI. Um Jarvis que categoriza, prioriza e responde e-mails rotineiros economiza horas por semana.
IMAP polling, MIME parsing, thread tracking, auto-reply vs draft, spam filtering.
O VoiceChannel usa Whisper para transcrição em tempo real. Quando detecta a palavra de ativação configurada (ex: "Atlas"), envia o texto transcrito ao Agent e sintetiza a resposta com TTS.
Voz é o canal mais natural para interação enquanto você trabalha. Um Jarvis que ouve e responde por voz transforma o fluxo de trabalho hands-free.
Wake word detection, Whisper STT, TTS synthesis, VAD (voice activity detection), latência de resposta.
🧠 Memória e Conhecimento
SQLite FTS5 + BM25, sistema de 2 camadas (MEMORY.md + memory.db), categorias e compactação automática.
FTS5 é o módulo de full-text search do SQLite. Sem dependências externas, sem servidor, sem custo — apenas SQLite com índices de busca em texto altamente otimizados.
A memória do Jarvis precisa ser buscável rapidamente. FTS5 indexa automaticamente todo o conteúdo e permite buscas em milissegundos em milhares de registros.
Virtual table FTS5, tokenização, índice invertido, prefix search, phrase matching.
BM25 é o algoritmo de ranking de relevância usado pelo FTS5. Quando o Jarvis busca memórias relacionadas à sua mensagem, BM25 garante que as mais relevantes apareçam primeiro — não apenas as mais recentes.
Sem ranking de relevância, a memória retorna resultados aleatórios. BM25 é o que torna a memória do Jarvis inteligente, não apenas uma lista de fatos.
Term frequency, inverse document frequency, field weights, bm25() function no SQLite.
Camada 1: MEMORY.md em workspace/ — fatos estáticos de bootstrap que sempre estão no system prompt. Camada 2: memory.db — fatos dinâmicos extraídos de conversas, buscados por relevância quando necessário.
Não dá para colocar toda a memória no system prompt (caro e lento). A arquitetura de 2 camadas resolve: o essencial sempre presente, o histórico buscado sob demanda.
Context window management, RAG (retrieval augmented generation), bootstrap facts, dynamic retrieval.
Cada entrada no memory.db tem uma categoria: fact (fato sobre o usuário ou mundo), conversation (trecho importante de conversa passada), solution (como um problema foi resolvido — muito útil para evitar retrabalho).
As categorias permitem buscas mais específicas. Quando você reporta um bug, o Jarvis busca apenas category='solution' para ver se já resolveu algo parecido.
Categorical filtering, solution memory, conversation threading, fact extraction automática.
Antes de salvar um novo fato, store.py busca fatos similares com BM25. Se a similaridade for alta, atualiza o fato existente em vez de criar um duplicado. Evita que a memória cresça com informações redundantes.
Sem deduplicação, a memória enche de variações do mesmo fato. "Usuário usa Python" e "Usuário prefere Python" seriam entradas separadas — deduplicação une-as.
Similarity threshold, upsert pattern, cosine similarity alternativa, merge de fatos.
Quando o banco de memória ultrapassa um limite configurado, um job de compactação sumariza entradas antigas em fatos mais densos. Mantém a memória relevante sem crescer indefinidamente.
Memória sem limites é um problema. Compactação automática resolve a tensão entre "lembrar de tudo" e "manter a busca eficiente".
Memory compaction, summarization, TTL de memórias, pruning estratégico, relevance decay.