El blog de Deska

Un agente por worktree: guía de configuración

Optimiza tu flujo de trabajo mediante la configuración de un agente por worktree para gestionar ramas en paralelo con agentes de IA especializados.

· 10 min de lectura

Gestionar varias ramas de funcionalidades simultáneamente suele provocar una sobrecarga cognitiva y un desorden de terminales. El método tradicional de cambiar de rama dentro de un único directorio te obliga a guardar cambios temporalmente con stash, reconstruir dependencias y reiniciar servidores de desarrollo. Implementar una configuración de un agente por worktree ofrece una alternativa más limpia. Al combinar los worktrees de Git con agentes de programación autónomos, puedes mantener entornos aislados para diferentes tareas, permitiendo que cada agente opere dentro de su propio contexto específico sin interferencias.

La lógica detrás de Git Worktrees

Los worktrees de Git te permiten tener varias ramas descargadas al mismo tiempo en diferentes directorios. A diferencia de un clon estándar, estos directorios comparten el mismo historial de .git, lo que los hace ligeros y rápidos de gestionar. Cuando trabajas en un proyecto complejo, es posible que tengas una rama de funcionalidad de larga duración, una corrección de errores rápida y una revisión de código ocurriendo al mismo tiempo.

El cambio de contexto estándar implica comandos git checkout que sobrescriben tus archivos de trabajo actuales. Si tu proyecto tiene un proceso de construcción pesado, este cambio podría costarte varios minutos de productividad. Con un worktree, simplemente te mueves a una carpeta diferente. Los archivos ya están allí, el entorno ya está construido y tu progreso se conserva exactamente donde lo dejaste.

Por qué asignar un agente por cada worktree

El auge de los agentes de código con IA como Claude Code u OpenCode cambia la forma en que interactuamos con estos directorios. Un agente funciona mejor cuando su contexto es estrecho y enfocado. Si utilizas una única instancia de agente y saltas entre tareas, el agente puede tener dificultades con referencias de archivos obsoletas o instrucciones contradictorias de sesiones anteriores.

Al adoptar una configuración de un agente por worktree, obtienes varias ventajas:

  • Ejecución en paralelo: Un agente puede ejecutar una suite de pruebas en segundo plano mientras tú trabajas con otro agente en un componente de la interfaz de usuario.
  • Aislamiento del contexto: El agente solo ve los archivos relevantes para esa rama o funcionalidad específica.
  • Memoria persistente: Cada instancia del agente mantiene su propio historial de comandos y proceso de pensamiento relevante para la tarea específica.
  • Gestión de recursos: Puedes asignar diferentes modelos de lenguaje (LLM) a diferentes tareas según su complejidad.

Configuración de tu entorno

Para empezar, necesitas una estructura de proyecto que admita múltiples puntos de entrada. En lugar de anidar worktrees dentro de tu repositorio principal, es mejor crear una carpeta superior para el proyecto y tratar la rama principal como uno de los varios directorios hermanos.

  1. Crea un directorio principal para el proyecto.
  2. Clona tu repositorio en un subdirectorio llamado main.
  3. Usa el comando git worktree add ../nombre-de-la-rama para crear un nuevo directorio para una tarea específica.
  4. Abre cada directorio en una instancia separada de tu herramienta preferida.

Esta estructura evita el anidamiento accidental y facilita que los scripts o las herramientas de automatización encuentren los diferentes entornos. También garantiza que tu IDE o agente de programación no escanee accidentalmente el contenido de otras ramas al realizar una búsqueda global.

Implementación del flujo de trabajo en Deska

El enfoque de canvas en Deska es particularmente adecuado para gestionar una configuración de un agente por worktree. Debido a que Deska te permite colocar paneles en cualquier lugar de un espacio de trabajo infinito, puedes agrupar tus worktrees visualmente.

Podrías colocar una terminal, un editor de código y un agente de programación para la "Funcionalidad A" en el lado izquierdo de tu lienzo. En el lado derecho, puedes tener un grupo similar para la "Corrección B". Al alejar el zoom, ves todo el panorama de tu sprint actual. Cada panel permanece activo, lo que significa que puedes ver a dos agentes diferentes trabajar en tiempo real.

