Skip to main content

Paso de contexto para el agente

Obtén información sobre cómo usar el paso de contexto con Copilot agent.

Acerca del paso de contexto

GitHub Copilot Extensions puede acceder a cierta información contextual mediante el paso de contexto. El paso de contexto permite a los agentes recibir detalles relevantes sobre el archivo actual de un usuario, el texto seleccionado y el repositorio. Se produce automáticamente cuando interactúas con una extensión, pero requiere tu autorización explícita mediante los permisos de GitHub App para su uso en cualquier repositorio propiedad de la organización.

Los distintos clientes, como GitHub Copilot Chat en Visual Studio Code, Visual Studio y GitHub, proporcionan contexto a través de diferentes tipos de referencia. Por ejemplo, los IDE envían información como el contenido y las selecciones del archivo, mientras que Copilot Chat in GitHub incluye la dirección URL actual de la página que se está viendo.

Requisitos previos

Antes de configurar Copilot agent para comunicarse con GitHub, debe comprender cómo se comunica su Copilot agent con la plataforma de Copilot. Consulta Configuración del agente de Copilot para comunicarse con la plataforma de Copilot.

Descripción del paso de contexto

El paso de contexto permite a los agentes recibir información sobre el área de trabajo activa del usuario. El agente recibe eventos enviados por el servidor (SSE) que contienen una lista de mensajes del usuario, así como referencias al entorno actual del usuario. Dependiendo del cliente, se proporcionan distintos tipos de contexto.

En la tabla siguiente se muestran los tipos de referencia que se pasan a GitHub Copilot Extensions según el cliente o el IDE que estés usando.

Cliente o IDEclient.fileclient.selectiongithub.repositorygithub.current-urlContextos adicionales
Visual Studio CodeNoPropietario y rama del repositorio
Visual StudioNoPropietario y rama del repositorio
GitHub.comNoNoInformación del repositorio y otros recursos de GitHub

Tipos de referencia para Copilot Chat en IDE

Los siguientes tipos de referencia se pueden pasar al agente desde un IDE:

  • client.file: representa el contenido completo del archivo activo actualmente en el IDE.
  • client.selection: representa la parte seleccionada del texto resaltado por el usuario en el archivo activo.
  • github.repository: proporciona información sobre el repositorio activo.

Tipos de referencia para Copilot Chat in GitHub

Los siguientes tipos de referencia se pueden pasar al agente desde GitHub:

  • github.current-url: representa la dirección URL de la página actual de GitHub que el usuario está viendo.
  • github.repository: proporciona información sobre el repositorio activo.

Referencias de ejemplo

En el código siguiente se muestra un objeto de ejemplo para 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": ""
    }
}

En el código siguiente se muestra un objeto de ejemplo para 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": ""
    }
}

En el código siguiente se muestra un objeto de ejemplo para 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": ""
    }
}

En el código siguiente se muestra un objeto de ejemplo para 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": ""
    }
}

Configuración del paso de contexto

Para habilitar el paso de contexto a través de un cliente IDE, el permiso de contexto de editor de Copilot debe configurarse para el agente. Este permiso solo controla el acceso a los tipos de referencia client.file y client.selection. Se informarán claramente a los usuarios que instalan y usan el agente de que el agente tiene acceso de lectura al contexto del editor de Copilot que incluye contenido como el archivo activo y la selección actual.

github.current-url y github.repository no se ven afectados por el contexto del editor de Copilot. Estos tipos de referencia se basan en el filtrado de autorización para asegurarse de que los agentes de terceros solo reciben referencias a las que tienen acceso. Para obtener información sobre cómo administrar la privacidad de github.current-url y github.repository, consulta Controles de privacidad.

Sigue estos pasos para establecer los permisos necesarios para pasar el contexto de los IDE al agente:

  1. En la esquina superior derecha de cualquier página en , haga clic en su fotografía de perfil.
  2. Navega a la configuración de tu cuenta.
    • Para una aplicación propiedad de una cuenta personal, haga clic en Configuración.
    • Para una aplicación propiedad de una organización:
      1. Haga clic en Sus organizaciones.
      2. A la derecha de la organización, haga clic en Configuración.
  3. En la barra lateral izquierda, haz clic en Configuración del desarrollador.
  4. En la barra lateral de la izquierda, haga clic en GitHub Apps .
  5. En la lista de GitHub Apps, haz clic en la GitHub App que deseas configurar para pasar el contexto.
  6. En el menú de navegación de la izquierda, selecciona Permisos y eventos.
  7. En Permisos de cuenta, selecciona acceso de Solo lectura para el Contexto del editor de Copilot.

Controles de privacidad

En los casos en los que no quieras compartir determinados detalles de contexto con el agente, puedes censurar y quitar tipos de referencia de varias maneras.

Chat en IDE

  • Si un agente no tiene permiso de acceso de lectura del contexto del editor de Copilot, se quitan todas las referencias de client.*.
  • Si un agente no tiene acceso de lectura a un repositorio, se quitan todas las referencias de client.* y se difumina la referencia de github.repository.

Note

Visual Studio y Visual Studio Code proporciona una opción para excluir el contenido del archivo actual. Los tipos de referencia de client.* se quitan si el usuario ha excluido el contenido del archivo actual.

Chat en GitHub

  • Si un agente no tiene acceso de lectura al repositorio asociado a la dirección URL actual de GitHub, se difuminan las referencias de github.current-url y github.repository.
  • Si no se puede extraer información del repositorio de la dirección URL actual de GitHub, github.current-url se difumina.

Referencias difuminada

Cuando se difumina una referencia debido a permisos insuficientes, se reemplaza por un marcador de posición que indica el tipo de información que se ha excluido. En el ejemplo siguiente, el campo type indica que la referencia se ha difuminado y el campo data.type revela el tipo de referencia original.

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

Exclusiones de contexto

Para proteger la información confidencial, determinados escenarios impiden automáticamente el paso de contexto a los agentes. Si una organización ha establecido reglas de exclusión de contenido para Copilot, los archivos que se encuentran en estas reglas no se incluirán en el contexto pasado a los agentes.

Para obtener más información sobre las reglas de exclusión de contenido, consulta Exclusión del contenido de GitHub Copilot.

Archivos grandes

Los archivos que superen el límite de tamaño establecido por el cliente no se enviarán. La referencia incluirá metadatos que indican que el archivo era demasiado grande para procesarlo.

Archivos ocultos

Los archivos que comienzan con un punto, como .env y .config, se excluyen de forma predeterminada para evitar el uso compartido accidental de configuraciones confidenciales. En VS Code, puedes especificar archivos o directorios en un archivo .copilotignore para evitar que se envíen a agentes de Copilot. Este mecanismo del lado cliente ofrece un control pormenorizado sobre qué archivos se excluyen.