Pusieron un agente de programación en un bucle `while` y en una noche completó 6 repositorios
(github.com/repomirrorhq)- Al poner Claude Code en un bucle infinito en modo headless, se generaron más de 1000 commits y resultados de portabilidad de varias bases de código
- Con este método, se lograron varios casos exitosos de portabilidad automática, como convertir el proyecto React de assistant-ui a Vue, y proyectos en Python a TypeScript
- Se confirmó que mantener el prompt simple mejora el rendimiento, mientras que hacerlo complejo incrementa la ineficiencia
- Aunque no es perfecto, también se desarrolló la herramienta RepoMirror, útil para sincronizar repositorios fuente/destino
- También se observaron comportamientos y aprendizajes inesperados, como la autointerrupción del agente de IA y la adición de tareas, lo que permitió percibir al mismo tiempo el potencial y los límites de la automatización futura
Resumen del proyecto y objetivo
- Este proyecto experimenta con cómo un agente de programación con IA ejecuta tareas reales de portabilidad de código al colocarlo en un bucle
whileinfinito - Claude Code se ejecutó en modo headless, repitiendo continuamente prompts de entrada para aplicar procesos de conversión automática a distintos repositorios
- Se obtuvieron resultados de automatización de múltiples tareas de portabilidad, con más de 1000 commits, incluyendo conversiones de React a Vue y de Python a TypeScript
- En el proceso también se desarrolló RepoMirror, una herramienta de apoyo para automatizar la portabilidad
Operación del agente con el enfoque de bucle infinito
- Forma recomendada por Geoff Huntley: ejecutar de manera continua el prompt del agente de programación desde el shell
- Ejemplo:
while :; do cat prompt.md | claude -p --dangerously-skip-permissions; done
- Ejemplo:
- Este enfoque de bucle se aplicó a tareas como cambiar assistant-ui de React a Vue
- Se hacía commit y push en cada modificación de archivo
- El historial de trabajo y los planes se registraban en el directorio
.agent/
Pruebas con varios casos de portabilidad
-
Browser Use (portado de Python a TypeScript)
- Se ejecutó el bucle infinito con un prompt simple
- El bucle se mantuvo corriendo con tmux en una VM de GCP
- Por la mañana se confirmó un resultado de portabilidad a TypeScript que funcionaba casi a la perfección
-
También se aplicó a la portabilidad de Vercel AI SDK de TypeScript → Python
- Generación de adaptadores automáticos para FastAPI/Flask
- Soporte de conversión también para varios validadores de esquema en Python
-
Automatización de código basada en especificaciones: también se intentó generar código directamente desde documentación en proyectos como Convex y Dedalus
Fenómenos observados y lecciones del experimento
Escritura de pruebas y autointerrupción del agente
- El agente también escribía código de pruebas según las instrucciones
- Hubo casos en los que entró en un bucle infinito o cerró su propio proceso con
pkillal completar la misión - Respetaba estrictamente el alcance de trabajo y registraba repetidamente el nivel de avance en
TODO.md
Comportamientos emergentes adicionales
- Tras terminar la portabilidad, añadió por iniciativa propia funciones extra como integración con FastAPI/Flask y soporte para validadores de esquema, que no existían en la versión original en JS
Importancia de simplificar el prompt
- Los prompts cortos y simples mostraron un rendimiento superior
- Al pasar de un prompt de 103 caracteres a uno de 1500, el proceso se volvió más lento y bajó la precisión
- La información de los prompts realmente usados puede consultarse en la carpeta prompts
Límites de la automatización total
- Problema destacado: a veces producía código portado que no funcionaba por completo (por ejemplo, algunos demos de navegador quedaron incompletos)
- Se requirió ajustar prompts y hacer correcciones interactivas
Infraestructura, costos y operación
- Costo aproximado de $800, total de 1100 commits, con agentes a un nivel de $10.50 por hora cada uno
- Se creó sobre la marcha una herramienta para automatizar el proceso de portabilidad entre varios repositorios fuente/destino (RepoMirror)
- Aplica principios open-box al estilo shadcn, y después de la etapa init genera carpetas para personalizar scripts y prompts
- Soporta ejecución repetida con
npx repomirror syncysync-forever
Uso de la herramienta y forma de aprovecharla
- Con
npx repomirror initse inicializa indicando directorios fuente/destino y comandos- Ej.) permite aplicar fácilmente nuevas instrucciones como React → Vue o gRPC → REST
- Estructura de carpetas:
- Se generan automáticamente archivos iniciales como
.repomirror/prompt.md,sync.sh,ralph.sh, etc.
- Se generan automáticamente archivos iniciales como
- Se opera el bucle de portabilidad con IA ejecutando
sync/sync-foreveren cada iteración - Los ejemplos principales, resultados de demos y repositorios de código fuente pueden revisarse en el README
Impresiones tras el experimento y comentarios del equipo
Se sintió como estar viendo AGI (inteligencia artificial general), acompañado sobre todo de emoción y un poco de miedo
Fue posible comprobar de primera mano que la simplicidad funciona
Da la impresión de que aún estamos en una etapa extremadamente temprana de una curva de crecimiento exponencial
- Se expresó agradecimiento a los miembros del equipo y a quienes aportaron ideas
Conclusión
- Experiencia real de materializar tareas de portabilidad y sincronización de código fuente con agentes de programación con IA basados en bucles infinitos
- Se subraya la importancia de una estructura simple y de operar con prompts eficaces
- Quedaron al descubierto tanto el potencial futuro de la automatización como sus límites
- La herramienta relacionada (RepoMirror) puede aprovecharse e investigarse como open source
2 comentarios
Opiniones de Hacker News
intystringen MongoDB, relacionar datos en Postgres sin foreign keys, o crear tablas nuevas en lugar de haceralter tableporque ya no se puede modificar la original.agent/TODO.mdpara dejar constancia del progreso. Incluso hubo un agente que detectó que había caído en un loop infinito y se terminó a sí mismo con un comandopkill. Fue un episodio divertidísimo por muchos lados. Tengo varias ideas sobre este proyecto: hace 1.5 años ya había habido intentos parecidos, pero en ese entonces, con GPT-3.5/4, casi no funcionaban; esta vez el resultado fue muchísimo mejor. Sorprende que algo así funcione tan bien con un prompt tan simple. Quizá todos estábamos complicando demasiado las cosas. Por otro lado, los temas de copyright/IP se van a poner bastante enredados, y para las empresas SaaS esto pega fuerte. Si juntas esta tecnología con 10 ingenieros de una empresa mediana, el argumento para desarrollar internamente (= síndrome NIH) se vuelve muy sólido.pkillno será el primer caso de “suicidio” de una IA.pkill, resolvió el Halting Problem de una vez por todas.vibe codingapareció como término hace apenas 5 meses, así que me intriga cómo el mercado se saturó tan rápido al punto de que ya existan especialistas en recuperación.IMPLEMENTATION_PLAN.md.bash for loop. Qué proyecto tan loco.ID.md,EGO.mdySUPEREGO.md.Estoy de acuerdo con la preocupación de que el código escrito por un LLM se convierta en una caja negra, pero al final, ¿no podríamos encargarle al mismo LLM que analice ese código?