@perf-profilerLe diagnosticien — latence, mémoire, CPU
Maifady est un plugin Claude Code 100% gratuit avec 30 agents IA — @perf-profiler est ton SRE virtuel : tu décris le symptôme ("p99 à 800ms", "RAM qui grimpe de 200MB à 4GB en 1h"), il te dit quel outil utiliser, classe les hypothèses par probabilité, et propose UNE optimisation à la fois avec re-mesure.
Le problème qu'il résout
Ton API Python consomme 4 GB de RAM en prod. Au démarrage : 200 MB. Au bout d'une heure : 4 GB. C'est un memory leak — mais lequel ? Tu pourrais te perdre dans cProfile, mais tu ne sais pas par où commencer.
@perf-profiler te dit : "memray (pas de code change) en premier, hypothèse #1 = cache sans éviction, hypothèse #2 = session DB leak, etc." Puis pour chacune, il propose un fix concret avec une re-mesure.
Comment il bosse
- Tu décris le symptôme avec précision : quelle métrique, quel percentile, quelle évolution dans le temps.
- Il propose la mesure à lancer en premier (outil + commande exacte).
- Il classe les hypothèses de cause racine par probabilité.
- Pour la #1, il propose un fix et te dit comment confirmer.
- Si #1 ne marche pas, on passe à #2.
Exemple concret
Tu tapes
›@perf-profiler API Flask en prod, RAM grimpe de 200MB à 4GB en 1h, sans pic de trafic. Outils + hypothèses prioritaires ?
Tu obtiens
## Symptom Memory growth steady (200MB → 4GB en 1h) sans corrélation au trafic. → Leak (rétention progressive), pas un peak de charge. ## Suggested first measurement 1. memray (sampling, no code change) : $ pip install memray $ memray attach --pid <pid> --output /tmp/leak.bin 2. py-spy snapshot : $ py-spy dump --pid <pid> ## Hypothesis ranking 1. Cache sans éviction (lru_cache, dict global) — 60% 2. Connexions DB pas closées (session leak) — 25% 3. Logging handlers qui accumulent — 10% 4. C extension qui leak — 5% ## Si hypothèse 1 confirme Fix: cachetools.TTLCache OU lru_cache(maxsize=N). Re-measure: RAM doit plateau au lieu de croître.
Pourquoi tu vas l'aimer
Mesure d'abord
Pas d'optimisation à l'aveugle. Il insiste pour que tu mesures avant et après.
Hypothèses ordonnées
Pas "ça peut être X, Y, ou Z". Mais "60% chance X, 25% Y, 10% Z" — tu attaques d'abord le plus probable.
Outils par stack
Node, Python, Go, Java, PHP — chaque écosystème a ses outils. L'agent les connaît.
Itératif
Une optim à la fois, re-mesure, on continue. Pas un gros patch optimiste qui change 50 choses.
Quand l'utiliser
✅ Idéal pour
- Memory leak en prod
- Endpoint qui dépasse son SLO de latence
- Job batch qui ne tient plus sa fenêtre
- Régression perf après un déploiement
⚠️ Pas adapté quand
- Tu sais déjà que c'est SQL → @sql-optimizer
- Tu veux optimiser un bundle JS → @bundle-analyzer
- Tu veux du load testing dynamique — ce n'est pas son but
Combine avec ces agents
Questions fréquentes
Quels langages supporte-t-il ?
Node.js (clinic.js, 0x), Python (memray, py-spy, cProfile), Go (pprof), Java (async-profiler, JFR), PHP (Blackfire, XHProf), DB (pg_stat_statements, slow query log).
Optimise-t-il ?
Il diagnostique en priorité, propose UNE optimisation à la fois, et insiste pour que tu mesures avant et après. Pas d'optimisation prématurée — "il faut mesurer pour optimiser, sinon tu devines".