| 💾 Saved. d722711 k33g 6h ago | 1 | # Comment garder une longue session dans la fenêtre de contexte |
| 2 | |
| 3 | Ce guide montre comment empêcher une longue session de déborder du contexte du modèle. Il suppose que vous faites déjà tourner `mm` et que vous savez quel serveur sert votre modèle. |
| 4 | |
| 5 | ## Étapes |
| 6 | |
| 7 | 1. Indiquez à l'agent la taille de la fenêtre. Soit vous fixez `contextWindow` dans le YAML à la valeur avec laquelle vous avez démarré le serveur, soit vous le laissez à `0` sur llama.cpp, où l'agent lit `n_ctx` sur `/props`. La bannière affiche le résultat sous la forme `ctx: <taille> (config)` ou `ctx: <taille> (/props)`. |
| 8 | |
| 9 | 2. Activez la compression automatique : |
| 10 | |
| 11 | ```yaml |
| 12 | context: |
| 13 | enabled: true |
| 14 | threshold: 75 |
| 15 | keepLastTurns: 3 |
| 16 | ``` |
| 17 | |
| 18 | Avant chaque question, quand l'historique atteint 75 % de la fenêtre, les anciens tours sont remplacés par un résumé écrit par le modèle et les trois derniers tours de question sont conservés tels quels. |
| 19 | |
| 20 | 3. Observez le rapport. Avec `showStats: true` (la valeur par défaut), chaque compression affiche une ligne grisée : |
| 21 | |
| 22 | ``` |
| 23 | 🗜️ compressed 14 messages → 1 summary + 7 kept (18.2k → 4.1k tokens, 6.3s) |
| 24 | ``` |
| 25 | |
| 26 | ## Variantes |
| 27 | |
| 28 | - **La fenêtre reste inconnue** (Docker Model Runner ne dit rien, et `contextWindow` vaut `0`). Seul le déclencheur `maxMessages` peut se déclencher ; l'agent le signale par un avertissement au démarrage. Fixez `maxMessages` à un nombre de messages (une commande coûte deux messages) ou fixez `contextWindow`. |
| 29 | - **Compresser à la main.** Tapez `/compact` à l'invite, ou envoyez-la depuis l'éditeur en mode ACP. La commande ignore le seuil mais conserve toujours les `keepLastTurns` derniers tours, et affiche `🗜️ nothing to compact` quand rien n'est plus ancien. |
| 30 | - **Le serveur a été démarré après l'agent.** La fenêtre est re-sondée avant la première question tant qu'elle est inconnue et que la compression est activée ; pas besoin de relancer. |
| 31 | - **Votre propre prompt de résumé.** Fixez `context.prompt` pour remplacer le prompt intégré en sept sections. |
| 32 | - **Une compression qui échoue** (serveur arrêté, watchdog) laisse l'historique inchangé et affiche `[compact: failed, history kept: …]`. |
| 33 | |
| 34 | ## Voir aussi |
| 35 | |
| 36 | - Chaque clé `context.*` et sa valeur par défaut : [référence de la configuration](../reference/configuration.md) |
| 37 | - Pourquoi le résumé garde les tours récents bruts et fusionne les résumés antérieurs : [compression du contexte](../explanation/context-compression.md) |