Notes

ai-usage: les quotes dels proveïdors d'IA, sempre a la vista

Un petit programa en Go que mostra el consum de Codex, MiniMax i z.ai a la terminal i a la barra d'estat de Term. La eina que va néixer de tantes finestres d'ús tancades a mitja tasca.

3 min de lectura

Fa mesos que treballo amb agents d'IA de debò: projectes sencers avançant en sessions llargues, crons que publiquen cada nit, revisors en paral·lel. I amb tot plegat ha aparegut una molèstia nova: les finestres d'ús. Els proveïdors limiten el consum per franges d'hores, i quan la finestra es tanca a mitja tasca, l'agent es queda aturat amb un error 429. M'ha passat tantes vegades —hi ha entrades dels diaris d'aquesta web que han hagut de recuperar-se precisament per això— que vaig acabar necessitant una cosa molt senzilla: veure el consum de cada proveïdor en temps real, sempre visible, sense obrir res.

D'aquesta necessitat ha nascut ai-usage, un petit programari escrit en Go que consulta les quotes dels meus tres proveïdors —Codex, MiniMax i z.ai— i les mostra en una línia compacta dins la terminal o, millor encara, a la barra d'estat de Term, la terminal nova amb plugins que estic provant en fase beta, i de moment hi estic molt a gust.

D'openusage a fuelcheck

La idea no va néixer del buit. Fa temps que faig servir openusage, una aplicació que aplega el consum dels serveis d'IA en un mateix lloc, i em vaig preguntar per què tot això no podia viure directament a la terminal, on passo el dia. Buscant una base vaig trobar fuelcheck, un projecte mínim escrit en Go que feia la meitat del camí: consultar quotes i pintar-les. Vaig agafar-lo com a punt de partida i vaig fer un repositori propi, amb el nom que descriu el que fa: ai-usage.

Què fa

  • Tres proveïdors: Codex, MiniMax i z.ai. Només es consulten els que declares i actives.
  • Un model comú: cada API parla el seu idioma (MiniMax dona el percentatge restant per model; z.ai codifica finestres amb parells unit/number) i el programa ho normalitza tot a consum, finestra i compte enrere del reinici.
  • Semàfor: verd amb el 70% o més de quota lliure, vermell per sota del 35%.
  • Layout adaptable: tot en una línia si l'ample del terminal ho permet; si no, una fila per proveïdor.
  • Mode continu: amb --watch el widget es queda fix en un panell de tmux i s'actualitza cada interval.
  • JSON normalitzat: amb --json qualsevol script pot llegir les quotes sense interpretar tres esquemes diferents.

El plugin de Term

La part que més il·lusiona: Term (de Stencil) és una terminal d'escriptori amb plugins, encara en beta, i hi vaig fer un plugin propi que mostra les quotes a la barra inferior de les finestres. No ocupa un panell de terminal: viu a la barra d'estat, sempre visible. La integració està comprovada amb Term 0.9.12.

Go, després de C

Go és una evolució de C, el llenguatge que vaig aprendre a 42 Barcelona, i la transició ha estat prou natural: tipus estàtics al costat del codi, concurrència senzilla per consultar els proveïdors en paral·lel i un binari únic sense dependències. Entendre el projecte original i adaptar-lo ha estat qüestió de dies, no de setmanes.

Com l'estic construint

El mètode és el que ja estic fent servir a tots els projectes: primer el vocabulari del domini en un glossari, després un mapa d'incògnites amb tickets fills, i la spec surt dels fets de la investigació, no d'opinions. El desenvolupament el porta oh my pi, el harness nou que estic provant, el mateix que fa servir Auto Magazine — i els resultats em convencen. Hi ha un detall que m'ha fet gràcia: durant una sessió, els dos revisors subagents van caure per un límit d'ús del model. L'eina que vigila les quotes, tombada per una quota. No podia haver estat més oportú.

El repositori és privat de moment; quan el vulgui obrir al públic hi ha una decisió pendent de neteja d'historial que ja tinc documentada. Quan el projecte maduri una mica més, tindrà la seva fitxa al portfoli.