Saturday, July 4, 2026
Mon dernier article montrait que 83% du coût d'un agent, c'est du contexte relu. Alors j'ai construit l'outil qui arrête de relire.

Il y a deux semaines, j'ai laissé une flotte d'agents Claude développer un repo à ma place. Résultat technique bluffant, et un constat qui m'a marqué : sur 5 milliards de tokens consommés, ~83% du coût n'était pas du code généré. C'était du contexte relu en boucle. À chaque turn, chaque agent relit l'intégralité de ce qu'il a sous les yeux.
Le pire, dans un repo C# : l'agent ouvre un fichier de 1 000 lignes pour en tirer une seule signature de méthode. Il relit le mur à chaque fois.
Alors j'ai construit l'outil qui règle ça. Il s'appelle RoselineMCP.
▸ L'idée : naviguer par structure, pas par texte
RoselineMCP est un serveur MCP en .NET qui donne à Claude, Cursor ou Copilot une vue Roslyn de ta solution C# : symboles, références, graphes d'appel, éditions chirurgicales.
Au lieu de relire le fichier source, l'agent demande la structure. Un seul appel
search_symbols renvoie la forme d'un fichier, pas son contenu.Exemple réel, tiré du repo lui-même :
Program.cs, le fichier entier → 1 154 tokensL'outline que renvoie l'outil → 125 tokens
Soit 89% de moins.
L'agent récupère les signatures et les emplacements, pas les corps de méthode, pas les using, pas le mur. Exactement ce dont il a besoin pour naviguer, et rien de plus.
▸ Pas un parser. Le compilateur.
La différence clé avec un grep ou un tree-sitter : RoselineMCP est bâti sur Roslyn, la plateforme de compilation .NET, le moteur même qui compile ton code dans Visual Studio et le SDK.
grep voit du texte.
tree-sitter voit de la structure.
Roslyn voit ton programme.
Concrètement :
find_references est exact. Il sait que le Add ici est la MÊME méthode que l'appel là-bas. Du sens, pas du string-matching.rename_symbol met à jour les vraies références à travers toute la solution, pas du texte qui ressemble.Les graphes d'appel suivent les vrais liens du compilateur. C'est ce qui rend la navigation précise et les éditions sûres.
C'est une couche fine et honnête posée sur une fondation que tu utilises déjà tous les jours.
▸ 85% de tokens en moins, mesuré, pas marketé
Je déteste les chiffres sortis d'un chapeau. Alors le benchmark tourne sur la propre source de RoselineMCP (dogfooding), balaie systématiquement 293 symboles sur 54 fichiers, et tokenise chaque sortie réelle de l'outil avec un vrai tokenizer BPE.
85% de tokens en moins, médiane par tâche
88%, pooled (pondéré par la taille)
1 220 557 tokens économisés sur l'échantillon (sur 1 381 852 en lisant les fichiers)
Détail par outil (médiane vs. lecture du fichier entier) :
find_references → 90%get_call_graph (callers) → 90%find_implementations → 88%get_symbol_info (métadonnées) → 81%search_symbols (outline de fichier) → 37%Et, c'est important, je montre aussi les cas faibles, pas seulement les beaux chiffres.
L'outline de fichier, par exemple, gagne gros sur les fichiers denses en code (
Program.cs +89%) mais atteint tout juste l'équilibre sur un fichier qui n'est que des déclarations. Une interface EST déjà juste des signatures. La règle honnête : lis directement les petits, outline les gros.De même,
get_symbol_info avec le corps de la méthode inclus ne tombe qu'à ~66%, parce que tu récupères le code que tu vas éditer. L'outil ne prétend pas remplacer la lecture du code que tu t'apprêtes à modifier en profondeur. Il économise sur la navigation et l'orientation, là où va vraiment le gaspillage.▸ Treize outils, de la structure en entrée, des tokens en moins en sortie
Neuf outils de code-intelligence par-dessus la surface de diagnostics d'origine :
Navigation (lecture seule) :
search_symbols, get_symbol_info, find_references, find_implementations, get_call_graph, get_type_hierarchy, get_symbol_at_position.Édition (diff au niveau du membre, aperçu par défaut) :
edit_member remplace un seul membre et renvoie un diff unifié plutôt que de réécrire le fichier entier ; rename_symbol renomme et met à jour toutes les références via Roslyn.Diagnostics et correctifs :
analyze_solution, list_diagnostics, apply_fixes, create_patch.Le point commun : tu émets un diff, pas une réécriture. Sur le rename, ça fait ~81% de tokens de sortie en moins.
▸ Pourquoi ça compte (et pas que pour l'économie)
Dans mon article précédent, ma conclusion était : l'avenir du dev autonome, ce ne sera pas « le meilleur modèle en boucle », mais « le bon modèle, au bon turn, avec le contexte minimal ».
RoselineMCP, c'est la partie « contexte minimal » rendue concrète pour l'écosystème .NET. Moins de contexte relu par turn, ça veut dire :
une facture de cache qui dégonfle (le vrai facteur limitant à l'échelle) ;
une fenêtre de contexte qui reste lisible plus longtemps ;
et des éditions plus sûres, parce qu'elles passent par le compilateur et pas par du remplacement de texte.
Ce n'est pas magique et je ne le vends pas comme tel. Sur certaines tâches, un grep bien ciblé fait jeu égal en tokens bruts. L'avantage de RoselineMCP là-dessus, c'est la structure et la précision (symboles résolus, références cross-projet, vrais liens d'appel), pas juste le compteur.
▸ Installation : une ligne, n'importe quel client MCP
RoselineMCP tourne comme un process stdio local que ton client MCP lance. La méthode recommandée (dnx, le « npx » de .NET) l'exécute à la demande, sans étape d'installation. Il faut juste le SDK .NET 10 :
{
"mcpServers": {
"roseline": {
"command": "dnx",
"args": ["RoselineMCP", "--yes"]
}
}
}
Vérifié avec Claude Desktop, VS Code (Copilot / MCP) et Cursor. Aussi disponible en outil global NuGet et en image Docker, et référencé dans le MCP Registry officiel.
▸ La suite
Je continue de creuser la même obsession qu'avec Koine : réduire le contexte transmis à chaque turn. RoselineMCP en est la brique .NET. Le benchmark est reproductible, tu peux le lancer sur ta propre solution et sortir TES chiffres (
dotnet run --project RoselineMCP.TokenBenchmark).Si tu bosses en C# avec un agent, je suis vraiment preneur de tes retours : sur quelles tâches tu vois le plus de gaspillage de contexte ? Et est-ce que tu mesures, ou tu ressens juste la facture monter ?
C'est open source (licence MIT) : github.com/Atypical-Consulting/RoselineMCP.