Tout d’abord, qu’est-ce qu’une fenêtre de contexte ? Et comment cela se rapporte-t-il au codage efficace avec Cursor ? Pour prendre un peu de recul, un grand modèle de langage (LLM) est un modèle d’intelligence artificielle entraîné pour prédire et générer du texte en apprenant des motifs à partir de vastes ensembles de données. Il alimente des outils comme Cursor en comprenant votre saisie et en suggérant du code ou du texte basé sur ce qu’il a vu auparavant. Les tokens sont les entrées et sorties de ces modèles. Ce sont des fragments de texte, souvent un morceau d’un 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 prochain token basé sur ceux qui l’ont précédé. Pour voir comment un texte se tokenise, vous pouvez utiliser un tokenizer comme celui-ci. Tokenizer

Qu’est-ce que le contexte ?

Lorsque nous générons une suggestion de code dans Cursor, le « contexte » fait référence aux informations qui sont fournies au modèle (sous la forme de « tokens d’entrée ») que le modèle utilise ensuite pour prédire les informations suivantes (sous la forme de « tokens de sortie »). Il existe deux types de contexte :
  1. Le contexte d’intention définit ce que l’utilisateur veut obtenir du modèle. Par exemple, une invite système sert généralement d’instructions de haut niveau sur la façon dont l’utilisateur veut que le modèle se comporte. La plupart des « invites » effectuées dans Cursor constituent un contexte d’intention. « Changer ce bouton du bleu au vert » est un exemple d’intention déclarée ; c’est prescriptif.
  2. Le contexte d’état décrit l’état du monde actuel. Fournir à Cursor des messages d’erreur, des journaux de console, des images et des fragments de code sont des exemples de contexte lié à l’état. C’est descriptif, pas prescriptif.
Ensemble, ces deux types de contexte fonctionnent en harmonie en décrivant l’état actuel et l’état futur souhaité, permettant à Cursor de faire des suggestions de codage utiles.

Fournir du contexte dans Cursor

Plus vous pouvez fournir de contexte pertinent à un modèle, plus il sera utile. Si un contexte insuffisant est fourni dans Cursor, le modèle essaiera de résoudre le problème sans les informations pertinentes. Cela entraîne généralement :
  1. Des hallucinations où le modèle tente de faire correspondre des motifs (quand il n’y a pas de motif) causant des résultats inattendus. Cela peut arriver fréquemment pour des modèles comme claude-3.5-sonnet quand il ne reçoit pas assez de contexte.
  2. L’Agent essayant de rassembler le contexte par lui-même en recherchant dans la base de code, en lisant des fichiers et en appelant des outils. Un modèle de réflexion puissant (comme claude-3.7-sonnet) peut aller assez loin avec cette stratégie, et fournir le bon contexte initial déterminera la trajectoire.
La bonne nouvelle est que Cursor est conçu avec la conscience contextuelle au cœur de son fonctionnement et est conçu pour nécessiter une intervention minimale de la part de l’utilisateur. Cursor extrait automatiquement les parties de votre base de code que le modèle estime pertinentes, telles que le fichier actuel, les motifs sémantiquement similaires dans d’autres fichiers, et d’autres informations de votre session. Cependant, il y a beaucoup de contexte qui peut être extrait, donc spécifier manuellement le contexte que vous savez pertinent pour la tâche est un moyen utile 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 @. Ces symboles sont parfaits lorsque vous savez spécifiquement quel fichier, dossier, site web ou autre élément de contexte vous voulez inclure. Plus vous pouvez être spécifique, mieux c’est. Voici une répartition de la façon d’être plus précis avec le contexte :
SymboleExempleCas d’usageInconvénient
@code@LRUCachedFunctionVous savez quelle fonction, constante ou symbole est pertinent pour la sortie que vous générezNécessite beaucoup de connaissances de la base de code
@filecache.tsVous savez 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 dans un dossier est pertinentPeut inclure beaucoup de contexte non pertinent pour la tâche à accomplir
Context Menu

Règles

Vous devriez considérer les règles comme une mémoire à long terme à laquelle vous ou d’autres membres de votre équipe souhaitez avoir accès. Capturer le contexte spécifique au domaine, y compris les flux de travail, le formatage et autres conventions, est un excellent point de départ pour rédiger des règles. Les règles peuvent également être générées à partir de conversations existantes en utilisant /Generate Cursor Rules. Si vous avez eu une longue conversation avec beaucoup d’échanges et de sollicitations, il y a probablement des directives utiles ou des règles générales que vous pourriez vouloir réutiliser plus tard. Rules

MCP

Model Context Protocol est une couche d’extensibilité où vous pouvez donner à Cursor des capacités pour effectuer des actions et récupérer du contexte externe. Selon votre configuration de développement, vous pourriez vouloir exploiter différents types de serveurs, mais deux catégories que nous avons vues être particulièrement utiles sont :
  • Documentation interne : par exemple, Notion, Confluence, Google Docs
  • Gestion de projet : par exemple, Linear, Jira
Si vous avez des outils existants pour accéder au contexte et effectuer des actions via une API, vous pouvez construire un serveur MCP pour cela. Voici un guide court sur comment construire des serveurs MCP. MCP

Auto-collecte de contexte

Un modèle puissant que de nombreux utilisateurs adoptent consiste à laisser l’Agent écrire des outils éphémères qu’il peut ensuite exécuter pour rassembler plus de contexte. Ceci est particulièrement efficace dans les flux de travail avec intervention humaine où vous examinez le code avant qu’il ne soit exécuté. Par exemple, ajouter des instructions de débogage à votre code, l’exécuter, et laisser le modèle inspecter la sortie lui donne accès à un contexte dynamique qu’il ne pourrait pas inférer statiquement. En Python, vous pouvez faire cela en demandant à l’Agent de :
  1. Ajouter des instructions print(“debugging: …”) dans les parties pertinentes du code
  2. Exécuter le code ou les tests en utilisant le terminal
L’Agent lira la sortie du terminal et décidera quoi faire ensuite. L’idée centrale est de donner à l’Agent accès au comportement réel d’exécution, pas seulement au code statique. Self-Gathering Context

Points clés

  • Le contexte est le fondement d’un codage IA efficace, composé de l’intention (ce que vous voulez) et de l’état (ce qui existe). Fournir les deux aide Cursor à faire des prédictions précises.
  • Utilisez un contexte chirurgical avec les symboles @ (@code, @file, @folder) pour guider Cursor avec précision, plutôt que de vous fier uniquement à la collecte automatique de contexte.
  • Capturez les connaissances réutilisables dans des règles pour une réutilisation à l’échelle de l’équipe, et étendez les capacités de Cursor avec 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. Trouvez le bon équilibre pour des résultats optimaux.