---
name: memoire-long-terme
description: Gestion de la mémoire long terme OpenCode (page IA_MEMOIRE_LONGTERME) : procédure de découpage en sous-pages quand l'alerte 20 Ko se déclenche, consolidation manuelle, vérifications.
---

# Skill: memoire-long-terme

# Mémoire long terme — maintenance & découpage en sous-pages

## Quand utiliser ce skill

- **Alerte ntfy « Mémoire LT : page > 20 Ko » reçue** (topic `vps-admin`, priorité `high`, tags `rotating_light/warning`) → exécuter la procédure de découpage ci-dessous.
- Consolidation manuelle demandée (→ `cron-memory-consolidation.sh --run`).
- Vérification de l'état de la mémoire LT (tailles, index, requêtes).

## Rappel : architecture

- Source de vérité niveau L : page `80_CONFIG/IA_MEMOIRE_LONGTERME` (SilverBullet), sections par domaine.
- Remplie par `~/.opencode/bin/cron-memory-consolidation.sh` : 0 token, déterministe, 1er vendredi du mois (cron), dédup par empreinte (`.promoted.fingerprints`).
- Niveau S : `~/.config/opencode/memory/memory-common.md` (profil + `[INDEX_LT]`) + `memory-<agent>.md`.
- Alertes : mail + ntfy — `tada` = consolidation active ; `rotating_light/warning` `high` = page LT > `LT_SIZE_WARN` (défaut 20 Ko).

## Procédure de découpage en sous-pages (alerte 20 Ko)

Objectif : **la page mère ne doit plus grossir**. Chaque domaine devient une sous-page ; la mère devient un index léger (< 2 Ko). Les entrées restent des lignes de liste (toujours indexées par `index.items()`), les tags et liens `[[01_JOURNAL/...]]` sont conservés.

### 1. Préparation

- Vérifier taille et nombre d'entrées par section : `GET 80_CONFIG%2FIA_MEMOIRE_LONGTERME%2Emd` via API `/.fs` (skill `silverbullet-api`).
- **Sauvegarder** la page : `curl GET ... > /tmp/opencode/lt-backup-$(date +%F).md` (ne jamais découper sans sauvegarde).
- Lire `memory-common.md` → `[INDEX_LT]` (liste des domaines à couvrir).

### 2. Créer les sous-pages par domaine

Pour chaque section `## <Domaine>` de la page mère, créer `80_CONFIG/IA_MEMOIRE_LONGTERME/<Domaine>.md` (écriture via PUT API `/.fs`) :

| Section mère | Sous-page (slug) |
|---|---|
| `## Sécurité VPS` | `IA_MEMOIRE_LONGTERME/SecuriteVPS` |
| `## OpenCode & mémoire` | `IA_MEMOIRE_LONGTERME/OpenCode-Memoire` |
| `## Skills & agents` | `IA_MEMOIRE_LONGTERME/Skills-Agents` |
| `## SilverBullet / Lua` | `IA_MEMOIRE_LONGTERME/SilverBullet-Lua` |
| `## Scripts VPS` | `IA_MEMOIRE_LONGTERME/Scripts-VPS` |
| `## Projets` | `IA_MEMOIRE_LONGTERME/Projets` |

Chaque sous-page : frontmatter (`tags: [ia, memoire, configuration]`, `type: documentation`) + titre `# <Domaine>` + les entrées de la section (lignes `- [[01_JOURNAL/YYYY/YYYY-MM-DD]] - #tag : texte (source : ...)`, format inchangé).

### 3. Transformer la page mère en index

- Conserver frontmatter + en-tête, ajouter « Entrées par domaine ».
- Remplacer chaque section par un lien : `- [[80_CONFIG/IA_MEMOIRE_LONGTERME/<Domaine>]]`.
- La mère doit rester **< 2 Ko**.

### 4. Mettre à jour l'index mémoire

Dans `memory-common.md`, section `[INDEX_LT]` : pointer chaque domaine vers sa sous-page (ex. `Sécurité VPS → [[80_CONFIG/IA_MEMOIRE_LONGTERME/SecuriteVPS]]`). La règle de consultation reste : requête ciblée sur `t.page == "<sous-page>"`, jamais lecture entière.

### 5. Adapter le script de consolidation

Dans `cron-memory-consolidation.sh`, le MAPPING python (les entrées vont désormais dans les sous-pages) :

```python
MAPPING = {
    "memory-vps-admin.md":   ("80_CONFIG/IA_MEMOIRE_LONGTERME/OpenCode-Memoire.md", "TOP", "#VPS-OpenCode"),
    "memory-pkm-manager.md": ("80_CONFIG/IA_MEMOIRE_LONGTERME/SilverBullet-Lua.md", "TOP", "#VPS-PKM"),
}
```

- `TOP` = insérer après le titre `# ...` (au lieu d'une section `## ...`) — adapter le code d'insertion du python pour gérer `section == "TOP"`.
- Remplacer `LT_URL` par l'URL de la sous-page cible (ou boucler sur les cibles du MAPPING).
- **Ne pas toucher** à `.promoted.fingerprints` : la dédup reste valide (empreinte = texte, indépendant de la page).
- `LT_SIZE_WARN` s'applique alors aux sous-pages : seuil à re-calibrer (ex. 20 Ko par sous-page, ou 50 Ko).

### 6. Validation

- **Requêtes SLIQ** : `index.items()` sur une sous-page renvoie bien les entrées (cf. skill `historique-projet`, section « Consultation de la mémoire long terme »).
- **`--dry-run`** du script : aucune erreur ; promotions attendues dans la bonne sous-page.
- **`--run`** une fois : `PUT` cible 200, index `memory-common.md` mis à jour.
- Notifier Guillaume (ntfy `tada` ou résumé) que le découpage est terminé.

## Vérifications périodiques

- Taille de la page mère : doit rester < 2 Ko (index).
- Tailles des sous-pages (via listing `/.fs/` → champ `size`).
- Jauges fichiers mémoire : `memory-common.md` et `memory-<agent>.md` ≤ ~80 % de 2000 chars.
- `crontab -l` : ligne `cron-memory-consolidation.sh` présente (0 18 * * 5).
