D’abord, c’est quoi une fenêtre de contexte ? Et comment ça t’aide à coder efficacement avec Cursor ? Pour prendre un peu de recul, un large language model (LLM) est un modèle d’intelligence artificielle entraîné à prédire et à générer du texte en apprenant des schémas à partir d’énormes jeux de données. Il alimente des outils comme Cursor en comprenant ta requête et en suggérant du code ou du texte selon ce qu’il a déjà vu. Les tokens sont les entrées et les sorties de ces modèles. Ce sont des morceaux de texte, souvent un fragment de mot, qu’un LLM traite un par un. Les modèles ne lisent pas des phrases entières d’un coup ; ils prédisent le token suivant à partir de ceux qui le précèdent. Pour voir comment un texte est tokenisé, tu peux utiliser un tokenizer comme celui-ci. Tokenizer

C’est quoi le contexte ?

Quand on génère une suggestion de code dans Cursor, le « contexte » correspond aux informations fournies au modèle (sous forme de « jetons d’entrée ») que le modèle utilise ensuite pour prédire les informations suivantes (sous forme de « jetons de sortie »). Il existe deux types de contexte :
  1. Contexte d’intention définit ce que tu veux obtenir du modèle. Par exemple, un system prompt sert généralement d’instructions de haut niveau sur la façon dont tu veux que le modèle se comporte. La plupart du « prompting » effectué dans Cursor relève du contexte d’intention. « Passe ce bouton du bleu au vert » est un exemple d’intention exprimée ; c’est prescriptif.
  2. Contexte d’état décrit l’état actuel. Fournir à Cursor des messages d’erreur, des logs de console, des images et des portions de code sont des exemples de contexte lié à l’état. C’est descriptif, pas prescriptif.
Ensemble, ces deux types de contexte fonctionnent de concert en décrivant l’état actuel et l’état futur souhaité, ce qui permet à Cursor de proposer des suggestions de code utiles.

Fournir du contexte dans Cursor

Plus tu donnes de contexte pertinent à un modèle, plus il sera utile. Si le contexte fourni dans Cursor est insuffisant, le modèle va essayer de résoudre le problème sans les infos nécessaires. Ça conduit généralement à :
  1. Des hallucinations où le modèle essaie de faire du pattern matching (alors qu’il n’y a pas de pattern), ce qui provoque des résultats inattendus. Ça peut arriver souvent avec des modèles comme claude-3.5-sonnet quand on ne leur donne pas assez de contexte.
  2. L’Agent qui essaie de récupérer le contexte tout seul en cherchant dans le codebase, en lisant des fichiers et en appelant des outils. Un modèle avec de fortes capacités de raisonnement (comme claude-3.7-sonnet) peut aller assez loin avec cette stratégie, et fournir le bon contexte initial va déterminer la trajectoire.
La bonne nouvelle, c’est que Cursor est conçu avec la prise en compte du contexte au cœur du produit et vise à demander un minimum d’intervention de ta part. Cursor récupère automatiquement les parties de ton codebase que le modèle estime pertinentes, comme le fichier en cours, des motifs sémantiquement similaires dans d’autres fichiers, et d’autres infos de ta session. Cependant, il y a énormément de contexte potentiel à exploiter, donc préciser manuellement le contexte que tu sais pertinent pour la tâche est un bon moyen d’orienter les modèles dans la bonne direction.

Symbole @

La façon la plus simple de fournir un contexte explicite est d’utiliser le symbole @. C’est idéal quand tu sais précisément quel fichier, dossier, site web ou autre élément de contexte tu veux inclure. Plus tu peux être précis, mieux c’est. Voici un aperçu pour être plus chirurgical avec le contexte :
SymboleExempleCas d’usageInconvénient
@code@LRUCachedFunctionTu sais quelle fonction, constante ou quel symbole est pertinent pour la sortie généréeNécessite une très bonne connaissance de la base de code
@filecache.tsTu sais quel fichier doit être lu ou modifié, mais pas exactement où dans le fichierPeut inclure beaucoup de contexte non pertinent pour la tâche selon la taille du fichier
@folderutils/Tout ou la majorité des fichiers d’un dossier est pertinentPeut inclure beaucoup de contexte non pertinent pour la tâche
Menu contextuel

Règles

Pense aux règles comme à une mémoire à long terme à laquelle toi, et les autres membres de ton équipe, pouvez accéder. Capturer le contexte propre à ton domaine — workflows, formatage et autres conventions — est un excellent point de départ pour rédiger des règles. Tu peux aussi générer des règles à partir de conversations existantes avec la commande /Generate Cursor Rules. Si tu as eu une longue conversation avec beaucoup de prompts, il y a probablement des directives utiles ou des règles générales que tu voudras réutiliser plus tard. Règles

MCP

Le Model Context Protocol est une couche d’extensibilité qui te permet de donner à Cursor la capacité d’exécuter des actions et d’intégrer du contexte externe. Selon ta config de développement, tu peux vouloir t’appuyer sur différents types de serveurs, mais deux catégories qu’on a trouvées particulièrement utiles sont :
  • Documentation interne : p. ex. Notion, Confluence, Google Docs
  • Gestion de projet : p. ex. Linear, Jira
Si tu as déjà des outils pour accéder au contexte et effectuer des actions via une API, tu peux construire un serveur MCP pour ça. Voici un guide rapide sur la création de serveurs MCP. MCP

Auto-collecte de contexte

Un schéma puissant que beaucoup d’utilisateurs adoptent consiste à laisser l’Agent écrire de petits outils éphémères qu’il peut ensuite exécuter pour rassembler plus de contexte. C’est particulièrement efficace dans des workflows avec humain dans la boucle où tu relis le code avant son exécution. Par exemple, ajouter des instructions de débogage à ton code, l’exécuter, et laisser le modèle inspecter la sortie lui donne accès à un contexte dynamique qu’il ne pourrait pas déduire statiquement. En Python, tu peux faire ça en demandant à l’Agent de :
  1. Ajouter des print(“debugging: …”) aux endroits pertinents du code
  2. Exécuter le code ou les tests via le terminal
L’Agent lira la sortie du terminal et décidera de la suite. L’idée centrale est de donner à l’Agent accès au comportement réel à l’exécution, pas seulement au code statique. Self-Gathering Context

Points clés

  • Le contexte est la base d’un codage IA efficace, composé de l’intention (ce que tu veux) et de l’état (ce qui existe). Fournir les deux aide Cursor à produire des prédictions précises.
  • Utilise un contexte ciblé avec les @-références (@code, @file, @folder) pour guider Cursor avec précision, plutôt que de te reposer uniquement sur la collecte automatique de contexte.
  • Capture les connaissances récurrentes sous forme de règles pour qu’elles soient réutilisables par toute l’équipe, et étends les capacités de Cursor avec le Model Context Protocol pour connecter des systèmes externes.
  • Un contexte insuffisant conduit à des hallucinations ou à de l’inefficacité, tandis qu’un excès de contexte non pertinent dilue le signal. Trouve le bon équilibre pour des résultats optimaux.