# đŸ€ Mode AssistĂ© - Conception ## 🎯 Objectif IntĂ©grer le systĂšme de rejeu dans l'Orchestrator pour fournir des **suggestions en temps rĂ©el** basĂ©es sur les tĂąches apprises. ## 🔄 Flux du Mode AssistĂ© ``` 1. Utilisateur effectue une action ↓ 2. EventCapture dĂ©tecte l'action ↓ 3. Orchestrator capture le contexte (screenshot, fenĂȘtre) ↓ 4. Recherche de tĂąches similaires dans FAISS ↓ 5. Si correspondance trouvĂ©e (similaritĂ© > 0.75) ↓ 6. Afficher suggestion visuelle ↓ 7. Attendre validation utilisateur ├─ EntrĂ©e → ExĂ©cuter l'action suggĂ©rĂ©e ├─ Échap → Ignorer └─ Alt+C → Corriger ↓ 8. Mettre Ă  jour les scores de confiance ``` ## đŸ—ïž Architecture ### Composants Ă  Modifier 1. **Orchestrator** (`orchestrator.py`) - Ajouter `TaskReplayEngine` - Ajouter mĂ©thode `_suggest_next_action()` - Ajouter mĂ©thode `_handle_suggestion_response()` 2. **GUI** (`minimal_gui.py`) - Ajouter overlay de suggestion - Ajouter gestion des touches (EntrĂ©e/Échap/Alt+C) 3. **LearningManager** (`learning_manager.py`) - Ajouter mĂ©thode `find_similar_tasks()` - AmĂ©liorer `suggest_action()` ### Nouveaux Composants 1. **SuggestionManager** (nouveau) - GĂšre les suggestions en temps rĂ©el - Calcule les scores de confiance - GĂšre les timeouts ## 📝 ImplĂ©mentation ### Étape 1 : IntĂ©grer TaskReplayEngine dans Orchestrator ```python from .task_replay import TaskReplayEngine class Orchestrator: def __init__(self, ...): # ... code existant ... # Moteur de rejeu pour suggestions self.replay_engine = TaskReplayEngine( learning_manager, embeddings_manager, vision_utils, input_utils, logger, config ) ``` ### Étape 2 : Ajouter la DĂ©tection de Contexte ```python def _capture_context(self) -> Dict[str, Any]: """Capture le contexte actuel pour suggestions.""" screenshot = capture_screen() window = get_active_window() # GĂ©nĂ©rer embedding du contexte embedding = self.vision_analyzer.generate_embedding(screenshot) return { "screenshot": screenshot, "window": window, "embedding": embedding, "timestamp": datetime.now() } ``` ### Étape 3 : Recherche de TĂąches Similaires ```python def _find_similar_tasks(self, context: Dict[str, Any]) -> List[Dict]: """Recherche les tĂąches similaires au contexte actuel.""" embedding = context["embedding"] # Rechercher dans FAISS results = self.learning_manager.embeddings_manager.search_similar( embedding, k=3 ) # Filtrer par seuil de similaritĂ© similar_tasks = [ r for r in results if r["similarity"] >= 0.75 ] return similar_tasks ``` ### Étape 4 : GĂ©nĂ©rer et Afficher Suggestion ```python def _suggest_next_action(self, context: Dict[str, Any]): """GĂ©nĂšre et affiche une suggestion d'action.""" # Rechercher tĂąches similaires similar_tasks = self._find_similar_tasks(context) if not similar_tasks: return # Prendre la meilleure correspondance best_match = similar_tasks[0] task_id = best_match["metadata"]["task_id"] # Charger la tĂąche task = self.learning_manager.load_task(task_id) if not task: return # Obtenir la prochaine action suggĂ©rĂ©e suggestion = self.learning_manager.suggest_action(context) if suggestion and suggestion["confidence"] >= 0.75: # Afficher dans la GUI if self.gui: self.gui.show_suggestion(suggestion) ``` ### Étape 5 : Gestion des RĂ©ponses ```python def _handle_suggestion_response(self, response: str, suggestion: Dict): """GĂšre la rĂ©ponse de l'utilisateur Ă  une suggestion.""" if response == "accept": # ExĂ©cuter l'action suggĂ©rĂ©e self._execute_suggested_action(suggestion) # Mettre Ă  jour la confiance (positif) self.learning_manager.confirm_action({ "type": "accept", "task_id": suggestion["task_id"] }) elif response == "reject": # Ne rien faire # Mettre Ă  jour la confiance (nĂ©gatif) self.learning_manager.confirm_action({ "type": "reject", "task_id": suggestion["task_id"] }) elif response == "correct": # Ouvrir dialogue de correction if self.gui: self.gui.show_correction_dialog(suggestion) ``` ## 🎹 Interface Utilisateur ### Overlay de Suggestion ``` ┌─────────────────────────────────────┐ │ 💡 Suggestion │ │ │ │ Action : Clic sur "Enregistrer" │ │ Confiance : 89% │ │ │ │ [EntrĂ©e] Accepter │ │ [Échap] Refuser │ │ [Alt+C] Corriger │ └─────────────────────────────────────┘ ``` ### Touches Clavier | Touche | Action | |--------|--------| | **EntrĂ©e** | Accepter et exĂ©cuter | | **Échap** | Refuser | | **Alt+C** | Ouvrir dialogue de correction | ## 📊 MĂ©triques ### Scores de Confiance ```python confidence = ( 0.6 * vision_similarity + # SimilaritĂ© visuelle CLIP 0.3 * llm_score + # Score LLM 0.1 * historical_success # Taux de succĂšs historique ) ``` ### Seuils - **Afficher suggestion** : confidence >= 0.75 - **ExĂ©cution auto** : confidence >= 0.95 (Mode Autopilot) - **Rollback** : confidence < 0.85 (retour en Mode AssistĂ©) ## 🔄 Transitions de Mode ``` Shadow (observation) ↓ (5+ observations) AssistĂ© (suggestions) ↓ (20+ obs + 95% concordance) Autopilot (automatique) ↓ (confiance < 85%) AssistĂ© (retour) ``` ## đŸ§Ș Tests ### Test 1 : Suggestion Simple 1. Apprendre une tĂąche (3x clic sur "Enregistrer") 2. Refaire l'action une fois 3. VĂ©rifier qu'une suggestion apparaĂźt ### Test 2 : Acceptation 1. Suggestion affichĂ©e 2. Appuyer sur EntrĂ©e 3. VĂ©rifier que l'action est exĂ©cutĂ©e ### Test 3 : Refus 1. Suggestion affichĂ©e 2. Appuyer sur Échap 3. VĂ©rifier que rien n'est exĂ©cutĂ© ## 📝 Prochaines Étapes 1. ✅ CrĂ©er `SuggestionManager` 2. ✅ Modifier `Orchestrator` 3. ✅ Ajouter overlay dans GUI 4. ✅ ImplĂ©menter gestion des touches 5. ✅ Tester le flux complet ## 🎯 RĂ©sultat Attendu Un systĂšme qui : - Observe tes actions - ReconnaĂźt les patterns - SuggĂšre l'action suivante - Apprend de tes choix - S'amĂ©liore avec le temps **Le Mode AssistĂ© sera fonctionnel ! 🚀**