Phase 19 - Lesson 16
Capstone 16 — Agente Autónomo GitHub Issue-to-PR
AWS Remote SWE Agents, Cursor Background Agents, OpenAI Codex cloud y Google Jules ofrecen la misma forma de producto en 2026: etiqueta un issue y obtén un PR. Ejecuta un agente en un sandbox en la nube, verifica que las pruebas pasen y publica un PR listo para revisión con su justificación (rationale). Las partes difíciles son reproducir automáticamente el entorno de compilación del repositorio, evitar la filtración de credenciales, aplicar presupuestos por repositorio y garantizar que el agente no pueda realizar force-push. Este capstone construye la versión auto-alojada (self-hosted) y la compara en costo y tasa de aprobación con las alternativas alojadas.
Tipo: Capstone Idiomas: Python (agente), TypeScript (GitHub App), YAML (Actions) Prerrequisitos: Fase 11 (ingeniería de LLM), Fase 13 (herramientas), Fase 14 (agentes), Fase 15 (autónomo), Fase 17 (infraestructura) Fases ejercitadas: P11 · P13 · P14 · P15 · P17 Tiempo: 30 horas
Problema
El agente de codificación asíncrono en la nube es una categoría de producto separada de los agentes de codificación interactivos (capstone 01). La experiencia del usuario (UX) es una etiqueta de GitHub. Etiquetas un issue con @agent fix this, un worker se activa en un sandbox en la nube, clona el repositorio, ejecuta pruebas, edita archivos, verifica y abre un PR con la justificación del agente en el cuerpo. Sin bucle interactivo, sin terminal. AWS Remote SWE Agents, Cursor Background Agents, OpenAI Codex cloud, Google Jules y Factory Droids convergen en esto.
Los desafíos de ingeniería son concretos: reproducción del entorno (el agente tiene que compilar el repositorio desde cero sin una imagen de desarrollo en caché), pruebas inestables (flaky tests, que deben volver a ejecutarse o aislarse), alcance de credenciales (un GitHub App con permisos mínimos y específicos), aplicación de presupuesto por repositorio por día y política de no force-push. El capstone mide la tasa de aprobación (pass rate), el costo y la seguridad frente a las alternativas alojadas.
Concepto
El activador (trigger) es un webhook de GitHub (etiqueta de issue o comentario de PR). Un despachador (dispatcher) encola el trabajo en ECS Fargate o Lambda. El worker extrae el repositorio a un sandbox Daytona o E2B con un Dockerfile genérico inferido a partir del repositorio (idioma, framework). El agente ejecuta un bucle de mini-swe-agent o SWE-agent v2 contra Claude Opus 4.7 o GPT-5.4-Codex. Realiza iteraciones: lee código, propone correcciones, aplica parches, ejecuta pruebas.
La verificación es el paso restrictivo (gate). El CI completo debe pasar en el sandbox antes de que se abra el PR. Se calcula el delta de cobertura; si es negativo más allá de un umbral, el PR se abre pero se etiqueta como needs-review. El agente publica la justificación como la descripción del PR, además de un hilo @agent que el revisor puede mencionar para hacer un seguimiento.
La seguridad se acota a través de dos superficies diferentes de GitHub: la App proporciona un token de instalación de corta duración con permisos de workflows: read y alcances estrechos de contenidos de repositorio/PR; la protección de ramas (no los permisos de la aplicación) impone "no escrituras directas en main" y "no force-push" — la aplicación nunca se añade a la lista de omisión (bypass list). El acceso de solo lectura con alcance de ruta a .github/workflows no es una primitiva real de GitHub App, por lo que la lista de permitidos (allow-list) del agente en las ediciones de archivos tiene que imponer eso en el worker. Los límites presupuestarios por repositorio por día se aplican en el despachador (por ejemplo, máximo 5 PR por repositorio por día,