Un HUD de cuotas de IA en el panel de KDE
Actualmente ocupo Claude Code, Codex, Gemini (vía agy en CLI) y DeepSeek desde Arch Linux con KDE Plasma 6. Y como a muchos el problema está siendo saber cuál tiene cuota disponible, sobre todo en una tarea que ya tiene harto contexto, archivos revisados y hora de iteración.
Así terminé armando un visor o HUD en el panel/barra de KDE: cuatro indicadores que muestran cuánto margen le queda a cada agente y cuándo debería reiniciarse. Sin otra pestaña, sin otro tablero y, sobre todo, sin sorprenderme que se acabó en medio del remate de una tarea o un git rebase 😱.
Primera cucharada: la semana-token
Cada proveedor inventó su propia forma de medir cuánto podemos usarlo.
Claude habla en ventanas de horas y días. Codex presenta las ventanas disponibles para el plan. Gemini requiere una estimación local de solicitudes. DeepSeek, en cambio, habla en saldo monetario.
Cuatro agentes, cuatro relojes y ninguna unidad común.
La industria consiguió así algo bastante particular: convertir las horas-token y las semanas-token en unidades reales de planificación. Ya no basta con preguntarse cuánto demora una tarea. También hay que calcular si el agente alcanza a terminarla antes de quedar a la antigua :).
En el panel lo reduje a cuatro anillos o donas. Uno casi lleno significa que el agente todavía tiene margen. Uno casi vacío significa que conviene agradecerle los servicios prestados y probar con el siguiente.

Al pasar el cursor aparece el detalle de las ventanas y sus horas de reinicio:

Al abrir el plasmoide aparece el detalle completo de los cuatro agentes:
Segunda cucharada: el dato manda, no el orden
La primera versión funcionó bien durante semanas. Codex entregaba dos ventanas: una corta, de cinco horas, y otra semanal.
Mi código las interpretaba por posición:
- La primera ventana o anillo exterior era la de cinco horas.
- La segunda era la semanal.
Era sencillo, hasta que Codex cambió el esquema.
Un día el widget mostró un 5 % disponible en la supuesta ventana de «5 h», pero con un reinicio programado para seis días después. Incluso para una empresa tecnológica, cinco horas que duran casi una semana parecían demasiada innovación.
La respuesta cruda contenía una sola ventana:
604800 segundos
Eso equivale a siete días.
Codex había dejado de informar la ventana corta, pero mi código seguía llamando «5 h» a cualquier cosa que apareciera primero. Al mismo tiempo, la antigua ventana semanal permanecía congelada en la caché, porque la lógica de «conservar el último valor bueno» no sabía distinguir entre una consulta fallida y una ventana que había dejado de existir. 👻
La corrección tuvo dos partes.
Primero, cada ventana dejó de identificarse por su posición y pasó a identificarse por su duración real. Una duración breve corresponde a una sesión; una duración extendida, a una ventana semanal o equivalente.
Segundo, el monitor ahora distingue entre:
- una consulta que falló, caso en que conserva temporalmente el dato anterior y lo marca como caché;
- una consulta válida que ya no contiene una ventana, caso en que elimina esa ventana del estado vigente.
La interfaz también dejó de suponer que todos los agentes tienen la misma estructura. Si llegan dos ventanas, dibuja una dona doble. Si llega una, dibuja un solo anillo. El dato define la interfaz, no al revés.
La moraleja es pequeña, pero bastante general: si el proveedor entrega la duración, esa es la identidad del dato; la posición en un arreglo es apenas una coincidencia temporal.
Tercera cucharada: local, útil y poco universal
Este proyecto no pretende ser una aplicación multiplataforma.
Lo construí para un entorno muy parecido al mío:
- Arch Linux;
- KDE Plasma 6;
systemd --user;- Python;
- Bash;
- QML;
- las sesiones y credenciales locales de las herramientas que ya utilizo.
Probablemente pueda adaptarse a otras distribuciones con Plasma 6. No prometo que funcione sin cambios en GNOME, Plasma 5, Windows o macOS. Tampoco abstraje cada posible método de autenticación. Es una herramienta para mi escritorio que decidí ordenar y publicar, no un intento de resolver todas las combinaciones posibles de sistemas operativos, proveedores y planes.
Por dentro, el recorrido es corto:
systemd --user timer
│
cada cinco minutos
▼
helpers/*.sh ──► monitor en Python ──► status.json
│
┌──────────────┴──────────────┐
▼ ▼
plasmoide QML servidor MCP
panel · tooltip · popup consulta antes de delegar
Los helpers son el único componente que toca credenciales. Entregan JSON saneado, sin tokens de autenticación ni contenido de conversaciones.
El monitor en Python consulta, valida y fusiona la información. Si aparece un timeout, una credencial expirada o un error 429, conserva el último valor conocido y lo marca como caché.
El temporizador de systemd ejecuta la actualización cada cinco minutos. El plasmoide no consulta directamente a los proveedores; solo lee un archivo local con permisos 0600. Así evito provocar un rate limit por consultar demasiado el rate limit, que sería una forma especialmente elegante de cerrar el círculo. 🫠
El mismo status.json puede ser leído por un servidor MCP. De este modo, un agente puede preguntar qué proveedor tiene cuota antes de delegar una tarea. La barra del escritorio y el orquestador reciben exactamente el mismo estado.
Cierre
El repositorio está publicado con licencia MIT. Está pensado para KDE Plasma 6, no requiere sudo y se instala en las rutas locales del usuario:
git clone https://github.com/tatanlabra/ai-quota-kde.git
cd ai-quota-kde
scripts/install-user.sh
ai-quota-monitor doctor
No crea más cuota, no negocia mejores planes y no elimina la semana-token. Solo evita descubrir, a mitad de una tarea, que el agente elegido se fue a descansar sediento de cuota adicional 🤑.
Es una cucharada pequeña de soberanía sobre mi propio flujo: saber cuánto queda, cuándo reinicia y a quién conviene pasarle el trabajo.

Deja un comentario