\n\n\n\n Mon Agent States a besoin d'observabilité, pas seulement de métriques - AgntLog \n

Mon Agent States a besoin d’observabilité, pas seulement de métriques

📖 11 min read2,104 wordsUpdated Mar 26, 2026

Bonjour à tous, Chris Wade ici, de retour sur agntlog.com. Nous sommes en mars 2026, et honnêtement, si vous pensez encore à surveiller vos agents comme nous le faisions il y a cinq ans, vous laissez de l’argent, de la tranquillité d’esprit, et peut-être même votre emploi, sur la table. Le monde a évolué, et votre stratégie doit également évoluer. Aujourd’hui, je veux parler de quelque chose de spécifique, quelque chose qui m’ennuie (et me sauve la mise) depuis un certain temps : Observabilité des États des Agents, Pas Juste des Métriques.

Je sais, “observabilité” est un mot à la mode jeté comme un frisbee lors d’un pique-nique technologique. Mais écoutez-moi. Pour nous, dans le domaine de la surveillance des agents, ce n’est pas qu’un terme à la mode ; c’est un changement fondamental dans notre compréhension de nos systèmes. Nous ne nous contentons plus de surveiller l’utilisation du CPU ou la consommation de mémoire. Nous essayons de comprendre l’*état interne* de nos agents, leur parcours à travers un flux de travail, et les signaux subtils qui nous indiquent que quelque chose est sur le point de mal se passer – ou que cela s’est déjà produit.

Mon parcours dans ce domaine a commencé il y a environ un an et demi. Nous avions un nouveau client, une énorme opération de centre d’appel avec des milliers d’agents utilisant notre intégration CRM personnalisée. L’ancienne approche de surveillance échouait de manière spectaculaire. Nous avions des tableaux de bord rouges pour “CPU élevé” ou “manque d’espace disque” sur les postes de travail des agents, mais le véritable problème, celui qui causait des plaintes des clients et des SLAs non respectés, était plus profond. Les agents se retrouvaient bloqués dans un état de “wrap-up après appel” indéfiniment, ou leur CTI (Intégration de Téléphonie Informatique) ne confirmait pas correctement les appels sortants. Les métriques traditionnelles nous disaient que les machines allaient bien, mais les *agents* (et par extension, l’entreprise) ne l’étaient clairement pas.

C’est à ce moment-là que j’ai réalisé que nous devions arrêter de surveiller simplement l’infrastructure et commencer à observer le comportement des agents et les transitions d’état. Il ne suffit pas de savoir si l’application d’un agent fonctionne ; nous devons savoir *ce que* cette application pense que l’agent est en train de faire, et si cela correspond à la réalité.

Le Problème de la Surveillance Uniquement des Métriques

Pensez à votre voiture. Si le témoin du moteur s’allume, c’est une métrique. Cela vous indique qu’il y a *quelque chose* qui ne va pas. Mais cela ne vous dit pas *quoi*. Est-ce un bouchon de gaz lâche ? Un capteur d’oxygène défaillant ? Une panne catastrophique du moteur ? Vous avez besoin de plus de contexte, d’une visibilité interne accrue, pour vraiment comprendre le problème.

La surveillance traditionnelle est comme ce témoin du moteur. Elle vous dit *si* une ressource est contrainte ou *si* un service est en panne. Mais pour des agents complexes et avec état, surtout ceux qui interagissent avec plusieurs systèmes (CRM, téléphonie, base de connaissances, scripts personnalisés), une simple métrique ne donne souvent pas la vue d’ensemble. Un agent peut être “connecté” (selon votre suivi de présence de base) mais effectivement gelé, incapable d’effectuer des actions, en raison d’un subtil blocage dans la machine d’état de son application.

Nous avons vu cela de manière évidente avec notre client de centre d’appel. Notre surveillance de base montrait que les agents étaient connectés au CRM. Leur connectivité réseau était correcte. Le CPU était normal. Pourtant, les appels n’étaient pas traités. En allant plus loin, nous avons découvert qu’une séquence spécifique d’actions (transférer un appel, puis essayer immédiatement d’accéder à l’historique des paiements d’un client) provoquait un blocage de l’état interne du CRM pour cet agent dans une boucle de “en attente de réponse du service externe”, même après que le service externe ait répondu. L’application ne plantait pas ; elle était simplement gelée dans un état non réactif du point de vue de l’agent. Aucune métrique n’aurait pu le détecter.

Observabilité des États des Agents : Ce Que Cela Signifie

