187 lines
7.9 KiB
Markdown
187 lines
7.9 KiB
Markdown
|
|
# 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).
|
|||
|
|
|
|||
|
|
### 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).
|
|||
|
|
- **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é | 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**
|
|||
|
|
```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 l’arborescence.
|
|||
|
|
- [ ] **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** : 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](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 l’arborescence.
|
|||
|
|
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) ?
|