Saltar al contenido

El blog de Deska

Test de refactorización con agentes: los resultados

Compartimos los resultados de nuestro test de refactorización con agentes tras probar Claude Code, Codex CLI y OpenCode en migraciones de código complejas.

11 min de lectura

La automatización de modificaciones de código a gran escala ha evolucionado más allá de los simples reemplazos por expresiones regulares. En nuestro último test de refactorización con agentes, evaluamos cómo los agentes de codificación modernos gestionan cambios estructurales en múltiples archivos manteniendo la integridad de la lógica. El objetivo fue determinar si las herramientas autónomas actuales pueden manejar la deuda técnica de forma fiable o si todavía requieren intervención manual constante durante la fase de ejecución.

El alcance del experimento de refactorización

Refactorizar es una tarea de alto riesgo para cualquier sistema automatizado. A diferencia del desarrollo desde cero, donde el agente comienza con un lienzo en blanco, la refactorización requiere una comprensión profunda de las dependencias existentes y los efectos secundarios. Centramos nuestro test en tres escenarios específicos que representan puntos de dolor comunes para los desarrolladores: convertir una arquitectura de componentes basada en clases a componentes funcionales con hooks, migrar una biblioteca de utilidades de JavaScript a TypeScript, y desacoplar servicios estrechamente vinculados en un backend monolítico.

Estas tareas fueron elegidas porque requieren más que simples cambios de sintaxis local. Exigen conciencia del contexto en toda la estructura del proyecto. Monitoreamos cómo los agentes navegaron por el sistema de archivos, cómo manejaron los errores de compilación y cómo reaccionaron cuando un cambio en un archivo rompió una prueba en otro.

Evaluando a los agentes líderes

Para este experimento, utilizamos tres herramientas distintas: Claude Code, Codex CLI y OpenCode. Cada una tiene un enfoque diferente para interactuar con la base de código. Claude Code suele destacar en el razonamiento de rutas lógicas complejas. Codex CLI se enfoca en la ejecución a alta velocidad de comandos de terminal. OpenCode proporciona un marco extensible para tareas de programación especializadas.

En una configuración tradicional, ejecutar estas herramientas en paralelo implica hacer malabares con múltiples pestañas de terminal y ventanas de IDE. Para agilizar la observación, utilizamos Deska para ubicar estos agentes en un lienzo infinito. Esto nos permitió ver la salida de terminal de los tres agentes simultáneamente mientras manteníamos un panel de editor de código abierto para verificar los cambios en tiempo real. Debido a que Deska es local-first, los agentes operaron directamente sobre los archivos fuente sin que el código saliera de la máquina.

Rendimiento en escenarios de migración

Los resultados variaron significativamente según la complejidad del gráfico de dependencias. En la migración de JavaScript a TypeScript, los agentes generalmente se desempeñaron bien con la inferencia de tipos básica. Sin embargo, tuvieron dificultades con genéricos complejos y dependencias circulares.

  • Claude Code: Demostró la mayor precisión al preservar la lógica de negocio. Pasó más tiempo analizando archivos antes de realizar ediciones, lo que resultó en menos errores de linting.
  • Codex CLI: Fue el más rápido en generar código, pero requirió correcciones manuales más frecuentes cuando la estructura de archivos era muy profunda.
  • OpenCode: Mostró fortalezas en la coincidencia de patrones repetitivos, lo que lo hace ideal para la migración de arquitectura de componentes donde los cambios siguen una plantilla predecible.

Una observación del test fue el fenómeno del colapso de contexto. Cuando se le pide a un agente que refactorice demasiados archivos a la vez, la probabilidad de introducir una regresión aumenta exponencialmente. Una refactorización exitosa generalmente requirió dividir la tarea en trozos más pequeños y verificables.

Interacción y control del espacio de trabajo