Pour moi, l’observabilité dans ce contexte signifie instrumenter vos applications d’agents et vos flux de travail pour émettre des données détaillées et structurées sur leurs changements d’état interne, événements et contexte. Il s’agit de poser les questions suivantes :

  • Que fait l’agent *actuellement* selon l’application ? (par exemple, “En Appel”, “Wrap-up”, “Disponible”, “Formation”, “En Pause”)
  • Quel était l’*état précédent* ?
  • Quels *événements* ont déclenché le changement d’état ? (par exemple, “Appel entrant”, “Appel répondu”, “Bouton de pause manuel cliqué”)
  • Quel *contexte* est associé à cet état ? (par exemple, ID d’appel, ID client, raison de la pause, durée dans l’état actuel)

Ce n’est pas seulement enregistrer des erreurs ; c’est enregistrer le *parcours* d’un agent au cours de sa journée de travail, étape par étape, avec un riche contexte.

Exemple 1 : Suivi des États des Flux de Travail des Agents

Disons que vous avez une application de bureau d’agent personnalisée. Au lieu de surveiller si le processus fonctionne, vous voulez connaître son état interne. Vous pouvez émettre des journaux ou des traces structurés chaque fois qu’un état clé change.


// Dans votre application de bureau d'agent (pseudo-code)

enum AgentState {
 Connecté,
 Disponible,
 EnAppel,
 WrapUp,
 EnPause,
 HorsLigne
}

currentAgentState = AgentState.HorsLigne;

function transitionState(newState, eventDetails = {}) {
 const timestamp = new Date().toISOString();
 const agentId = getAgentId(); // Récupérer depuis le contexte de l'application
 const sessionId = getCurrentSessionId(); // Récupérer depuis le contexte de l'application

 // Journaliser la transition d'état avec un riche contexte
 console.log(JSON.stringify({
 timestamp: timestamp,
 agentId: agentId,
 sessionId: sessionId,
 oldState: currentAgentState.toString(),
 newState: newState.toString(),
 eventType: eventDetails.type || "CHANGE_ETAT",
 eventData: eventDetails.data || {}
 }));

 currentAgentState = newState;
}

// Exemple d'utilisation :
// Quand un agent répond à un appel :
transitionState(AgentState.EnAppel, { type: "APPEL_REPONDU", data: { callId: "12345", customerId: "98765" } });

// Quand un agent passe en wrap-up :
transitionState(AgentState.WrapUp, { type: "APPEL_TERMINE", data: { callId: "12345", dispositionTime: 30 } });

// Quand un agent met manuellement en pause :
transitionState(AgentState.EnPause, { type: "PAUSE_MANUELLE", data: { raison: "Pause", durée: 15 } });

Ce n’est pas de la science-fusée, n’est-ce pas ? Mais la puissance vient lorsque vous collectez ces événements de manière centrale. Vous pouvez ensuite construire des tableaux de bord qui montrent les états réels des agents, identifier les agents bloqués dans des états inattendus, et même analyser les modèles de transition d’état pour repérer les goulets d’étranglement dans le flux de travail.

Intégrer l’Observabilité dans Vos Outils pour Agents

Il ne s’agit pas seulement d’ajouter quelques instructions d’impression. Cela nécessite une approche réfléchie de l’instrumentation. Voici comment nous l’avons abordé :

1. Définir les États et Transitions Clés des Agents

Avant d’écrire du code, asseyez-vous avec vos chefs de produit, responsables d’équipe, et même quelques agents. Cartographiez les états critiques qu’un agent peut avoir et les manières légitimes dont ils peuvent passer de l’un à l’autre. Cela devient votre « vérité de base » sur ce à quoi ressemble un flux de travail sain pour un agent. Documentez cela explicitement.

2. Instrumenter Tout ce Qui Est Pertinent

Dans vos applications d’agents (bureau, web, services backend soutenant les agents), émettez des journaux structurés ou des traces à chaque changement d’état significatif ou événement. Concentrez-vous sur :

  • Changements d’État : Quand le statut d’un agent change (par exemple, “Disponible” à “En Appel”).
  • Actions Clés : Quand un agent effectue une action critique (par exemple, “Appel Transféré”, “Dossier Client Mis à Jour”, “Formulaire Soumis”).
  • Interactions avec des Systèmes Externes : Quand l’application d’agent interagit avec un CRM, un système de téléphonie, ou une base de données. Enregistrez la requête, la réponse, et toute erreur.

3. Utiliser des Journaux Structurés

JSON est votre ami ici. Ne vous contentez pas de balancer du texte brut. Les journaux structurés rendent l’analyse, le filtrage et la parsing de vos données infiniment plus faciles par la suite. Incluez des attributs communs dans chaque entrée de journal (horodatage, ID d’agent, ID de session, version de l’application) et des attributs spécifiques pour chaque type d’événement.

4. Centraliser et Analyser

