Initial commit
This commit is contained in:
359
geniusia2/README.md
Normal file
359
geniusia2/README.md
Normal file
@@ -0,0 +1,359 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user