Skip to main content

Kontextweitergabe für deinen Agent

Hier erfährst du, wie du die Kontextweitergabe mit deinem Copilot agent verwendest.

Informationen zur Kontextweitergabe

GitHub Copilot Extensions-Instanzen können mithilfe der Kontextweitergabe auf bestimmte Kontextinformationen zugreifen. Die Kontextweitergabe ermöglicht Agents das Empfangen relevanter Details zur aktuellen Datei von Benutzenden sowie ausgewählten Texten und Repositorys. Die Kontextweitergabe erfolgt automatisch, wenn du mit einer Erweiterung interagierst, erfordert jedoch die explizite Autorisierung über GitHub App-Berechtigungen für die Verwendung in allen Organisationsrepositorys.

Verschiedene Clients wie GitHub Copilot Chat in Visual Studio Code, Visual Studio und GitHub bieten Kontext über verschiedene Verweistypen. IDEs senden beispielsweise Informationen wie Dateiinhalte und Auswahlen, während Copilot Chat in GitHub die aktuelle URL für die angezeigte Seite enthält.

Voraussetzungen

Bevor Sie Ihren Copilot agent für die Kommunikation mit GitHub konfigurieren, sollten Sie verstehen, wie Ihr Copilot agent mit der Copilot-Plattform kommuniziert. Weitere Informationen findest du unter Konfigurieren Ihres Copilot-Agents für die Kommunikation mit der Copilot-Plattform.

Grundlegendes zur Kontextweitergabe

Durch die Kontextweitergabe können Agents Informationen zum aktiven Arbeitsbereich der Benutzenden empfangen. Dein Agent empfängt von Servern gesendete Ereignisse (Server-sent Events, SSEs), die eine Liste der Nachrichten der Benutzenden sowie Verweise auf die aktuelle Umgebung der Benutzenden umfassen. Je nach Client werden verschiedene Kontexttypen bereitgestellt.

Die folgende Tabelle zeigt die Verweistypen, die basierend auf dem verwendeten Client oder der verwendeten IDE an GitHub Copilot Extensions-Instanzen weitergegeben werden.

Client oder IDEclient.fileclient.selectiongithub.repositorygithub.current-urlZusätzliche Kontexte
Visual Studio CodeJaJaJaNeinRepositorybesitzer und Branch
Visual StudioJaJaJaNeinRepositorybesitzer und Branch
GitHub.comNoNeinJaJaRepositoryinformationen und andere GitHub-Ressourcen
GitHub MobileNoNr.NeinJaNicht zutreffend

Verweistypen für Copilot Chat in IDEs

Die folgenden Verweistypen können über eine IDE an deinen Agent weitergegeben werden:

  • client.file: Stellt den vollständigen Inhalt der aktuell aktiven Datei in der IDE dar
  • client.selection: Stellt den ausgewählten Textteil dar, den die Benutzenden in der aktiven Datei hervorgehoben haben
  • github.repository: Stellt Informationen zum aktiven Repository bereit

Verweistypen für Copilot Chat in GitHub

Die folgenden Verweistypen können über GitHub an deinen Agent weitergegeben werden:

  • github.current-url: Stellt die URL der aktuellen GitHub-Seite dar, die die Benutzenden anzeigen
  • github.repository: Stellt Informationen zum aktiven Repository bereit

Beispielverweise

Der folgende Code enthält ein Beispielobjekt für 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": ""
    }
}

Der folgende Code enthält ein Beispielobjekt für 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": ""
    }
}

Der folgende Code enthält ein Beispielobjekt für 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": ""
    }
}

Der folgende Code enthält ein Beispielobjekt für 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": ""
    }
}

Einrichten der Kontextweitergabe

Zum Aktivieren der Kontextweitergabe über einen IDE-Client muss die Berechtigung Copilot Editor Context für deinen Agent konfiguriert werden. Diese Berechtigung steuert nur den Zugriff für die Verweistypen client.file und client.selection. Benutzende, die den Agent installieren und verwenden, werden deutlich darüber informiert, dass der Agent Lesezugriff auf Copilot Editor Context hat. Dies schließt Inhalte wie die aktive Datei und die aktuelle Auswahl ein.

