Ă 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 IDE | client.file | client.selection | github.repository | github.current-url | Contextes supplémentaires |
---|---|---|---|---|---|
Visual Studio Code | Oui | Oui | Oui | Non | Propriétaire et branche du référentiel |
Visual Studio | Oui | Oui | Oui | Non | Propriétaire et branche du référentiel |
GitHub.com | Non | Non | Oui | Oui | Informations sur le référentiel et autres ressources GitHub |
GitHub Mobile | Non | Non | Non | Oui | Non 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 :
- Dans le coin supĂ©rieur droit de nâimporte quelle page sur GitHub, cliquez sur votre photo de profil.
- 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 :
- Cliquez sur Vos organisations.
- Ă droite de lâorganisation, cliquez sur ParamĂštres.
- Dans la barre latérale gauche, cliquez sur ParamÚtres de développeur.
- Dans la barre latérale à gauche, cliquez sur GitHub Apps .
- Dans la liste de GitHub Apps, cliquez sur le GitHub App que vous souhaitez configurer pour le passage de contexte.
- Dans le menu de navigation de gauche, sélectionnez Autorisations et événements.
- 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érencegithub.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
etgithub.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.