4.4 KiB
4.4 KiB
⚠️ Problème Identifié - Mode Assisté
🔍 Problème
Le script test_mode_assiste_manuel.py utilisait une méthode qui n'existe pas dans LearningManager :
tasks = learning_manager.list_tasks() # ❌ N'existe pas
Erreur Attendue
AttributeError: 'LearningManager' object has no attribute 'list_tasks'
✅ Solution
Utiliser la méthode correcte get_all_tasks() :
task_metrics = learning_manager.get_all_tasks() # ✅ Existe
📊 Différence entre les Méthodes
list_tasks() (N'existe pas)
- ❌ Méthode inexistante
- Aurait retourné des objets
TaskProfile
get_all_tasks() (Existe)
- ✅ Méthode existante dans
LearningManager - Retourne une liste de dictionnaires avec métriques complètes
Exemple de retour :
[
{
'task_id': 'task_fc1d3e52',
'task_name': 'Défilement rapide',
'observation_count': 3,
'confidence_score': 0.0,
'concordance_rate': 0.0,
'mode': 'shadow',
'window_whitelist': ['Firefox']
},
# ... autres tâches
]
🔧 Correction Appliquée
Avant
# Vérifier les tâches existantes
print("📊 Vérification des tâches apprises...")
tasks = learning_manager.list_tasks() # ❌
if not tasks:
print("❌ Aucune tâche apprise trouvée !\n")
return
print(f"✅ {len(tasks)} tâche(s) trouvée(s) :\n")
for i, task in enumerate(tasks, 1):
print(f" {i}. {task.task_name}") # ❌ task est un objet
print(f" ID: {task.task_id}")
print(f" Actions: {len(task.signatures)}")
Après
# Vérifier les tâches existantes
print("📊 Vérification des tâches apprises...")
# Utiliser get_all_tasks() qui retourne une liste de dicts avec métriques
task_metrics = learning_manager.get_all_tasks() # ✅
if not task_metrics:
print("❌ Aucune tâche apprise trouvée !\n")
return
print(f"✅ {len(task_metrics)} tâche(s) trouvée(s) :\n")
for i, task_info in enumerate(task_metrics, 1):
print(f" {i}. {task_info['task_name']}") # ✅ task_info est un dict
print(f" ID: {task_info['task_id']}")
print(f" Observations: {task_info['observation_count']}")
print(f" Confiance: {task_info['confidence_score']:.2%}")
📝 Avantages de get_all_tasks()
- ✅ Métriques complètes : Retourne toutes les infos (observations, confiance, etc.)
- ✅ Format dict : Plus facile à manipuler que des objets
- ✅ Déjà implémenté : Pas besoin de créer une nouvelle méthode
- ✅ Utilisé ailleurs : Cohérent avec le reste du code
🎯 Méthodes Disponibles dans LearningManager
Voici les méthodes publiques disponibles :
Observation et Apprentissage
observe(action): Enregistre une observationcreate_task_from_signatures(signatures, ...): Crée une tâche
Suggestions et Validation
suggest_action(context): Génère une suggestionconfirm_action(feedback): Traite la validation utilisateur
Évaluation et Métriques
calculate_confidence(vision_conf, llm_score, task_id): Calcule la confianceevaluate_task(task_id): Évalue une tâcheget_all_tasks(): ✅ Retourne toutes les tâches avec métriquesget_task_stats(): Statistiques globales
Transitions de Mode
should_transition_to_auto(task_id): Vérifie si passage en Autopilotrollback_if_low_confidence(task_id): Rétrograde si confiance faible
Gestion de Tâches
load_task(task_id): Charge une tâche depuis le disqueset_current_task(task_id): Définit la tâche actuelleset_current_context(context): Définit le contexte actuelrecord_execution(decision): Enregistre une exécution
Détection de Changements UI
check_ui_changes(task_id, current_screenshot): Vérifie les changementsmonitor_execution_drift(task_id, execution_result): Surveille la dériveget_ui_change_stats(): Statistiques de détection
État
get_mode(): Retourne le mode actuelget_current_intent(): Retourne l'intention actuelleset_current_intent(intent): Définit l'intention
✅ État Final
- Problème identifié
- Solution appliquée
- Script corrigé
- Aucune erreur de syntaxe
- Prêt à l'emploi
🚀 Test
geniusia2/venv/bin/python test_mode_assiste_manuel.py
Résultat attendu : Le script liste toutes les tâches et simule une vérification de suggestion.
Problème résolu le 19 Novembre 2025