Nota:
Agente de codificación de Copilot is in versión preliminar pública and subject to change.
Para más información sobre Agente de codificación de Copilot, consulta Acerca de la asignación de tareas a Copilot.
Acerca de la personalización del entorno de desarrollo de Agente de codificación de Copilot
Al trabajar en una tarea, Copilot tiene acceso a su propio entorno de desarrollo efímero, con tecnología de GitHub Actions, donde puedes explorar el código, realizar cambios, ejecutar pruebas automatizadas y linters, etc.
Puedes personalizar el entorno de Copilot para:
- Preinstalar herramientas o dependencias en el entorno de Copilot.
- Actualizar desde los ejecutores de GitHub Actions hospedados en GitHub estándar a ejecutores de mayor capacidad.
- Habilitar el almacenamiento de archivos grandes (LFS) de Git
- Deshabilitar o personalizar el firewall del agente.
Preinstalación de herramientas o dependencias en el entorno de Copilot
En su entorno de desarrollo efímero, Copilot puede compilar o compilar el proyecto y ejecutar pruebas automatizadas, linters y otras herramientas. Para ello, tendrá que instalar las dependencias del proyecto.
Copilot puede detectar e instalar estas dependencias personalmente mediante un proceso de prueba y error, pero esto puede ser lento y poco confiable, dada la naturaleza no determinista de los modelos de lenguaje grandes (LLM) y, en algunos casos, es posible que no pueda descargar estas dependencias, por ejemplo si son privadas.
En su lugar, puedes preconfigurar el entorno de Copilot antes de que comience el agente si creas un archivo de flujo de trabajo de GitHub Actions especial, ubicado en .github/workflows/copilot-setup-steps.yml
dentro del repositorio.
Un archivo copilot-setup-steps.yml
parece un archivo de flujo de trabajo de GitHub Actions normal, pero debe contener un solo trabajo copilot-setup-steps
. Este trabajo se ejecutará en GitHub Actions antes de que Copilot empiece a funcionar. Para más información sobre los archivos de flujo de trabajo de GitHub Actions, consulta Sintaxis del flujo de trabajo para GitHub Actions.
Este es un ejemplo sencillo de un archivo copilot-setup-steps.yml
para un proyecto de TypeScript que clona el proyecto, instala Node.js y descarga y almacena en caché las dependencias del proyecto. Debes personalizarlo para que se ajuste a los lenguajes y las dependencias de tu propio proyecto:
name: "Copilot Setup Steps" # Automatically run the setup steps when they are changed to allow for easy validation, and # allow manual testing through the repository's "Actions" tab on: workflow_dispatch: push: paths: - .github/workflows/copilot-setup-steps.yml pull_request: paths: - .github/workflows/copilot-setup-steps.yml jobs: # The job MUST be called `copilot-setup-steps` or it will not be picked up by Copilot. copilot-setup-steps: runs-on: ubuntu-latest # Set the permissions to the lowest permissions possible needed for your steps. # Copilot will be given its own token for its operations. permissions: # If you want to clone the repository as part of your setup steps, for example to install dependencies, you'll need the `contents: read` permission. If you don't clone the repository in your setup steps, Copilot will do this for you automatically after the steps complete. contents: read # You can define any steps you want, and they will run before the agent starts. # If you do not check out your code, Copilot will do this for you. steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" - name: Install JavaScript dependencies run: npm ci
name: "Copilot Setup Steps"
# Automatically run the setup steps when they are changed to allow for easy validation, and
# allow manual testing through the repository's "Actions" tab
on:
workflow_dispatch:
push:
paths:
- .github/workflows/copilot-setup-steps.yml
pull_request:
paths:
- .github/workflows/copilot-setup-steps.yml
jobs:
# The job MUST be called `copilot-setup-steps` or it will not be picked up by Copilot.
copilot-setup-steps:
runs-on: ubuntu-latest
# Set the permissions to the lowest permissions possible needed for your steps.
# Copilot will be given its own token for its operations.
permissions:
# If you want to clone the repository as part of your setup steps, for example to install dependencies, you'll need the `contents: read` permission. If you don't clone the repository in your setup steps, Copilot will do this for you automatically after the steps complete.
contents: read
# You can define any steps you want, and they will run before the agent starts.
# If you do not check out your code, Copilot will do this for you.
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
- name: Install JavaScript dependencies
run: npm ci
En el archivo copilot-setup-steps.yml
, solo puedes personalizar los valores siguientes del trabajo copilot-setup-steps
. Si intentas personalizar otros valores, los cambios se omitirán.
steps
(consulta más arriba)permissions
(consulta más arriba)runs-on
(consulte a continuación)container
services
snapshot
timeout-minutes
(valor máximo:59
)
Para más información sobre estas opciones, consulta Sintaxis del flujo de trabajo para GitHub Actions.
El archivo copilot-setup-steps.yml
se ejecutará automáticamente como un flujo de trabajo normal de GitHub Actions cuando se realicen cambios, por lo que puedes ver si se ejecuta correctamente. Esto se mostrará junto con otras comprobaciones en una solicitud de incorporación de cambios en las que cree o modifiques el archivo.
Una vez que hayas combinado el archivo yml en la rama predeterminada, puedes ejecutar manualmente el flujo de trabajo desde la pestaña Acciones del repositorio en cualquier momento para comprobar que todo funciona según lo previsto. Para más información, consulta Ejecutar un flujo de trabajo manualmente.
Actualización a ejecutores de GitHub Actions hospedados en GitHub de mayor capacidad
De manera predeterminada, Copilot funciona en un ejecutor de GitHub Actions estándar con recursos limitados.
Puedes optar por usar ejecutores de mayor capacidad con características más avanzadas, por ejemplo, más RAM, CPU y espacio en disco y controles avanzados de red. Es posible que quieras actualizar a un ejecutor de mayor capacidad si ves un rendimiento deficiente, por ejemplo, al descargar dependencias o ejecutar pruebas. Para más información, consulta Acerca de los ejecutores más grandes.
Antes de que Copilot pueda usar ejecutores de mayor capacidad, primero debes agregar uno o varios ejecutores de mayor capacidad y, después, configurar el repositorio para que los use. Consulta Administración de ejecutores más grandes. Una vez que hayas realizado este paso, puedes usar el archivo copilot-setup-steps.yml
para indicar a Copilot que use los ejecutores de mayor capacidad.
Para usar ejecutores de mayor capacidad, establece el paso runs-on
del trabajo copilot-setup-steps
en la etiqueta o grupo de los ejecutores de mayor capacidad que quieras que use Copilot. Para más información sobre la especificación de ejecutores de mayor capacidad con runs-on
, consulta Ejecución de trabajos en ejecutores más grandes.
# ...
jobs:
copilot-setup-steps:
runs-on: ubuntu-4-core
# ...
Nota:
- Agente de codificación de Copilot solo es compatible con los ejecutores Linux de Ubuntu x64. No se admiten ejecutores con Windows, macOS u otros sistemas operativos.
- No se admiten ejecutores autohospedados de GitHub Actions.
Habilitación del almacenamiento de archivos grandes de Git (LFS)
Si usas el almacenamiento de archivos grandes de Git (LFS) para almacenar archivos grandes en el repositorio, deberás personalizar el entorno de Copilot para instalar Git LFS y capturar objetos LFS.
Para habilitar Git LFS, agrega un paso actions/checkout
al trabajo copilot-setup-steps
con la opción lfs
establecida en true
.
# ... jobs: copilot-setup-steps: runs-on: ubuntu-latest permissions: contents: read # for actions/checkout steps: - uses: actions/checkout@v4 with: lfs: true
# ...
jobs:
copilot-setup-steps:
runs-on: ubuntu-latest
permissions:
contents: read # for actions/checkout
steps:
- uses: actions/checkout@v4
with:
lfs: true