Claude Code Monitor Tool : Streaming Temps Réel des Processus Background
Tutoriel2026-05-1113 min de lecture

Claude Code Monitor Tool : Streaming Temps Réel des Processus Background

L'outil Monitor de Claude Code remplace le polling par du push temps réel. Architecture, exemples concrets, patterns avancés pour logs, tests et serveurs dev.

Sommaire

  • [Qu'est-ce que l'outil Monitor ?](#introduction)
  • [Polling vs streaming : pourquoi Monitor change la donne](#polling-vs-stream)
  • [Architecture interne de Monitor](#architecture)
  • [Activer et utiliser Monitor](#activer)
  • [Exemple 1 : surveiller un serveur de développement](#exemple-dev)
  • [Exemple 2 : tailer un test runner en TDD](#exemple-tdd)
  • [Exemple 3 : observer les logs d'une migration](#exemple-migration)
  • [Patterns avancés avec Monitor](#patterns)
  • [Bonnes pratiques et pièges courants](#bonnes-pratiques)
  • [FAQ](#faq)
  • ---

    Qu'est-ce que l'outil Monitor ? {#introduction}

    Monitor est un outil natif de Claude Code introduit le 9 avril 2026 dans la version v2.1.98. Son rôle : surveiller un processus background lancé par Claude (typiquement avec bash --background) et streamer ses événements directement dans la conversation au fur et à mesure qu'ils arrivent.

    Concrètement, là où Claude devait auparavant interroger répétitivement un fichier de logs (tail -n 50 server.log) pour vérifier l'état d'un processus, Monitor maintient une connexion ouverte sur la sortie standard et pousse chaque ligne pertinente vers Claude en temps réel.

    Pourquoi c'est important ?

    Avant Monitor, les [workflows long-running](/blog/workflows-autonomes-long-running-claude-code) reposaient sur du polling : Claude devait deviner *quand* aller voir le fichier de logs. Trop tôt et il manque l'événement, trop tard et il perd du temps. Monitor élimine cette latence en passant à un modèle interruptif piloté par les événements eux-mêmes.

    ---

    Polling vs streaming : pourquoi Monitor change la donne {#polling-vs-stream}

    Le modèle polling (avant Monitor)

    \\\`bash # Lancer le serveur en background npm run dev & SERVER_PID=$!

    # Claude doit ensuite tailer manuellement tail -n 20 dev.log # ... attendre ... tail -n 20 dev.log # ... attendre encore ... tail -n 20 dev.log \\\`

    Problèmes :

  • 1.Latence variable : Claude ne sait pas quand le serveur est prêt à recevoir des requêtes
  • 2.Consommation de jetons : chaque tail ajoute du bruit dans le contexte
  • 3.Événements manqués : si une erreur passe entre deux tail, Claude la rate
  • 4.Pas de réactivité : impossible de réagir à un événement *à l'instant où il arrive*
  • Le modèle streaming (avec Monitor)

    \\\text [Claude lance npm run dev en background] [Claude appelle Monitor avec un pattern à surveiller] [Le serveur écrit "Ready on http://localhost:3000"] ↓ (push immédiat) [Claude reçoit l'événement et lance les tests E2E] \\\

    Monitor maintient un descripteur de fichier ouvert sur stdout/stderr, applique un filtre (regex ou pattern simple), et injecte chaque match dans la conversation Claude comme un nouveau message système. Claude réagit immédiatement.

    ---

    Architecture interne de Monitor {#architecture}

    Composants

    ComposantRôle
    Background processLe processus lancé via bash --background ou équivalent
    Stream readerLecteur incrémental sur stdout/stderr du processus
    Pattern matcherRegex ou matcher simple appliqué ligne par ligne
    Event channelCanal qui pousse les matches dans la conversation
    Trigger conditionCondition d'arrêt automatique (timeout, nombre de matches)

    Cycle de vie

  • 1.Vous lancez un processus background : npm run dev &
  • 2.Claude appelle Monitor avec le PID ou l'identifiant du processus
  • 3.Monitor ouvre un canal sur le stream du processus
  • 4.À chaque ligne matchant le pattern, un événement est poussé dans la conversation
  • 5.Claude réagit ou continue son travail
  • 6.Monitor s'arrête sur condition (timeout, match count) ou explicitement
  • Différence avec un hook

    Les [hooks Claude Code](/blog/claude-code-hooks-automatiser-workflow) se déclenchent sur des événements internes de Claude (avant un tool call, après une réponse). Monitor se déclenche sur des événements externes : la sortie d'un processus que vous avez lancé. Les deux mécanismes sont complémentaires.

    ---

    Activer et utiliser Monitor {#activer}

    Monitor est disponible nativement dans Claude Code v2.1.98+. Aucune installation supplémentaire requise.

    Vérification de version

    \\\`bash claude --version # Doit afficher 2.1.98 ou supérieur

    # Mise à jour si besoin npm install -g @anthropic-ai/claude-code@latest \\\`

    Activation dans un prompt

    Vous n'appelez généralement pas Monitor directement : c'est Claude qui choisit de l'utiliser quand vous décrivez le besoin. Exemples de prompts qui déclenchent Monitor :

    \\\`text "Lance le serveur dev et préviens-moi quand il est prêt à recevoir des requêtes."

    "Démarre les tests en watch mode et corrige les erreurs au fur et à mesure qu'elles apparaissent."

    "Surveille les logs Postgres pendant que je tourne la migration, alerte-moi si tu vois une erreur." \\\`

    Claude lance le processus en background puis appelle Monitor avec le pattern adapté.

    ---

    Exemple 1 : surveiller un serveur de développement {#exemple-dev}

    Cas typique : vous voulez que Claude lance votre serveur Next.js et passe automatiquement aux tests E2E quand il est prêt.

    Sans Monitor (ancienne approche)

    \\\`bash # Claude lance le serveur npm run dev > dev.log 2>&1 &

    # Claude attend en pollant sleep 5 grep "Ready" dev.log || sleep 5 grep "Ready" dev.log || sleep 5 # Souvent imprécis : sleep trop court rate l'événement, trop long perd du temps \\\`

    Avec Monitor

    \\\`text [Prompt utilisateur] "Lance le serveur dev et dès qu'il écoute, exécute les tests Playwright"

    [Claude]

  • 1.bash --background "npm run dev"
  • 2.Monitor pattern="Ready on http" timeout=60s
  • 3.[Événement reçu : "Ready on http://localhost:3000"]
  • 4.bash "npx playwright test"
  • \\\`

    Gain de temps : 5 à 15 secondes par cycle, multiplié par chaque relance pendant la session.

    ---

    Exemple 2 : tailer un test runner en TDD {#exemple-tdd}

    Pattern puissant pour le [développement piloté par les tests](/blog/claude-code-tests-automatises-tdd) : Claude lance Vitest en watch mode et corrige les erreurs au fur et à mesure.

    \\\`text [Prompt utilisateur] "Lance vitest --watch et corrige automatiquement chaque test qui échoue, en m'expliquant la correction"

    [Claude]

  • 1.bash --background "npx vitest --watch"
  • 2.Monitor pattern="FAIL|✗"
  • 3.[Événement : "FAIL src/utils/format.test.ts"]
  • 4.Lecture du test, analyse, correction du code source
  • 5.[Événement : "PASS src/utils/format.test.ts"] → notifié et continue
  • 6.[Événement : "FAIL src/api/user.test.ts"] → nouvelle correction
  • \\\`

    Boucle TDD entièrement pilotée par Monitor. Claude ne re-lance jamais les tests manuellement : Vitest le fait, Monitor pousse les résultats.

    ---

    Exemple 3 : observer les logs d'une migration {#exemple-migration}

    Cas critique : vous lancez une migration Prisma sur une grosse table et vous voulez que Claude détecte tout de suite si elle se bloque.

    \\\`text [Prompt utilisateur] "Lance la migration en surveillant les logs Postgres, arrête-toi immédiatement si tu vois un lock ou une erreur"

    [Claude]

  • 1.bash --background "tail -f /var/log/postgresql/postgresql.log"
  • 2.Monitor patterns=["LOCK", "ERROR", "deadlock"]
  • 3.bash "npx prisma migrate deploy"
  • 4.[Si match Lock détecté] → Claude annonce le problème et stoppe
  • 5.[Si migration complète sans match] → Claude valide et continue
  • \\\`

    Sans Monitor, Claude aurait dû tailer le log par intervalles, manquant potentiellement le moment critique d'un lock long.

    ---

    Patterns avancés avec Monitor {#patterns}

    Pattern 1 : Trigger multi-conditions

    Monitor accepte plusieurs patterns avec une condition logique :

    \\\`text Monitor: patterns:

  • "ERROR"
  • "PANIC"
  • "out of memory"
  • match_mode: "any" # any | all on_match: "interrupt" # interrupt | log | continue \\\`

    Pattern 2 : Fenêtre glissante

    Surveiller un événement qui doit se répéter N fois dans une fenêtre temporelle :

    \\\text Monitor: pattern: "timeout" window: "30s" threshold: 5 on_match: "interrupt" # 5 timeouts en 30s = problème \\\

    Utile pour détecter une dégradation progressive plutôt qu'une erreur ponctuelle.

    Pattern 3 : Combinaison avec sub-agents

    Claude peut déléguer la réaction à un [sub-agent spécialisé](/blog/claude-code-sub-agents-guide-pratique-2026) :

    \\\text [Monitor détecte "ERROR" dans les logs] → Claude délègue au sub-agent "error-analyzer" → Sub-agent diagnostique, propose un fix, retourne au parent → Claude applique le fix sans polluer son contexte principal \\\

    Pattern 4 : Signalisation fichier

    Faire communiquer plusieurs processus via un fichier de signal lu par Monitor :

    \\\`bash # Processus A écrit dans un fichier de signal echo "DEPLOY_READY" > .signals/state

    # Monitor surveille ce fichier Monitor file=".signals/state" pattern="DEPLOY_READY" \\\`

    Pattern utile pour orchestrer plusieurs sessions Claude Code asynchrones.

    ---

    Bonnes pratiques et pièges courants {#bonnes-pratiques}

    Patterns précis = signal/bruit optimal

    Évitez les patterns trop génériques comme ERROR qui peuvent matcher des logs de routine. Préférez :

    \\\text Mauvais : "ERROR" Bon : "ERROR\\s+\\[critical\\]" Bon : "panic:|fatal:" \\\

    Toujours définir un timeout

    Un Monitor sans timeout peut tourner indéfiniment si le processus ne produit jamais le pattern attendu. Toujours :

    \\\text Monitor pattern="..." timeout="120s" \\\

    Nettoyer les processus background

    Quand vous terminez une session, vérifiez qu'aucun processus background n'est resté actif :

    \\\`bash # Lister les processus background lancés par Claude ps aux | grep -E "node|next|vitest"

    # Tuer si besoin kill \\\`

    Ne pas streamer des binaires

    Monitor s'attend à du texte ligne par ligne. Si vous monitorez un processus qui produit du binaire (ffmpeg en mode debug verbeux), filtrez d'abord avec grep --line-buffered.

    Volumes de logs élevés

    Si votre processus produit plus de 100 lignes/seconde, Monitor peut accumuler du retard. Préfiltrez en amont :

    \\\bash # Au lieu de monitorer tout le log applicatif tail -f app.log | grep --line-buffered "ERROR\|WARN" # Puis Monitor sur la sortie filtrée \\\

    ---

    FAQ {#faq}

    Monitor est-il payant ?

    Non, Monitor est inclus dans Claude Code natif depuis la v2.1.98. Aucun supplément.

    Y a-t-il une limite au nombre de Monitor simultanés ?

    En pratique, vous pouvez surveiller 5 à 10 processus en parallèle sans souci. Au-delà, vous risquez de saturer le contexte Claude avec trop d'événements concurrents.

    Monitor fonctionne-t-il sous Windows ?

    Oui depuis la mise à jour Windows / PowerShell d'avril 2026. La syntaxe des patterns reste identique mais la commande de lancement background diffère (Start-Process au lieu de &).

    Puis-je utiliser Monitor avec Docker ?

    Oui, en monitorant docker logs -f ou en attachant un volume de logs partagé. Le pattern matching s'applique sur la sortie standard du container.

    Différence avec un hook PostToolUse ?

    Un [hook PostToolUse](/blog/claude-code-hooks-automatiser-workflow) se déclenche sur les actions de Claude lui-même (après un Read, après un Edit). Monitor surveille des processus externes lancés par Claude. Les deux peuvent être combinés.

    Monitor consomme-t-il des jetons à chaque ligne ?

    Seules les lignes qui matchent le pattern sont injectées dans la conversation. Si vous monitorez 10 000 lignes mais seulement 3 matchent, vous payez le coût de 3 messages, pas 10 000.

    Peut-on stopper Monitor manuellement ?

    Oui, en demandant à Claude "arrête le monitoring" ou en interrompant la session. Monitor libère ses ressources proprement.

    Monitor remplace-t-il les tests automatisés ?

    Non. Monitor est un outil de réactivité, pas de vérification. Combinez-le avec [TDD et tests automatisés](/blog/claude-code-tests-automatises-tdd) pour un workflow complet.

    ---

    *Sources : Anthropic Claude Code Documentation v2.1.98, Claude Code Changelog Week 15 April 2026, communauté Claude Code.*

    Envie de maîtriser Claude Code ?

    Rejoignez notre formation complète et apprenez à utiliser Claude Code comme un pro.

    Découvrir la formation