Copilot Editor Context hat keine Auswirkungen auf github.current-url und github.repository. Diese Verweistypen basieren auf der Autorisierungsfilterung, um sicherzustellen, dass Agents von Drittanbietern nur Verweise erhalten, auf die sie Zugriff haben. Weitere Informationen zum Verwalten der Privatsphäre von github.current-url und github.repository findest du unter Kontrolle über die Privatsphäre.

Führe diese Schritte aus, um die erforderlichen Berechtigungen für die Kontextweitergabe über IDEs an deinen Agent festzulegen:

  1. Klicke auf GitHub in der oberen rechten Ecke einer beliebigen Seite auf dein Profilfoto.
  2. Navigieren Sie zu den Einstellungen für Ihr Konto.
    • Klicken Sie bei einer App, die zu einem persönlichen Konto gehört, auf Einstellungen.
    • Für eine App im Besitz einer Organisation:
      1. Klicke Sie auf Ihre Organisationen.
      2. Klicke dann rechts neben der Organisation auf Einstellungen.
  3. Klicke auf der linken Seitenleiste auf Entwicklereinstellungen.
  4. Klicke auf der linken Randleiste auf GitHub Apps .
  5. Klicke in der Liste der GitHub Apps auf die GitHub App, die du für die Kontextweitergabe konfigurieren möchtest.
  6. Wähle im Navigationsmenü links die Option Permissions & events aus.
  7. Wähle unter Account Permissions die Zugriffsberechtigung Read-only für Copilot Editor Context aus.

Kontrollmechanismen für den Datenschutz

In Fällen, in denen du bestimmte Kontextdetails nicht für den Agent freigeben möchtest, kannst du Verweistypen auf verschiedene Arten redigieren und entfernen.

Chat in IDEs

  • Wenn ein Agent nicht über die Lesezugriffsberechtigung für Copilot Editor Context verfügt, werden alle client.*-Verweise entfernt.
  • Wenn ein Agent keinen Lesezugriff auf ein Repository hat, werden alle client.*-Verweise entfernt, und der github.repository-Verweis wird redigiert.

Note

Visual Studio und Visual Studio Code bieten eine Option zum Ausschließen von Inhalten aus der aktuellen Datei. Die client.*-Verweistypen werden entfernt, wenn die Benutzenden Inhalte aus der aktuellen Datei ausgeschlossen haben.

Chat in GitHub

  • Wenn ein Agent keinen Lesezugriff auf das Repository hat, das der aktuellen GitHub-URL zugeordnet ist, werden die github.current-url- und github.repository-Verweise redigiert.
  • Wenn Repositoryinformationen nicht aus der aktuellen GitHub-URL extrahiert werden können, wird github.current-url redigiert.

Redigierte Verweise

Wenn ein Verweis aufgrund unzureichender Berechtigungen redigiert wird, wird er durch einen Platzhalter ersetzt, der den Typ der ausgeschlossenen Informationen angibt. Im folgenden Beispiel weist das Feld type darauf hin, dass der Verweis redigiert wurde, und das Feld data.type gibt den ursprünglichen Verweistyp an.

{
    "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
}

Kontextausschlüsse

Um vertrauliche Informationen zu schützen, wird die Kontextweitergabe an Agents in bestimmten Szenarios automatisch verhindert. Wenn eine Organisation Kontextausschlussregeln für Copilot festgelegt hat, werden Dateien, die unter diese Regeln fallen, nicht in den Kontext einbezogen, der an Agents weitergegeben wird.

Weitere Informationen zu Inhaltsausschlussregeln findest du unter Ausschließen von Inhalten von GitHub Copilot.

Große Dateien

Dateien, die die vom Client festgelegte Größenbeschränkung überschreiten, werden nicht gesendet. Der Verweis umfasst Metadaten, die angeben, dass die Datei zu groß für die Verarbeitung war.

Ausgeblendete Dateien

Dateien, die mit einem Punkt beginnen (z. B. .env und .config), werden standardmäßig ausgeschlossen, um die unbeabsichtigte Freigabe vertraulicher Konfigurationen zu verhindern. In VS Code kannst du Dateien oder Verzeichnisse in einer .copilotignore-Datei angeben, um zu verhindern, dass sie an Copilot-Agents gesendet werden. Dieser clientseitige Mechanismus bietet eine differenzierte Kontrolle darüber, welche Dateien ausgeschlossen werden.