8.2 KiB
🎯 Résumé : Correction de la Détection de Workflows
Date : 18 novembre 2025
Objectif : Corriger les bugs empêchant la détection et la sauvegarde des workflows dans GeniusIA v2
🐛 Problèmes Identifiés
1. Bug VisionAnalysis - AttributeError
Symptôme : Erreur 'VisionAnalysis' object has no attribute 'llm_manager' à chaque action
Cause : Incohérence entre le nom de l'attribut (self.llm) et son utilisation (self.llm_manager)
Impact : Aucune analyse visuelle des actions n'était possible
2. SessionManager Non Intégré
Symptôme : Aucune session créée malgré la capture d'événements
Cause : EventCapture capturait les événements mais ne les passait pas au SessionManager
Impact : Pas de segmentation des actions en sessions
3. WorkflowDetector Non Intégré
Symptôme : Aucun workflow détecté même après répétitions
Cause : WorkflowDetector n'était pas connecté à l'Orchestrator
Impact : Pas d'analyse de patterns répétitifs
4. Absence de Persistence
Symptôme : Workflows perdus au redémarrage
Cause : Aucun mécanisme de sauvegarde sur disque
Impact : Impossible de réutiliser les workflows appris
5. Détection de Fenêtre Défaillante
Symptôme : Toutes les actions attribuées à "RPA Vision V2"
Cause : xdotool non installé, fallback xprop insuffisant
Impact : Workflows mélangés entre différentes applications
✅ Solutions Implémentées
1. Correction VisionAnalysis
Fichier : geniusia2/core/vision_analysis.py
Changements :
- Corrigé
self.llm_manager→self.llm(lignes 75, 86) - Ajouté gestion d'erreur robuste avec try/except imbriqués
- Garantie qu'une signature valide est toujours retournée
Résultat : ✅ Analyse visuelle fonctionnelle sans erreurs
2. Intégration SessionManager
Fichiers :
geniusia2/core/orchestrator.pygeniusia2/core/event_capture.pygeniusia2/core/session_manager.py
Changements :
- SessionManager créé dans Orchestrator et partagé avec EventCapture
- EventCapture appelle
session_manager.add_action()pour chaque événement - Callback
_on_session_completed()ajouté dans Orchestrator - Suppression du double logging (SessionManager ne log plus)
Résultat : ✅ Sessions créées automatiquement avec timeout de 5 minutes
3. Intégration WorkflowDetector
Fichiers :
geniusia2/core/orchestrator.pygeniusia2/core/workflow_detector.py
Changements :
- WorkflowDetector créé dans Orchestrator
- Ajout de la méthode
analyze_session()pour analyse incrémentale - Callback
_on_workflow_detected()connecté au SuggestionManager - Groupement des sessions par fenêtre avant comparaison
- Filtre des workflows trop courts (< 3 actions)
Résultat : ✅ Workflows détectés après 3+ répétitions similaires
4. Persistence des Workflows
Fichier : geniusia2/core/workflow_detector.py
Changements :
- Ajout de
_save_workflow(): sauvegarde en JSON - Ajout de
_load_workflows(): chargement au démarrage - Ajout de
update_workflow_confidence(): mise à jour après exécution - Répertoire :
data/user_profiles/workflows/
Format JSON :
{
"workflow_id": "workflow_20251118_184244",
"name": "Mouse_click → Mouse_click",
"repetitions": 10,
"confidence": 1.0,
"created_at": "2025-11-18T18:42:44",
"last_seen": "2025-11-18T18:43:21",
"steps": [
{
"step_id": 0,
"action_type": "mouse_click",
"target_description": "",
"position": [44, 1055],
"window": "Calculatrice"
}
]
}
Résultat : ✅ Workflows persistés et rechargés automatiquement
5. Amélioration Détection de Fenêtre
Fichier : geniusia2/core/utils/image_utils.py
Changements :
- Installation de
xdotoolpour détection fiable sur Linux - Fallback vers
xpropsixdotoolindisponible - Gestion des erreurs et timeouts
Résultat : ✅ Noms de fenêtres correctement détectés
🛠️ Outils Créés
1. Script de Monitoring
Fichier : monitor_workflows.sh
Fonctionnalité : Affiche en temps réel les sessions et workflows détectés
Usage :
./monitor_workflows.sh
2. Script de Vérification
Fichier : check_workflows.sh
Fonctionnalité : Liste tous les workflows sauvegardés avec détails
Usage :
./check_workflows.sh
3. Test de Détection de Fenêtre
Fichier : test_window_detection.py
Fonctionnalité : Teste get_active_window() en temps réel
Usage :
python3 test_window_detection.py
4. Test d'Intégration
Fichier : test_workflow_fix.py
Fonctionnalité : Vérifie que tous les composants sont correctement intégrés
Usage :
python3 test_workflow_fix.py
📊 Métriques de Performance
Avant les Corrections
- ❌ 0 workflows détectés
- ❌ 0 sessions créées
- ❌ 100% d'erreurs
llm_manager - ❌ Aucune persistence
Après les Corrections
- ✅ Workflows détectés après 3+ répétitions
- ✅ Sessions créées automatiquement
- ✅ 0 erreur d'attribut
- ✅ Persistence fonctionnelle
- ✅ Détection de fenêtre fiable avec
xdotool
🧪 Tests Effectués
Test 1 : VisionAnalysis
- ✅ Pas d'AttributeError
- ✅ Signatures créées avec embeddings
- ✅ Gestion d'erreur robuste
Test 2 : SessionManager
- ✅ Sessions créées automatiquement
- ✅ Timeout de 5 minutes respecté
- ✅ Groupement par fenêtre
Test 3 : WorkflowDetector
- ✅ Détection après 3 répétitions
- ✅ Filtrage des workflows courts
- ✅ Groupement par fenêtre
Test 4 : Persistence
- ✅ Sauvegarde en JSON
- ✅ Chargement au démarrage
- ✅ Mise à jour de confiance
📝 Configuration
Paramètres de Workflow
{
"workflow": {
"min_repetitions": 3, # Nombre de répétitions minimum
"similarity_threshold": 0.75, # Seuil de similarité (75%)
"min_workflow_length": 3, # Longueur minimale (3 actions)
"session_timeout": 300 # Timeout de session (5 minutes)
}
}
Dépendances Système
# Linux
sudo apt install xdotool
# Vérification
xdotool getactivewindow getwindowname
🚀 Utilisation
Mode Shadow (Apprentissage)
cd geniusia2
./run.sh --mode shadow
Monitoring en Temps Réel
# Terminal 1 : GeniusIA
cd geniusia2
./run.sh --mode shadow
# Terminal 2 : Monitoring
./monitor_workflows.sh
Vérification des Workflows
./check_workflows.sh
🔮 Améliorations Futures
1. Détection 100% Vision
Objectif : Ne plus dépendre des noms de fenêtres
Approche :
- Comparer les embeddings des screenshots au lieu des noms
- Grouper les sessions par similarité visuelle
- Identifier automatiquement le contexte visuel
2. Suggestions Proactives
Objectif : Suggérer des workflows avant que l'utilisateur ne les répète
Approche :
- Analyser le contexte visuel actuel
- Comparer avec les workflows connus
- Suggérer le workflow le plus probable
3. Apprentissage Incrémental
Objectif : Améliorer les workflows au fil du temps
Approche :
- Mettre à jour la confiance après chaque exécution
- Fusionner les workflows similaires
- Supprimer les workflows obsolètes
📚 Documentation Créée
-
Spec Complète :
.kiro/specs/workflow-detection-fix/requirements.md: Exigences détailléesdesign.md: Architecture et propriétés de correctiontasks.md: Plan d'implémentation
-
Scripts de Test :
test_workflow_fix.pytest_window_detection.pymonitor_workflows.shcheck_workflows.sh
-
Ce Document : Résumé complet de la correction
✨ Conclusion
Statut : ✅ Tous les bugs critiques corrigés
Fonctionnalités Opérationnelles :
- ✅ Capture d'événements
- ✅ Segmentation en sessions
- ✅ Détection de workflows
- ✅ Persistence sur disque
- ✅ Détection de fenêtres
Prochaine Étape : Tester en conditions réelles avec différentes applications (Calculatrice, Firefox, OnlyOffice, etc.)
Auteur : Kiro AI Assistant
Date : 18 novembre 2025
Version : GeniusIA v2.0