01629780f4
Code du systeme de memoire multi-LLM sur Trilium : - trilium_api.py : wrapper trilium-py (notes, labels, relations) - mcp_server.py : serveur MCP Starlette (19 tools, OAuth + Bearer) - api_context.py : API REST FastAPI - trilium_context.py : workflow CLI - watchdog.sh, start_*.sh : supervision et demarrage - skills, docs et ontologie associes Secrets (.env, oauth_state.json) exclus via .gitignore.
7.9 KiB
7.9 KiB
Synthèse - Projet Context Continuity
Date : 27 mai 2026
Participants : Bastien Gourdon, Claude, Le Chat (Mistral)
Contexte du Projet
Objectif principal : Créer un système de gestion de contexte partagé entre plusieurs LLM (Claude, Le Chat) pour dépasser les limites de tokens (≤ 10K) et centraliser les informations liées aux projets (ex: Sliding Automation, Data Governance).
Outils utilisés :
- Trilium : Base de connaissances self-hosted (Docker sur Synology DS218).
- Synology DS218 (GrosseBertha) : Hébergement de Trilium et des scripts.
- Reverse Proxy : Accès sécurisé à Trilium via
https://trilium.bertha-cloud.fr. - API ETAPI : Interaction programmatique avec Trilium.
✅ Décisions Prises
1. Abandon d’Anytype au profit de Trilium
- Raison :
- Anytype est une application desktop (Electron) non utilisable en headless sur NAS.
- Trilium est 100% web, self-hosted, avec une API REST (ETAPI) documentée.
- Données 100% self-hosted sur GrosseBertha (SQLite dans
/volume1/docker/trilium/). - Licence AGPL-3.0 et communauté active.
2. Architecture de Trilium
- Arborescence validée :
Context Continuity/ ├── Conversations/ # Notes de type "Conversation LLM" ├── Backlog/ # Tâches à faire ├── Décisions/ # Décisions prises ├── Glossaire/ # Termes techniques └── Historique/ # Historique des actions - Types de notes :
- Book : Pour les dossiers (ex:
Conversations/). - Text : Pour les notes de contenu (ex: une conversation spécifique).
- Book : Pour les dossiers (ex:
3. Automatisation via Scripts Python
- Objectif : Synchroniser automatiquement les contextes entre LLM et Trilium.
- Scripts créés :
init_trilium_architecture.py: Initialise l’arborescence.trilium_api.py: Bibliothèque pour interagir avec l’API ETAPI.create_conversation.py: Crée des notes de conversation.generate_context.py: Génère un contexte pour les LLM.
4. Configuration Technique
- Reverse Proxy :
- Source :
https://trilium.bertha-cloud.fr:443(HTTPS). - Destination :
http://192.168.1.6:4292(HTTP vers le conteneur Docker). - Certificat SSL : Let’s Encrypt (géré via DSM).
- Source :
- Docker :
- Image :
triliumnext/notes:latest. - Port :
4292:8080. - Volume :
/volume1/docker/trilium:/home/node/trilium-data.
- Image :
Statut des Tâches
✅ Tâches Effectuées
| Tâche | Statut | Détails |
|---|---|---|
| Installation de Trilium | ✅ Terminé | Conteneur Docker lancé et accessible en local (http://192.168.1.6:4292). |
| Reverse Proxy | ✅ Terminé | Configuré dans DSM pour trilium.bertha-cloud.fr. |
| Certificat SSL | ✅ Terminé | Let’s Encrypt configuré via DSM. |
| Accès externe | ✅ Terminé | https://trilium.bertha-cloud.fr fonctionne. |
| Token ETAPI | ⏳ En attente | À générer dans Trilium (Options → ETAPI → Create new token). |
| Scripts Python | ✅ Prêts | init_trilium_architecture.py, trilium_api.py, etc. |
Tâches en Cours
| Tâche | Statut | Prochaine Étape |
|---|---|---|
| Initialisation de l’arborescence | ⏳ En attente | Exécuter init_trilium_architecture.py. |
| Test des scripts | ⏳ En attente | Vérifier que les notes sont créées dans Trilium. |
| Intégration avec les LLM | ⏳ En attente | Utiliser generate_context.py avant chaque session LLM. |
❌ Tâches Restantes
| Tâche | Priorité | Dépendances |
|---|---|---|
| Générer le token ETAPI | ⭐⭐⭐ | Nécessaire pour les scripts Python. |
Exécuter init_trilium_architecture.py |
⭐⭐⭐ | Nécessite le token ETAPI. |
| Créer la première conversation | ⭐⭐ | Nécessite l’arborescence Trilium. |
| Tester le workflow complet | ⭐⭐ | Nécessite les scripts et l’arborescence. |
| Automatiser la synchronisation | ⭐ | Nécessite un cron job ou un déclencheur manuel. |
Tests à Effectuer
1. Test de l’API ETAPI
# Remplace TON_TOKEN par ton token ETAPI
curl -H "Authorization: TON_TOKEN" http://localhost:4292/etapi/notes
Résultat attendu : Une liste de notes au format JSON.
2. Test du Reverse Proxy
- Ouvre
https://trilium.bertha-cloud.frdans un navigateur. Résultat attendu : Accès à Trilium sans erreur SSL.
3. Test des Scripts Python
# Initialiser l'arborescence
python3 init_trilium_architecture.py
# Créer une conversation
python3 create_conversation.py
# Générer un contexte
python3 generate_context.py > contexte.md
Résultat attendu :
- Dossiers créés dans Trilium.
- Note de conversation ajoutée.
- Fichier
contexte.mdgénéré.
Prochaines Étapes avec Claude
1. Finaliser la Configuration de Trilium
- Générer le token ETAPI dans Trilium (Options → ETAPI → Create new token).
- Exécuter
init_trilium_architecture.pypour créer l’arborescence. - Vérifier les IDs des dossiers dans
trilium_folder_ids.json.
2. Tester les Scripts
- Tester
create_conversation.pyavec une conversation factice. - Tester
generate_context.pypour générer un contexte. - Corriger les erreurs si nécessaire (ex: permissions, token invalide).
3. Intégrer avec les LLM
- Avant une session LLM : Exécuter
generate_context.pypour récupérer le contexte. - Après une session LLM : Exécuter
create_conversation.pypour ajouter la conversation à Trilium. - Automatiser avec un cron job ou un script wrapper.
4. Améliorations Futures
- Ajouter un système de versioning pour les notes (ex: champ
version). - Intégrer un LLM local (ex: Mistral 7B) pour résumer les contextes.
- Créer un dashboard pour visualiser les projets et conversations.
Notes Techniques
1. Contraintes Synology
- Commandes terminal : Toujours sur 1 seule ligne (contrainte DS218).
- Docker : Utilise
Container Manager 24.0.2-1606(script communautaire 007revad). - synoinfo.conf :
unique=synology_rtd1296_ds220j(à vérifier après les mises à jour DSM).
2. Sécurité
- Token ETAPI : À conserver secrétisé (ne jamais le commiter dans Git).
- Certificat SSL : Let’s Encrypt géré via DSM (renouvellement automatique).
- Accès externe : Vérifier que le port 443 est ouvert sur la Livebox.
3. Performances
- Limite de tokens : Briefing ≤ 10K tokens pour éviter les coûts excessifs.
- API Trilium : Éviter les requêtes trop fréquentes (limite à 10 notes par appel dans
generate_context.py).
Liens Utiles
- Trilium : https://trilium.bertha-cloud.fr
- Documentation ETAPI : http://localhost:4292/etapi/
- Docker Trilium : https://hub.docker.com/r/triliumnext/notes
Calendrier Estimé
| Étape | Durée | Priorité |
|---|---|---|
| Générer le token ETAPI | 5 min | ⭐⭐⭐ |
Exécuter init_trilium_architecture.py |
10 min | ⭐⭐⭐ |
| Tester les scripts | 30 min | ⭐⭐⭐ |
| Intégrer avec les LLM | 1h | ⭐⭐ |
| Automatiser la synchronisation | 1h | ⭐ |
Points à Discuter avec Claude
- Validation du token ETAPI : Confirmer que le token est bien généré et fonctionnel.
- Tests des scripts : Vérifier que
init_trilium_architecture.pycrée bien l’arborescence. - Intégration LLM : Comment partager le contexte généré avec Claude/Le Chat ?
- Améliorations : Faut-il ajouter des champs spécifiques (ex:
priorité,tags) aux notes ? - Automatisation : Comment déclencher les scripts (cron, manuel, autre) ?