Worktrees: ejecuta dos agentes en paralelo

Resumen

Los Git Worktrees son un flujo de trabajo que te permite duplicar tu proyecto tantas veces como necesites y trabajar en paralelo sin que los cambios de una copia afecten a las otras. Si desarrollas software con agentes de IA, esta técnica te ayuda a comparar soluciones y elegir la mejor sin romper tu rama principal.

¿En qué se diferencia un Worktree de una branch tradicional?

Cuando trabajas con branches, creas una rama por feature y avanzas en una a la vez. Al terminar, haces merge a la rama principal y modificas la historia del proyecto.

Con Worktrees el enfoque cambia: duplicas el proyecto completo en entornos independientes y ejecutas trabajo simultáneo en cada uno. Ninguna copia interfiere con la otra, así que puedes lanzar dos experimentos al mismo tiempo y decidir después cuál conservar.

¿Qué es un Git Worktree? Es un flujo de trabajo que duplica tu proyecto en entornos paralelos e independientes, para que puedas ejecutar tareas simultáneas sin conflictos entre ramas.

¿Por qué son tan útiles con subagentes de IA?

Cuando delegas una feature a un agente, no siempre sabes cuál será la mejor implementación. Los Worktrees te dejan enfrentar dos modelos con el mismo prompt y comparar resultados reales antes de mergear.

Es como pedirle a dos desarrolladores que resuelvan el mismo problema en paralelo y quedarte con la solución más limpia.

¿Cómo crear un Worktree en Cursor paso a paso?

En la clase [01:30] se ejecuta el spec número nueve del proyecto usando este prompt: implementar los for flags con una pure function que evalúe si el flag está activo o no, con la lógica en el dominio, puro HTTP sin UI, cubriendo flag off, activo, reglas por ambiente e incluyendo tests en cada caso.

El flujo dentro de Cursor es directo:

  1. Abrir la pestaña Local y seleccionar New Worktree.
  2. Elegir el modelo, en este caso Composer 2.5 Fast.
  3. Pegar el prompt y ejecutar el agente.
  4. Abrir un segundo agente con New Agent, seleccionar el proyecto, la rama main y crear otro New Worktree.
  5. Correr el mismo prompt, pero esta vez con ChatGPT 5.5 como modelo competidor.

Cursor toma la raíz del proyecto y la duplica en dos entornos aislados. Cada agente trabaja por su cuenta y tú decides al final.

¿Qué cambios genera cada modelo en el proyecto?

Al terminar ambos subagentes [03:10], estos son los resultados:

  • Composer 2.5: modificó la configuración de TypeScript, agregó los test scripts en el dominio, creó el documento de test de la función, la función principal, la hash function, el export index, los types, la configuración de tests y actualizó yarn.lock con las dependencias nuevas.
  • ChatGPT 5.5: creó los test scripts, los tests de la pure function, la función flag evaluator y un index con los exports.

La decisión final se inclina por Composer porque desglosó mejor las funciones y fue más minimalista. Menos código, misma cobertura.

¿Cómo mergear un Worktree a la rama principal?

Una vez que eliges la solución ganadora, abres el chat del agente correspondiente y usas el botón Move to local ubicado en la parte superior. Ese botón integra el Worktree seleccionado a tu rama main y descarta el otro experimento.

¿Qué hace el botón Move to local en Cursor? Toma el Worktree activo y lo mergea a tu rama principal, para que puedas seguir trabajando desde ahí con el código elegido.

¿Qué reto puedes hacer para practicar Worktrees?

El ejercicio propuesto es crear un experimento propio con Worktrees. Tienes dos caminos claros:

  • Aplicarlo a funciones de backend, como en el ejemplo del feature flag evaluado con una pure function.
  • Aplicarlo en el front end, generando dos UIs distintas con el mismo prompt y quedándote con la que te convenza más visual y estructuralmente.

La gracia del reto está en obligarte a comparar. Cuando ves dos soluciones lado a lado, tu criterio técnico se afila rápido.

¿Qué aprendiste sobre Composer y subagentes en este módulo?

En este recorrido trabajaste con Composer, el modelo de inteligencia artificial creado por Cursor para asistirte en desarrollo de software. También construiste tu propio hardness usando MCPs y hooks, que guían a tus subagentes al ejecutar tareas específicas.

Y cerraste con la parte más potente: paralelizar tareas dando contexto a cada subagente para que resuelva un trabajo de principio a fin, mientras tú decides qué versiones llegan a producción y cuáles se descartan.

En el siguiente módulo vas a explorar las herramientas que Cursor ofrece para trabajar con interfaces gráficas. ¿Ya probaste enfrentar dos modelos con el mismo prompt? Cuéntame en los comentarios cuál te dio mejores resultados.