Se rendre au contenu
Retour au Wiki

Flux de travail et Conversations

Les flux de travail constituent l'unité centrale d'exécution dans Zileo Chat. Chaque flux représente une session de travail avec un agent, permettant d'échanger des messages, d'exécuter des outils et de suivre l'activité. Les données sont persistées dans SurrealDB avec sauvegarde automatique à chaque étape.

1. Qu'est-ce qu'un flux de travail ?

Un flux de travail est une session de travail complète avec un agent. Il encapsule l'ensemble des échanges, exécutions d'outils et étapes de raisonnement. L'agent peut répondre aux questions, exécuter des outils, interroger des bases de données, ou déléguer des tâches à des sous-agents.

États du flux de travail

idle : En attente du premier message
running : Exécution en cours via l'orchestrateur
completed : Exécution terminée avec succès
error : Exécution échouée

Persistance complète

Le flux de travail persiste 8 types de données : messages, exécutions d'outils, étapes de raisonnement, tâches décomposées, exécutions de sous-agents, requêtes de validation, mémoires et questions utilisateur. La suppression d'un flux entraîne la suppression en cascade de toutes ces données.

Agent associé

Chaque flux est associé à un agent via son identifiant (128 caractères maximum, alphanumérique). L'agent détermine les outils disponibles, le modèle de langage utilisé et la logique d'orchestration. Un même agent peut gérer plusieurs flux simultanément.

Exécution d'outils

L'agent exécute des outils via l'orchestrateur avec un délai d'expiration de 300 secondes par requête. Chaque exécution est enregistrée avec ses paramètres d'entrée, résultats, durée et statut de succès. Les outils MCP sont identifiés par le nom du serveur, non par son identifiant.

2. Interface de conversation

L'interface est divisée en trois zones : la liste des flux à gauche, la zone de conversation au centre, et le fil d'activité à droite. Cette disposition permet de suivre simultanément les échanges et les opérations en cours d'exécution.

Zileo Chat - Page Agent
Analyse les performances du module de cache
Je vais analyser le module de cache. Laissez-moi examiner le code source...
  • Panneau gauche (WorkflowSidebar) : Liste des flux avec indicateur d'état, champ de recherche avec debounce, et bouton de création. Repliant avec bouton de basculement.
  • Zone centrale (ChatContainer) : En-tête avec sélecteur d'agent et itérations max, liste des messages, indicateur de génération, et zone de saisie.
  • Panneau droit (ActivitySidebar) : Fil d'activité avec 5 onglets de filtrage (Tous, Outils, Agents, Raisonnement, Tâches). Défilement virtuel au-delà de 20 éléments.

3. Créer un flux de travail

Pour créer un nouveau flux, cliquez sur le bouton « + Nouveau » dans le panneau gauche. Le formulaire de création permet de définir un nom et de sélectionner l'agent à associer.

Contraintes de validation

Nom : 1 à 256 caractères, sans caractères de contrôle
Identifiant agent : 1 à 128 caractères, alphanumérique avec tirets et underscores

Nouveau flux de travail
A
Assistant General
C
Code Review
R
Recherche
Nommage

Utilisez un nom descriptif pour faciliter la recherche. Le filtre de recherche effectue une correspondance insensible à la casse sur le nom du flux.

L'agent sélectionné détermine les outils disponibles, le fournisseur et modèle de langage utilisé, ainsi que la configuration d'orchestration (cycle de vie, serveurs MCP associés).

4. Envoyer des messages

La zone de saisie permet d'envoyer des messages à l'agent. Chaque message est validé puis persisté dans la base de données avant d'être transmis à l'orchestrateur pour exécution.

Contraintes de message

Longueur : 1 à 100 000 caractères après suppression des espaces en début et fin
Historique : Les 50 derniers messages sont inclus dans le contexte envoyé au modèle

Saisie du message

Le composant ChatInput propose une zone de texte redimensionnable automatiquement (40px minimum, 200px maximum). Un bouton d'envoi et un bouton d'accès à la bibliothèque de requêtes prédéfinies sont disponibles.

Indicateur de génération

