Files
Effi/docs/ARCHIVE/HISTORIQUE-COMPLET-EFFI.md
T
Folzo f90ae76b0c docs: Add complete project history from Perplexity archives
- 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
2026-04-05 09:28:17 +02:00

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

  1. Origine du Projet
  2. Evolution de l'Infrastructure
  3. Choix Technologiques Successifs
  4. Problèmes Rencontrés et Solutions
  5. Configuration Actuelle Validée
  6. Besoins Identifiés et Priorisés
  7. 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-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 :

# 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)

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


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.