Hermes es nuestro asistente de IA privado y local, y solo es tan bueno como lo que recuerda. Esta semana le enseñamos a recordar mejor.
Hermes funciona íntegramente en nuestro propio hardware: un modelo de lenguaje local en una RTX 3060, dentro de un contenedor Proxmox, con un puñado de herramientas conectadas mediante MCP. Ya tenía memoria, un corpus de Generación Aumentada por Recuperación construido a partir de nuestras notas curadas más miles de observaciones destiladas de las sesiones. Pero habían aparecido tres grietas, y esta sesión consistió en sellar las tres.
1. Hermes sale a Internet, de forma segura
Hasta ahora Hermes solo respondía desde una terminal en la red local. Le pusimos una puerta de entrada: hermes.elpanocho.com. Un registro DNS apunta al router de la oficina, que ya redirige el tráfico web a un proxy inverso Nginx central; allí añadimos un host virtual que termina el TLS con un certificado de Let's Encrypt y hace de proxy hacia el chat web de Hermes. La autenticación sigue activa, los registros nuevos siguen desactivados, y las herramientas potentes como el acceso al shell y a Odoo siguen siendo solo para administradores.
Una pequeña sorpresa por el camino: nuestros dos dominios están con el mismo proveedor de DNS pero exponen dos paneles de control completamente distintos. Tuvimos que mapear ambos a mano y anotar los pasos exactos de cada uno, para que la próxima vez sea un copia y pega en lugar de una excavación arqueológica.
2. Un solo repositorio para respaldarlas todas
La memoria de Hermes es texto plano bajo control de versiones, que se sube a un repositorio Git privado al final de cada sesión. La pega: solo uno de nuestros seis proyectos se estaba respaldando de verdad. Los otros cinco, cientos de ficheros, vivían únicamente en disco.
Reestructuramos el respaldo para que un único repositorio rastree ahora las carpetas de memoria de los seis proyectos a la vez, con una regla de exclusión acotada que deja fuera las transcripciones pesadas. Como la rama principal está protegida, lo hicimos como un commit limpio y solo hacia delante encima del historial existente en lugar de un force-push: sin perder historial, sin sobrescribir nada.
3. La memoria mentía en silencio
Aquí viene la parte incómoda. El corpus de búsqueda de Hermes se había construido aplanando las notas de todos los proyectos en una única carpeta. El problema: cada proyecto tiene ficheros con los mismos nombres, seis ficheros literalmente llamados MEMORY.md y decenas de nombres de notas compartidos. Al aplanarlos juntos, 404 ficheros se colapsaron en 207, y el resto se sobrescribieron en silencio. La mitad de lo que Hermes debía saber nunca llegó al índice.
Arreglamos la forma, no solo el contenido. El corpus ahora está namespaced por proyecto, y el indexador lo recorre de forma recursiva, etiquetando cada fragmento con su proyecto de origen. Se acabaron las colisiones, y cada respuesta puede señalar de dónde salió.
4. Un corpus que se refresca solo
Un corpus correcto que se queda obsoleto no es más que una mentira más lenta. Así que escribimos un refresco de un solo comando que prepara los seis proyectos, los envía al contenedor, vuelve a exportar la memoria de las sesiones, reconstruye los embeddings en la GPU y reinicia el servidor de herramientas para que el nuevo índice se cargue de verdad. Luego lo pusimos en un temporizador semanal.
El índice reconstruido pasó de 346 ficheros aplanados a 555 ficheros y 12.697 fragmentos consultables. Lo verificamos: pregúntale a Hermes por el trabajo de acceso remoto de hoy y responde desde las notas correctas y recién indexadas, con el nombre del proyecto adjunto.
Cómo se construyó
La mayor parte de esta sesión se ejecutó como pequeños equipos de agentes trabajando en paralelo: unos redactaron el indexador y el script de refresco, otros verificaron la recuperación y escribieron el documento de operación, mientras que el paso irreversible de borrar y reconstruir un corpus en vivo se mantuvo bajo una única mano cuidadosa. Es el mismo patrón al que volvemos una y otra vez: reparte el trabajo seguro, serializa la parte peligrosa.
Hermes ahora lo recuerda todo, incluida, muy pronto, esta misma entrada.
Esta historia empezó en Dando forma a Hermes: un asistente de IA local y privado.