Skip to main content

Passage de contexte pour votre agent

Découvrez comment utiliser le passage de contexte avec vos Copilot agent.

À propos du passage de contexte

GitHub Copilot Extensions peut accéder à certaines informations contextuelles à l’aide du passage de contexte. Le passage de contexte permet aux agents de recevoir des détails pertinents sur le fichier actuel d’un utilisateur, le texte sélectionné et le référentiel. Cela se produit automatiquement lorsque vous interagissez avec une extension, mais nécessite votre autorisation explicite via les autorisations GitHub App pour une utilisation dans tous les référentiels appartenant à l’organisation.

Différents clients, tels que GitHub Copilot Chat dans Visual Studio Code, Visual Studio et GitHub, fournissent un contexte via différents types de référence. Par exemple, les IDE envoient des informations telles que le contenu des fichiers et les sélections, tandis que Copilot Chat in GitHub inclut l’URL actuelle de la page consultée.

Prérequis

Avant de configurer votre Copilot agent pour communiquer avec GitHub, vous devez comprendre comment votre Copilot agent communique avec la plateforme Copilot. Consultez Configuration de votre agent Copilot pour communiquer avec la plateforme Copilot.

Compréhension du passage de contexte

Le passage de contexte permet aux agents de recevoir des informations sur l’espace de travail actif de l’utilisateur. Votre agent reçoit des événements envoyés par le serveur (SSE) qui contiennent une liste de messages de l’utilisateur ainsi que des références à l’environnement actuel de l’utilisateur. Selon le client, différents types de contexte sont fournis.

Le tableau suivant présente les types de référence qui sont transmis à GitHub Copilot Extensions en fonction du client ou de l’IDE que vous utilisez.

Client ou IDEclient.fileclient.selectiongithub.repositorygithub.current-urlContextes supplémentaires
Visual Studio CodeOuiOuiOuiNonPropriétaire et branche du référentiel
Visual StudioOuiOuiOuiNonPropriétaire et branche du référentiel
GitHub.comNonNonOuiOuiInformations sur le référentiel et autres ressources GitHub

Types de référence pour Copilot Chat dans les IDE

Les types de référence suivants peuvent être transmis à votre agent à partir d’un IDE :

  • client.file : représente le contenu complet du fichier actuellement actif dans l’IDE.
  • client.selection : représente la portion de texte sélectionnée que l’utilisateur a mise en surbrillance dans le fichier actif.
  • github.repository : fournit des informations sur le référentiel actif.

Types de référence pour Copilot Chat in GitHub

Les types de référence suivants peuvent être transmis à votre agent depuis GitHub :

  • github.current-url : représente l’URL de la page GitHub actuelle que l’utilisateur consulte.
  • github.repository : fournit des informations sur le référentiel actif.

Exemples de références

Le code suivant montre un exemple d’objet pour client.file :

{
    // The reference type.
    "type": "client.file",
    "data": {
        // The full content of the active file. 
        "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
        "language": "plaintext"
    },
    "id": "relative-path/to/file",
    // `is_implicit` indicates whether the reference was automatically provided by the client (true) or manually attached by the user (false).
    "is_implicit": true,
    "metadata": {
        "display_name": "https://github.com/example-user/example-repository",
        "display_icon": "",
        "display_url": ""
    }
}

Le code suivant montre un exemple d’objet pour client.selection :

{
    // The reference type.
    "type": "client.selection",
    "data": {
        // The currently selected portion of text.
        "content": "<current selection>",
        "end": {
            "col": 80,
            "line": 10
        },
        "start": {
            "col": 0,
            "line": 0
        }
    },
    "id": "relative-path/to/file",
    // `is_implicit` indicates whether the reference was automatically provided by the client (true) or manually attached by the user (false).
    "is_implicit": true,
    "metadata": {
        "display_name": "https://github.com/example-user/example-repository",
        "display_icon": "",
        "display_url": ""
    }
}

Le code suivant montre un exemple d’objet pour github.repository :

{
    // The reference type.
    "type": "github.repository",
    "data": {
        "type": "repository",
        "id": "abc-123",
        "name": "example-repository",
        "ownerLogin": "example-user",
        "ownerType": "",
        "readmePath": "",
        "description": "",
        "commitOID": "",
        "ref": "",
        "refInfo": {
            "name": "",
            "type": ""
        },
        "visibility": "",
        "languages": null
    },
    "id": "example-user/example-repository",
    // `is_implicit` is always false for github.repository.
    "is_implicit": false,
    "metadata": {
        "display_name": "https://github.com/example-user/example-repository",
        "display_icon": "",
        "display_url": ""
    }
}

Le code suivant montre un exemple d’objet pour github.current-url :

