Initial commit

This commit is contained in:
Dom
2026-03-05 00:20:25 +01:00
commit dcd4de9945
1954 changed files with 669380 additions and 0 deletions

View File

@@ -0,0 +1,269 @@
# 🤝 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 ! 🚀**