Skip to main content
Skip to content

Gestion du contexte pour GitHub Copilot

Découvrez comment Copilot gérer le contexte de conversation, ce qui se passe pendant de longues sessions et comment rester en contrôle de votre fenêtre de contexte.

À propos de la fenêtre de contexte

Lorsque vous utilisez GitHub Copilot, chaque message que vous envoyez, chaque réponse de Copilot, chaque appel d’outil et son résultat, et les instructions système qui définissent Copilotle comportement sont toutes conservées dans une fenêtre de contexte. La fenêtre de contexte correspond à la quantité totale d’informations que le modèle IA peut prendre en compte à la fois lors de la génération d’une réponse.

La fenêtre de contexte a une taille fixe, mesurée en jetons, qui varie selon le modèle. Les jetons se composent généralement de mots courts, couramment utilisés et de fragments de mots multi syllabes. À mesure que votre conversation progresse, la fenêtre de contexte remplit les éléments suivants :

  • Instructions système et définitions d’outils : instructions intégrées qui indiquent Copilot comment se comporter, ainsi que les schémas de tous les outils disponibles. Celles-ci sont toujours présentes et prennent une partie fixe de la fenêtre de contexte.
  • Vos messages : chaque invite que vous envoyez.
  • Copilotréponses: Tout ce que Copilot vous répond.
  • Appels et résultats de l’outil : lors Copilot de la lecture de fichiers, exécute des commandes ou recherche votre codebase, la requête et la sortie sont ajoutées au contexte. Les résultats de l’outil peuvent être particulièrement volumineux, par exemple, si un outil lit un fichier long ou exécute une commande qui produit une sortie étendue.

Tout cela s’accumule dans la fenêtre de contexte. Dans une session longue ou complexe, la fenêtre de contexte peut se remplir.

Pourquoi la fenêtre de contexte est importante

La fenêtre de contexte permet Copilot de prendre en compte les parties précédentes d’une conversation lorsqu’elle décide de la façon de répondre à une invite. Tout ce qui se trouve dans la fenêtre de contexte est accessible à Copilot comme référence lorsqu’il fonctionne sur une tâche.

Cela signifie que dans une session très longue, Copilot peut ne pas être en mesure de conserver l’intégralité de l’historique des conversations à la fois. Copilot dispose donc de fonctionnalités de gestion de contexte qui vous permettent de poursuivre une conversation aussi longtemps que nécessaire.

Vérification de l'utilisation du contexte.

Les contrôles pour l’utilisation du contexte varient selon le client et l’interface. Par exemple:

  • Dans le Copilot CLI et le GitHub Copilot app, utilisez /context pour vérifier l’utilisation de la session en cours.
  • Dans les IDE pris en charge, recherchez un indicateur de fenêtre de contexte dans ou sous la zone de saisie du chat Copilot. Par exemple, dans Visual Studio Code, l’indicateur est un petit cercle. Dans d’autres IDEs, l’utilisation s’affiche dans la boîte de dialogue d’informations de session fournie par le Copilot Extension.

Vous souhaiterez peut-être vérifier votre utilisation du contexte lorsque :

  • Vous êtes dans une longue session et vous voulez savoir combien d’espace il reste.
  • Copilot semble oublier les parties précédentes de la conversation.
  • Vous souhaitez comprendre si le compactage s’est produit ou est susceptible de se produire bientôt. Voir Compaction.

Gestion de votre fenêtre de contexte

Vous pouvez gérer votre fenêtre de contexte en surveillant l’utilisation, en compactant les anciens messages et en contrôlant les sorties d’outils volumineuses.

Remarque

Les commandes disponibles diffèrent selon le client et la surface d’affichage.

Lorsque vous ne parvenez pas à gérer efficacement votre fenêtre de contexte par le biais des commandes et des paramètres disponibles, vous devrez peut-être envisager d’autres stratégies telles que le fractionnement de votre conversation en sessions plus petites ou la réduction de la taille des sorties d’outils en invitant Copilot à les tronquer ou à les résumer. Copilot peut également déléguer le travail aux sous-agents, qui ont des fenêtres de contexte distinctes de l’agent principal. Cela peut aider à garder le contexte de l’agent principal ciblé.

Utilisation du contexte à l’aide de la commande /context

