2026-06-13 14:46:02 +00:00
|
|
|
# Superviseur Bot (Bêta)
|
|
|
|
|
|
|
|
|
|
Bot Discord IA d'assistance et de modération avancée, utilisant **Ollama** pour l'inférence LLM locale.
|
|
|
|
|
|
|
|
|
|
## Fonctionnalités
|
|
|
|
|
|
|
|
|
|
- **IA conversationnelle** : Répond aux questions et exécute des actions sur Discord via JSON
|
|
|
|
|
- **Modération silencieuse** : Scan de toxicité de chaque message via LLM en arrière-plan
|
|
|
|
|
- **Gestion vocale** : Transcription Whisper en temps réel + détection de mots-clés
|
2026-06-16 20:40:37 +02:00
|
|
|
- **Mémoire utilisateur** : Historique par utilisateur avec résumé automatique (via LLM)
|
2026-06-13 14:46:02 +00:00
|
|
|
- **Dispatch d'insights** : Coordination staff avec boutons d'acceptation Discord
|
|
|
|
|
- **RGPD** : Purge automatique des données > 30 jours
|
|
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
|
|
### Prérequis
|
|
|
|
|
|
2026-06-16 20:40:37 +02:00
|
|
|
- Python 3.10+
|
2026-06-13 14:46:02 +00:00
|
|
|
- **Ollama** installé et en cours d'exécution (https://ollama.com)
|
|
|
|
|
- Modèle `gpt-oss:20b` disponible dans Ollama
|
|
|
|
|
|
|
|
|
|
### Dépendances
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Configuration Ollama
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Pull le modèle dans Ollama
|
|
|
|
|
ollama pull gpt-oss:20b
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Configuration
|
|
|
|
|
|
|
|
|
|
Créer un fichier `.env` à la racine du dossier `beta/` :
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Discord
|
|
|
|
|
DISCORD_TOKEN=your_discord_bot_token
|
|
|
|
|
GUILD_ID=your_guild_id
|
|
|
|
|
|
2026-06-16 20:40:37 +02:00
|
|
|
# LLM (Ollama)
|
2026-06-13 14:46:02 +00:00
|
|
|
OLLAMA_MODEL=gpt-oss:20b
|
2026-06-16 20:40:37 +02:00
|
|
|
OLLAMA_BASE_URL=http://localhost:11434
|
2026-06-13 14:46:02 +00:00
|
|
|
|
|
|
|
|
# Staff
|
|
|
|
|
ADMIN_IDS=123456789,987654321
|
|
|
|
|
PRIMARY_ASSETS_IDS=111222333,444555666
|
|
|
|
|
|
|
|
|
|
# Channel d'introspection
|
|
|
|
|
INTROSPECTION_CHANNEL_ID=123456789
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Utilisation
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
cd beta
|
|
|
|
|
python main.py
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Le bot va :
|
|
|
|
|
1. Se connecter à Ollama
|
|
|
|
|
2. Initialiser tous les composants (mémoire, modération, vocal)
|
|
|
|
|
3. Se connecter à Discord
|
|
|
|
|
4. Traiter les messages
|
|
|
|
|
|
|
|
|
|
## Architecture
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
beta/
|
2026-06-16 20:40:37 +02:00
|
|
|
├── main.py # Point d'entrée
|
2026-06-13 14:46:02 +00:00
|
|
|
├── core/
|
2026-06-16 20:40:37 +02:00
|
|
|
│ ├── bot.py # Classe Beta (événements, orchestration)
|
|
|
|
|
│ ├── llm.py # Gestionnaire LLM (Ollama API)
|
|
|
|
|
│ ├── action_executor.py # Routage des actions IA → Discord
|
|
|
|
|
│ ├── action_router.py # (legacy, redirige vers action_executor)
|
|
|
|
|
│ ├── response_handler.py # Nettoyage, parsing JSON, envoi réponses
|
|
|
|
|
│ ├── log_parser.py # Parsing des logs d'actions
|
|
|
|
|
│ ├── content.py # Préparation du contenu pour le LLM
|
|
|
|
|
│ ├── context_builder.py # Construction du contexte serveur
|
|
|
|
|
│ ├── dispatcher.py # Dispatch d'insights vers staff
|
|
|
|
|
│ ├── voice.py # Gestion vocale + Whisper
|
|
|
|
|
│ ├── task_manager.py # Tâches de fond
|
|
|
|
|
│ ├── messaging.py # Envoi de messages
|
|
|
|
|
│ └── permissions.py # Whitelist et permissions
|
2026-06-13 14:46:02 +00:00
|
|
|
├── brain/
|
2026-06-16 20:40:37 +02:00
|
|
|
│ ├── memory.py # Mémoire utilisateur (wrapper)
|
|
|
|
|
│ ├── memoire.py # Mémoire utilisateur (implémentation, JSON/Redis + cache)
|
|
|
|
|
│ ├── moderation.py # Modération IA + SQLite
|
|
|
|
|
│ └── infos_serveurs.py # Infos serveur
|
2026-06-13 14:46:02 +00:00
|
|
|
├── commandes/
|
2026-06-16 20:40:37 +02:00
|
|
|
│ ├── security/ # kick, ban, mute, warn, purge...
|
|
|
|
|
│ ├── salons/ # Créer, supprimer, modifier salons
|
|
|
|
|
│ ├── roles/ # Créer, supprimer, modifier rôles
|
|
|
|
|
│ ├── categories/ # Créer, supprimer, modifier catégories
|
|
|
|
|
│ └── autres/ # Config, status, ping, etc.
|
|
|
|
|
├── data/ # Logs, DB SQLite
|
|
|
|
|
└── memoires/ # Historique utilisateur (JSON, par guild)
|
2026-06-13 14:46:02 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Actions IA
|
|
|
|
|
|
|
|
|
|
Le bot peut exécuter les actions suivantes via LLM :
|
2026-06-16 20:40:37 +02:00
|
|
|
- `CREATE_CHANNEL`, `DELETE_CHANNEL`, `MODIFY_CHANNEL`, `RENAME_CHANNEL`, `MOVE_CHANNEL`
|
|
|
|
|
- `CREATE_ROLE`, `DELETE_ROLE`, `ADD_ROLE_TO_USER`, `REMOVE_ROLE_FROM_USER`
|
|
|
|
|
- `CREATE_CATEGORY`, `DELETE_CATEGORY`, `MODIFY_CATEGORY`, `RENAME_CATEGORY`
|
|
|
|
|
- `KICK`, `BAN`, `UNBAN`, `MUTE`, `UNMUTE`, `TIMEOUT`, `WARN`, `PURGE`
|
2026-06-13 14:46:02 +00:00
|
|
|
- `JOIN_VOICE`, `LEAVE_VOICE`
|
|
|
|
|
- `ALERT`, `INSIGHT`, `FORGET_USER`, `READ_LOGS`
|
2026-06-16 20:40:37 +02:00
|
|
|
- `SEND_MESSAGE`, `HELP`, `STATUS`
|
|
|
|
|
|
|
|
|
|
## Variables d'environnement
|
|
|
|
|
|
|
|
|
|
| Variable | Description | Défaut |
|
|
|
|
|
|----------|-------------|--------|
|
|
|
|
|
| `DISCORD_TOKEN` | Token du bot Discord | *requis* |
|
|
|
|
|
| `GUILD_ID` | ID du serveur principal | *requis* |
|
|
|
|
|
| `OLLAMA_MODEL` | Nom du modèle Ollama | `gpt-oss:20b` |
|
|
|
|
|
| `OLLAMA_BASE_URL` | URL de l'API Ollama | `http://localhost:11434` |
|
|
|
|
|
| `ADMIN_IDS` | IDs des administrateurs (virgule) | — |
|
|
|
|
|
| `PRIMARY_ASSETS_IDS` | IDs du staff (virgule) | — |
|
|
|
|
|
| `INTROSPECTION_CHANNEL_ID` | Channel de logs internes | — |
|
|
|
|
|
| `TIMEZONE` | Fuseau horaire | `Europe/Paris` |
|
|
|
|
|
| `SUPERVISEUR_MAX_CONCURRENT` | Requêtes LLM simultanées max | `4` |
|
|
|
|
|
| `SUPERVISEUR_MEM_DIR` | Répertoire des mémoires | `memoires` |
|
|
|
|
|
| `SUPERVISEUR_MAX_RECENT` | Messages avant résumé | `20` |
|
|
|
|
|
| `SUPERVISEUR_REDIS_URL` | URL Redis (optionnel) | — |
|
|
|
|
|
| `LOG_LEVEL` | Niveau de log | `INFO` |
|
|
|
|
|
|
|
|
|
|
## Tests
|
2026-06-13 14:46:02 +00:00
|
|
|
|
|
|
|
|
```bash
|
2026-06-16 20:40:37 +02:00
|
|
|
# Tests unitaires
|
|
|
|
|
pytest test_bot.py -v
|
2026-06-13 14:46:02 +00:00
|
|
|
|
2026-06-16 20:40:37 +02:00
|
|
|
# Tests mémoire
|
|
|
|
|
python -m brain.memoire
|
|
|
|
|
```
|
2026-06-13 14:46:02 +00:00
|
|
|
|
2026-06-16 20:40:37 +02:00
|
|
|
## Monitoring
|
2026-06-13 14:46:02 +00:00
|
|
|
|
2026-06-16 20:40:37 +02:00
|
|
|
Le bot inclut des métriques intégrées :
|
|
|
|
|
- Nombre de requêtes LLM (succès/échecs)
|
|
|
|
|
- Temps de réponse moyen
|
|
|
|
|
- Métriques mémoire (hits/misses cache, lectures/écritures)
|
2026-06-13 14:46:02 +00:00
|
|
|
|
2026-06-16 20:40:37 +02:00
|
|
|
## Sécurité
|
2026-06-13 14:46:02 +00:00
|
|
|
|
2026-06-16 20:40:37 +02:00
|
|
|
- **Local uniquement** : Pas d'appels réseau externes
|
|
|
|
|
- **RGPD** : Purge automatique des données > 30 jours
|
|
|
|
|
- **Permissions** : Vérification admin pour les actions destructrices
|
|
|
|
|
- **Whitelist** : Système de niveaux de permissions
|
2026-06-13 14:46:02 +00:00
|
|
|
|
|
|
|
|
## Support
|
|
|
|
|
|
2026-06-16 20:40:37 +02:00
|
|
|
1. Vérifier les logs dans `data/bot.log`
|
|
|
|
|
2. Activer le mode debug : `LOG_LEVEL=DEBUG`
|
|
|
|
|
3. Vérifier qu'Ollama est actif : `ollama list`
|