claude-status-line
L’usage de votre abonnement Claude Code, mesuré sur une seule ligne, sous la zone de saisie.
- Stack
- TypeScript · Bun
- Année
- 2026
Anatomie
8 pièces · une seule les compteChoisir la source
Prend les limites de Claude Code, sinon de l’API, sinon du cache.
resolveRateLimits()214
async function resolveRateLimits(215
fromStdin?: RateLimits,216
): Promise<RateLimits | undefined> {Demander à l’API
Interroge l’API Anthropic avec votre jeton, en 2,5 s au plus.
readOAuthToken()157
const CREDENTIALS_PATH = join(homedir(), ".claude", ".credentials.json");158
const FETCH_TIMEOUT_MS = 2500; // borne la latence ajoutée au démarrage160
function readOAuthToken(): string | undefined {Garder une copie
Range les dernières limites dans un fichier JSON de secours.
readCache()120
const CACHE_PATH = join(homedir(), ".claude", ".statusline-cache.json");122
type RateLimits = NonNullable<StatusInput["rate_limits"]>;125
function readCache(): RateLimits | undefined {Assembler la ligne
Modèle · dossier · 5h · sem, sur une seule ligne de terminal.
render()231
async function render(): Promise<void> {232
const data = (await Bun.stdin.json().catch(() => ({}))) as StatusInput;234
const segments: string[] = [];Dessiner les barres
Dix cases par fenêtre : 68 % donne sept cases pleines.
windowSegment()103
function windowSegment(label: string, win?: Window): string {104
const pct = win?.used_percentage;105
if (pct == null) return `${C.dim}${label} —${C.reset}`;Colorer selon l’usage
Vert sous 50 %, jaune jusqu’à 80 %, rouge au-delà.
colorFor()53
function colorFor(pct: number): string {54
if (pct > 80) return C.red;55
if (pct >= 50) return C.yellow;Compter jusqu’au reset
Le temps avant la remise à zéro : 3j, 2h14 ou 14m.
fmtReset()74
function fmtReset(epochSec?: number): string {75
if (epochSec == null) return "";76
const delta = epochSec - Date.now() / 1000;Recommencer chaque minute
Claude Code relance le binaire toutes les 60 secondes.
settings.statusLine280
settings.statusLine = {281
type: "command",282
command,
Glissez la règle ou la figure pour faire avancer le temps ; les triangles marquent les événementsGlissez la règle ou la figure du doigt ; les triangles marquent les événements
Nomenclature
- 01 Tête d’aiguillage Boisseau rotatif à levier et trois crans, stdin, API et cache : il choisit d’où viennent les limites à chaque rendu. Code : statusline.ts, lignes 211–227 ↗
- 02 Sonde API Plongeur à ressort et bague de temporisation de 2,5 s : il demande un jeton et revient avec les en-têtes anthropic-ratelimit-unified-*. Code : statusline.ts, lignes 157–209 ↗
- 03 Capsule de cache Capsule tournée, vissée sous la tête : frappée à chaque écriture, elle montre son contenu par une fenêtre témoin et n’est relue qu’en dernier recours. Code : statusline.ts, lignes 115–145 ↗
- 04 Rampe Profilé qui porte les segments dans l’ordre, modèle, dossier, puis les deux fenêtres, séparés par trois goujons « · » : il sort une seule ligne. Code : statusline.ts, lignes 231–254 ↗
- 05 Peignes à dix lames Un module par fenêtre, 5h puis sem : un peigne de dix lames, une par case de la barre. Sans pourcentage, les dix lames restent baissées. Code : statusline.ts, lignes 103–109 ↗
- 06 Cadran à deux aiguilles Échelle de 0 à 100 % en trois zones, sous 50, de 50 à 80 et au-delà : il borne, arrondit et juge chaque pourcentage, aiguille longue pour 5h, courte pour la semaine. Code : statusline.ts, lignes 52–69 ↗
- 07 Tambours de reset Compteurs dans la face de chaque module : le délai avant reset en jours, en heures-minutes ou en minutes, « — » sans pourcentage. Code : statusline.ts, lignes 73–85 ↗
- 08 Volant du temps et croix de Malte Un tour de volant fait soixante crans de croix de Malte : un rendu de la status line par cran, toutes les 60 secondes de refreshInterval. Code : statusline.ts, lignes 280–285 ↗