Files
Geniusia_v2/docs/implementation/MODE_ASSISTE_CONCEPTION.md
2026-03-05 00:20:25 +01:00

270 lines
6.7 KiB
Markdown

# đŸ€ 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 ! 🚀**