Skip to main content

Kontextweitergabe für deinen Agent

Copilot-Erweiterungen-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 App-Berechtigungen für die Verwendung in allen Organisationsrepositorys.

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

Bevor du deinen Copilot-Agent so konfigurierst, dass dieser mit kommuniziert, musst du die Kommunikation deines Copilot-Agents mit der Copilot-Plattform nachvollziehen. Weitere Informationen findest du unter Konfigurieren Ihres Copilot-Agents für die Kommunikation mit der Copilot-Plattform.

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 Copilot-Erweiterungen-Instanzen weitergegeben werden.

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
  • .repository: Stellt Informationen zum aktiven Repository bereit

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

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

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://.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://.com/example-user/example-repository",
        "display_icon": "",
        "display_url": ""
    }
}

Der folgende Code enthält ein Beispielobjekt für .repository:

{
    // The reference type.
    "type": ".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 .repository.
    "is_implicit": false,
    "metadata": {
        "display_name": "https://.com/example-user/example-repository",
        "display_icon": "",
        "display_url": ""
    }
}

Der folgende Code enthält ein Beispielobjekt für .current-url:

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

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 .current-url und .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 .current-url und .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 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 Apps .
  5. Klicke in der Liste der Apps auf die 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.

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.

  • 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 .repository-Verweis wird redigiert.

Hinweis

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.

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

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": ".redacted",
            "data": {
                "type": ".current-url"
            },
            "id": "example-id",
            "is_implicit": true,
            "metadata": {
                "display_name": "",
                "display_icon": "",
                "display_url": ""
            }
        }
    ],
    "copilot_confirmations": null
}

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

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.

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.