Skip to main content

Passage de contexte pour votre agent

Learn how to use context passing with your Copilot agent.

À propos du passage de contexte

Extensions GitHub Copilot peut accĂ©der Ă  certaines informations contextuelles Ă  l'aide du transfert 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 à travers différents types de références. Par exemple, les IDE envoient des informations telles que le contenu des fichiers et les sélections, tandis que Copilot Chat dans GitHub inclut l'URL actuelle de la page en cours de consultation.

Prérequis

Avant de configurer votre Agent Copilot pour communiquer avec GitHub, vous devez comprendre comment votre Agent Copilot communique avec la plateforme Copilot. Consultez Configurer votre assistant GitHub Copilot pour communiquer avec la plateforme GitHub 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 à Extensions GitHub Copilot 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
GitHub MobileNonNonNonOuiNon applicable

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 dans 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.

Remarque

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.