LibreQoS Insight - Modo de Entrenamiento
• Herbert WolversonUna de las cosas que hemos escuchado de nuestra comunidad es que Insight se ve genial, pero preguntan: “¿Cómo uso esto?” y, más importante aún, “¿Cómo me ayuda esto?”. Nosotros usamos Insight a diario; se ha convertido en nuestra herramienta principal para encontrar problemas de red y entender qué está ocurriendo. Sin embargo, todos somos desarrolladores y tenemos décadas de experiencia como proveedores de internet. Así que nos propusimos a desmitificar la experiencia.
Presentando el Sitio de Entrenamiento
Nos complace anunciar el lanzamiento del Sistema de Entrenamiento de LibreQoS Insight. Este sitio puede guiarte a través de la mayoría de funciones que Insight ofrece (en múltiples idiomas).

El sitio de entrenamiento cubre las 3 páginas principales que las personas visitan regularmente:
- La página de la caja Shaper / Regulador (una por cada shaper; soportamos tantos como quieras usar).
- La página del Sitio.
- La página del Circuito.
Puedes hacer clic en los elementos de la interfaz para obtener una explicación de Libby, o puedes hacer clic en “Next” y tomar el recorrido completo.
¿Cómo Funciona?
Dado que este es un blog de desarrollo y no un anuncio, probablemente esperas algunos detalles técnicos sobre cómo se construyó esto.
Comenzamos agregando una función a las páginas relevantes para tomar una captura instantánea de los datos utilizados para renderizar los elementos del panel. Internamente, Insight ejecuta un sistema eficiente de publicación/suscripción (los datos se publican y los componentes interesados se suscriben para recibirlos). Las entradas del panel (“dashlets” — los pequeños widgets en la página) se suscriben a flujos de datos y reciben actualizaciones de forma regular (en un formato binario compacto a través de WebSockets, una conexión persistente entre tu navegador y el servidor). Dado que cada “dashlet” tiene los datos necesarios para renderizarse, ¡también tiene los datos necesarios para ser representado en un sistema de entrenamiento!
Así que capturamos datos de las 3 páginas. Por supuesto, ahora estaban llenas de información de clientes que no queremos compartir. El siguiente paso fue crear un anonymizer (una herramienta que elimina o reemplaza datos privados de clientes). Podríamos simplemente reemplazar texto, pero queríamos consistencia. El nombre “Josephine Bloggs” debería ser el mismo en todos los lados donde aparezca. Así que comenzamos por:
- Descargar un diccionario de nombres de lugares de las obras de J.R.R. Tolkien.
- Descargar un diccionario de nombres de personas de sus libros.
Luego creamos un script en Python que asigna cada nombre a una entrada de los libros (los nombres de sitios usan lugares, los circuitos usan nombres de personas). Construye un diccionario estable (una asignación consistente) y lo usa para convertir las tres páginas al mismo tiempo, asegurando anonimato, nombres legibles y consistencia para no referirnos a la misma entidad con diferentes nombres.
Luego vino la parte “fácil”. El panel ya está construido con clases de JavaScript y entiende “mensajes”. Así que simulamos el panel para cada página (una versión local “falsa”) y reemplazamos la ruta de ingestión de datos (donde normalmente llegan los datos en vivo) por una que lee los datos capturados y sanitizados.
Finalmente, construimos un gran diccionario de explicaciones (para el sitio, navegación y cada elemento del panel) y lo traducimos a diferentes idiomas.
¡Esto responde la pregunta “¿QUÉ estoy viendo?”! También incluimos contexto en cada sección para explicar porque te puede ser útil.
Presentando a Libby
La segunda parte para hacer Insight más útil es reducir la carga cognitiva del usuario (cuánto tiene que procesar tu cerebro al mismo tiempo). Te mostramos muchos datos desde el inicio. Intentamos hacerte la vida más fácil con colores (¡rojo es malo!) e incluso implementamos un modo amigable para personas con daltonismo. Pero aun así necesitas desplazarte, hacer clic en pestañas y construir un modelo mental de lo que sucede.
Por curiosidad, tomé una captura de pantalla, la envié a una IA y recibí sugerencias bastante útiles sobre qué revisar. Eso es genial, pero tampoco queremos obligarte a instalar herramientas como Claude CoWork u otras para entender nuestro sistema.
Ya tenemos algo de integración con IA:
- Puedes “preguntarle a Libby” y hablar sobre tu red.
- El flujo de tickets de soporte recopila información de manera iterativa sobre problemas reportados por clientes y te asesora.
Así que tenía sentido agregar resúmenes a las páginas de Insight. También nos dimos cuenta de algo importante: podemos detectar el idioma de tu navegador y ofrecer explicaciones en tu idioma preferido.
¡También somos cuidadosos de usar fuentes que no recopilan datos!
Ahora, cuando abres una página de shaper, sitio o circuito, verás una pequeña ventana emergente (diseñada para ser fácilmente descartada o ignorada):

¿Cómo Funciona Esto?
Un enfoque ingenuo sería subir una captura de pantalla del panel y ver qué pasa. Esto funciona con modelos de visión grandes, pero no es ideal. Tendríamos que renderizar todo, codificarlo en base64 (convertirlo a texto), subirlo y consumir muchos tokens (lo cual significa más tiempo y más costo).
En su lugar, extendimos el tipo Dashlet (la clase base de los widgets del panel) para incluir una función explain(), con una implementación por defecto que devuelve null. Luego, para cada dashlet (o por lo menos para la mayoría), iteramos sobre los datos de renderizado y generamos resultados estructurados (hechos legibles por máquina, no texto libre) que describe cualquier problema potencial, junto con un nivel de severidad (qué tan grave es). Problemas como falta de memoria, uso excesivo de CPU o capacidad saturada se resumen aquí. Finalmente, pedimos a un LLM (modelo de lenguaje grande) que tome este resumen estructurado y genere una breve guía para el usuario.
¡Esperamos que disfrutes estas funciones! Es una época emocionante (y un poco aterradora), con el avance acelerado de los modelos de lenguaje. Funciones que antes parecían ciencia ficción ahora son comunes. No creemos en delegar todo a la IA, pero si puede ayudarte a reducir la carga cognitiva, es un buen caso para usarla.