Dans certaines surfaces, vous pouvez utiliser la /context commande barre oblique pour visualiser l’utilisation de votre fenêtre de contexte actuelle. La première ligne de la sortie montre le modèle actif et le nombre de jetons actuellement utilisés hors de la capacité totale de la fenêtre de contexte du modèle. Le reste de la sortie affiche l’utilisation des tokens, et le pourcentage de la fenêtre de contexte, pour :

  • Prompt système : le prompt système de base.
  • Instructions personnalisées : vos instructions personnalisées chargées (affichées uniquement lorsqu’elles sont présentes).
  • Outils système : définitions d’outils intégrées.
  • Outils MCP : définitions d’outils fournies par les serveurs MCP.
  • Messages : votre historique des conversations.
  • Espace libre : contexte inutilisé toujours disponible.
  • Mémoire tampon : capacité réservée à la réponse du modèle et à la marge de sécurité.

Gestion de la sortie d’un outil volumineux pour Copilot CLI

Pour empêcher une réponse d’outil unique de consommer trop de la fenêtre de contexte, la sortie de l’outil supérieure à 20 Kio est enregistrée dans un fichier temporaire par défaut. Le modèle reçoit le chemin d’accès du fichier et un aperçu au lieu de la sortie complète. Cela s’applique à tous les outils, y compris les outils fournis par les serveurs MCP.

Pour modifier la limite, définissez COPILOT_LARGE_OUTPUT_THRESHOLD_BYTES sur un nombre positif d’octets UTF-8 avant de démarrer l’interface CLI. L’augmentation de la limite laisse moins de contexte disponible pour la conversation et les appels d’outils suivants.

Compactage

Le compactage est le processus qui permet à Copilot de prendre en charge des sessions longues sans dépasser les limites de la fenêtre de contexte.

La disponibilité, le comportement et les contrôles de compactage varient selon le client et la surface. Par exemple:

  • Dans Copilot CLI et /compact, le compactage peut se produire automatiquement ou vous pouvez le déclencher avec GitHub Copilot app.
  • Dans Visual Studio Code et JetBrains IDEs, vous pouvez compacter manuellement une session à l’aide du Copilot Extension.

Lorsque le compactage se produit

Les seuils exacts et le comportement de compactage varient en fonction du client et de sa configuration.

Pour le Copilot CLI, lorsque votre conversation atteint environ 80% de la capacité de la fenêtre de contexte, Copilot CLI commence automatiquement à compacter le contexte en arrière-plan. Cela laisse une mémoire tampon d’environ 20% afin que les appels d’outils puissent continuer à s’exécuter pendant que le compactage est en cours. Si le contexte se remplit à environ 95% avant que le compactage ne soit terminé, Copilot CLI s’interrompt brièvement pour attendre que ce dernier soit terminé avant de continuer.

Dans le Copilot CLI et le GitHub Copilot app, vous pouvez déclencher manuellement un compactage à tout moment en entrant la commande /compact. Cela est utile si vous êtes sur le point de commencer une nouvelle phase de travail et que vous souhaitez libérer de l’espace de contexte de manière proactive. Appuyez sur Échap pour annuler un compactage manuel si vous changez d’avis.

Où se produit le compactage

Le compactage est disponible dans la plupart des clients pris en charge, notamment Copilot CLI, GitHub Copilot app, Copilot cloud agent, Visual Studio Code, Visual Studio, JetBrains IDEs, et Eclipse, mais pas dans l’IDE Xcode.

Ce que fait le compactage

Lorsque le compactage s’exécute, Copilot:

  1. Prend un instantané de l’historique des conversations actuelles.
  2. Envoie la conversation complète au modèle IA avec une invite spéciale qui lui demande de générer un résumé structuré. Le résumé capture les objectifs de la conversation, ce qui a été fait, les détails techniques clés, les fichiers importants et les étapes suivantes planifiées.
  3. Remplace l’ancien historique des conversations par le résumé, ainsi que les instructions utilisateur d’origine et l’état actuel des plans ou listes de to-do.
  4. Garde tous les messages ajoutés pendant que le compactage s'exécutait en arrière-plan.

Le résultat est que l’historique des conversations est compressé dans un résumé beaucoup plus petit, libérant la majorité de la fenêtre de contexte pour le nouveau travail. Copilot utilise ce résumé pour maintenir la continuité , il sait ce qui a été discuté, ce qui a été décidé et ce qu’il faut faire ensuite, même si les messages d’origine ont été remplacés.

Ce que le compactage ne conserve pas

Le compactage est un processus de synthèse, donc certains détails sont inévitablement perdus. Le résumé capture les points clés, mais des détails précis, tels que la formulation exacte de chaque message, la sortie complète de chaque commande ou les décisions mineures prises au début d’une longue conversation, peuvent ne pas être incluses. Si vous avez besoin Copilot de rappeler un détail très spécifique de beaucoup plus tôt dans la session, il se peut qu’il ne dispose pas de ces informations après le compactage.

