-
Modelo de lenguaje (Ollama)
Un modelo de 8.000 millones de parámetros cuantizado a 4 bits: unos 5 GB. Se carga solo cuando se le pregunta y se descarga a los 5 minutos, para dejar la GPU libre para el resto del PC.
- LLM locales (Ollama, Qdrant, RAG)
-
Voz (Whisper + síntesis)
Whisper convierte los audios en texto y un sintetizador local responde con voz. También en la GPU del PC.
- LLM locales (Ollama, Qdrant, RAG)
-
La GPU de 8 GB
El límite de todo el diseño. Si el modelo no cabe entero, una parte corre en la CPU y la velocidad cae de 73 a 17 tokens por segundo. El simulador de abajo lo enseña con las medidas reales.
-
Yo, desde Element
Pregunto por texto o por audio desde el chat, esté donde esté.
-
Correo (solo lectura)
Se indexa al instante en cuanto llega (IMAP IDLE), con el texto de los PDF adjuntos. Solo la bandeja principal: ni promociones ni redes sociales.
-
Calendario
Lo único donde Hermes escribe: crea eventos desde correos de reserva y deja un 🗑️ para deshacerlo con una reacción.
-
Matrix (sala del asistente)
Mi servidor de mensajería. Hermes tiene su propio usuario y verifica su dispositivo solo: nada de avisos de «fuente no verificada».
-
Hermes (el bot)
El programa en Python que orquesta el turno: recibe el mensaje, prepara el contexto, llama al modelo, ejecuta herramientas y revisa la respuesta antes de enviarla.
-
Cola persistente
Si el PC con la GPU está apagado, la pregunta no se pierde: se guarda en disco y se responde sola en cuanto vuelve.
-
Maquetado
Convierte el Markdown en HTML para Element y deja una versión en texto plano para las notificaciones. Todo lo que viene de fuera (asuntos, títulos) se escapa: es dato, no marcado.
-
Fase 1 · Contexto que pone el código
Instrucciones, la fecha de hoy con una tabla de los próximos 7 días y el historial resumido a pregunta y respuesta. El modelo no sabe qué día es: si no se le dice, razona con la fecha de su entrenamiento.
-
Fase 2 · Pistas según la pregunta
Si la pregunta encaja con un patrón («qué pasó con…», «por dónde se entra…»), se añade una frase solo a ese turno. Nunca al prompt global: cuanto más texto general, peor elige un modelo de 8B.
-
Fase 3 · Razonar solo donde aporta
Pensar multiplica por seis el tiempo. Se enciende para elegir herramienta y calcular argumentos, y cuando un resultado viene vacío o con un aviso; se apaga para redactar con los datos delante.
- LLM locales (Ollama, Qdrant, RAG)
- Python
-
Fase 4 · Guardias de salida
Antes de enviar, el código compara la respuesta con las fuentes del turno: una IP o un importe que no aparece en ninguna se devuelve al modelo para corregir. Si insiste, se envía con un aviso.
-
Herramientas
Estado del servidor, agenda, correo y tres memorias. El código valida los argumentos antes de ejecutar («7» pasa a 7) y, si el modelo nombra una herramienta sin llamarla, le pide una vez que la llame.
-
Estado del servidor
Instantáneas de la monitorización y la seguridad, inventario de contenedores, ZFS y discos. Cada dato va con su antigüedad: si tiene más de 30 minutos, el modelo lo sabe.
-
Los siete vigilantes
Copias, certificados, almacenamiento, actualizaciones, uso anómalo, accesos fallidos y red. Cada uno con nombre de la mitología griega y su propia sala: solo hablan cuando encuentran algo raro.
-
Relevo del código
Cuando una pregunta en realidad son dos («¿cuánto costó la entrada de lo que tengo el jueves?»), el modelo fallaba 3 de 3. Ahora el código da el segundo paso: mira la agenda, coge el título y lo busca en el correo.
-
Embeddings
Convierten cada texto en un vector de números para poder buscar por significado y no solo por palabras.
- LLM locales (Ollama, Qdrant, RAG)
-
Qdrant (base vectorial)
Guarda los vectores de las notas, los correos, los documentos que le paso y las conversaciones. El código busca en las tres memorias a la vez para que el modelo no tenga que adivinar cuál.
- LLM locales (Ollama, Qdrant, RAG)
-
Mi documentación
Procedimientos, incidentes y postmortems del homelab. Hermes los lee, pero nunca escribe en ellos.
-
Memoria de conversaciones
Cada conversación, también los audios transcritos, se indexa: «¿qué hice la semana pasada con…?» tiene respuesta.
- LLM locales (Ollama, Qdrant, RAG)