Files
Geniusia_v2/geniusia2/README.md
2026-03-05 00:20:25 +01:00

360 lines
11 KiB
Markdown

# RPA Vision V2
Système d'automatisation robotique à apprentissage progressif utilisant la vision par ordinateur et l'IA.
## Vue d'Ensemble
RPA Vision V2 observe, apprend et automatise les interactions avec les interfaces utilisateur à travers trois modes opérationnels:
- **👀 Shadow**: Observation uniquement, apprentissage des actions utilisateur
- **🤝 Assisté**: Suggestions avec validation utilisateur requise
- **🤖 Autopilot**: Exécution autonome après atteinte des seuils de confiance
## Architecture
```
geniusia2/
├── core/ # Logique centrale (orchestration, apprentissage)
│ ├── config.py # Configuration globale
│ └── utils/ # Utilitaires (image, vision, input)
├── gui/ # Interface PyQt5
│ └── dialogs/ # Dialogues de correction et tableau de bord
├── data/ # Données persistantes
│ ├── user_profiles/ # Profils d'apprentissage (JSON)
│ ├── logs/ # Logs chiffrés AES-256
│ └── faiss_index/ # Index de mémoire visuelle
└── models/ # Modèles IA
├── openclip/ # Embeddings visuels
├── owl_v2/ # Détection UI
└── qwen2.5_vl/ # Raisonnement visuel
```
## Installation
### Prérequis
- **Système**: Linux (Ubuntu 20.04+), macOS 11+, ou Windows 10+
- **Python**: 3.9 ou supérieur
- **RAM**: 16GB minimum (32GB recommandé)
- **GPU**: NVIDIA avec 8GB+ VRAM (optionnel mais recommandé pour meilleures performances)
- **Espace disque**: 20GB minimum
### Installation Automatique (Recommandé)
Le script d'installation configure automatiquement tout l'environnement:
```bash
# Rendre le script exécutable
chmod +x setup.sh
# Lancer l'installation
./setup.sh
```
Le script va:
1. ✅ Créer un environnement virtuel Python
2. ✅ Installer toutes les dépendances Python
3. ✅ Installer Ollama (si nécessaire)
4. ✅ Télécharger le modèle Qwen 2.5-VL
5. ✅ Créer les répertoires de données
6. ✅ Générer les clés de chiffrement
7. ✅ Configurer les modèles de vision
### Installation Manuelle
Si vous préférez installer manuellement:
1. **Créer un environnement virtuel**:
```bash
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# ou
venv\Scripts\activate # Windows
```
2. **Installer les dépendances Python**:
```bash
pip install --upgrade pip
pip install -r requirements.txt
```
3. **Installer Ollama**:
```bash
# Linux/macOS
curl -fsSL https://ollama.com/install.sh | sh
# Windows: Télécharger depuis https://ollama.com/download
```
4. **Télécharger le modèle Qwen 2.5-VL**:
```bash
ollama pull qwen2.5-vl:7b
```
5. **Créer les répertoires**:
```bash
mkdir -p data/{user_profiles,logs,faiss_index,whitelist}
mkdir -p models
```
6. **Générer les clés de chiffrement**:
```bash
python3 -c "from cryptography.fernet import Fernet; import os; key = Fernet.generate_key(); os.makedirs('data', exist_ok=True); open('data/.encryption_key', 'wb').write(key)"
```
## Configuration
La configuration globale se trouve dans `core/config.py`:
- **Modèles**: Choix des modèles de vision et LLM
- **Seuils**: Critères de transition entre modes
- **Performance**: Latence maximale, taux de correction
- **Sécurité**: Chiffrement, liste blanche, rétention des logs
## Utilisation
### Démarrage
1. **Activer l'environnement virtuel** (si pas déjà fait):
```bash
source venv/bin/activate # Linux/macOS
# ou
venv\Scripts\activate # Windows
```
2. **Lancer l'application**:
```bash
python3 main.py
```
### Interface Graphique
L'interface minimale affiche:
- **Indicateur de mode**: 👀 Shadow / 🤝 Assisté / 🤖 Autopilot
- **Boutons de contrôle**: Start, Stop, Pause
- **Statut**: État actuel du système
- **Métriques**: Confiance, observations, concordance
### Raccourcis Clavier
| Raccourci | Action |
|-----------|--------|
| **Ctrl+Pause** | Arrêt d'urgence immédiat |
| **Entrée** | Valider une suggestion (mode Assisté) |
| **Échap** | Rejeter une suggestion (mode Assisté) |
| **Alt+C** | Ouvrir le dialogue de correction |
| **Ctrl+D** | Ouvrir le tableau de bord des métriques |
### Workflow Typique
1. **Mode Shadow (👀)**:
- Lancez l'application
- Effectuez vos tâches normalement
- Le système observe et apprend silencieusement
- Après ≥20 observations avec ≥95% de concordance, transition automatique proposée
2. **Mode Assisté (🤝)**:
- Le système suggère des actions avec surlignage visuel
- Validez avec **Entrée** ou rejetez avec **Échap**
- Corrigez avec **Alt+C** si nécessaire
- Après ≥20 validations avec ≥95% de concordance, passage en Autopilot proposé
3. **Mode Autopilot (🤖)**:
- Exécution automatique des tâches apprises
- Notifications post-action (✔️ succès / ❌ échec)
- Retour automatique en Assisté si confiance <90%
- Rollback possible des 3 dernières actions
### Liste Blanche
Pour des raisons de sécurité, seules les applications autorisées peuvent être automatisées:
1. **Ajouter une application**:
- Cliquez sur "Gérer Liste Blanche" dans l'interface
- Entrez le titre de la fenêtre (ex: "Firefox", "LibreOffice")
- Confirmez l'ajout
2. **Retirer une application**:
- Ouvrez le gestionnaire de liste blanche
- Sélectionnez l'application
- Cliquez sur "Retirer"
La liste blanche est sauvegardée dans `data/whitelist/whitelist.json`
## Sécurité
RPA Vision V2 intègre plusieurs mécanismes de sécurité:
### Chiffrement
- **Logs chiffrés**: Tous les logs sont chiffrés avec AES-256-GCM
- **Clés sécurisées**: Clés de chiffrement stockées dans `data/.encryption_key`
- **Données sensibles**: Aucune donnée sensible en clair sur disque
### Contrôle d'Accès
- **Liste blanche**: Seules les applications autorisées peuvent être automatisées
- **Validation admin**: Ajout à la liste blanche nécessite confirmation
- **Audit trail**: Toutes les modifications de liste blanche sont journalisées
### Mécanismes de Sécurité
- **Arrêt d'urgence**: Ctrl+Pause arrête immédiatement toute exécution
- **Rollback**: Annulation des 3 dernières actions en cas d'erreur
- **Failsafe**: Déplacer la souris dans le coin supérieur gauche arrête PyAutoGUI
- **Détection de dérive**: Alerte si l'UI change de manière inattendue
### Confidentialité
- **Données locales**: Toutes les données restent sur votre machine
- **Pas de télémétrie**: Aucune donnée envoyée à des serveurs externes
- **Rétention configurable**: Durée de conservation des logs paramétrable
### Bonnes Pratiques
1. Ne jamais ajouter d'applications sensibles (banque, admin système) à la liste blanche
2. Tester en mode Shadow avant de passer en Autopilot
3. Surveiller régulièrement le tableau de bord des métriques
4. Sauvegarder régulièrement `data/` pour préserver l'apprentissage
## Dépannage
### Problèmes Courants
**1. Erreur "Ollama not found"**
```bash
# Vérifier si Ollama est installé
ollama --version
# Si non installé, installer:
curl -fsSL https://ollama.com/install.sh | sh
```
**2. Erreur "Model not found"**
```bash
# Télécharger le modèle
ollama pull qwen2.5-vl:7b
# Vérifier les modèles installés
ollama list
```
**3. Erreur "Permission denied" sur setup.sh**
```bash
# Rendre le script exécutable
chmod +x setup.sh
```
**4. Latence élevée (>400ms)**
- Vérifier que le GPU est utilisé (si disponible)
- Réduire la résolution de capture dans `core/config.py`
- Utiliser un modèle plus léger (qwen2.5-vl:3b au lieu de 7b)
**5. Détection UI imprécise**
- Augmenter le seuil de confiance dans `core/config.py`
- Essayer un autre modèle de vision (OWL-v2, DINO, YOLO)
- Fournir plus d'exemples en mode Shadow
**6. Erreur "PyAutoGUI failsafe triggered"**
- La souris a été déplacée dans le coin supérieur gauche
- C'est un mécanisme de sécurité
- Relancez l'application et évitez ce coin
### Logs et Débogage
Les logs sont stockés dans `data/logs/` (chiffrés). Pour les consulter:
```python
from core.logger import Logger
from core.config import Config
config = Config()
logger = Logger(config.get_all())
# Récupérer les logs récents
logs = logger.get_logs(limit=100)
for log in logs:
print(log)
```
### Support
Pour signaler un bug ou demander de l'aide:
1. Vérifiez les logs dans `data/logs/`
2. Consultez la documentation des modules dans `core/*/README.md`
3. Vérifiez les métriques dans le tableau de bord
## Performance
### Métriques Cibles
| Métrique | Cible | Critique |
|----------|-------|----------|
| **Latence** | <400ms | <1000ms |
| **Concordance** | ≥95% | ≥90% |
| **Taux de correction** | <3% | <10% |
| **Précision détection** | ≥90% | ≥80% |
### Optimisations
1. **GPU**: Utiliser un GPU NVIDIA pour accélérer les modèles
2. **Modèles**: Choisir des modèles adaptés à votre matériel
3. **Résolution**: Réduire la résolution de capture si nécessaire
4. **Cache**: Les embeddings sont mis en cache dans FAISS
5. **Batch**: Les opérations sont groupées quand possible
## Architecture Technique
### Composants Principaux
- **Orchestrator**: Boucle cognitive principale
- **LearningManager**: Gestion de l'apprentissage et des transitions
- **VisionUtils**: Détection d'éléments UI avec modèles vision
- **LLMManager**: Raisonnement visuel avec Qwen 2.5-VL
- **EmbeddingsManager**: Mémoire visuelle avec OpenCLIP + FAISS
- **WhitelistManager**: Contrôle d'accès aux applications
- **UIChangeDetector**: Détection de dérives d'interface
- **MetricsCollector**: Surveillance des performances
- **ReplayEngine**: Rejeu et rollback d'actions
### Flux de Données
```
Capture écran → Détection UI → Raisonnement LLM → Décision
↓ ↓ ↓
Embeddings → Mémoire FAISS → Apprentissage
Exécution/Suggestion
```
## Documentation Détaillée
- **Exigences**: `.kiro/specs/rpa-vision-v2/requirements.md`
- **Design**: `.kiro/specs/rpa-vision-v2/design.md`
- **Tâches**: `.kiro/specs/rpa-vision-v2/tasks.md`
- **Modules**:
- `core/ORCHESTRATOR_README.md`
- `core/LEARNING_MANAGER_README.md`
- `core/WHITELIST_MANAGER_README.md`
- `core/UI_CHANGE_DETECTOR_README.md`
- `core/utils/VISION_UTILS_README.md`
- `gui/README.md`
- `gui/dialogs/README.md`
## Contribution
Ce projet est en développement actif. Les contributions sont les bienvenues:
1. Fork le projet
2. Créer une branche feature
3. Commiter les changements
4. Pousser vers la branche
5. Ouvrir une Pull Request
## Licence
Propriétaire - Amina 2025
## Remerciements
- **OpenCLIP**: Embeddings visuels
- **Ollama**: Infrastructure LLM locale
- **Qwen 2.5-VL**: Modèle de vision-langage
- **FAISS**: Recherche de similarité vectorielle
- **PyQt5**: Interface graphique
- **PyAutoGUI**: Contrôle des entrées