Límites y protecciones de ejecución del agente

Completado

Los agentes pueden realizar acciones en repositorios, pero esas acciones se ejecutan dentro de los límites y protecciones de la plataforma. En GitHub, Copilot agente en la nube funciona en un entorno con tecnología Acciones de GitHub, crea cambios en una rama y prepara esos cambios para su revisión.

No finaliza los cambios por sí mismo. Decide si esos cambios deben convertirse en un pull request.

En esta unidad, aprenderá lo siguiente:

  • Qué límites se colocan en las acciones del agente
  • Cómo las restricciones de ramas y repositorios protegen las bases de código
  • Cómo afectan los controles de flujo de trabajo y entorno a los cambios controlados por agentes
  • Cómo la revisión humana sigue siendo parte del proceso

Límites del repositorio y de la rama

El agente en la nube de Copilot solo tiene acceso al repositorio en el que está operando. No puede acceder a otros repositorios.

Sus cambios se realizan en una rama independiente, no directamente en la rama predeterminada, como main. Esto garantiza que todas las modificaciones estén aisladas antes de la revisión.

Control de solicitud de incorporación de cambios

Cuando el agente en la nube de Copilot finaliza su trabajo, prepara los cambios para su revisión, pero no crea ni combina automáticamente una solicitud de cambios.

Usted decide si:

  • Crea una solicitud de incorporación de cambios
  • Revisión de los cambios generados
  • Solicitar actualizaciones o descartar el trabajo

Esto mantiene la decisión final en el control humano.

Controles de flujo de trabajo

El trabajo del agente se ejecuta en flujos de trabajo con tecnología de Acciones de GitHub.

La configuración del repositorio y la organización pueden controlar:

  • Qué flujos de trabajo se permiten
  • Qué acciones se pueden ejecutar
  • Qué GITHUB_TOKEN puede hacer

Estos controles limitan lo que el agente puede ejecutar a través de flujos de trabajo.

Medidas de seguridad de ejecución y patrones de resistencia.

Además de los límites de nivel de plataforma, los flujos de trabajo controlados por agentes deben incluir medidas de seguridad para controlar los errores, evitar errores repetidos y garantizar la responsabilidad.

Gestión de errores

Los flujos de trabajo deben controlar explícitamente los errores durante la ejecución del agente.

Esto puede incluir:

  • Fallar rápido cuando un paso encuentra errores
  • Registro de mensajes de error significativos
  • Evitar cambios parciales o incoherentes

Ejemplo:

```
- run: | 
        npx @github/copilot-cli -p "Run task" 
continue-on-error: false
```

Esto garantiza que los errores detengan la ejecución en lugar de continuar silenciosamente.

Reintentos

Los reintentos ayudan a controlar errores temporales, como problemas de red o errores transitorios.

Puede implementar reintentos por medio de:

  • Reejecutar pasos fallidos
  • Uso de la lógica de reintento en scripts
  • Estructuración de flujos de trabajo para permitir una nueva ejecución segura

Patrón de ejemplo:

```
- name: Run agent task with retry 
run: | 
        for i in 1 2 3; 
            do npx @github/copilot-cli -p "Run task" && break 
            sleep 5 
        done
```

Esto permite que el flujo de trabajo se recupere de problemas temporales sin intervención manual.

Reversiones

Si un agente produce cambios incorrectos o no seguros, los mecanismos de reversión garantizan que esos cambios no afecten al código base principal.

La funcionalidad de reversión está naturalmente soportada a través de:

  • Aislamiento basado en rama
  • Revisión de la solicitud de incorporación de cambios antes de la combinación

Entre las estrategias de reversión adicionales se incluyen las siguientes:

  • Cerrar o rechazar la solicitud de incorporación de cambios
  • Revertir confirmaciones si los cambios han sido combinados

Rutas de escalación

Cuando un agente no puede completar una tarea o encuentra incertidumbre, la escalación garantiza que un ser humano pueda avanzar.

Esto se puede implementar mediante:

  • Requerir revisión de solicitudes de extracción
  • Asignación automática de revisores
  • Uso de pasos de flujo de trabajo para notificar a los mantenedores

La escalación garantiza que las decisiones críticas siempre se controlan por los seres humanos.

Rastreabilidad y responsabilidad

Todas las acciones del agente deben ser rastreables y auditables.

GitHub proporciona esto a través de:

  • Registros de flujo de trabajo
  • Historial de confirmaciones
  • Discusiones sobre solicitudes de incorporación de cambios

Para mejorar la rastreabilidad:

  • Uso de mensajes de confirmación no cifrados
  • Debes mantener los cambios dentro del alcance de una rama
  • Revisa todas las acciones a través de solicitudes de incorporación de cambios

Esto garantiza que todas las acciones del agente se puedan inspeccionar, comprender y atribuir.

Estas medidas de seguridad que discutimos están destinadas a garantizar que la ejecución del agente sea:

  • Resistente: puede controlar errores y reintentos
  • Controlado: evita cambios no seguros
  • Auditable: todas las acciones son visibles y rastreables
  • Regido por personas: la escalación garantiza la supervisión

Protecciones de entorno

Si los cambios generados por el agente se usan en implementaciones, los entornos proporcionan medidas de seguridad adicionales.

Los entornos pueden:

  • Requerir aprobaciones antes de que continúen los trabajos
  • Restricción del acceso a secretos
  • Controlar los destinos de implementación

Esto garantiza que las operaciones confidenciales no se ejecuten automáticamente.

Visibilidad de la sesión

La ejecución del agente es visible mientras se ejecuta.

Ustedes pueden:

  • Supervisión del progreso a través de los registros
  • Inspección de las acciones del agente
  • Proporcionar avisos de seguimiento para ajustar el comportamiento

Esta visibilidad permite mantener el control durante todo el proceso.

Límites para comportamiento y flujo de trabajo

Los flujos de trabajo desencadenados mediante el GITHUB_TOKEN tienen restricciones.

La mayoría de las acciones realizadas con este token no desencadenan ejecuciones de flujo de trabajo adicionales, lo que ayuda a evitar bucles no deseados o ejecución repetida.

Otros métodos de autenticación, como tokens de aplicación de GitHub o tokens de acceso personal (PATs), pueden desencadenar ejecuciones de flujo de trabajo adicionales en función de la configuración. Aunque esto permite patrones de automatización más flexibles, también requiere un diseño cuidadoso para evitar ejecuciones recursivas o bucles de automatización no deseados.

Habilitación de acciones del agente de forma segura

Los agentes pueden realizar acciones como:

  • Creación de ramas
  • Actualización de código
  • Preparación de los cambios para la revisión
  • Desencadenamiento de flujos de trabajo a través de eventos de repositorio

Estas acciones se controlan mediante:

  • Aislamiento basado en rama
  • Validación de flujo de trabajo
  • Revisión de solicitudes de incorporación de cambios
  • Permisos de flujo de trabajo

Al combinar estos controles, las acciones del agente se pueden habilitar sin permitir el acceso sin restricciones al repositorio o al entorno de ejecución.

Conclusión principal

La ejecución del agente en GitHub se controla mediante el ámbito del repositorio, el aislamiento de rama, los permisos de flujo de trabajo, las protecciones del entorno y los puntos de decisión humanos. Los agentes preparan los cambios, pero sigue siendo responsable de revisarlos y finalizarlos.