Contexto de ejecución y límites
Una vez que un agente puede realizar acciones y conectarse a herramientas, la siguiente pregunta es dónde y cómo se ejecutan esas acciones.
El contexto de ejecución define los límites dentro de los que opera un agente. Esto incluye el repositorio al que puede acceder, la rama en la que funciona, el flujo de trabajo que ejecuta sus tareas y los permisos concedidos.
Sin un contexto de ejecución claramente definido, el comportamiento del agente se vuelve impredecible y no seguro.
En esta unidad, aprenderá lo siguiente:
- Qué significa el contexto de ejecución en GitHub
- Cómo el ámbito del repositorio y la rama definen los límites
- Cómo los flujos de trabajo aíslan la ejecución
- Cómo aplican los permisos el control sobre las acciones del agente
¿Qué es el contexto de ejecución?
El contexto de ejecución es el conjunto de restricciones que definen dónde opera un agente y a lo que puede acceder.
En GitHub, el contexto de ejecución incluye:
- Repositorio en el que está trabajando el agente
- La sucursal a la que está dirigido el agente
- Flujo de trabajo que ejecuta tareas
- Permisos concedidos a ese flujo de trabajo
Este contexto determina tanto la visibilidad como la funcionalidad.
Ámbito del repositorio
Los agentes siempre operan dentro de un repositorio. Solo pueden leer y modificar código dentro de ese repositorio. Interactúan con problemas, solicitudes de incorporación de cambios y flujos de trabajo vinculados a él. No tienen acceso a otros repositorios a menos que se concedan explícitamente.
El ámbito del repositorio es el primer límite que limita el comportamiento del agente.
Configuración del ámbito del repositorio
Para agentes como el agente de nube de Copilot, este límite se configura explícitamente a nivel de repositorio.
Para configurar esto:
- Abra el repositorio en GitHub
- Haga clic en Configuración.
- En la barra lateral, en Código y automatización, haga clic en Copilot
- Selección del agente en la nube
- Habilitación y configuración del agente para ese repositorio
- Guardar la configuración
Una vez configurado, el agente se limita a ese repositorio y no puede operar fuera de él.
Ámbito del agente personalizado dentro de un repositorio
Los agentes personalizados funcionan dentro del mismo límite del repositorio, pero pueden refinar aún más su ámbito a través de la configuración.
Dentro de un archivo de agente personalizado (por ejemplo, .github/agents/security-reviewer.agent.md), el ámbito se define mediante campos como:
- applyTo → limita los archivos o directorios en los que se centra el agente
- herramientas → define qué acciones puede realizar el agente
Ejemplo:
applyTo:
- '**/*.js'
- 'src/auth/**' tools:
- read_file
- search_files
Para configurar un agente personalizado:
- Creación del directorio .github/agents/ en el repositorio
- Agregar un archivo de agente con la extensión .agent.md
- Definición de su ámbito mediante applyTo y herramientas
- Confirmar e insertar el archivo
Esto permite al agente centrarse solo en partes específicas del repositorio y operar con funcionalidades limitadas.
Cómo encaja en el contexto de ejecución
El ámbito del repositorio define dónde funciona el agente, mientras que la configuración del agente personalizada define lo que el agente puede acceder y hacer dentro de ese límite.
Juntos, crean un control en capas.
Aislamiento basado en rama
Los agentes no funcionan directamente en la rama principal.
En su lugar, ellos:
- Creación de una rama a partir de la rama ypu seleccionada
- Realizar cambios dentro de esa rama
- Abrir una solicitud de incorporación de cambios destinada a una rama base
Esto aísla los cambios y garantiza que todas las modificaciones pasen por la revisión antes de combinarse.
El aislamiento basado en ramas es un mecanismo de seguridad clave.
Configura un agente para usar el ámbito basado en ramas
Para configurar un agente de Copilot Cloud para que funcione con un ámbito basado en ramas, siga estos pasos:
- Selección de una rama base:
- Acceda a la página Agentes: vaya a la página Agentes del repositorio de GitHub.
- Elija la rama base: al delegar tareas al agente de codificación de Copilot, puede seleccionar una rama base específica. Esto permite al agente crear una nueva rama basada en la rama seleccionada en lugar de la rama predeterminada (normalmente "main").
Los agentes personalizados funcionan dentro de un repositorio, pero no controlan directamente el comportamiento de la rama. El ámbito basado en rama es determinado por el sistema que ejecuta el agente.
Cómo funciona
Cuando se usa con un agente en la nube:
- El sistema crea automáticamente una rama.
- Aplica cambios
- Abre una solicitud de incorporación de cambios
Cuando se usa en flujos de trabajo (CI):
- El flujo de trabajo determina la rama.
- El agente se ejecuta dentro de ese contexto de rama.
¿Qué controlan los agentes personalizados?
Los agentes personalizados definen:
- En qué archivos se centran (applyTo)
- Qué acciones pueden realizar (herramientas)
- Cómo se comportan (instrucciones)
Pero no definen:
- Creación de ramas
- Comportamiento de la solicitud de incorporación de cambios
- Aislamiento de ejecución
El alcance basado en ramificaciones siempre lo impone el contexto de ejecución, no el propio agente personalizado.
Permitir que un agente realice acciones autónomas, incluida la creación de ramas y pull requests.
Los agentes pueden realizar acciones autónomas dentro de un repositorio una vez habilitadas y dadas una tarea.
Steps:
Habilite el agente para el repositorio.
- Vaya a Configuración → Copilot → Agente en la nube.
- Habilitar el agente, seleccione el repositorio.
Asigne una tarea al agente.
- Desde un problema, Copilot Chat o la interfaz de agentes
- Ejemplo: corrección de un error, implementación de una característica
Permitir que el agente ejecute la tarea.
El agente hará lo siguiente:
- Creación de una rama
- Realizar cambios en el código
- Confirmación e inserción de actualizaciones
Revise y finalice.
Una vez que esté satisfecho con los cambios y los resultados del código, inicie una pull request. Puede solicitar cambios en el pull request o aprobar y fusionar.
El agente funciona de forma autónoma dentro del repositorio mediante la creación de ramas, la modificación del código y la apertura de solicitudes de incorporación de cambios, mientras sigue funcionando dentro de un flujo de trabajo controlado y revisable.
Límites de flujo de trabajo
La ejecución se produce dentro de flujos de trabajo con tecnología de Acciones de GitHub. Cada flujo de trabajo define en qué desencadena la ejecución, qué pasos se realizan y en qué entorno se ejecuta el código. Los flujos de trabajo actúan como contenedores de ejecución controlados. Garantizan que las tareas se ejecutan en un entorno limpio, la ejecución se puede repetir y se capturan los registros y los resultados. Los flujos de trabajo también son cómo se ejecuta el comportamiento del agente en entornos de CI.
Límites de permisos
Los permisos definen lo que un agente puede hacer dentro de su contexto de ejecución.
A los flujos de trabajo se les asignan permisos a través de tokens, como el GITHUB_TOKEN.
Estos permisos pueden permitir o restringir:
- Lectura del contenido del repositorio
- Escritura de código
- Creación de solicitudes de incorporación de cambios
- Acceder a los secretos
- Desencadenar flujos de trabajo
Los permisos siempre deben definirse y minimizarse explícitamente.
Barreras de protección en flujos de trabajo agente de GitHub
GitHub flujos de trabajo agente están diseñados con defensa en profundidad. Entre los controles clave se incluyen:
- Tokens de solo lectura por defecto para que el agente pueda inspeccionar el estado del repositorio sin alterarlo directamente.
- Salidas seguras que permiten al agente proponer acciones mientras un paso cerrado independiente decide lo que se permite
- Ningún secreto en el proceso del agente, manteniendo las credenciales confidenciales fuera del tiempo de ejecución utilizado por el agente de programación.
- Ejecución en contenedores y en espacio aislado
- Aislamiento de red y acceso saliente permitido
- Detección de amenazas que examina las salidas propuestas antes de aplicar cualquier acción de escritura
Este modelo ayuda a reducir los riesgos de los agentes sobreprivilegados, la inyección de mensajes y los cambios de repositorio no deseados.
¿Por qué importan los límites?
El contexto de ejecución es lo que hace que los sistemas de agente son seguros.
Mediante la combinación de:
- Ámbito del repositorio
- Aislamiento de rama
- Ejecución de flujo de trabajo
- Control de permisos
GitHub garantiza que los agentes funcionen dentro de límites claros y aplicables.
Esto evita:
- Cambios no controlados en el código de producción
- Acceso a recursos no deseados
- Ejecución no segura o no revisada
Cómo se invocan los agentes a través de flujos de trabajo
Para ejecutar tareas controladas por agentes como parte de CI, invoque estas dentro de un flujo de trabajo. En esta configuración, el flujo de trabajo se convierte en el límite de ejecución y el agente se ejecuta dentro del ejecutor mediante pasos y permisos definidos.
Steps:
Cree o abra un archivo de flujo de trabajo en el repositorio:
.github/workflows/agent-task.ymlDefina cuándo se debe ejecutar el flujo de trabajo:
on: workflow_dispatch: schedule: - cron: '0 9 * * *'También puede usar eventos como push o pull_request en función de su caso de uso.
Establecer permisos de flujo de trabajo:
permissions: contents: readAjuste los permisos en función de lo que debe hacer el flujo de trabajo.
Defina un trabajo y un ejecutor:
jobs: agent-task: runs-on: ubuntu-latestConsulte el repositorio:
uses: actions/checkout@v4Configurar Node.js:
uses: actions/setup-node@v4 with: node-version: '18'Proporcione autenticación:
env: COPILOT_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}Ejecute la tarea del agente:
run: | npx @github/copilot-cli -p "Summarize recent changes in this repository" --no-ask-user (Optional)Use un agente personalizado:
run: | npx @github/copilot-cli --agent security-reviewer -p "Review this code for vulnerabilities" --no-ask-user
El flujo de trabajo se convierte en el camino de ejecución controlada para el agente. La tarea se ejecuta en un ejecutor definido, con un desencadenador definido, dentro de un contexto de repositorio definido y solo con los permisos concedidos a ese flujo de trabajo.
Ámbito de rama y ejecución de flujo de trabajo
Los flujos de trabajo se ejecutan contra una rama específica.
Dado que los agentes realizan cambios en una rama:
- La ejecución del flujo de trabajo tiene como ámbito esa rama
- Los cambios están aislados de la rama predeterminada
- La validación se produce antes de combinar
Esto garantiza que la actividad del agente permanezca contenida dentro de un ámbito de ejecución controlado.
Conclusión principal
El contexto de ejecución define dónde funcionan los agentes. Los límites como el ámbito del repositorio, el aislamiento de rama, los flujos de trabajo y los permisos garantizan que las acciones del agente permanezcan controladas, predecibles y seguras.
A continuación, va a aprender a diseñar trayectorias de ejecución seguras, incluidos reintentos, reversiones y mecanismos de escalación.