{
    // The reference type.
    "type": "github.current-url",
    "data": {
        // The GitHub URL the user was on while chatting with the agent.
        "url": "https://github.com/example-user/example-repository"
    },
    "id": "https://github.com/example-user/example-repository",
    // `is_implicit` is always true for github.current-url.
    "is_implicit": true,
    "metadata": {
        "display_name": "https://github.com/example-user/example-repository",
        "display_icon": "",
        "display_url": ""
    }
}

Configuration du passage de contexte

Pour permettre le passage de contexte via un client IDE, l’autorisation Contexte de l’éditeur Copilot doit être configurée pour votre agent. Cette autorisation contrôle uniquement l’accès aux types de référence client.file et client.selection. Les utilisateurs qui installent et utilisent l’agent seront clairement informés que l’agent dispose d’un accès en lecture au Contexte de l’éditeur Copilot qui inclut des contenus tels que le fichier actif et la sélection actuelle.

github.current-url et github.repository ne sont pas affectés par le Contexte de l’éditeur Copilot. Ces types de référence s’appuient sur le filtrage des autorisations pour garantir que les agents tiers reçoivent uniquement les références auxquelles ils ont accès. Pour plus d’informations sur la gestion de la confidentialité de github.current-url et github.repository, consultez Contrôles de confidentialité.

Suivez ces étapes pour définir les autorisations nécessaires au passage de contexte des IDE à votre agent :

  1. Dans le coin supérieur droit de n’importe quelle page sur GitHub, cliquez sur votre photo de profil.
  2. Accédez aux paramètres de votre compte.
    • Pour une application appartenant à un compte personnel, cliquez sur Paramètres.
    • Pour une application appartenant à une organisation :
      1. Cliquez sur Vos organisations.
      2. À droite de l’organisation, cliquez sur Paramètres.
  3. Dans la barre latérale gauche, cliquez sur Paramètres de développeur.
  4. Dans la barre latérale à gauche, cliquez sur GitHub Apps .
  5. Dans la liste de GitHub Apps, cliquez sur le GitHub App que vous souhaitez configurer pour le passage de contexte.
  6. Dans le menu de navigation de gauche, sélectionnez Autorisations et événements.
  7. Sous Autorisations de compte, sélectionnez l’accès En lecture seule pour Contexte de l’éditeur Copilot.

Contrôles de confidentialité

Dans les cas où vous ne souhaitez pas partager certains détails du contexte avec l’agent, vous pouvez masquer et supprimer les types de référence de plusieurs façons.

Conversation dans les IDE

  • Si un agent ne dispose pas de l’autorisation d’accès en lecture au Contexte de l’éditeur Copilot, toutes les références client.* sont supprimées.
  • Si un agent n’a pas d’accès en lecture à un référentiel, toutes les références client.* sont supprimées et la référence github.repository est masquée.

Note

Visual Studio et Visual Studio Code offrent la possibilité d’exclure du contenu du fichier actuel. Les types de référence client.* sont supprimés si l’utilisateur a exclu du contenu du fichier actuel.

Conversation dans GitHub

  • Si un agent n’a pas d’accès en lecture au référentiel associé à l’URL GitHub actuelle, les références github.current-url et github.repository sont masquées.
  • Si les informations du référentiel ne peuvent pas être extraites de l’URL GitHub actuelle, github.current-url est masqué.

Références masquées

Lorsqu’une référence est masquée en raison d’autorisations insuffisantes, elle est remplacée par un espace réservé indiquant le type d’informations qui a été exclu. Dans l’exemple suivant, le champ type indique que la référence a été masquée et le champ data.type révèle le type de référence d’origine.

{
    "role": "user",
    "content": "Current Date and Time (UTC): 2024-10-22 00:43:14\nCurrent User's Login: monalisa\n",
    "name": "_session",
    "copilot_references": [
        {
            "type": "github.redacted",
            "data": {
                "type": "github.current-url"
            },
            "id": "example-id",
            "is_implicit": true,
            "metadata": {
                "display_name": "",
                "display_icon": "",
                "display_url": ""
            }
        }
    ],
    "copilot_confirmations": null
}

Exclusions de contexte

Afin de protéger les informations sensibles, certains scénarios empêchent automatiquement le passage de contexte aux agents. Si une organisation a défini des règles d’exclusion de contenu pour Copilot, les fichiers concernés par ces règles ne seront pas inclus dans le contexte transmis aux agents.

Pour plus d’informations sur les règles d’exclusion de contenu, consultez Exclusion de contenu de GitHub Copilot.

Des grands fichiers

Les fichiers dépassant la taille limite définie par le client ne seront pas envoyés. La référence inclura des métadonnées indiquant que le fichier était trop volumineux pour être traité.

Fichiers masqués

Les fichiers commençant par un point, tels que .env et .config, sont exclus par défaut pour empêcher le partage involontaire de configurations sensibles. Dans VS Code, vous pouvez spécifier des fichiers ou des répertoires dans un fichier .copilotignore pour empêcher leur envoi aux agents Copilot. Ce mécanisme côté client offre un contrôle granulaire sur les fichiers à exclure.