Expédiez tous ces journaux vers un système de journalisation central (Elasticsearch, Splunk, Loki, DataDog, etc.). C’est là que la magie opère. Maintenant, vous pouvez :

  • Construire des Tableaux de Bord en Temps Réel : Visualisez l’état actuel de tous les agents, identifiez les anomalies (par exemple, agents bloqués en “Wrap-up” trop longtemps).
  • Interroger et Filtrer : Trouvez rapidement tous les événements pour un agent, un client ou un ID d’appel spécifique.
  • Alerter sur les Anomalies : Configurez des alertes pour des transitions d’état inattendues ou des durées (par exemple, “Alerte si un agent est en état ‘EnPause’ pendant plus de 30 minutes sans raison valide”).
  • Tracer les Flux de Travail : Suivez le parcours d’un agent à travers un processus complexe en liant les entrées de journal connexes.

Exemple 2 : Détecter les Agents Bloqués avec l’Analyse de Journaux

En utilisant un système de journalisation comme Elasticsearch avec Kibana, vous pourriez configurer une requête pour trouver des agents bloqués dans un état indésirable. Imaginez que vous cherchez des agents qui sont entrés dans l’état “WrapUp” mais qui n’en sont pas sortis depuis plus de 5 minutes.


// Requête Elasticsearch (Kibana Discover ou Dev Tools)

{
 "query": {
 "bool": {
 "must": [
 { "match": { "newState.keyword": "WrapUp" } },
 { "range": { "timestamp": { "lte": "now-5m" } } }
 ],
 "must_not": [
 { "exists": { "field": "nextState" } } // En supposant que vous ayez enregistré un événement "nextState" ou "transitionedOut"
 ]
 }
 },
 "aggs": {
 "agents_bloques": {
 "terms": {
 "field": "agentId.keyword",
 "size": 100
 }
 }
 }
}

Cette requête vous donnerait une liste d’ID d’agents qui sont entrés dans l’état “WrapUp” il y a plus de 5 minutes et n’ont pas eu d’événement de changement d’état subséquent enregistré. C’est un moyen très puissant d’identifier et de résoudre proactivement les problèmes avant qu’ils ne s’aggravent.

Mes Retours et Étapes Actionnables

Si vous gérez des agents, qu’ils soient humains ou des bots automatisés, vous devez absolument aller au-delà d’une simple surveillance de disponibilité. Voici ce que je recommande :

  1. Cessez de Surveiller Juste des Ressources, Commencez à Observer des États : Changez votre focus de « Est-ce que le CPU est élevé ? » vers « Que fait l’application agent *en ce moment*, et est-ce correct ? »
  2. Cartographiez Vos Flux de Travail d’Agent : Documentez chaque état significatif dans lequel un agent peut se trouver et les transitions valides. C’est votre plan pour l’observabilité.
  3. Instrumentez Vos Applications d’Agent : Intégrez des journaux structurés ou du traçage directement dans vos outils d’agent. Chaque changement d’état critique ou action devrait émettre un événement détaillé. Utilisez JSON.
  4. Centralisez Vos Données : Récupérez ces événements dans un système où vous pouvez les interroger, les visualiser et vous alerter sur eux.
  5. Créez des Alertes Proactives : Ne attendez pas que les agents se plaignent. Mettez en place des alertes pour des durées d’état inattendues ou des transitions invalides. Par exemple, si un agent reste en « WrapUp » pendant plus de 180 secondes en moyenne, alertez. Si un agent essaie d’accepter un appel en étant en état « Paused », alertez.
  6. Éduquez Vos Équipes : Montrez à vos équipes de support, d’opérations et de produits comment utiliser ces nouveaux tableaux de bord et requêtes. Plus il y a d’yeux sur les données, plus vous repérerez rapidement les problèmes.

Ce n’est pas un projet à faire une seule fois. C’est un processus continu d’affinement de votre instrumentation, d’amélioration de vos tableaux de bord et de questionnement plus approfondi sur l’expérience de vos agents. Mais je vous promets que l’investissement en vaut la peine. Nous sommes passés d’une lutte réactive à une identification et à une résolution proactive des problèmes affectant les agents en quelques minutes, parfois même avant que l’agent lui-même ne remarque un problème. Cela a amélioré l’adhésion SLA de notre client, réduit la frustration des agents et, franchement, rendu mon travail beaucoup moins stressant. Et cela, en mars 2026, est une victoire à mes yeux.

Des pensées sur l’observabilité des agents ? Faites-le moi savoir dans les commentaires ci-dessous !

Articles Connexes

🕒 Published:

✍️
Written by Jake Chen

AI technology writer and researcher.

Learn more →
Browse Topics: Alerting | Analytics | Debugging | Logging | Observability

Recommended Resources

Bot-1BotclawClawseoBotsec
Scroll to Top