Claude Code Telemetry
1. Quoi ? — Definition et contexte
Section intitulée « 1. Quoi ? — Definition et contexte »Chaque fois qu’une session Claude Code demarre sur ce projet, un hook shell capture le contexte (branche, issue, repo) et le transmet a N8N. Quand la session se termine, un second hook collecte les metriques Prometheus (temps actif, cout, tokens, lignes de code), reconstruit les segments de branches parcourus, et synchronise le tout vers les taches Odoo correspondantes.
Le resultat : chaque tache Odoo affiche le temps Claude passe dessus, le cout API, le nombre de tokens, et les lignes modifiees — automatiquement, sans saisie manuelle.
Les workflows du systeme
Section intitulée « Les workflows du systeme »| Workflow | Nodes | Declenchement | Role |
|---|---|---|---|
| Session Start | 4 | Webhook POST | Enregistre la session active |
| Session End (principal) | 30 | Webhook POST | Metriques + sync Odoo |
| Orphan Detection | ~20 | Schedule 12h | Recupere les sessions crashees |
| Session Categorizer | 17 | Dimanche 23h | Categorise les sessions non classees |
| Session Metrics Updater | 7 | Webhook POST | Mise a jour enrichie (backfill) |
Architecture de bout en bout
Section intitulée « Architecture de bout en bout »2. Pourquoi ? — Enjeux et motivations
Section intitulée « 2. Pourquoi ? — Enjeux et motivations »Sans telemetrie, impossible de savoir combien de temps et d’argent Claude Code consomme par tache. On sait qu’on a utilise l’outil, mais pas sur quoi ni combien. Pour un freelance qui facture du temps, c’est un angle mort.
Problemes resolus
Section intitulée « Problemes resolus »| Probleme | Sans telemetrie | Avec telemetrie |
|---|---|---|
| Cout par tache | Relever manuellement la console API | Cout USD par issue, par modele |
| Temps passe | Estimer de memoire | Temps actif Prometheus + timesheets Odoo |
| Attribution | ”J’ai travaille sur le projet” | Segments par branche, par issue |
| Sessions perdues | Crash = donnees perdues | Orphan Detection recupere les metriques |
| Categorisation | Branches dev sans contexte | IA categorise en dev/docs/refactor/fix/test |
Metriques collectees
Section intitulée « Metriques collectees »| Metrique | Source | Precision |
|---|---|---|
| Temps actif (secondes) | Prometheus OTEL | Par session, par modele |
| Cout API (USD) | Prometheus OTEL | 4 decimales, par modele |
| Tokens (input/output/cache) | Prometheus OTEL | Par type, par modele |
| Lignes ajoutees/supprimees | git log | Par commit |
3. Comment ? — Mise en oeuvre technique
Section intitulée « 3. Comment ? — Mise en oeuvre technique »Le hook SessionEnd
Section intitulée « Le hook SessionEnd »C’est le hook le plus complexe. Au moment ou Claude Code se termine, il :
- Lit le fichier d’etat cree au demarrage (issue_id gelee, timestamp)
- Reconstruit les segments de branches via
git reflog --since - Collecte les commits via
git log --since --all - Enrichit chaque commit avec la branche et l’issue correspondante
- Construit un TLDR (fichiers changes, insertions, deletions, type dominant)
- Envoie le payload enrichi a N8N
Le point cle : l’issue_id est gelee au demarrage de la session. Meme si l’utilisateur change de branche en cours de route, le systeme sait a quelle tache attribuer le travail.
Repartition proportionnelle
Section intitulée « Repartition proportionnelle »Quand une session traverse plusieurs branches (par exemple feature/176-fix pendant 40 minutes puis dev pendant 20 minutes), les metriques sont reparties proportionnellement :
Session totale : 60 minutes Branch feature/176 : 40 min → 66% des metriques Branch dev : 20 min → 33% des metriques
Si cout total = 0.15 USD : Issue #176 → 0.10 USD Branche dev → 0.05 USD (tache generique)Taches generiques
Section intitulée « Taches generiques »Les sessions sans issue (travail sur dev, main, ou branches sans numero) sont redirigees vers des taches generiques : une par combinaison (repo + categorie). La categorie est determinee par le type dominant des commits :
| Commits dominant | Categorie | Tache generique |
|---|---|---|
| feat, chore | dev | ”Dev sans issue (features & chores)“ |
| docs | docs | ”Maintenance documentation” |
| refactor | refactor | ”Refactoring” |
| fix | fix | ”Corrections (sans issue)“ |
| test | test | ”Testing” |
Champs Odoo synchronises
Section intitulée « Champs Odoo synchronises »Chaque tache Odoo recoit 11 champs enrichis automatiquement :
| Champ | Type | Description |
|---|---|---|
x_claude_time_total | Float | Heures actives cumulees |
x_claude_cost_total | Float | Cout USD cumule |
x_claude_token_total | Integer | Tokens cumules |
x_claude_sessions | Integer | Nombre de sessions |
x_claude_lines_added | Integer | Lignes ajoutees |
x_claude_lines_removed | Integer | Lignes supprimees |
x_claude_cost_by_model | JSON | Ventilation par modele |
x_claude_tokens_input | Integer | Tokens d’entree |
x_claude_tokens_output | Integer | Tokens de sortie |
x_claude_tokens_cache | Integer | Tokens cache |
x_claude_last_session | Datetime | Derniere session |
Les champs sont cumulatifs : chaque session ajoute ses metriques a celles deja presentes sur la tache.
Orphan Detection
Section intitulée « Orphan Detection »Toutes les 12 heures, un workflow verifie si des sessions sont restees bloquees dans la table des sessions actives (signe d’un crash Claude Code). Les sessions datant de plus de 6 heures sont considerees orphelines.
Le workflow recupere les metriques Prometheus (si encore disponibles — retention 15 jours), les sauvegarde avec le statut orphaned, et met a jour la tache Odoo correspondante. Rien n’est perdu.
Categorisation hebdomadaire
Section intitulée « Categorisation hebdomadaire »Chaque dimanche a 23h, le Session Categorizer utilise Claude pour analyser les sessions non categoriees. L’IA recoit un batch de sessions avec leur “topic” (premier message utilisateur) et peut :
- Attribuer une categorie (dev, docs, refactor, fix, test)
- Renommer la tache Odoo de maniere descriptive
- Relinkquer une session vers une tache issue si elle a ete mal attribuee
4. Et si ? — Perspectives et limites
Section intitulée « 4. Et si ? — Perspectives et limites »Limites actuelles
Section intitulée « Limites actuelles »| Limite | Impact | Mitigation |
|---|---|---|
| Prometheus 15j retention | Metriques perdues apres 15j | Sauvegardees dans Data Table des la fin de session |
| Pas de metriques par branche | Prometheus n’a que le session_id | Split proportionnel par duree de segment |
| Hook shell uniquement | Depend de bash et git | Scripts testes et deployes via scripts/claude-hooks/ |
Scenarios d’evolution
Section intitulée « Scenarios d’evolution »Si besoin de dashboard temps reel :
- Les metriques Prometheus sont deja disponibles dans Grafana
- Ajouter un dashboard “Claude Code Sessions” avec cout, tokens, et sessions actives
- Alerter si le cout depasse un seuil quotidien
Si multi-utilisateurs :
- Ajouter un champ
user_iddans le payload - Repartir les couts par developpeur
- Dashboard comparatif dans Odoo
Si besoin d’analyse fine :
- Stocker les transcripts complets (actuellement seul le “topic” est garde)
- Analyser les patterns d’utilisation : quels prompts coutent le plus cher
- Optimiser les caches et le choix de modele
Pages liees
Section intitulée « Pages liees »Infrastructure
Section intitulée « Infrastructure »- Monitoring Stack — Prometheus et Grafana
- AI Stack — CLI Ollama
Workflows
Section intitulée « Workflows »- GitHub-Odoo Sync — Taches Odoo synchronisees depuis GitHub
- Global Error Handler — Error Workflow du pipeline telemetrie
Reference
Section intitulée « Reference »- Glossaire — OTEL, Prometheus, Hook