- Synthesize 8 Perplexity conversation files into comprehensive history - Document technology choices: AFFiNE → SiYuan → Obsidian - Detail encountered problems and solutions (MCP, TTS, STT, etc.) - Current validated configuration with qwen3.5:9b - Prioritized TODO list for next phases - Key learnings and recommendations
20 KiB
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
- Origine du Projet
- Evolution de l'Infrastructure
- Choix Technologiques Successifs
- Problèmes Rencontrés et Solutions
- Configuration Actuelle Validée
- Besoins Identifiés et Priorisé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
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 :
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 :
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
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 :
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-obsidiana l'host hardcodé à127.0.0.1dans le code source- Variable
OBSIDIAN_HOSTignorée (bug connu)
Tentatives :
- Configuration avec npx → Échec (npx non dispo dans container)
- Patch du code source dans cache uvx → Fonctionne temporairement
- 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_HOSTest 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 :
clang++non trouvé → Installation manuelle requise- Conflits libopencl-clang → Versions incompatibles
gfx1101vsgfx1100→ 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 :
# 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)
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 :
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)
- "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 :
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
-
qwen3.5:9b avec 32K context
- Performance excellente (53 tokens/sec)
- Qualité de raisonnement supérieure à Ministral
- Contexte long permet RAG efficace
-
Solution mémoire manuelle
- Plus rapide que mem0
- Prévisible et contrôlable
- Moins de dépendances
-
Sub Agent Tool
- Permet délégation de tâches complexes
- Fonctionne bien avec qwen3.5
- Architecture extensible
-
Infrastructure split (NAS + PC gaming)
- Économie d'énergie (WOL)
- Répartition charge optimale
- PC éteint quand pas utilisé
Ce qu'il Faut Éviter
-
mem0-mcp
- Trop lent pour usage quotidien
- Complexité inutile
- Bugs de parsing Ollama
-
mcpo + Obsidian
- Trop fragile (hardcode, patch nécessaire)
- Maintenance complexe
- Peu fiable à long terme
-
AFFiNE
- Orienté SaaS, pas self-host
- MCP non supporté officiellement
- Lock-in format propriétaire
-
Build ROCm complexe
- Très chronophage
- Fragile (dépendances clang)
- Pas de packages précompilés
Recommandations pour la Suite
- Prioriser la stabilité sur les nouvelles features
- Documenter chaque changement (comme ce fichier)
- Tester avant de migrer (sandbox si possible)
- Préférer les solutions simples moins "sexy" mais fiables
- 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.