Vous ne pouvez pas annuler un compactage terminé.

Ce qui se passerait sans compactage

Une fois la fenêtre de contexte remplie, sans compactage, Copilot il faudrait revenir à la simple suppression des anciens messages de l’historique des conversations, c’est-à-dire les supprimer sans aucun résumé ni enregistrement. Cela signifierait perdre brusquement le contexte, sans aucun moyen de Copilot savoir ce qui était dans les messages supprimés. Le compactage évite cela en remplaçant l’historique par un résumé intelligent plutôt que de le supprimer.

Checkpoints

Un point de contrôle peut être un résumé enregistré généré par compactage, un point de restauration pour les modifications de fichier et/ou un point à partir duquel vous pouvez fork une conversation. Il s’agit de fonctionnalités distinctes, et leur disponibilité et leurs actions varient selon le client et la surface.

Tout au long du reste de cet article, un checkpoint fait référence à un résumé de compactage enregistré, tel que les fichiers numérotés et intitulés créés dans le Copilot CLI.

Quand les points de contrôle sont utiles

  • Examen de ce qui s’est passé : après une longue session avec plusieurs compactages, les phases antérieures de la conversation ne sont plus dans le contexte actif. Les points de contrôle vous permettent de revenir sur ce que Copilot a fait lors de chaque compactage.
  • Vérification de la continuité : si vous souhaitez vérifier que Copilotle résumé a correctement capturé votre travail antérieur avant de continuer, vous pouvez passer en revue le point de contrôle le plus récent.
  • Confusion liée au débogage : s'il Copilot semble avoir oublié une décision ou s'il va dans une direction qui contredit le travail précédent, la vérification des points de contrôle peut révéler ce qui a été conservé pendant le compactage et ce qui pourrait avoir été résumé différemment de ce que vous aviez imaginé.

Remarque

Dans la plupart des clients, y compris le Copilot CLI, les résumés de points de contrôle sont créés automatiquement. Vous n’avez pas besoin de les gérer , ils sont là si vous en avez besoin. Pour la plupart des sessions, vous n’aurez pas besoin d’examiner les points de contrôle du tout.

Affichage des points de contrôle pour Copilot CLI

Pour afficher tous les points de contrôle dans votre session active, entrez :

Copilot prompt
/session checkpoints

Cela répertorie chaque point de contrôle avec son numéro et son titre :

Checkpoint History (3 total):
  3. Refactoring authentication module
  2. Implementing user dashboard
  1. Initial planning and setup

Utilisez le numéro de point de contrôle pour afficher le contenu complet de n’importe quel point de contrôle. Par exemple, pour afficher le point de contrôle 2, entrez :

Copilot prompt
/session checkpoints 2

Utilisation de sessions longues

Le compactage automatique vous permet de travailler sans interruption dans une session de longue durée, sans vous soucier d’atteindre les limites de la fenêtre de contexte. Il y a des moments où cela est très utile, et d’autres fois quand vous préférerez peut-être démarrer une nouvelle session.

Quand de longues sessions sont utiles

Les sessions longues fonctionnent bien quand :

  • Vous travaillez sur une tâche multiphase, telle que la création d’une fonctionnalité qui nécessite la génération d’une structure, l’implémentation, le test, puis la création d’un pull request.
  • Vous effectuez une itération sur un problème et souhaitez Copilot conserver le contexte de ce qui a été essayé et ce qui n’a pas fonctionné.
  • Vous effectuez un travail exploratoire dans une base de code et développez une compréhension partagée avec Copilot au fil du temps.

Quand démarrer une nouvelle session

Le démarrage d’une nouvelle session est préférable lorsque :

  • Vous passez à une tâche non liée. Copilot n’a pas besoin du contexte de votre travail précédent, et une fenêtre de contexte propre signifie plus d’espace pour la nouvelle tâche.
  • La conversation a traversé de nombreuses compactions et vous avez l'impression que du contexte important se perd dans le processus de synthèse.
  • Vous souhaitez repartir de zéro, par exemple, si le travail est allé dans une mauvaise direction et que vous préférez recommencer plutôt que d’essayer Copilot d'harmoniser les décisions antérieures avec une nouvelle approche.

Dans certains clients et surfaces, vous pouvez reprendre une session précédente pour continuer avec son contexte de conversation existant au lieu de recommencer. Les méthodes de reprise et la disponibilité des points de contrôle varient selon le client et l’interface.