La eficiencia de un agente de refactorización a menudo está limitada por cómo el desarrollador interactúa con él. Escribir prompts largos para corregir errores menores puede ser más lento que simplemente arreglar el código manualmente. Durante el test, exploramos el uso de Ask Deska para gestionar el entorno mediante comandos de voz y chat. En lugar de navegar manualmente por los directorios para verificar si una prueba pasó, pudimos pedirle al asistente que ejecutara la suite de pruebas y reportara los resultados mientras los agentes seguían trabajando.

Este tipo de orquestación del espacio de trabajo es un cambio significativo en la forma en que los desarrolladores trabajan con la IA. En lugar de que la IA sea una simple función de autocompletado dentro de un editor de texto, se convierte en un participante en un espacio de trabajo más amplio. El uso de paneles para aislar diferentes partes del proceso de refactorización nos ayudó a mantener una visión clara del experimento.

Marco comparativo: Capacidades de los agentes

La siguiente tabla resume cómo los agentes manejaron diferentes aspectos del test de refactorización.

CapacidadClaude CodeCodex CLIOpenCode
Mapeo de DependenciasAltoMedioMedio
Velocidad de EjecuciónModeradaAltaAlta
Recuperación de ErroresRobustaBásicaModerada
Soporte para Archivos GrandesExcelenteBuenoBueno

Limitaciones prácticas y fiabilidad

A pesar del progreso en los flujos de trabajo con agentes, nuestro test de refactorización con agentes destacó varios desafíos persistentes. Ninguno de los agentes pudo reemplazar completamente a un revisor humano para decisiones arquitectónicas. Pueden mover código, renombrar variables y actualizar tipos, pero aún no entienden el porqué detrás de ciertos patrones de diseño.

La seguridad y la privacidad también siguen siendo preocupaciones para muchos equipos. El uso de herramientas que admiten un modelo BYOK asegura que mantengas el control sobre el uso de tu API y los costes. Además, mantener el entorno de ejecución local es crítico para equipos que trabajan en bases de código propietarias donde la filtración de datos es un riesgo.

Preguntas frecuentes

¿Pueden los agentes de IA refactorizar una base de código monolítica completa?

Aunque los agentes pueden procesar muchos archivos, no se recomienda intentar refactorizar un monolito completo en una sola pasada. Es mejor utilizar agentes de codificación para módulos o capas específicas para evitar errores de contexto y asegurar que cada paso pueda ser verificado por las suites de pruebas existentes.

¿Cómo monitoreo a los agentes que se ejecutan en segundo plano?

Monitorear tareas en segundo plano es más fácil cuando utilizas un espacio de trabajo dedicado. Con la aplicación mobile, puedes supervisar el progreso de un trabajo de refactorización largo desde tu teléfono a través de un relay seguro. Esto te permite verificar si el agente ha terminado o si está atascado en un error específico sin estar atado a tu escritorio.

¿Es seguro dejar que los agentes ejecuten comandos de terminal?

La seguridad depende del entorno. La mayoría de los agentes están diseñados para ejecutarse en tu terminal local. Usar una herramienta que proporciona terminales aisladas dentro de un lienzo controlado te permite ver exactamente qué comandos se están ejecutando. Revisa siempre el plan que propone un agente antes de permitirle ejecutar operaciones de escritura o eliminar archivos.

Comienza tu propio experimento de refactorización

Si buscas integrar agentes autónomos en tu flujo de trabajo, el mejor enfoque es comenzar con una tarea contenida. Configurar un entorno dedicado donde puedas ver tu código, tus terminales y tus agentes lado a lado es esencial para mantener el control. Puedes explorar cómo gestionar estas diversas herramientas visitando nuestra guía sobre cómo empezar.

Las herramientas para la refactorización autónoma están listas para su uso en producción, siempre que se utilicen con el nivel adecuado de supervisión. Puedes descargar la aplicación de escritorio para Mac, Windows o Linux para comenzar a construir tu propio espacio de trabajo multiagente en /download.