Files
context-continuity/synthesis_context_cintinuity.md
Master 01629780f4 chore: versioning initial du systeme Context Continuity
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.
2026-06-29 11:02:22 +02:00

187 lines
7.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 dAnytype 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).
### 3. **Automatisation via Scripts Python**
- **Objectif** : Synchroniser automatiquement les contextes entre LLM et Trilium.
- **Scripts créés** :
- `init_trilium_architecture.py` : Initialise larborescence.
- `trilium_api.py` : Bibliothèque pour interagir avec lAPI 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** : Lets Encrypt (géré via DSM).
- **Docker** :
- Image : `triliumnext/notes:latest`.
- Port : `4292:8080`.
- Volume : `/volume1/docker/trilium:/home/node/trilium-data`.
---
## 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é | Lets 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 larborescence** | ⏳ 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 larborescence Trilium. |
| **Tester le workflow complet** | ⭐⭐ | Nécessite les scripts et larborescence. |
| **Automatiser la synchronisation** | ⭐ | Nécessite un cron job ou un déclencheur manuel. |
---
## Tests à Effectuer
### 1. **Test de lAPI ETAPI**
```bash
# 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.fr` dans un navigateur.
**Résultat attendu** : Accès à Trilium sans erreur SSL.
### 3. **Test des Scripts Python**
```bash
# 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.md` gé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.py`** pour créer larborescence.
- [ ] **Vérifier les IDs des dossiers** dans `trilium_folder_ids.json`.
### 2. **Tester les Scripts**
- [ ] **Tester `create_conversation.py`** avec une conversation factice.
- [ ] **Tester `generate_context.py`** pour 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.py` pour récupérer le contexte.
- [ ] **Après une session LLM** : Exécuter `create_conversation.py` pour 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** : Lets 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](https://trilium.bertha-cloud.fr)
- **Documentation ETAPI** : [http://localhost:4292/etapi/](http://localhost:4292/etapi/)
- **Docker Trilium** : [https://hub.docker.com/r/triliumnext/notes](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
1. **Validation du token ETAPI** : Confirmer que le token est bien généré et fonctionnel.
2. **Tests des scripts** : Vérifier que `init_trilium_architecture.py` crée bien larborescence.
3. **Intégration LLM** : Comment partager le contexte généré avec Claude/Le Chat ?
4. **Améliorations** : Faut-il ajouter des champs spécifiques (ex: `priorité`, `tags`) aux notes ?
5. **Automatisation** : Comment déclencher les scripts (cron, manuel, autre) ?