EVA rodea a un modelo de lenguaje con las piezas que un asistente necesita para ser útil de forma continuada: memoria episódica y semántica con saliencia, un estado afectivo calculado (placer, activación, dominancia), drives de motivación intrínseca, consolidación periódica y persistencia entre sesiones. El objetivo es un agente que recuerda, prioriza y mantiene contexto, en lugar de empezar de cero en cada conversación.
EVA es un prototipo de agente conversacional con un "sistema límbico computacional": una arquitectura en Python que envuelve a un LLM intercambiable (el "córtex") y le añade lo que un modelo de lenguaje no tiene de serie: estado emocional con dinámica temporal real, memoria con carga afectiva, motivación propia (drives), aprendizaje al "dormir" e iniciativa para escribir primero. El LLM solo genera lenguaje; todo lo que da continuidad a EVA vive fuera de los pesos, en código, y persiste entre sesiones en una base de datos SQLite local (eva_brain.db).
El problema que aborda es la naturaleza stateless y reactiva de los asistentes basados en LLM: olvidan entre sesiones, no tienen estado interno coherente y solo responden cuando se les habla. EVA reconstruye en cada turno un contexto propio (estado afectivo, recuerdos relevantes, modelo del interlocutor, intenciones abiertas, conciencia temporal) y lo inyecta en el system prompt del modelo, de modo que las respuestas reflejan una continuidad de identidad y de relación. La emoción no es teatro de prompt: es consecuencia calculada de los eventos mediante un motor de appraisal, y modula tanto la memoria como la conducta.
Es honestamente un prototipo de I+D, no un producto: corre en local, funciona con la suscripción Claude (Max/Pro) vía el Agent SDK con OAuth y sin API key —por defecto sobre el modelo claude-haiku-4-5 para contener el coste estimado, elevable a sonnet/opus desde la propia interfaz—, o en modo "eco" sin LLM para demos y tests offline. Las capacidades hacia afuera (salida a la web, escritura en disco) están desactivadas por defecto tras kill-switches. Su valor para un contexto B2B es de demostración de capacidad técnica: muestra cómo orquestar un LLM con memoria persistente, estado, herramientas (tool use vía MCP) y autonomía controlada, con barandillas de seguridad y trazabilidad auditable.
Calcula y mantiene un estado afectivo real (emociones, mood y personalidad baseline) en el espacio placer-activación-dominancia, que evoluciona aunque nadie hable, decae con el tiempo y sobrevive al cierre del programa.
Deriva emociones discretas de cada evento evaluando novedad, congruencia, agencia, afrontamiento y aprobación. Heurístico determinista por defecto, con un perfil léxico que puede aprenderse y un sesgo mood-congruente; valoración por LLM opcional.
Graba cada interacción con su carga emocional y la recupera combinando embeddings semánticos, coseno léxico, recencia, saliencia y mood, todo en SQLite con vectores normalizados (float32) que se reindexan solos si cambia el proveedor.
Mantiene cuatro documentos persistentes (quién es jcode, sus proyectos, quién es EVA y el hogar/la familia) que se inyectan en cada prompt y que el sueño y las herramientas del LLM reescriben cuando aprende algo estable.
Curiosidad, conexión, competencia y descanso son niveles homeostáticos que decaen solos y se satisfacen con eventos; su presión entra en el prompt como impulso de conducta, hay drives que se oponen (conexión/curiosidad/competencia frente a descanso) con coste de oportunidad, y los setpoints maduran lentamente al dormir.
Un proceso tipo sueño extrae lecciones, reescribe la identidad, redacta diario, ancla enlaces causales a los episodios que la transformaron, fija intenciones, agrupa episodios en conceptos, deriva personalidad y olvida selectivamente lo viejo de poca carga emocional (preservando lecciones, diario, vault y conceptos).
El LLM dispone de un servidor MCP in-process con dieciocho herramientas reales: buscar en su memoria, memorizar, reescribir su identidad, introspección de estado, ver y moldear su personalidad de forma acotada, fijar intereses, revisar su coherencia interna, mirar sus propias costuras arquitectónicas, agendarse despertares, buscar en la web y anotar en el vault (ambas gateadas), y una agenda del hogar (recordatorios, seguimientos, fechas, preferencias y ubicaciones de objetos).
Como proceso residente, EVA avanza su estado entre turnos y, cuando un drive (o un interés monotrópico) cruza el umbral —con cooldowns, tope diario y horas de silencio—, escribe primero. Un agente de fondo persigue intenciones propias paso a paso sobre un scratchpad persistente en SQLite, con rumiación, prospección de futuros y recombinación de ideas, todo bajo topes de coste.
Una interfaz web dibuja dos ojos en SVG cuya expresión es una proyección numérica del estado PAD del cerebro, interpolada por frame (parpadeo y micro-sacadas modulados por la activación) y actualizada por WebSocket; incluye chat, panel del sistema límbico en vivo, widget de memoria, panel 'Mente' (pensamientos, diario, intenciones, modelo del usuario) y modo sueño.
Puede recibir mensajes por webhook (POST /api/whatsapp) y responder por WhatsApp en dos modos configurables: invocando un CLI de WhatsApp Web (wacli, mudslide...) sin shell, o por POST JSON a una pasarela HTTP autoalojada tipo WAHA/wuzapi. Habla con voz neuronal de Edge (edge-tts, es-ES-XimenaNeural) servida desde /api/tts, con degradado a la síntesis del navegador, y admite dictado por voz con la Web Speech API.
Captura de la interfaz; el núcleo de razonamiento se ejecuta en un backend propio.
Interfaz de voz que escucha, piensa y responde con baja latencia usando Whisper (transcripción) y voz neural Piper, ambos ejecutándose en local en el navegador.
Ver prototipo →
Cara paramétrica que interpola entre estados emocionales en tiempo real con SVG, sigue al usuario y reacciona. Una capa de interfaz para chatbots, kioscos o asistentes.
Ver prototipo →Si algo de esto encaja con un problema real de tu negocio, lo convertimos en una solución mantenible y con control total.
Hablemos de tu proyectoÚltima actualización: 03/07/2026
Recopilamos datos personales únicamente cuando el usuario nos los facilita voluntariamente a través de:
| Dato | Obligatorio | Finalidad |
|---|---|---|
| Nombre | Sí | Identificar al remitente y personalizar la respuesta |
| Empresa | No | Contextualizar la consulta profesional |
| Sí | Responder a la consulta y enviar confirmación de recepción | |
| Servicio de interés | No | Derivar la consulta al área adecuada |
| Mensaje | No | Comprender la necesidad del usuario |
Correo de confirmación: al enviar el formulario de contacto, se envía automáticamente un email de confirmación a la dirección indicada por el usuario, como acuse de recibo de la solicitud.
| Dato | Obligatorio | Finalidad |
|---|---|---|
| Nombre | Sí | Mostrar la autoría del comentario publicado |
| Sí | Verificación interna y notificaciones (no se publica) | |
| Contenido del comentario | Sí | Publicación en la sección de comentarios del artículo |
Los comentarios pueden requerir aprobación del moderador antes de su publicación.
| Tipo de dato | Plazo | Criterio |
|---|---|---|
| Formulario de contacto | 12 meses | Desde la última comunicación |
| Comentarios del blog | Indefinido | Mientras permanezca publicado |
| Datos de clientes | 5-6 años | Obligaciones fiscales |
| Cookies | Variable | Según tipo de cookie |
Transcurridos los plazos, los datos serán eliminados o anonimizados.
De acuerdo con el RGPD y la LOPDGDD, tienes derecho a:
Para ejercer estos derechos: info@joanmedina.es
Puedes reclamar ante la AEPD en www.aepd.es.
En 30 minutos analizo tu empresa y te digo con claridad dónde estás perdiendo tiempo, qué automatizaría primero y qué evitaría. Sin compromiso, sin letra pequeña.
+10 años de experiencia · +200 procesos automatizados
Diagnóstico gratuito — Detecta dónde se pierden horas y qué automatización tiene más retorno
Pedir diagnóstico