diff --git a/docs/ARCHIVE/HISTORIQUE-COMPLET-EFFI.md b/docs/ARCHIVE/HISTORIQUE-COMPLET-EFFI.md new file mode 100644 index 0000000..61575c9 --- /dev/null +++ b/docs/ARCHIVE/HISTORIQUE-COMPLET-EFFI.md @@ -0,0 +1,609 @@ +# Historique Complet du Projet Effi + +> **Document de synthèse** - Reprise de l'ensemble des conversations Perplexity sur le projet Effi +> **Date de création** : Avril 2026 +> **Projet** : Effi - Assistante IA Personnelle Locale + +--- + +## Table des Matières + +1. [Origine du Projet](#origine-du-projet) +2. [Evolution de l'Infrastructure](#evolution-de-linfrastructure) +3. [Choix Technologiques Successifs](#choix-technologiques-successifs) +4. [Problèmes Rencontrés et Solutions](#problèmes-rencontrés-et-solutions) +5. [Configuration Actuelle Validée](#configuration-actuelle-validée) +6. [Besoins Identifiés et Priorisés](#besoins-identifiés-et-priorisés) +7. [Apprentissages Clés](#apprentissages-clés) + +--- + +## Origine du Projet + +### Vision Initiale (Février 2026) + +Effi est né de la volonté de créer une **assistante IA personnelle 100% self-hosted**, en remplacement des solutions cloud (ChatGPT, Claude, etc.). Les objectifs initiaux étaient : + +- **Interface** : Open WebUI comme orchestrateur central +- **Inférence LLM** : Ollama sur PC gaming (RX 7800 XT) +- **Prise de notes** : Base de connaissances persistante +- **Mémoire** : Retient les informations importantes entre sessions +- **Autonomie** : Capable de créer des notes spontanément + +### Cahier des Charges v2.0 + +```yaml +Objectifs: + - Gérer automatiquement une base de connaissances personnelle + - Connaître parfaitement Folzo et son contexte (vie pro + perso) + - Prendre des initiatives autonomes (noter, corriger, enrichir, résumer) + - Recherche intelligente dans la mémoire avec compréhension sémantique + - Accessible partout (desktop + mobile) via reverse proxy sécurisé + +Infrastructure: + PC Gaming: AMD Ryzen 5800X3D, 32GB RAM, AMD Radeon 7800XT 16GB VRAM + NAS Synology: Hébergement applications, reverse proxy configuré +``` + +--- + +## Evolution de l'Infrastructure + +### Architecture Actuelle Validée + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ FRONTEND │ +│ Open WebUI (effi-server:3000) │ +│ ├─ Interface chat Effi │ +│ ├─ Memory manuelle │ +│ └─ RAG Qdrant │ +└─────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ INFÉRENCE LLM │ +│ WOL Proxy (effi-server:3011) │ +│ └─► Ollama (folzo-Corp:11434) │ +│ ├─ qwen3.5:9b (principal, 32K context) │ +│ ├─ bge-m3 (embeddings) │ +│ └─ RX 7800 XT 16GB VRAM │ +└─────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ SERVICES COMPLÉMENTAIRES │ +│ ├─ speaches-stt:8200 (Whisper large-v3-turbo) │ +│ ├─ openedai-speech:8100 (TTS XTTS) │ +│ ├─ qdrant:6333 (Vector DB RAG) │ +│ ├─ n8n:5678 (Workflows automation) │ +│ └─ Joplin Server (à venir) │ +└─────────────────────────────────────────────────────────────────┘ +``` + +### Historique des Changements d'Infrastructure + +| Date | Changement | Motivation | +|------|------------|------------| +| Fév 2026 | Migration AFFiNE → SiYuan | AFFiNE trop SaaS-oriented, problèmes MCP | +| Fév 2026 | SiYuan → Obsidian | Besoin de Markdown pur, meilleur écosystème | +| Fév 2026 | Test mcpo + Obsidian | Tentative d'intégration MCP (échouée) | +| Mars 2026 | Suppression CouchDB | Simplification infrastructure | +| Mars 2026 | Suppression pipelines | Remplacement par solution mémoire manuelle | +| Avr 2026 | Suppression mcpo/obsidian | Trop complexe, pas assez fiable | + +--- + +## Choix Technologiques Successifs + +### 1. Application de Notes + +#### AFFiNE (Testé → Abandonné) + +**Pourquoi testé :** +- Interface moderne Notion-like +- MCP natif streamable-http +- Self-hosted avec Docker + +**Pourquoi abandonné :** +- Format propriétaire (pas du Markdown pur) +- MCP self-hosted expérimental/non supporté officiellement +- Orienté SaaS, freemium agressif +- Problèmes de token d'accès en v0.26 + +**Citation Perplexity :** +> *"AFFiNE est conçu pour vendre son SaaS, le self-hosting est toléré mais pas prioritaire, et les fonctionnalités IA/API sont intentionnellement bridées pour pousser vers l'abonnement cloud."* + +#### SiYuan (Utilisé temporairement) + +**Points positifs :** +- Single container Docker (simple) +- Block-based editing puissant +- API REST complète +- MCP server disponible + +**Points négatifs :** +- Stockage en `.sy` (JSON), pas Markdown natif +- Sync complexe +- Interface moins intuitive qu'Obsidian + +**Citation Perplexity :** +> *"SiYuan est conçu exactement pour ce que tu veux faire : self-host-first par design."* + +#### Obsidian (Choix Final) + +**Pourquoi retenu :** +- ✅ Fichiers Markdown purs (futur-proof) +- ✅ Apps mobiles natives (iOS/Android) +- ✅ Écosystème plugins IA mature +- ✅ LiveSync + CouchDB pour sync self-hosted +- ✅ Graph view pour visualiser connexions + +**Configuration :** +```yaml +Vault: /home/folzo/obsidian-vault +Sync: LiveSync plugin + CouchDB (futur) +MCP: obsidian-local-rest-api (abandonné) +``` + +### 2. Modèles LLM Testés + +| Modèle | Statut | VRAM | Performances | Notes | +|--------|--------|------|--------------|-------| +| Ministral 14B | Testé | ~9GB | Rapide | Bon pour démarrer | +| qwen2.5:14b | Testé | ~9GB | Très bon | Meilleur function calling | +| qwen2.5:32b | Testé | ~15GB | Excellent | Trop lourd pour usage quotidien | +| **qwen3.5:9b** | **Retenu** | **~6GB** | **53 tokens/sec** | **Sweet spot vitesse/qualité** | + +**Configuration qwen3.5:9b validée :** +```bash +ollama run qwen3.5:9b-instruct-q4_K_M +# Context: 32K tokens +# Temperature: 0.7 +# Performance: ~53 tokens/sec sur RX 7800 XT +``` + +### 3. Solutions de Mémoire + +#### Approche 1 : Open WebUI Memory Native +- Fonctionne mais très basique +- Snippets courts uniquement +- Pas de mémoire conversationnelle long terme + +#### Approche 2 : mem0 + Qdrant (Testé → Abandonné) +- Installation complexe +- Nécessite pipeline Python +- Très lent (ajoute 5-10s par requête) +- Bugs de parsing avec Ollama + +**Citation Perplexity :** +> *"mem0 semble ajouter une latence significative à chaque requête. Avec qwen2.5:14b sur une 7800 XT, l'expérience utilisateur devient frustrante."* + +#### Approche 3 : Solution Manuelle (Retenue) +- Memory native Open WebUI (snippets importants) +- Prompt système enrichi +- RAG sur documents pertinents +- Plus rapide et prévisible + +### 4. Speech-to-Text (STT) + +#### Solutions Testées + +**speaches + Whisper** +- Modèle : faster-whisper-large-v3-turbo +- Fonctionnement : CPU (int8) sur effi-server +- Performance : ~10-13s pour 5s d'audio +- Problème : Non optimisé GPU + +**Tentative ROCm GPU (Échouée)** +- CTranslate2-rocm nécessite compilation +- Dockerfile complexe avec conflits clang +- Build échoué sur erreurs de compilation + +**Citation Perplexity :** +> *"Le build CTranslate2-rocm est un processus complexe qui nécessite une configuration spécifique pour gfx1101 (RX 7800 XT). Les images précompilées ne sont pas disponibles."* + +### 5. Text-to-Speech (TTS) + +#### Configuration Validée + +```yaml +Service: openedai-speech +Engine: XTTS v2 (tts-1-hd) +Voix: nova (clonée depuis WAV) +Hôte: folzo-Corp (192.168.1.11:8100) +GPU: ROCm activé +``` + +**Problème initial :** +- openedai-speech sur effi-server (Intel J5040) → CPU 100% +- Migration vers folzo-Corp nécessaire + +**Configuration Open WebUI :** +```yaml +Admin Panel → Settings → Audio: + TTS Engine: OpenAI + TTS URL: http://192.168.1.11:8100/v1 + TTS Model: tts-1-hd + TTS Voice: nova +``` + +--- + +## Problèmes Rencontrés et Solutions + +### Problème 1 : MCP Obsidian - Connexion Refusée + +**Symptôme :** +``` +ERROR:mcp-obsidian:Request failed: HTTPSConnectionPool(host='127.0.0.1', port=27124) +``` + +**Cause :** +- `mcp-obsidian` a l'host hardcodé à `127.0.0.1` dans le code source +- Variable `OBSIDIAN_HOST` ignorée (bug connu) + +**Tentatives :** +1. Configuration avec npx → Échec (npx non dispo dans container) +2. Patch du code source dans cache uvx → Fonctionne temporairement +3. Script de patch au démarrage → Échec (cache volatile) + +**Solution finale :** +Abandon de MCP Obsidian, passage à une solution plus simple avec Joplin. + +**Citations Perplexity :** +> *"Le patch dans `/root/.cache/uv/` disparaîtra au prochain restart du container car c'est un volume éphémère."* + +> *"La variable `OBSIDIAN_HOST` est simplement ignorée par ce package — c'est un bug confirmé, pas un problème de config."* + +### Problème 2 : Pipeline Vocal Lent + +**Diagnostic :** +Le pipeline vocal empilait 4 processus lourds séquentiels : + +| Composant | Modèle | CPU/GPU | VRAM | +|-----------|--------|---------|------| +| STT (speaches) | large-v3 | CPU 100% | — | +| LLM principal | qwen2.5:14b | GPU | ~8.5 GB | +| TTS (openedai-speech) | XTTS v2 | GPU | ~4 GB | +| mem0 mémoire | qwen2.5:14b | GPU | (séquentiel) | + +**Fix #1 - STT :** `large-v3` → `large-v3-turbo` +- Même précision, 5x plus rapide +- `deepdml/faster-whisper-large-v3-turbo-ct2` + +**Fix #2 - TTS :** XTTS → Piper (option) +- Libère 4 GB VRAM +- CPU uniquement, très rapide + +**Fix #3 - Mémoire :** qwen2.5:14b → qwen2.5:3b +- Pour mémoire uniquement +- Libère 6 GB VRAM + +### Problème 3 : Build ROCm Whisper Échoué + +**Erreurs rencontrées :** +1. `clang++` non trouvé → Installation manuelle requise +2. Conflits libopencl-clang → Versions incompatibles +3. `gfx1101` vs `gfx1100` → Architecture GPU incorrecte + +**Statut :** Abandonné temporairement, Whisper fonctionne en CPU. + +### Problème 4 : Configurations Réseau + +**Conflit DHCP :** +``` +conflict detected for IP address 192.168.1.11 with host 5C:87:9C:65:95:23 +``` + +**Solution :** Réservations DHCP par MAC sur le routeur. + +**Interface réseau effi-server :** +- Carte Realtek RTL8111 qui plantait +- Fix : `ethtool -s enp6s0 wol g` + +### Problème 5 : Gestion des Permissions Synology + +**Problème :** +Les containers Docker sur Synology ont des problèmes de permissions avec les volumes. + +**Solution :** +```bash +# Récupérer PUID/PGID +id Master +# → uid=1026(Master) gid=100(users) + +# Appliquer permissions +chmod -R 777 /volume2/docker-REC/siyuan +chown -R 1026:100 /volume2/docker-REC/siyuan +``` + +--- + +## Configuration Actuelle Validée + +### Services Docker (effi-server) + +```yaml +version: "3.8" + +services: + open-webui: + image: ghcr.io/open-webui/open-webui:main + container_name: open-webui + ports: + - "3000:8080" + environment: + - OLLAMA_BASE_URL=http://192.168.1.11:3011 + - WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY} + - ENABLE_RAG=true + - RAG_EMBEDDING_MODEL=bge-m3:latest + - RAG_EMBEDDING_ENGINE=ollama + - RAG_OLLAMA_BASE_URL=http://192.168.1.11:11434 + volumes: + - ./open-webui-data:/app/backend/data + restart: unless-stopped + + qdrant: + image: qdrant/qdrant + container_name: qdrant + ports: + - "6333:6333" + volumes: + - ./qdrant-data:/qdrant/storage + restart: unless-stopped + + n8n: + image: n8nio/n8n + container_name: n8n + ports: + - "5678:5678" + volumes: + - ./n8n-data:/home/node/.n8n + environment: + - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} + restart: unless-stopped + + # Services TTS/STT sur folzo-Corp (voir docker-compose séparé) +``` + +### Configuration Open WebUI + +**Modèle Principal :** +```yaml +Nom: Effi (qwen3.5:9b) +Modèle de base: qwen3.5:9b-instruct-q4_K_M +Context Length: 32768 +Temperature: 0.7 +Top P: 0.9 +``` + +**Capabilities activées :** +- ✅ Mémoire (snippets manuels) +- ✅ Chat History +- ✅ Base de connaissances (Qdrant) +- ✅ Vision (pour captures d'écran) +- ✅ Téléversement fichier +- ✅ Recherche Web (DuckDuckGo) + +**Prompt Système Effi (v2.0) :** +``` +Tu es Effi, l'assistante IA locale de Folzo. + +PERSONNALITÉ : +- Joyeuse et décontractée, comme une pote qui t'aide +- Geek assumée (cinéma, jeux, tech) mais sans jargon inutile +- Humour fin : 0 à 1 vanne max par réponse, jamais forcée + +RÈGLES STRICTES : +1. Réponds D'ABORD à la demande, clairement et directement +2. Phrases courtes, ton conversation IRL +3. Max 2-3 phrases d'intro si question simple +4. Termine par une ouverture non forcée +5. Action risquée (rm, firewall) → demande confirmation +6. Conserve le style d'écriture de Folzo (dysorthographie) + +SPÉCIALITÉS : +- Débogage : raisonnement étape par étape +- Linux/Docker : commandes prêtes à copier +- Aide écriture : corrige sans lisser + +MÉMOIRE : +N'invente pas de souvenirs. Utilise les snippets mémoire fournis. +``` + +### Mémoire Configurée (Snippets) + +```yaml +- "Préférence: Réponds en français, concis et précis, avec étapes actionnables." +- "Préférence: Je suis dyslexique et dysorthographique ; corrige sans lisser mon style." +- "Contexte: Je suis Folzo, geek et père de famille, en reconversion vers l'IT." +- "Contexte: Mon PC gamer (Fedora, RX 7800 XT 16GB, 5800X3D, 32GB RAM) exécute Ollama." +- "Contrainte: Je privilégie l'auto-hébergement et l'open-source." +- "Objectif: Améliorer mon assistante locale (mémoire, prompt, réglages, RAG)." +``` + +### Services sur folzo-Corp + +**docker-compose.yml :** +```yaml +services: + speaches-stt: + image: speaches:latest + container_name: speaches-stt + ports: + - "8200:8000" + environment: + - WHISPER__MODEL=deepdml/faster-whisper-large-v3-turbo-ct2 + - WHISPER__LANGUAGE=fr + - WHISPER__COMPUTE_TYPE=int8 + - WHISPER__DEVICE=cpu # En attendant ROCm + restart: unless-stopped + + openedai-speech: + image: ghcr.io/matatonic/openedai-speech + container_name: openedai-speech + ports: + - "8100:8000" + volumes: + - ./tts-voices:/app/voices + - ./tts-config:/app/config + devices: + - /dev/kfd + - /dev/dri + group_add: + - "44" + - "991" + environment: + - HSA_OVERRIDE_GFX_VERSION=11.0.0 + restart: unless-stopped +``` + +--- + +## Besoins Identifiés et Priorisés + +### Phase 1 : Réparations (Courte durée) + +#### 1.1 Réparer TTS (Openedai-Speech) +**Statut :** ⚠️ À faire +**Problème :** Connection refused sur port 8100 depuis effi-server +**Impact :** Pipeline vocal incomplet +**Solution :** Vérifier firewall, configuration réseau Docker + +#### 1.2 Optimiser Whisper (STT) +**Statut :** ⚠️ À faire +**Problème :** Fonctionne en CPU (lent) +**Impact :** Latence ~10s pour transcription +**Solution :** Compiler CTranslate2-ROCm ou alternative + +### Phase 2 : Grands Projets (Moyenne durée) + +#### 2.1 Intégrer Joplin avec OpenWebUI +**Statut :** 📋 Planifié +**Objectif :** RAG sur notes Joplin +**Avantage :** Joplin Server déjà installé sur NAS +**Approche :** Joplin Web Clipper API ou plugin + +#### 2.2 Génération d'Images (ComfyUI) +**Statut :** 📋 Planifié +**Matériel :** RX 7800 XT 16GB parfait pour Stable Diffusion +**Besoin :** Interface simple pour génération images +**Solution :** ComfyUI avec workflows préconfigurés + +### Phase 3 : Optimisations (Longue durée) + +#### 3.1 Optimiser Web Search +**Statut :** 🔧 En cours +**Actuel :** DDGS (DuckDuckGo) avec 5 résultats +**Améliorations possibles :** +- Augmenter nombre de résultats +- Ajouter SearxNG self-hosted +- Optimiser prompts pour recherche + +#### 3.2 Réparer Home Assistant +**Statut :** 🔧 En cours +**Problème :** Très lent sur chaque requête +**Cause :** Timeout ou configuration incorrecte + +#### 3.3 Web Scraping +**Statut :** 📋 Planifié +**Besoin :** Extraire contenu web pour RAG +**Solutions :** crawl4ai, firecrawl, ou tool Python custom + +#### 3.4 Calendrier +**Statut :** 📋 Planifié +**Besoin :** Accès calendrier pour agenda/rdv +**Approche :** CalDAV (Nextcloud) ou Google Calendar API + +--- + +## Apprentissages Clés + +### Ce qui Fonctionne Bien + +1. **qwen3.5:9b avec 32K context** + - Performance excellente (53 tokens/sec) + - Qualité de raisonnement supérieure à Ministral + - Contexte long permet RAG efficace + +2. **Solution mémoire manuelle** + - Plus rapide que mem0 + - Prévisible et contrôlable + - Moins de dépendances + +3. **Sub Agent Tool** + - Permet délégation de tâches complexes + - Fonctionne bien avec qwen3.5 + - Architecture extensible + +4. **Infrastructure split (NAS + PC gaming)** + - Économie d'énergie (WOL) + - Répartition charge optimale + - PC éteint quand pas utilisé + +### Ce qu'il Faut Éviter + +1. **mem0-mcp** + - Trop lent pour usage quotidien + - Complexité inutile + - Bugs de parsing Ollama + +2. **mcpo + Obsidian** + - Trop fragile (hardcode, patch nécessaire) + - Maintenance complexe + - Peu fiable à long terme + +3. **AFFiNE** + - Orienté SaaS, pas self-host + - MCP non supporté officiellement + - Lock-in format propriétaire + +4. **Build ROCm complexe** + - Très chronophage + - Fragile (dépendances clang) + - Pas de packages précompilés + +### Recommandations pour la Suite + +1. **Prioriser la stabilité** sur les nouvelles features +2. **Documenter chaque changement** (comme ce fichier) +3. **Tester avant de migrer** (sandbox si possible) +4. **Préférer les solutions simples** moins "sexy" mais fiables +5. **Garder des backups** avant chaque modification majeure + +--- + +## Ressources et Liens + +### Documentation Projet Effi + +- Configuration complète : `/docs/CONFIGURATION-RECAP-GITEA.md` +- Top 30 optimisations : `/docs/04-depannage/openwebui-optimisation-top30.md` +- TODO priorisé : `/.opencode/TODO-NEXT-THREAD.md` +- Prompt reprise : `/.opencode/PROMPT-REPRISE.md` + +### Archives + +- Conversations Perplexity : `/archive/Perplexity/` +- Notes originales : `/archive/notes-originales/` + +### Infrastructure + +- **effi-server** : 192.168.1.27 (Intel J5040, 8GB RAM) +- **folzo-Corp** : 192.168.1.11 (5800X3D, RX 7800 XT 16GB) +- **Gitea** : https://gitea.folzocorp.fr/Folzo/effi + +--- + +## Conclusion + +Le projet Effi a connu une évolution significative depuis février 2026. Des choix initiaux parfois trop ambitieux (AFFiNE, mem0, MCP complexe), l'architecture s'est progressivement simplifiée vers une solution plus robuste et maintenable. + +**La configuration actuelle est stable et performante**, avec qwen3.5:9b comme modèle principal et une infrastructure épurée. Les prochaines étapes se concentrent sur l'ajout de fonctionnalités (Joplin, ComfyUI) plutôt que sur la réparation de problèmes existants. + +**Leçon principale :** En self-hosting, la simplicité et la stabilité priment sur les fonctionnalités avancées complexes. + +--- + +*Document généré le 5 avril 2026 à partir des archives Perplexity du projet Effi.*