/\_/\
( -.- ) <-- [ EL TALLER DE LA GATITA TECH // TELEMETRÍA DE HARDWARE & AUDIO ]
> ^ <
===========================================================================
⚡ BITÁCORA DE TRINCHERA // CYBERCOMPANION DÍA 2: WASAPI & MEMORIA #CC-2026-09 ⚡
===========================================================================
Dia 2 Telemetría Hardware y Memoria
Una inteligencia artificial que interrumpe tu música favorita para soltarte un sermón innecesario o que se queda plantada en mitad de tu monitor tapando los subtítulos de una película no es una compañera: es un virus con interfaz gráfica.
Cuando entramos en la segunda fase del desarrollo de CyberCompanion en *El taller de la gatita tech*, sabíamos que el mayor reto tecnológico no era conseguir que el Modelo de Lenguaje devolviera respuestas coherentes. Eso lo hace cualquier script básico de diez líneas. El verdadero desafío de ingeniería de software residía en dotar al sistema de **sentidos periféricos** dentro del entorno del sistema operativo.
Un ser humano que convive contigo en un espacio de trabajo sabe de forma natural cuándo estás concentrada escribiendo código, cuándo tienes los auriculares puestos disfrutando de una sesión de synthwave, cuándo estás viendo una serie en pantalla completa o cuándo te has ausentado a por una taza de café. ¿Por qué una asistente de escritorio debería ser completamente ciega y sorda a su propio entorno de hardware?
Hoy os abro las entrañas de la máquina para contaros cómo libramos la batalla contra las APIs de bajo nivel de Windows, cómo eliminamos los molestos falsos positivos en la detección de audio y cómo construimos una memoria persistente local que no envía un solo byte a la nube.
🎧 El Enigma Acústico: La Trampa de las Sesiones Fantasma en Windows
En el desarrollo sobre Windows, averiguar si el usuario está reproduciendo audio parece una tarea elemental hasta que te enfrentas a la arquitectura real de la pila de sonido.
La mayoría de librerías genéricas en Python consultan las interfaces de `AudioSessionManager` para comprobar si existen sesiones abiertas. Y aquí explota el primer gran error: aplicaciones como Discord, OBS Studio, Spotify o los navegadores basados en Chromium mantienen sesiones de audio abiertas permanentemente las 24 horas del día, incluso cuando están en el silencio más absoluto. El resultado en nuestras primeras pruebas fue cómico: Rebeca creía que estábamos en un concierto de rock continuo y jamás volvía al estado de reposo.
Tuvimos que bajar a la interfaz nativa COM de **WASAPI (Windows Audio Session API)** para resolver el enigma mediante medición de energía real:
| Estrategia de Detección | Mecanismo Utilizado | Fiabilidad en Producción | Consumo de CPU |
|---|---|---|---|
| Escaneo de Procesos (psutil) | Comprobar si spotify.exe o vlc.exe están corriendo | Pésima (Falsos positivos si están pausados) | 1.5% – 3.0% (Polling constante) |
| Sesiones Lógicas WASAPI | Enumerar IAudioSessionControl::GetState() | Deficiente (Discord y OBS reportan estado activo) | 0.2% |
| Pico Real WASAPI (Peak Meter) | IAudioMeterInformation::GetPeakValue() > 0.005 | 100% Precisa (Solo detecta sonido audible) | 0.001% (Sondeo ultraligero a 1 Hz) |
Al medir el valor de pico físico en el endpoint de audio activo, filtramos el 100% del ruido invisible. Si el usuario reproduce música, Rebeca entra en estado `MUSIC` de forma completamente autónoma, mostrando notas flotantes en verde terminal. Si la música se pausa, el valor cae inmediatamente a `0.0000` y la asistente retorna a su respiración tranquila en `IDLE`.
🎬 Modo Cine: El Arte del Sigilo Táctico al 35% de Opacidad
Uno de los comportamientos más molestos de las aplicaciones de escritorio tradicionales es que no entienden la jerarquía visual de la pantalla. Si estás viendo un largometraje en VLC, un documental en Netflix o un gameplay a pantalla completa, tener un avatar brillante en primer plano arruina la experiencia de inmersión y puede tapar subtítulos cruciales.
Conectamos la telemetría acústica con el detector de geometría de ventanas de la API Win32:
- Detección de Pantalla Completa: El sistema interroga a la ventana en primer plano (`GetForegroundWindow`) y calcula si su rectángulo coincide exactamente con la resolución del monitor activo (`GetSystemMetrics`).
- Conjunción Condicional: Si la ventana está a pantalla completa Y el sensor WASAPI detecta audio activo continuo, se activa automáticamente el **Modo Movie**.
- Atenuación Suave al 35%: Rebeca reduce su opacidad al 35%, volviéndose translúcida como un holograma en reposo. Los subtítulos permanecen legibles a través de ella. En cuanto sales de la pantalla completa o pausas el vídeo, la opacidad regresa al 100% instantáneamente.
- Sensor de Inactividad Fisiológica: Si el usuario no toca el teclado ni el ratón durante más de 300 segundos (`GetLastInputInfo`), Rebeca deduce que te has ausentado y entra en modo sueño profundo (`SLEEP`) con un icono de `zZZ` flotante, ralentizando aún más los ciclos de animación para ahorrar energía.
💥 La Batalla contra el Infame 'WinError 32' en Windows
No todos los días son victorias limpias. Durante las pruebas de estrés con conversaciones largas, nos topamos de frente contra uno de los errores más frustrantes del sistema operativo Windows:
[WinError 32] El proceso no puede tener acceso al archivo porque está siendo utilizado por otro proceso.
¿Por qué ocurría? El reproductor de medios de Qt (`QMediaPlayer`) delega la reproducción en los códecs de Windows Media Foundation. Cuando el audio terminaba de sonar, el reproductor multimedia mantenía abierto el descriptor de archivo del archivo MP3 durante unos milisegundos adicionales antes de liberarlo. Si en ese mismo instante el motor de síntesis de voz (`edge-tts`) intentaba generar una nueva frase sobrescribiendo el mismo archivo temporal, Windows bloqueaba la operación de escritura y el pipeline de voz colapsaba.
[ SOLICITUD DE VOZ NEURAL ]
│
▼
[ GENERADOR DE TIMESTAMP ] ──► Archivo único: `speech_cache_1788864012.mp3`
│
▼
[ ESCRITURA SEGURA (edge-tts) ] ── (Cero colisión de descriptores Win32)
│
▼
[ CARGA EN QMEDIAPLAYER ] ──► Reproducción y modulación labial
│
▼
[ COLA CIRCULAR DE PODA ] ──► Mantiene sólo los 4 últimos buffers en disco
Elimina buffers antiguos de forma asíncrona
La solución fue implementar un sistema de **caché circular rotativa indexada por marcas de tiempo en nanosegundos**. Cada locución se sintetiza en un archivo independiente y una rutina de recolección automática purga los buffers antiguos que ya han sido completamente liberados por el sistema de audio. El resultado: cero bloqueos, cero cuelgues y disponibilidad de voz al 100%.
🎒 La Mochila Cognitiva: Memoria Persistente sin Nubes Espías
El gran mal de las inteligencias artificiales comerciales es su amnesia programada. Cada vez que abres una conversación nueva, debes recordarle quién eres, qué proyectos estás desarrollando y en qué lenguajes programas. La solución habitual de la industria es forzarte a subir tus documentos confidenciales a una base de datos vectorial en la nube, exponiendo tus credenciales y tu propiedad intelectual.
En *El taller de la gatita tech* diseñamos la **Mochila Cognitiva (`BackpackManager`)**:
- Gestión Visual Flotante: Una ventana con estética LainOS donde puedes arrastrar y soltar notas técnicas, esquemas de proyectos en `.docx` o fragmentos de código.
- Indexación Local sin Vector DB Pesada: El sistema analiza el contenido de los documentos directamente en local y sintetiza resúmenes semánticos que se inyectan en el prompt de sistema de Gemini.
- Soberanía Absoluta: Rebeca te conoce, recuerda tus preferencias y entiende el contexto de tu trabajo diario, pero tus archivos originales jamás abandonan la carpeta local de tu disco duro.
Construye agentes que entiendan la física de su entorno
Diseñar asistentes autónomos sin fallos requiere dominar la arquitectura de control de contexto y la gestión de atención. En el Manual de Ingeniería Cognitiva encontrarás todos los patrones de trinchera para gobernar cualquier LLM sin intermediarios.

SYSTEM_COMMENTS_THREAD