Dentro de Deska, puedes ejecutar múltiples agentes de código como Claude Code y OpenCode uno al lado del otro. Cada panel de agente está limitado al directorio en el que se abrió. Esto asegura que cuando le pidas a un agente que refactorice una función, esté mirando la versión correcta del código en el worktree correcto. Puedes gestionar estas sesiones utilizando Ask Deska, el asistente integrado que te ayuda a navegar entre estos grupos activos o a ejecutar comandos específicos en todo tu espacio de trabajo.

Monitoreo del progreso de forma remota

Un desafío común con las tareas de agentes de larga duración es la necesidad de permanecer en tu escritorio. Si un agente está realizando una refactorización profunda en uno de tus worktrees, puedes usar la aplicación mobile para realizar un seguimiento del progreso. Dado que Deska es local-first, tu código permanece en tu máquina, pero el relevo seguro te permite revisar la salida de la terminal o el estado del agente desde tu teléfono.

Esto es útil para la gestión de worktrees porque puedes verificar si una compilación pasó o si un agente encontró un error mientras estás lejos de tu estación de trabajo. No necesitas exponer ningún puerto ni cambiar la configuración de tu firewall, ya que los dispositivos se emparejan directamente a través de un túnel seguro.

Comparación de enfoques de gestión

CaracterísticaCambio de rama únicoGit WorktreesAgente por Worktree
Velocidad de cambioLenta (Stash/Build)Rápida (Cambio directorio)Instantánea (Grupos visuales)
Trabajo en paraleloNoLimitadoAlto
Foco del agenteMixtoMixtoAislado
Preservación de estadoManualAutomáticaAutomática

Aunque herramientas como Tmux o las ventanas estándar de un IDE difieren en su enfoque, a menudo carecen del diseño visual persistente que proporciona un lienzo. Los IDE tradicionales pueden tener dificultades para ejecutar múltiples instancias de servidores de lenguaje para el mismo proyecto en diferentes ramas, mientras que los paneles aislados en un espacio de trabajo dedicado mantienen límites claros.

Preguntas frecuentes

¿Cómo gestionar múltiples git worktrees de forma eficaz?

La forma más eficaz es utilizar un directorio padre dedicado para todos los worktrees de un proyecto. Evita añadir worktrees dentro de la carpeta del repositorio principal. Utiliza nombres descriptivos para los directorios que coincidan con los nombres de las ramas para evitar confusiones al navegar a través de la línea de comandos o una interfaz de lienzo.

¿Son compatibles los agentes de programación con IA con git worktrees?

Sí, la mayoría de los agentes operan a nivel de sistema de archivos. Siempre que apuntes al agente hacia la ruta específica del worktree, funcionará normalmente. El beneficio principal es que el agente no se confundirá con archivos o cambios que existan en otras ramas, ya que el worktree proporciona una instantánea limpia y aislada.

¿Puedo ejecutar diferentes LLMs para diferentes worktrees?

Absolutamente. Podrías usar un modelo más potente y costoso para un cambio arquitectónico complejo en un worktree, mientras usas un modelo más pequeño y rápido para escribir pruebas unitarias en otro. Esto se gestiona fácilmente abriendo diferentes paneles de agentes y proporcionando sus respectivas claves de API o utilizando opciones de inferencia gestionada.

Empieza a usar Deska

Si estás listo para organizar tu entorno de desarrollo con una configuración de un agente por worktree, puedes descargar la aplicación de escritorio gratuita para Mac, Windows o Linux. El lienzo infinito y el soporte para múltiples agentes simultáneos proporcionan la base técnica necesaria para gestionar flujos de trabajo paralelos y complejos sin la fricción típica del cambio de contexto. Para obtener más información sobre cómo configurar tu primer espacio de trabajo, visita la guía de inicio en nuestra documentación.

💡 Ideas+🐛 BugsPropón una feature o reporta un bug