Pendant la génération, le composant StreamingMessage affiche : trois points animés (avant le premier contenu), un curseur clignotant (pendant l'écriture), une icône de chargement avec le texte « Génération en cours... », et un bouton d'annulation.

  • Défilement automatique : La liste des messages défile automatiquement vers le bas lors de nouveaux messages (autoScroll).
  • Optimisation : Au-delà de 50 messages, le mode performance active content-visibility: auto pour les messages hors écran.
  • Accessibilité : La liste a le rôle log avec aria-live="polite" pour les lecteurs d'écran.
Ctrl Entrée
Envoyer le message
Ctrl P
Bibliothèque de requêtes

5. Indicateurs en temps réel

Pendant l'exécution, l'interface affiche des métriques collectées par l'orchestrateur : jetons consommés, durée d'exécution, outils utilisés et appels MCP. Ces données sont persistées avec chaque flux de travail.

TokenDisplay (bas de la zone centrale)

Le composant TokenDisplay affiche en temps réel pendant la génération :
- Barre de progression de la fenêtre de contexte (seuils : 75% avertissement, 90% critique, 100% plein)
- Compteurs de jetons entrée/sortie (session courante et cumul)
- Estimation du coût (session et cumul)
- Vitesse de génération en jetons/seconde (uniquement pendant la génération)

ActivityFeed (panneau droit)

Le composant ActivityFeed affiche les événements du flux de travail avec :
- 5 onglets de filtrage avec compteurs (Tous, Outils, Agents, Raisonnement, Tâches)
- Défilement virtuel au-delà de 20 éléments (réduction de 90% du DOM)
- Indicateur de génération actif en bas du fil

ActivityItem (élément d'activité)

Chaque élément affiche : icône colorée selon le statut, titre et description, indicateur de statut (en attente, en cours, terminé, erreur), durée formatée (ms/s/m), détails dépliables pour les tâches, et messages d'erreur le cas échéant. Animation de chargement pour les éléments en cours.

SubAgentActivity (sous-agents)

Le composant SubAgentActivity affiche pour chaque sous-agent :
- Nom et identifiant (8 premiers caractères)
- Description de la tâche (tronquée à 100 caractères)
- Barre de progression (0-100%) pour les agents en cours
- Métriques à la complétion (durée, jetons)

Délais d'expiration

Exécution modèle : 300 secondes
Opérations base de données : 30 secondes
Chargement complet de l'état : 60 secondes (4 requêtes en parallèle)

6. Validation des actions

Le système de validation permet de contrôler les opérations sensibles avant leur exécution. Les requêtes de validation sont persistées dans la table validation_request et associées au flux de travail.

Validation requise
Type : Sub_agent Élevé

Lancement d'un sous-agent pour analyser le code

{
  "sub_agent_name": "CodeAnalyzer",
  "prompt_preview": "Analyser les fichiers...",
  "tools": ["read_file", "grep"]
}

Cette opération a été signalée comme risque élevé. Vérifiez les détails avant d'approuver.

Trois modes de validation sont configurables dans les paramètres :

  • Mode automatique : Les opérations sont exécutées sans confirmation. Adapté aux environnements de confiance.
  • Mode manuel : Chaque opération nécessite une approbation explicite avant exécution.
  • Mode sélectif : La validation est requise uniquement pour certaines catégories : outils, sous-agents, fichiers, base de données, MCP.
Actions de validation

Trois boutons sont disponibles dans la fenêtre modale :
Annuler : ferme la fenêtre sans action
Refuser : rejette l'opération (un champ permet d'indiquer la raison)
Approuver : autorise l'exécution de l'opération

Fonctionnalités en développement

Certaines fonctionnalités de validation ne sont pas encore implémentées : raccourcis clavier, délai d'expiration automatique, validation sélective par type d'opération (outils, fichiers, base de données). Seule la validation des sous-agents est actuellement fonctionnelle en mode sélectif.

7. Historique et persistance

Les flux de travail sont persistés dans SurrealDB avec sauvegarde automatique à chaque opération. La fonction load_workflow_full_state permet de récupérer l'état complet en exécutant 4 requêtes en parallèle avec un délai d'expiration de 60 secondes.

Persistance synchrone

Chaque message, exécution d'outil et étape de raisonnement est enregistré immédiatement dans la base. Les opérations utilisent execute() pour les écritures avec validation de succès.

Récupération de l'état

La structure WorkflowFullState contient : métadonnées du flux, messages (triés par horodatage croissant), exécutions d'outils et étapes de raisonnement (triés par created_at et step_number).

Métriques cumulatives

Les champs total_tokens_input, total_tokens_output et total_cost_usd cumulent les valeurs sur l'ensemble des exécutions du flux. Le champ current_context_tokens indique l'utilisation du dernier appel.