Files
g9-migration/PROJET-SECOND-CERVEAU.md
Effi c246427cf5 Phase 4 : kit G9 (scripts + compose) + Gitea T4.4 backend Postgres
- compose/gitea : SQLite -> Postgres (source = paquet App Center DSM, gitea_db 13 repos/3 users), image épinglée 1.27.3, push-to-create
- scripts/07a-migrate-gitea.sh : export pg_dump (MVCC, .25 lecture seule) + tar/ssh (sshd DSM refuse rsync/scp) + manifestes sha256
- scripts/03b-secrets.sh : secrets gitea ajoutés
- journal.md : entrées Phase 4
2026-10-11 07:45:00 +02:00

487 lines
32 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.
# Projet — Second Cerveau & Inventaire des Données Numériques
**Date** : 05/10/2026
**Auteur** : Jean-Henry Foltzenlogel (Folzo)
**Réseau** : `192.168.1.0/24`
**Statut global** : 🟡 **Cahier des charges rédigé** — réflexion terminée, architecture cible posée. **Aucune implémentation** : l'infra est en pleine (re)création (`DOSSIER-RECREATION.md` v2) et ce projet démarre **après** les fondations.
**Document** : **vivant** — versionné, mis à jour à chaque étape. Chaque section porte son statut (✅ / 🟡 / ⬜).
> **Nature du document** : c'est le **cahier des charges + plan** du projet « Second Cerveau & Inventaire ». Il succède à la réflexion de l'échange du 05/10/2026. Il **ne duplique pas** les specs hardware (→ snapshot `ETAT-DE-LART-2026-09-30.md`) ni l'architecture d'infra (→ `DOSSIER-RECREATION.md` v2). En cas de conflit sur un fait matériel, c'est le **snapshot** qui fait foi ; pour l'architecture d'infra, c'est **`DOSSIER-RECREATION.md`** ; pour **ce projet** (second cerveau, inventaire, analyse de valeur), c'est **ce document** qui fait foi.
---
## Sommaire
- [Résumé exécutif](#résumé-exécutif)
- [S1 — Besoin & périmètre](#s1--besoin--périmètre)
- [S2 — Les 9 exigences du second cerveau](#s2--les-9-exigences-du-second-cerveau)
- [S3 — Sources réelles](#s3--sources-réelles)
- [S4 — Architecture](#s4--architecture)
- [S5 — MVP (Second Cerveau Tier A de bout en bout)](#s5--mvp-second-cerveau-tier-a-de-bout-en-bout)
- [S6 — Roadmap & phases](#s6--roadmap--phases)
- [S7 — Décisions ouvertes](#s7--décisions-ouvertes)
- [S8 — Risques](#s8--risques)
- [S9 — Lien avec l'infrastructure](#s9--lien-avec-linfrastructure)
- [S10 — Montée en compétence](#s10--montée-en-compétence)
- [Annexe A — Critères d'acceptance](#annexe-a--critères-dacceptance)
- [Annexe B — Glossaire](#annexe-b--glossaire)
- [Changelog](#changelog)
---
## Résumé exécutif
**Le problème** : ma donnée numérique est **dispersée** (plusieurs machines, protocoles, 50 To+), et surtout ma **connaissance** (notes, écrits IA, mails, fichiers précieux) est **éparpillée et oubliable** — chaque IA (OpenFox, OpenCode, Hermes) a sa propre mémoire, oublie ce qu'on lui a dit, et on se répète.
**La vision** : un **second cerveau de famille** — une mémoire **partagée, versionnée, lisible par l'humain et puisée d'elle-même par l'IA** — plus un **inventaire** du reste (où est quoi, doublons, corruption) pour prendre conscience de l'ensemble de la donnée.
**La décision clé** : le second cerveau n'est **ni** un outil de notes, **ni** un RAG opaque. C'est un **modèle à deux couches** :
| Couche | Nature | Consommateur |
|--------|--------|--------------|
| **1 — La connaissance** | Fichiers **Markdown**, versionnés git | **Toi** (Obsidian) + source de vérité |
| **2 — L'index** | Embeddings + index vectoriel (**cache jetable**) | **L'IA** (recherche rapide via MCP) |
> **Principe fondateur** : **la couche 1 est la vérité, la couche 2 est jetable** (reconstruisible à tout moment depuis la couche 1). Un seul artefact de connaissance (le vault md), deux consommateurs (toi + l'IA). C'est ce qui découple le **besoin** de l'**outil** et garantit de ne pas changer dans 5 mois.
**Le périmètre se scinde en deux tiers** :
| | **Tier A — le cœur** (analyse IA profonde) | **Tier B — le bulk** (analyse cheap, sans IA) |
|---|---|---|
| **Contenu** | ~10 Go fichiers précieux + **mails** + **notes** + **écrits IA** | Photos, films, archives, le reste |
| **Traitement** | LLM profond → fiches md structurées + index vectoriel | Pass 1 seul : métadonnées, doublons, corruption |
| **Volume** | Petit, borné | Tens de To |
| **Valeur** | **C'est ici que réside l'intérêt** | Juste savoir où est quoi / doublons / corrompu |
**Le succès** (mesurable) : poser une question naturelle à l'IA sur mes données et obtenir une réponse précise avec références (machine + chemin) ; l'IA **récupère d'elle-même** le contexte quand un sujet revient ; la famille (femme, enfants) bénéficie de la même aide, **automatisée et non intrusive**, en alternative souveraine aux GAFAM et aux IA cloud.
---
## S1 — Besoin & périmètre
> **Statut** : ✅ Validé (05/10/2026)
### 1.1 Le besoin
**Objectif principal** : prendre conscience de l'ensemble de ma donnée numérique dispersée, identifier la **valeur** de chaque donnée (et du corpus global), et faire de ma **connaissance** un actif **navigable** — par moi et par l'IA.
**Ce que l'utilisateur veut en fin de compte** :
- **Une vue d'ensemble** : où est quoi, combien, en double, en déshérence, corrompu.
- **Une évaluation de valeur** : ce qui est précieux, sensible, obsolète, dupliqué.
- **Un second cerveau** : un index consultable par un LLM local, pour qu'une IA puisse **se repérer d'elle-même** dans l'ensemble de mes données (recherche sémantique, notes, références précises) **sans que je réexplique**.
- **Une assistante quotidienne** : « ma petite assistante Effi » qui m'aide au quotidien sur n'importe quel sujet, en puisant dans le cerveau + l'inventaire.
- **Un outil de famille** : utilisable par ma femme (surtout mails / organisation) et mes enfants, **automatisé et non intrusif**, en **alternative souveraine** aux GAFAM et aux IA cloud (ChatGPT, Claude) qui ciblent la jeune génération.
### 1.2 Périmètre & contraintes
- **Périmètre** : plusieurs machines/serveurs (PC, NAS, serveurs) sur le réseau local ; protocoles multiples (SMB, SSH/SFTP, local, WebDAV) ; tous types de fichiers.
- **Volume réel inconnu** (c'est le but de l'inventaire) — estimé ~50 To+ (voir S3).
- **100% local / auto-hébergé** : aucune donnée ne quitte la maison (données personnelles, sensibles).
- **IA locale** (Ollama / llama.cpp sur PC IA) — pas d'API cloud.
- **Économique en temps** : approche par **passes / entonnoir** (le moins cher d'abord).
- **Incrémental** : l'inventaire se maintient dans le temps (re-scan des seuls nouveaux/modifiés).
### 1.3 Le reframe Tier A / Tier B (décision clé de périmètre)
> Le périmètre n'est **pas** « analyser 50 To ». C'est **deux choses distinctes** :
| | **Tier A — le cœur** | **Tier B — le bulk** |
|---|---|---|
| **Contenu** | ~10 Go fichiers précieux (Google Drive + Synology) + **mails** + **notes** + **écrits IA** (OpenFox, OpenCode, Hermes) | Photos, films, archives, le reste |
| **Traitement** | **LLM profond** → fiche structurée (résumé, valeur, sensibilité, tags) + index vectoriel | **Pass 1 seul** : métadonnées, doublons, corruption. **Zéro IA.** |
| **Volume** | Petit, borné | Tens de To |
| **Valeur** | **C'est ici que réside l'intérêt principal** | Juste savoir où est quoi / doublons / corrompu |
**Conséquence majeure** : le coût IA devient **trivial**. L'analyse profonde ne touche que ~10 Go + mails + notes + écrits — très tractable sur 2× RTX 3060. Les 50 To ne touchent **que** le Pass 1 (mécanique, pas cher). L'entonnoir fonctionne : son extrémité étroite (IA profonde) est **petite et curée**, pas « 5% de 10M fichiers ».
> **Le vrai nom de la valeur** : ce n'est pas juste un « inventaire ». C'est un **index de connaissance personnelle** — rendre ma pensée, mes projets, mes écrits (surtout l'historique IA, trace de tout ce que j'ai fait) **navigables et interrogeables** par un LLM. C'est un **second cerveau**, pas un catalogue de disques.
### 1.4 Ce que l'utilisateur ne veut PAS
- **Pas** d'Immich (désorganise les fichiers) → penche pour **Moments + Nextcloud** (→ S6 Phase 4, Outillage).
- **Pas** de déplacement des données brutes : le projet **produit** des notes/fiches, il ne déplace pas les sources.
- **Pas** de suppression / dédoublonnage d'actions au MVP : **lecture seule**, identification uniquement.
- **Pas** de nouveau stack RAG : s'appuyer sur les briques existantes (voir S9).
---
## S2 — Les 9 exigences du second cerveau
> **Statut** : ✅ Validé (05/10/2026) — **cœur du document**. Ce tableau est le **cahier des charges** du second cerveau. La **Phase 4 (Outillage, S6)** n'aura qu'à le cocher outil par outil.
> **Principe** : les **besoins** (ce qu'il doit faire) sont découplés des **outils** (avec quoi). Le modèle 2 couches (S4) est **outil-agnostique** : il ne dit ni Gitea ni Nextcloud ni Obsidian. On pourra changer de host, d'éditeur, de vector DB **sans toucher au contenu** (markdown universel + index reconstruisible).
| # | Exigence | Ce que ça veut dire concrètement |
|---|----------|-----------------------------------|
| 1 | **Persistance cross-harnais** | Ce qui est dit avec OpenFox doit être lisible par OpenCode et Hermes. Une mémoire **partagée**, pas 3 silos. |
| 2 | **Récupération autonome** | L'IA sait *qu'elle doit* chercher et le fait *d'elle-même* quand le sujet revient. Pas « l'utilisateur colle le contexte ». |
| 3 | **Lisible + éditable par l'humain** | Tu peux ouvrir, lire, éditer, lier. Pas une boîte noire. |
| 4 | **Versionné / non destructif** | Historique, pas de perte, on revient en arrière. |
| 5 | **Structuré et navigable** | Organisé (liens, tags, arborescence), pas un tas. |
| 6 | **Scalable à une vie + la famille** | De quelques Mo aujourd'hui à des dizaines de Go, et **partitionnable par personne** plus tard (moi, femme, enfants). |
| 7 | **100% local / souverain** | Rien ne quitte la maison. |
| 8 | **Rapide pour l'IA** | Recherche sémantique instantanée, pas un grep sur 10 Go. |
| 9 | **Ingestion ouverte** | N'importe quelle source (fichiers, mails, notes, sessions IA, futurs) peut **alimenter** le cerveau. Système ouvert. |
**Ces 9 lignes sont le cahier des charges du second cerveau.** C'est ce qui rend le choix des outils (S6 Phase 4) définitif et évite de « changer dans 5 mois ».
---
## S3 — Sources réelles
> **Statut** : 🟡 **Partiellement vérifié** — les sources Tier A du PC IA sont localisées (05/10/2026, via SSH `jeuxpc`). Les écrits IA sur `effi-server` sont **à localiser** (pas de clé SSH depuis l'environnement de rédaction).
### 3.1 Sources Tier A (analyse IA profonde)
| Source | Emplacement | Nature / taille | Statut |
|--------|-------------|-----------------|--------|
| **Fichiers précieux** | Google Drive → copie chaude sur NAS (Cloud Sync Synology) → **SMB** | ~10 Go | ✅ localisé (SMB) |
| **Fichiers précieux** | Synology (xpenology / G9) | ~10 Go | ✅ localisé (SMB) |
| **Mails** | **Gmail** + **Hotmail** (20-30 ans) via **Thunderbird** sur PC | 2 boîtes, volumineux | ✅ localisé (Thunderbird) — **point difficile** (dégafamisation vs attachement) |
| **Notes** | `~/Documents/Notes/CAS IA` (PC IA) + Joplin (`~/Documents/Joplin/`) | md | ✅ localisé (PC IA) |
| **Écrits IA — OpenCode sessions** | `~/.local/share/opencode/opencode.db` (PC IA) | **SQLite, 218 Mo** | ✅ localisé — **extracteur dédié requis** |
| **Écrits IA — OpenCode projets** | `~/Documents/OpenCode/Projets` (PC IA) | git repo | ✅ localisé |
| **Écrits IA — OpenFox** | `effi-server` (J5040, .1) | à localiser | ⚠️ **à vérifier** |
| **Écrits IA — Hermes** | `effi-server` (J5040, .1) | à localiser | ⚠️ **à vérifier** |
> **Note OpenCode** : les sessions sont dans un **SQLite** (`opencode.db`, 218 Mo), pas des fichiers texte. Un **extracteur dédié** (ou l'API OpenCode) est requis pour les rendre indexables. C'est une brique du MVP (C1.1).
### 3.2 Sources Tier B (analyse cheap, sans IA)
| Source | Emplacement | Contenu |
|--------|-------------|---------|
| **Photos** | xpenology (USB1 15 To, USB2 5,5 To), 218play, Laptop | Photos famille (dont 2008 sur disque USB HS) |
| **Films / séries** | xpenology, 218play, Laptop | Médias |
| **Archives** | divers | Dumps, ISO, backups |
| **Le reste** | G9 (RAID1 2 To + USB 20 To), Laptop (2 To + 1 To), Freebox (2 To RAID5) | Divers |
> **Volume estimé total** : ~50 To+ (USB1 15 To + USB2 5,5 To + USB3 3,6 To + 218play 4 To + Freebox 2 To + Laptop 3 To + G9 20 To). **À re-dimensionner précisément en Phase 0** (C0.1).
### 3.3 Sources exclues / hors périmètre
- **Disque USB 3,6 To HS** (xpenology, secteurs défectueux) : hors périmètre — l'utilisateur a **218play** + un **disque 4 To 3,5" retrouvé** (à brancher sur le PC IA) comme copies. Voir snapshot `ETAT-DE-LART-2026-10-06.md` §2.
- **NVR Reolink** (surveillance) : hors périmètre (enregistreurs autonomes).
---
## S4 — Architecture
> **Statut** : ✅ Validé (05/10/2026) — modèle 2 couches + découpage des rôles + mécanisme MCP.
### 4.1 Le modèle 2 couches (colonne vertébrale)
```
┌─────────────────────────────────────────────────────────┐
│ COUCHE 1 — LA CONNAISSANCE (source de vérité) │
│ Fichiers Markdown, lisibles, versionnés git │
│ = le vault │
│ → TOI tu lis/édites ici (Obsidian) │
├─────────────────────────────────────────────────────────┤
│ COUCHE 2 — L'INDEX (dérivé, JETABLE) │
│ Embeddings + index vectoriel (sqlite-vec / Qdrant) │
│ → L'IA recherche ici (rapidité, via MCP) │
│ → se RECONSTRUIT à tout moment depuis la couche 1 │
└─────────────────────────────────────────────────────────┘
```
**Le principe qui débloque tout** : **la couche 1 est la vérité, la couche 2 est jetable.**
- La connaissance = des **fichiers Markdown dans un repo git** : à la fois le vault (tu lis, édites, liens `[[wikilinks]]`) **et** la source que l'IA indexe. **Un seul artefact, deux consommateurs.**
- L'index vectoriel n'est qu'un **cache**. S'il est corrompu/obsolète → on le **reconstruit** depuis les md. Il n'est **jamais** la source de vérité.
- Ça élimine le dilemme « rapide pour l'IA **ou** consultable par moi » : c'est rapide **et** consultable, parce que la vitesse vient de l'index et la vérité vient des md.
### 4.2 Pourquoi pas « juste RAG » ni « juste Obsidian »
- **Pas un RAG pur** (chunking + embeddings seul) : tu ne peux **pas le lire**. Tes données précieuses sont de la **connaissance que tu veux aussi relire et faire vivre**, pas juste « interroger ». Un RAG opaque, tu ne peux pas l'éditer, le lier, le versionner. Les md, si.
- **Pas « juste Obsidian, sans index »** : sur un corpus qui grandit, la recherche sémantique (« où est-ce que j'ai parlé de X ? ») devient lente/floue en plein texte. L'index vectoriel rend la consultation LLM **rapide et fiable** (exigence #8).
### 4.3 Le découpage des rôles (outil-agnostique)
> Le second cerveau n'est **ni** Gitea, **ni** Obsidian, **ni** Nextcloud Notes. C'est **les fichiers markdown + l'index**. Les outils sont juste des **rôles** autour :
| Rôle | Exigences servies | Candidate(s) | Note |
|------|-------------------|--------------|------|
| **Store** (la vérité) | 1,3,4,5,6,7 | **Repo git de markdown** | Gitea = *host canonique* du repo. Le store = les fichiers, **pas** Gitea. |
| **Viewer / éditeur** | 3 | **Obsidian** (pointe sur le dossier md) | C'est un *front-end*, **pas** le store. |
| **Index + retrieval** | 2,8 | embeddings + sqlite-vec / Qdrant + **MCP** | Le cache jetable. |
| **Ingestion** | 9 | extracteurs (OpenCode.db, mails, notes, fichiers) | Les portes d'entrée. |
**Réponses aux doutes** :
- **Gitea** : bon choix pour le **versioning** (host du repo) ; apprendre git rentre dans le pilier « monter en compétence ». Mais ne pas le sur-vendre : Gitea est juste *où le repo vit*. Le cerveau, c'est les md. Si on change de host, les md ne bougent pas.
- **Nextcloud Notes** : c'est une **app de notes simple**, pas un store de connaissance. Il ne fait **pas** le versioning (#4), la structure liée (#5), ni l'échelle d'une vie (#6). Comme *store* du second cerveau, **mauvais fit**. Comme *viewer* d'un sous-ensemble, OK. → **constat à noter pour la Phase 4 (Outillage, S6)**, pas une décision maintenant.
### 4.4 Le mécanisme de récupération autonome (exigence #2)
> C'est le mécanisme qui transforme « l'IA oublie et on répète » en « l'IA se souvient parce qu'elle va chercher ».
1. L'index (vector + SQL) est exposé via **MCP** (un outil « second cerveau »).
2. Chaque harnais (OpenFox, OpenCode, Hermes) est configuré avec cet outil + une instruction : *« tu as accès au second cerveau de l'utilisateur ; quand un sujet revient, cherche-le avant de répondre. »*
3. En cours de conversation, l'IA détecte « on parle du projet X » → appelle l'outil → récupère les fiches → intègre le contexte **sans que tu réexpliques**.
> ⚠️ **Dépendance** : ça exige que chaque harnais **supporte MCP** et soit **prompté** pour l'utiliser. OpenFox : oui. OpenCode : oui. Hermes : **à vérifier**.
### 4.5 Le flux global (sources → cerveau)
```
Sources brutes (immuables, in situ)
├── Fichiers précieux (Google Drive/SMB + Synology) ─┐
├── Mails (Thunderbird) ├─→ [INGESTION] ─→ [ANALYSE LLM]
├── Notes / écrits IA (OpenCode.db, notes, md) ─┘ │
└── (fichiers précieux : fiches, PAS de déplacement) ──────────────────── ▼
Vault md
(Gitea canon + G9 working)
│
┌─────────┴─────────┐
▼ ▼
Index vectoriel Toi (Obsidian)
(cache, jetable)
│
▼
Consultation LLM (MCP)
→ réponse + références
```
Le vault contient **la connaissance distillée** (fiches, résumés, tags, index des mails) — **pas** les 10 Go bruts. Les bruts sont **référencés par chemin** (machine + path) dans les fiches.
### 4.6 Synthèse des briques
| Brique | Rôle | Où |
|--------|------|-----|
| **Scanner** (Tier B) | métadonnées + doublons + corruption, pas d'IA | sur **G9** (là où seront les données) |
| **Extracteurs** | sessions OpenCode (SQLite→texte), mails, notes, écrits | **PC IA** |
| **Analyse** (Tier A) | LLM profond → fiches md structurées | **PC IA** (2×3060) |
| **Vault** | md versionné git = source de vérité, lisible + éditable | **Gitea** (canon) + **G9** (working) |
| **Index** | embeddings + sqlite-vec/Qdrant, jetable, reconstruisible | **G9** (ou PC IA) |
| **Consultation** | requête NLP → réponse + références, exposé en **MCP** | **PC IA** |
---
## S5 — MVP (Second Cerveau Tier A de bout en bout)
> **Statut** : 🟡 **Cahier des charges posé** — à implémenter **après** les fondations infra (`DOSSIER-RECREATION.md` Phase 0).
**Définition** : le MVP = la plus petite version qui livre la **valeur centrale** : *poser une question naturelle à un LLM sur mes données précieuses et obtenir une réponse précise avec références (machine + chemin), avec récupération autonome.*
**Le MVP = le Tier A de bout en bout** (le scanner Tier B est une **piste séparée**, pas dans le MVP) :
1. **Ingestion** des sources Tier A (fichiers précieux, mails, notes, écrits IA) → store local.
2. **Analyse profonde** : chaque doc → fiche structurée LLM (résumé, valeur, sensibilité, tags).
3. **Vault** : md versionné git (Gitea canon + G9 working).
4. **Index** : embeddings + index vectoriel (sqlite-vec ou Qdrant), reconstruisible.
5. **Consultation** : requête NLP → réponse + références, exposée en **MCP** avec récupération autonome.
### 5.1 Critères d'acceptance du MVP
Voir **Annexe A** (C1.1 → C1.13 + transverses CT.1 → CT.4).
---
## S6 — Roadmap & phases
> **Statut** : 🟡 **Cadrée** — l'ordre est posé ; le démarrage est **conditionné aux fondations infra**.
| Phase | Contenu | IA ? | Dépendance |
|-------|---------|------|------------|
| **0 — Dimensionnement** | Estimer le volume réel par source (rclone size / échantillonnage), identifier les sources prioritaires. **Dérisk tout le reste.** | non | infra (re)créée |
| **1 — MVP (Second Cerveau Tier A)** | Ingestion → analyse → vault → index → consultation MCP (de bout en bout) | oui (2×3060) | Phase 0 |
| **2 — Scanner (Tier B)** | Pass 1 métadonnées + dédoublonnage par taille + corruption + stats + dashboard + incrémental | **non** | Phase 0 |
| **3 — Famille & assistante** | Partitionnement par personne ; 2ᵉ cerveau de la femme (automatisé, non intrusif) ; protection enfants ; assistante Effi | oui | Phases 1+2 |
| **4 — Outillage** | Choix des outils (notes, viewer, vector DB, host) en cochant les 9 exigences (S2) | — | Phase 1 (pour valider le besoin) |
> **Ordre de valeur** : le **MVP (Phase 1)** est la priorité car il livre la valeur centrale (second cerveau). Le **Scanner (Phase 2)** est utile mais secondaire. La **Famille (Phase 3)** est long terme. L'**outillage (Phase 4)** se décide **après** avoir validé le besoin sur soi.
> ⚠️ **Timing** : ce projet démarre **après** que l'infra est en place (migration xpenology→G9, backup 3-2-1 fonctionnel, disque J5040 allégé). Les données sont **en flux** pendant la (re)création ; un inventaire fait trop tôt serait obsolète. Le re-scan post-migration est systématique (d'où l'incrémental).
---
## S7 — Décisions ouvertes
> **Statut** : 🟡 **À trancher** — chacune a sa liste de critères (S2). On ne tranche jamais à l'arrache.
| # | Décision | Statut | Critères / note |
|---|----------|--------|-----------------|
| D1 | **Notes** : quel outil ? (Nextcloud Notes vs Obsidian vs autre) | → **DOSSIER-SOFTWARE.md** (Partie 5) | Les 9 exigences (S2) guident le choix. Nextcloud Notes = mauvais fit comme *store* (S4.3). |
| D2 | **Mails** : Thunderbird+MCP (validé en test) vs n8n vs autre | À évaluer | Thunderbird+MCP a marché en test (« du bricolage mais ça a marché »). n8n = alternative à étudier. |
| D3 | **Écrits IA** : localiser OpenFox/Hermes sur `effi-server` | ⚠️ **À vérifier** | Pas de clé SSH depuis l'environnement de rédaction. À faire manuellement. |
| D4 | **Store** : Gitea (host canon) confirmé ? | À valider | Bon pour le versioning ; à apprendre git (pilier 4). Le store = les md, pas Gitea. |
| D5 | **Vector DB** : sqlite-vec (simple) vs Qdrant (déjà installé) | ✅ **Tranché : Qdrant** | Qdrant (bge-m3) tourne déjà. Décision actée dans `DOSSIER-SOFTWARE.md` S4.2. |
| D6 | **Famille** : partitionnement dès le design ou post-MVP ? | Long terme | Hors MVP. Exigence #6 (S2). Déploiement progressif : moi → femme → enfants. |
| D7 | **Photos Tier B** : Moments + Nextcloud vs autre | → **DOSSIER-SOFTWARE.md** (Partie 5) | Pas d'Immich (désorganise). Le scanner (Tier B) ne dépend pas de ce choix. |
---
## S8 — Risques
> **Statut** : 🟡 **Identifiés** — matrice à évaluer en Phase 0.
| # | Risque | Prob. | Impact | Mitigation |
|---|--------|-------|--------|------------|
| 1 | **Faux négatifs au triage** (fichier précieux au nom générique) | 3 | 3 | Triage sur **contenu** (extrait/EXIF), seuils réglables, re-passe possible |
| 2 | **Volume Tier B inconnu** → passes longues | 3 | 3 | **Phase 0 dimensionnement d'abord** (C0.1) ; entonnoir (IA seulement sur Tier A) |
| 3 | **Sessions OpenCode en SQLite** (pas texte) | 2 | 2 | **Extracteur dédié** (C1.1) |
| 4 | **Harnais sans support MCP** (Hermes ?) | 3 | 3 | À vérifier ; **fallback** = lecture directe du vault md |
| 5 | **Maintenance du vault** (git) | 3 | 2 | Montée en compétence (S10) + conventions simples |
| 6 | **Non-intrusivité pour la famille** | 3 | 3 | Ingestion **automatisée**, pas de saisie manuelle |
| 7 | **Échelle** (une vie + famille) | 2 | 3 | Markdown = format universel, index **reconstruisible** |
| 8 | **Mails volumineux** (20-30 ans) | 3 | 2 | Index + triage (pas ingestion brute) ; sous-projet à part |
| 9 | **Dépendance aux fondations infra** | 4 | 4 | Démarrage **conditionné** à la (re)création (S6) ; backup 3-2-1 d'abord |
---
## S9 — Lien avec l'infrastructure
> **Statut** : ✅ **Aligné** avec `DOSSIER-RECREATION.md` v2 (architecture cible).
### 9.1 Rôle de chaque machine pour ce projet
| Machine | Rôle (infra) | Rôle (ce projet) |
|---------|--------------|------------------|
| **G9** (.25) | Cœur famille | **Truth** : vault working copy + scanner (les données) + index (option) |
| **PC IA** (.11) | IA 24/7 (2×3060) | **Calcul** : extracteurs + analyse LLM + consultation MCP ; **4 To backup** local des données précieuses |
| **Gitea** (sur G9) | Versioning | **Host canonique** du vault |
| **effi-server / J5040** (.1) | Edge / IA | Source des écrits IA (OpenFox, Hermes) — **à localiser** |
| **218play** (.26) | Offsite (3ᵉ copie) | Backup du vault + données précieuses |
### 9.2 Règle de placement des données
- **G9 = vérité canonique** (cœur famille).
- **PC IA = calcul** (2×3060, Ollama) + **4 To 3,5" retrouvé = copie de backup locale** des données précieuses.
- **Stage** les ~10 Go du Tier A sur le NVMe du PC IA pour l'analyse (10 Go = négligeable) ou lecture réseau.
- **Gitea = host canon** du vault ; **G9 = working copy**.
### 9.3 S'appuyer sur les briques existantes (pas de nouveau stack)
> L'infra a **déjà** : Qdrant (bge-m3), Ollama (28 modèles, embeddings), mcpo (orchestrateur MCP), Dify, n8n. Ce projet **expose** le second cerveau via **MCP** vers ces briques existantes. **Pas de nouveau stack RAG.**
> ⚠️ **Note** : Qdrant a été mis en place pour le projet Effi ; OpenWebUI ne marche plus très bien ; RAGFlow et Dify servent de **maquette** pour la présentation. L'infra a grandi de manière empirique — **l'ensemble des applications à garder/rejeter sera revu dans la Phase 4 (Outillage, S6)**, une fois les données traitées. Ce projet **ne préjuge pas** de ce choix.
---
## S10 — Montée en compétence
> **Statut** : ✅ **Cadré** — l'infra + ce projet comme terrain d'apprentissage (pilier 4).
| Compétence | Service / action dans ce projet | Phase |
|------------|---------------------------------|-------|
| **Git** | Vault versionné (Gitea), conventions de commit, branches | 1 |
| **MCP** | Exposition du second cerveau en outil MCP, configuration des harnais | 1 |
| **RAG** | Index vectoriel, embeddings, recherche sémantique, chunking | 1 |
| **SQLite / SQL** | Base de l'inventaire, requêtes, sqlite-vec | 1, 2 |
| **OCR** | Tesseract / kreuzberg (PDF scannés) | 1 |
| **Dédoublonnage** | Hash exact, pHash, pré-filtre par taille | 2 |
| **Ingestion** | Extracteurs (SQLite→texte, mails, notes) | 1 |
| **Orchestration** | Passes, files de priorité, quotas | 1 |
> **Lien CAS** : ce projet est un **portfolio réel** du CAS (IA & transformation digitale) — la culture de la donnée appliquée (second cerveau, source de vérité, 3-2-1) + la méthode (état de l'art → besoins → architecture → plan).
---
## Annexe A — Critères d'acceptance
> **Statut** : ✅ **Posés** (05/10/2026) — 31 critères, par phase.
### Phase 0 — Dimensionnement
| ID | Critère |
|----|---------|
| C0.1 | Volume réel par source (nb fichiers + Go), table des volumes |
| C0.2 | Sources **Tier A** identifiées et localisées (fichiers précieux, mails, notes, écrits IA) |
| C0.3 | Sources **Tier B** identifiées (photos, films, archives) |
### Phase 1 — MVP (Second Cerveau Tier A de bout en bout)
**Ingestion**
| ID | Critère |
|----|---------|
| C1.1 | Extracteur sessions OpenCode (`opencode.db` SQLite → texte) |
| C1.2 | Ingestion des notes (md) |
| C1.3 | Ingestion des écrits IA (OpenFox, Hermes) — à localiser sur effi-server |
| C1.4 | Ingestion fichiers précieux (Google Drive/SMB + Synology) → fiches |
| C1.5 | Ingestion mails (Thunderbird) → index + triage |
**Analyse**
| ID | Critère |
|----|---------|
| C1.6 | Analyse LLM → fiches md structurées (résumé, valeur, sensibilité, tags) |
**Vault (couche 1 — vérité)**
| ID | Critère |
|----|---------|
| C1.7 | Vault markdown versionné git (Gitea canon + G9 working copy) |
| C1.8 | Fiches liées (wikilinks, tags, arborescence) |
**Index (couche 2 — jetable)**
| ID | Critère |
|----|---------|
| C1.9 | Embeddings + index vectoriel (sqlite-vec **ou** Qdrant) |
| C1.10 | Index **reconstruisible** à tout moment depuis le vault |
**Consultation**
| ID | Critère |
|----|---------|
| C1.11 | Requête NLP → réponse + références précises (machine + chemin) |
| C1.12 | Exposition **MCP** (outil « second cerveau ») |
| C1.13 | **Récupération autonome** : le harnais appelle l'outil seul quand le sujet revient |
### Phase 2 — Scanner (Tier B, sans IA)
| ID | Critère |
|----|---------|
| C2.1 | Config N sources (SMB, SFTP, local), identifiants chiffrés |
| C2.2 | Pass 1 métadonnées (chemin, taille, mtime, type) |
| C2.3 | Dédoublonnage (pré-filtre taille, hash exact **uniquement** sur doublons) |
| C2.4 | Détection corruption (photos : EXIF/validité ; films : intégrité) |
| C2.5 | Stats volumétriques (par source / type / doublons) |
| C2.6 | Dashboard minimal (volumes, doublons, top dossiers) |
| C2.7 | Re-scan incrémental (mtime + size) |
### Phase 3 — Famille & assistante (long terme)
| ID | Critère |
|----|---------|
| C3.1 | **Partitionnement par personne** (moi → femme → enfants) |
| C3.2 | Second cerveau de la **femme** : ingestion **automatisée, non intrusive** (mails, organisation) |
| C3.3 | **Protection enfants** : alternative souveraine aux GAFAM / IA cloud (anti-dépendance) |
| C3.4 | **Assistante Effi** quotidienne : répond à tout sujet en puisant dans le cerveau + l'inventaire |
### Transverses (toutes phases)
| ID | Critère |
|----|---------|
| CT.1 | **100% local** — aucune donnée ne quitte la maison |
| CT.2 | **Non destructif / versionné** — historique, pas de perte |
| CT.3 | **Lisible + éditable par l'humain** — pas de boîte noire |
| CT.4 | **Index = cache** — jamais la source de vérité |
---
## Annexe B — Glossaire
| Terme | Définition |
|-------|------------|
| **Second cerveau** | Mémoire partagée, versionnée, lisible par l'humain et puisée d'elle-même par l'IA |
| **Vault** | La couche 1 : fichiers markdown versionnés git (source de vérité) |
| **Index** | La couche 2 : embeddings + index vectoriel (cache jetable, reconstruisible) |
| **Tier A** | Le cœur : ~10 Go précieux + mails + notes + écrits IA (analyse IA profonde) |
| **Tier B** | Le bulk : photos, films, archives (analyse cheap, sans IA) |
| **MCP** | Model Context Protocol — expose le second cerveau comme outil pour les harnais IA |
| **Harnais** | L'outil IA (OpenFox, OpenCode, Hermes) qui consomme le second cerveau |
| **RAG** | Retrieval-Augmented Generation |
| **pHash** | Hash perceptuel (images) pour détection de doublons approximatifs |
| **Gitea** | Host git canonique du vault (versioning) |
| **Dégafamisation** | Remplacer les services GAFAM par des équivalents locaux |
| **CAS** | Certificat d'Aptitude Spéciale (IA & transformation digitale) |
---
## Changelog
| Date | Version | Changement |
|------|---------|------------|
| 06/10/2026 | **v1.1** | **Correction IP** : `effi-server` / J5040 standardisé sur l'IP **cible .1** (post-rebuild) au lieu de l'ancienne .27 — S3.1 (écrits IA OpenFox/Hermes) + S9.1 (rôle machine). Le projet démarre **après** la (re)création où J5040 = .1. |
| 05/10/2026 | **v1.0** | **Création du dossier** — synthèse de la réflexion du 05/10/2026. Périmètre Tier A/B, **9 exigences du second cerveau** (S2), sources réelles vérifiées (S3), **architecture 2 couches** (S4), MVP Tier A (S5), roadmap (S6), décisions ouvertes (S7), risques (S8), lien infra (S9), montée en compétence (S10), **31 critères d'acceptance** (Annexe A). |