context-mode : garder la sortie des outils MCP hors de la fenêtre de contexte, 315 Ko ramenés à 5,4 Ko, avec une mémoire de session SQLite

Published · AI Daily — AI-assisted deep research, methodology & disclosure

mksglu/context-mode est un serveur MCP destiné aux agents de codage dont la fenêtre de contexte se remplit de sorties d'outils. Des outils en bac à sable gardent les données brutes hors du contexte ; l'exemple du README ramène 315 Ko à 5,4 Ko, soit 98 % de moins. Les événements de session sont stockés dans SQLite et, après compactage de la conversation, seule la partie pertinente est récupérée via FTS5 et BM25. Il gère 17 clients et expose 11 outils MCP. Le dépôt compte environ 27 k étoiles ; le badge du README indique ELv2, tandis que la détection de licence de GitHub renvoie « NOASSERTION ».

Le coût le plus négligé des agents de codage est la fenêtre de contexte. Le README de mksglu/context-mode le dit sans détour dès l'ouverture : chaque appel d'outil MCP déverse des données brutes dans la fenêtre de contexte. Une capture Playwright coûte 56 Ko, vingt tickets GitHub 59 Ko, un journal d'accès 45 Ko. Après 30 minutes, 40 % du contexte a disparu. Et quand l'agent compacte la conversation pour faire de la place, il oublie quels fichiers il éditait, quelles tâches étaient en cours et ce que vous avez demandé en dernier. context-mode est un serveur MCP qui s'attaque à ces problèmes ensemble. Au 13 octobre 2026, le dépôt compte environ 27 340 étoiles et 1 948 forks, est écrit en TypeScript, et a été poussé pour la dernière fois le 12 octobre.

La réponse comporte quatre volets. Le premier est l'économie de contexte : des outils en bac à sable gardent les données brutes hors de la fenêtre, et l'exemple du README fait passer 315 Ko à 5,4 Ko, soit 98 % de moins. Le deuxième est la continuité de session : chaque modification de fichier, opération git, tâche, erreur et décision de l'utilisateur est suivie dans SQLite. Au compactage, il ne remet pas ces données en bloc dans le contexte ; il indexe les événements dans FTS5 et ne récupère que le pertinent par une recherche BM25, si bien que le modèle reprend là où il s'était arrêté. Le README précise que sans --continue, les données de la session précédente sont supprimées immédiatement : chaque nouvelle session repart de zéro. Le troisième est « penser en code » : le LLM doit programmer l'analyse plutôt que de jouer au processeur de données. Pour compter les fonctions dans 50 fichiers, on n'en lit pas 50 dans le contexte ; on écrit un petit script et on n'affiche que le résultat. Le README oppose environ 700 Ko pour 47 lectures de fichiers à 3,6 Ko pour un seul ctx_execute. Le quatrième est de ne pas imposer de style : il garde les données brutes hors du contexte sans dicter la façon dont le modèle rédige sa réponse, citant un ticket de Moonshot AI sur kimi-k2.5 selon lequel des consignes de brièveté agressives peuvent dégrader les benchmarks de code et de raisonnement.

Côté outils, il expose 11 outils MCP : six outils de bac à sable (ctx_batch_execute, ctx_execute, ctx_execute_file, ctx_index, ctx_search, ctx_fetch_and_index) et cinq méta-outils (ctx_stats, ctx_doctor, ctx_upgrade, ctx_purge, ctx_insight). Dans Claude Code, il s'installe comme plugin et enregistre les hooks PreToolUse, PostToolUse, UserPromptSubmit, PreCompact, SessionStart et Stop. Le routage est automatique : le hook SessionStart injecte les consignes de routage à l'exécution et n'écrit aucun fichier dans le projet. L'installation tient en deux commandes, /plugin marketplace add mksglu/context-mode et /plugin install context-mode@context-mode, puis un redémarrage. Pour essayer d'abord, on peut n'ajouter que le MCP avec claude mcp add context-mode -- npx -y context-mode, mais sans hooks il n'y a pas de routage automatique et le modèle ne le préférera pas forcément. Les commandes slash comprennent ctx-stats pour les économies, ctx-doctor pour le diagnostic, ctx-index et ctx-search pour la base de connaissances locale et ctx-purge pour supprimer définitivement le contenu indexé.

