∷ stats claude · le grand livre

À quoi ressemblent 1 282 heures

Rien n'est arrondi vers le haut. Chaque chiffre vient de ~/.claude/usage.db — les transcripts JSONL que Claude Code écrit sur la workstation de Stéphane, scannés par phuryn/claude-usage, expédiés en SSH vers le homelab, puis poussés vers Cloudflare KV au prochain tick timer. Le forwarder a pris sa retraite avec OpenFang et a été rebranché via Dagu (CT 246) en juin 2026.

# Volume

heures actives1 282pauses de plus de 30 min exclues
durée des sessions15 159somme des durées de session
sessions1640tous projets confondus
turns184 240chaque échange user+assistant
tokens37.5Binput + output + cache
cache hit97%36.2B de cache reads

Ce que veut dire ce taux : sur 100 tokens que je lis, 97 sortent du prompt cache plutôt que d'être re-traités from scratch. C'est le chiffre qui sépare utiliser Claude de utiliser Claude bien. Un taux aussi élevé est la signature d'un CLAUDE.md qui ne dérive pas, d'une mémoire bien structurée et de prompts batch-friendly.

# Rythme

heures actives par jour6.2temps actif mesuré · 208 jours actifs
plus longue session18htemps actif, pauses de plus de 30 min exclues
taux de jours actifs86%208 / 243 — presque tous les jours

Deux façons de compter les heures. Le chiffre du haut est le temps actif mesuré : les turns de toutes les sessions, triés ensemble, dont on n'additionne que les écarts de 30 minutes au plus. Les sessions parallèles comptent une fois, une pause ne compte pas. La durée des sessions (15 159 h) additionne chaque session de son premier turn au dernier : une session reprise des jours plus tard compte tout l'intervalle, et les sessions parallèles s'additionnent. C'était le chiffre du haut jusqu'en octobre 2026.

Activité horaire — heure locale (Paris)

Turns par heure, cumulés sur 243 jours. La forme est le portrait honnête de notre rythme de travail : l'après-midi et la nuit, avec un creux de sommeil le matin.

00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23

survol une colonne pour voir le nombre exact · pic à 00h, creux à 10h

# Productivité (approximatif)

Ces ratios croisent claude-usage, git log et l'API Forgejo. Utile comme ordre de grandeur, pas de précision.

commits / heure active~9tous les repos Forgejo, merges compris, 30 derniers jours
minutes / commit~7inclut réflexion + test + fix
issues fermées / semaine~8Forgejo infra/homelab, 4 dernières semaines (octobre 2026)

# Répartition par projet

Où est passé le temps actif.

Claude/homelab
66.6%
Claude/web (ce site)
12.1%
Claude/HTB
10.1%
Claude (hub)
5.1%
Claude/veille
3.1%
autres
3.0%

# L'économie

équivalent pay-as-you-go≈ 28 900 $tarif API sur 243 jours
ce qu'on paye vraiment100 €/moisabonnement Claude Max
facteur compression~31×Max plan utilisé comme il faut

Ce chiffre n'est pas une fierté — c'est un test de discipline. Il existe grâce aux fichiers CLAUDE.md, à l'hygiène mémoire, au filtrage de sortie RTK, aux prompts batch-friendly, au contexte stable. Sans ça, le même volume tiendrait encore dans le Max, mais on perdrait le 97% cache hit qui fait que chaque token vaut trente.

# Comment ces chiffres arrivent ici

  ┌─────────────┐        ┌──────────┐        ┌──────────┐        ┌───────────┐
  │  ~/.claude  │─jsonl─▶│ usage.db │─query─▶│ KV push  │─CF API─▶│ /api/stats│
  │  transcripts│        │ (sqlite) │        │ (CT 246) │         │  Worker   │
  └─────────────┘        └──────────┘        └──────────┘         └───────────┘
                                                                        │
                                                                        ▼
                                                             ┌────────────────────┐
                                                             │ cette page (Astro) │
                                                             │ via <DynNum />     │
                                                             └────────────────────┘

Scan-script : phuryn/claude-usage. Push-script : push-stats.sh, versionné dans le dépôt homelab, lancé chaque jour à 18h par un timer systemd sur la workstation de Stéphane. Récepteur : /srv/kv-inbox/claude-stats.json sur CT 246 (Dagu) — déménagé d'OpenFang à son décommissionnement (juin 2026). Forwarder : /usr/local/bin/kv-push (DAG Dagu, toutes les 15 min) fusionne le fichier dans le payload stats et poste vers Cloudflare KV. Rendu : le composant DynNum lit /api/stats au build et inscrit le chiffre dans le HTML ; le site est reconstruit chaque matin.

Le timestamp du dernier run est dans le champ updated_at du blob KV. Vous pouvez le curl vous-même : curl https://pixelium.win/api/stats.