Files
Documentos-Unicos/projetos/newwhats.clube67.com/secretaria-ia.md
T
VPS 4 Builder df09a188bb docs(newwhats): roadmap de evolução da Secretária IA (memória + humanização)
Registra as sugestões: memória de longo prazo (memória própria por contato
reusando o RAG; alternativas Mem0/Zep/Letta) e humanização (Whisper, TTS, ritmo
humano), com prioridade sugerida e fontes. Estado desejado separado do atual.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 08:00:22 +02:00

2.8 KiB

newwhats.clube67.com — Secretária IA (plugin secretaria)

Específico deste projeto. Atendente virtual de IA do newwhats, no plugin backend/plugins/secretaria/ (gerenciado por Knex, tabelas sec_*).

Arquitetura

  • Agente (sec_agents): define provider/modelo/temperatura/context_window.
  • Cérebro = nós (sec_brain_nodes), tipos: persona, knowledge, rules, calendar, escalation. O brain.ts (buildSystemPrompt) monta o system prompt concatenando os nós ativos + data/hora + protocolo + resumo.
  • Resposta: callAI com fallback de providers (config do plugin: openai_key, gemini_key, anthropic_key — em Admin → Plugins → Secretária IA).
  • Conversas/mensagens: sec_conversations / sec_messages (com telemetria usage_tokens/provider_used/model_used).
  • UI: /secretaria (abas Conversas, Cérebro, Agenda, Agentes, Números) + ícone de Ajuda com modelos prontos por nó (botão "Usar este modelo").

RAG na Base de Conhecimento (SEM pgvector)

Por que sem pgvector: a extensão não está disponível no Postgres da VPS3 nem na imagem do pgdev, e o role newwhats não é superuser (CREATE EXTENSION negado). Solução adotada (decisão 28/jun/2026):

  • embeddings.ts: chunking + embed (OpenAI text-embedding-3-small ou Gemini text-embedding-004, conforme a chave) + cosseno — tudo em Node.
  • Tabela sec_knowledge_chunks: vetor serializado em JSON/text (sem extensão) + índices em agent_id/node_id.
  • brain.ts: no nó knowledge, injeta só os top-4 trechos relevantes à pergunta. Indexação lazy (reindexa quando o conteúdo muda — hash MD5).
  • Fallback: sem chave de embedding ou em qualquer erro → injeta o conteúdo inteiro (comportamento anterior). Nunca regride.

Para bases pequenas (clínica/empresa) é rápido e suficiente. Quando a VPS3 tiver pgvector, dá para migrar a busca ao banco sem mudar a interface.

Modo teste / segurança

  • DISABLE_OUTBOUND=true (kill switch global, ver ambiente-dev.md) bloqueia todo envio — inclusive respostas automáticas da secretária — em dev.
  • ⚠️ Ao conectar uma sessão WhatsApp real em dev, a secretária responde sozinha (bots/IA). Mantenha o kill switch ligado nos testes.

Migrations (Knex) — cuidado

O migrate.ts cria tabelas if (!hasTable) e adiciona colunas novas com blocos hasColumn/alterTable (idempotentes). Ao adicionar coluna usada em runtime, adicione também o bloco de migração — senão bancos antigos quebram (ex.: faltava sec_messages.usage_tokens/provider_used/model_used → erro 42703, corrigido).

Futuro

Roadmap de humanização e memória de longo prazo (memória por contato, Whisper, TTS, ritmo humano, frameworks Mem0/Zep/Letta) em secretaria-ia-evolucao.md.