L'étendue des plateformes est une autre particularité. Le README dit prendre en charge 17 clients, regroupés par complexité d'installation : les plateformes à hooks reçoivent un routage automatique, les autres exigent la copie unique d'un fichier de consignes. Outre Claude Code, la documentation couvre Gemini CLI, VS Code Copilot, JetBrains Copilot, Copilot CLI, OpenCode, KiloCode et d'autres, la plupart demandant Node.js 22.5 ou plus récent, ou Bun. OpenCode et KiloCode n'ont pas de vrai hook SessionStart ; le projet utilise un hook expérimental de transformation du prompt système en remplacement, et le hook chat.message à la place du UserPromptSubmit manquant. Par ailleurs, ctx_insight ouvre un tableau de bord Insight hébergé pour l'analyse organisationnelle d'équipes d'ingénierie assistées par l'IA, une porte d'entrée vers un service hébergé à côté de l'outil local.

La licence mérite un avertissement à part. Le badge du README indique ELv2, l'Elastic License 2.0, alors que la détection de GitHub renvoie NOASSERTION, ce qui signifie qu'elle n'a pas été reconnue comme licence SPDX standard. ELv2 est une licence à code source disponible, différente des licences open source comme MIT ou Apache-2.0, qui limite par exemple la fourniture du logiciel comme service hébergé. Si vous comptez l'utiliser dans un produit d'entreprise ou un service externe, lisez d'abord vous-même le fichier LICENSE du dépôt.

Notre lecture : le projet vise une douleur réelle et coûteuse, avec une logique d'ingénierie claire : garder les données brutes hors du contexte, rendre les événements de session interrogeables et faire écrire des scripts au modèle plutôt que lui faire lire des données. Restez toutefois mesuré. Premièrement, 98 % et 315 Ko vers 5,4 Ko sont des chiffres d'exemple du README ; l'économie réelle dépend de vos sorties d'outils et de vos habitudes, mesurez-la sur vos propres tâches avec ctx_stats. Deuxièmement, il s'appuie sur les hooks pour imposer le routage, et sur les plateformes sans hooks l'effet dépend de la discipline du modèle. Troisièmement, les données de session vont dans un SQLite local : pour du code ou des journaux sensibles, sachez où elles résident, quelle est la durée de conservation et ce que fait ctx_purge. Comparez consommation de contexte et qualité d'exécution avec et sans l'outil sur une vraie tâche de taille moyenne avant de l'étendre à une équipe.

Sources

FAQ

Quel problème context-mode résout-il ?

Le README distingue quatre faces : la sortie des outils déverse des données brutes dans le contexte (une capture Playwright coûte 56 Ko, vingt tickets GitHub 59 Ko, un journal d'accès 45 Ko, et après 30 minutes 40 % du contexte a disparu) ; le compactage fait oublier à l'agent fichiers et tâches ; les modèles calculent au lieu d'écrire des scripts ; et l'outil ne doit pas dicter le style de rédaction. Il répond à chacune.

Comment assure-t-il la continuité après compactage ?

Chaque modification de fichier, opération git, tâche, erreur et décision de l'utilisateur est suivie dans SQLite. Au compactage, il ne remet pas ces données en bloc dans le contexte : il indexe les événements dans FTS5 et ne récupère que le pertinent via une recherche BM25. Le README précise que sans --continue, les données de la session précédente sont supprimées immédiatement.

Que savoir sur l'installation et la licence ?

Dans Claude Code : /plugin marketplace add mksglu/context-mode puis /plugin install context-mode@context-mode, ou seulement le MCP avec claude mcp add context-mode -- npx -y context-mode. La plupart des plateformes demandent Node.js 22.5 ou plus. Le badge du README indique ELv2 alors que GitHub détecte NOASSERTION : lisez le fichier LICENSE avant tout usage commercial.