MXterm Pro

Aísla agentes de IA en paralelo con git worktree

Henry AGI
5 min de lectura
Diagram: one repo fans out to three git worktrees, each on its own swarm branch, one per coding agent

Un git worktree para agentes de IA da a cada agente de código del repositorio (Claude Code, Codex, OpenCode) su propia rama y sus propios archivos. MXterm Pro lo automatiza: marca el aislamiento con worktrees al crear un espacio de trabajo y cada panel de agente se abre en su propio worktree, en una rama nueva, sin git worktree add manual. Sin eso, el git checkout o el git stash de un agente puede reescribir archivos que otro está editando.

Quién necesita un worktree por agente

Un agente solo en un repositorio no tiene con quién chocar. Le basta el directorio de trabajo principal, y activar el aislamiento no te aporta nada.

El aislamiento importa cuando ejecutas dos o más agentes sobre el mismo repositorio a la vez. El Swarm Task Orchestrator de MXterm Pro trae dos presets pensados para eso. "Full Swarm Trio (Lead, QA, Docs)" lanza Claude Code, Codex y OpenCode juntos. "Feature Duo (Dev + Tester)" empareja Claude Code con Codex. Ambos activan por defecto el aislamiento con worktrees al lanzarlos.

No necesitas un preset. Abre una pestaña nueva, elige los agentes y marca tú mismo "Aislar funciones en git worktrees" en el Composer. Por defecto la casilla está desactivada y solo funciona en un repositorio git. Los paneles que dividas después se abren en la carpeta del espacio de trabajo, no en un worktree propio.

Guía relacionadaTerminal para Docker en Mac: builds junto a tus deploys por SSH

Cómo MXterm Pro crea un worktree para cada panel de agente

El interruptor aparece en dos lugares y hace lo mismo: la pantalla Nuevo espacio de trabajo ("Aislar funciones en git worktrees") y el diálogo del Swarm Task Orchestrator ("Aislar funciones en git worktrees"), que ves al lanzar un preset. Los documentos de agentes y Control Room (antes War Room) describen esa misma opción.

Con la opción activada, cada panel de agente nuevo recibe su propia copia de trabajo dentro del directorio .worktrees/ del repositorio, en una rama nueva que se llama swarm/<adjective>-<noun>, por ejemplo swarm/brave-otter. Un panel de terminal sin agente sigue abriéndose en la raíz del repositorio, sin cambios.

El nombre sale al azar de un conjunto de unas 17 000 combinaciones, no de una numeración, así que dos ejecuciones no reutilizan por casualidad un worktree viejo. Si el nombre ya existe, MXterm reintenta con un sufijo numérico (swarm/brave-otter-2, luego -3 y así), con un máximo de cinco nombres antes de rendirse con ese panel.

MXterm añade el directorio .worktrees/ al .gitignore del propio repositorio la primera vez que lo crea. Estas copias desechables nunca aparecen como cambios sin seguimiento en tu directorio de trabajo principal.

Si la carpeta que le indicas a MXterm no es un repositorio git, se omite el aislamiento en vez de forzarlo. Hasta la 1.0.21 la app ejecutaba git init, git add . y un commit en esas carpetas, lo que podía colar un .env o una clave privada en un historial que nadie pidió. Desde la 1.0.22 ya no ejecuta git init en ellas.

Ahora el Composer dice "Esta carpeta no es un repositorio git, por lo que los agentes la comparten directamente (sin aislamiento de worktree)". Los paneles se abren sin aislar en la raíz de la carpeta y cada uno muestra un aviso, que puedes descartar, con el motivo. Ejecuta git init y haz tu propio primer commit si quieres el aislamiento.

Hay una excepción: en un repositorio existente sin commits, el Composer de Nuevo espacio de trabajo y el diálogo del Swarm Task Orchestrator crean un .gitkeep vacío y hacen commit solo de ese archivo, como "Initial commit", antes de crear los worktrees (los demás archivos de la carpeta no se añaden al área de preparación), porque un worktree necesita un commit del que partir.

El encabezado de cada panel muestra la rama de su worktree en una insignia pequeña. Sabes en qué rama está un agente sin abrir el panel de Git.

Los worktrees se crean uno por uno, a propósito. Varias llamadas simultáneas a git worktree add en un mismo repositorio compiten por el archivo de bloqueo de git, y un fallo pasajero le quitaría el aislamiento a un panel. Si no se puede crear un worktree (error de bloqueo de git, sin espacio en disco o cualquier otra causa, una vez reintentados los nombres repetidos), ese panel vuelve a la raíz del repositorio y registra una advertencia. El resto del espacio de trabajo se abre igual.

Qué evita el aislamiento y qué no

Un caso práctico: lanzas "Feature Duo" y Claude Code queda en su propia rama y su propio worktree, y Codex en otro.

Sin aislamiento, ambos agentes compartirían un directorio de trabajo. Si Codex ejecuta git checkout o git stash a mitad de tarea, los archivos que Claude Code tiene abiertos en disco cambian sin que se entere. En su siguiente llamada a una herramienta, ninguno de los dos agentes sabe por qué el archivo que acaba de escribir no coincide con lo que lee después.

Con worktrees separados, cada agente tiene su propia copia de cada archivo, en su propia rama. Esto reduce la probabilidad de que el checkout de un agente reescriba los archivos que otro tiene abiertos.

El aislamiento no elimina todo tipo de conflicto. Dos agentes que editan la misma funcionalidad desde ángulos distintos pueden seguir generando ramas que necesitan después un merge real, revisado por una persona, y MXterm no automatiza esa parte. Lo que el aislamiento quita es más estrecho y puramente mecánico: la pelea a nivel de sistema de archivos por un único directorio de trabajo compartido.

Un worktree no es un sandbox. El panel sigue siendo una shell normal, así que un agente puede salir de su carpeta y ejecutar cualquier comando que tu usuario pueda ejecutar. Además, todos los worktrees comparten el mismo .git del repositorio. El aislamiento separa los archivos de los agentes, pero no limita lo que pueden hacer.

Añadir, fusionar y quitar worktrees durante la sesión

El aislamiento no se decide solo al crear el espacio de trabajo. Un agente puede crear un panel de trabajo aislado nuevo a mitad de sesión para una subtarea delegada, con la herramienta worktree.spawn. Solo funciona en un espacio de trabajo creado con el aislamiento activado.

El merge sigue siendo manual, a propósito. Cuando la rama de un agente esté lista, fusiónala como siempre: git merge swarm/brave-otter desde el worktree principal, o súbela y abre un pull request, lo que ya haga tu equipo. MXterm se encarga solo de crear el worktree y de limpiarlo después. No decide qué pasa con el código que contiene.

Quitar un worktree es conservador a propósito, y hay dos vías distintas para hacerlo. Un agente solo puede quitar un worktree que no tenga ningún cambio sin commit. En cualquier otro caso se niega, y no hay forma de forzarlo.

Limpiarlo desde la interfaz funciona distinto. "Limpiar worktrees…" está junto a la lista de worktrees del panel de Git. Elimina las entradas obsoletas (un worktree cuyo directorio ya no existe) sin confirmación y luego abre un diálogo.

En el diálogo, los worktrees con archivos sin commit aparecen por rama, con el número de archivos de cada una. Por defecto están sin marcar, así que marcas cada uno que quieras quitar. Los worktrees sin nada pendiente solo se resumen en un número y se quitan al confirmar.

El diálogo solo cuenta los commits por delante del upstream de una rama, y las ramas que crea MXterm no tienen upstream, así que en ellas cuenta cero. Revisa los commits de una rama antes de confirmar, porque quitar el worktree borra también la rama con git branch -D.

Ninguna de las dos vías se ejecuta sola. Cerrar un panel, un espacio de trabajo o toda la app nunca borra un worktree por su cuenta. La limpieza solo ocurre cuando la lanzas tú a propósito, o un agente dentro de sus límites estrictos.

Una restricción que conviene saber desde el principio: el directorio de un worktree nunca se renombra después de crearse, porque el estado de sesión de un agente está ligado a esa ruta absoluta. Puedes renombrar la rama git de su interior sin problema, pero no la carpeta.

Free vs Pro: qué está limitado

El aislamiento con worktrees no es un interruptor exclusivo de Pro. Funciona igual en ambos planes.

Lo que se limita es el tamaño de una Control Room. Por defecto, el plan Free no tiene límite de paneles, pero limita a 2 miembros cualquier Control Room (agentes agrupados para compartir contexto entre ellos). Otros límites de Free, 5 hosts SSH guardados y 1 MXterm Host guardado, no tienen relación con los worktrees. Pro quita estos límites.

El preset "Feature Duo" (2 agentes, 2 worktrees) cabe de sobra en el límite de 2 miembros de la Control Room de Free. "Full Swarm Trio" tiene tres agentes, así que una Control Room con los tres necesita Pro.

Git worktrees frente a iTerm2, Warp, Termius y MobaXterm

La alternativa gratuita a la automatización de MXterm no es otra app. Es un git worktree por agente de IA montado a mano, con los comandos git worktree add y git worktree remove en la terminal que ya uses. Funciona bien con uno o dos agentes.

Lo que MXterm Pro te quita es el trabajo de gestión cuando crece el número de agentes: pensar un nombre de rama único, crear el worktree, apuntar el directorio de trabajo del panel a ese worktree y evitar que borres por error uno con trabajo sin commit.

iTerm2 es un emulador de terminal para macOS excelente y muy programable. Como otras terminales convencionales, no crea git worktrees por ti. Con este flujo ahí escribes git worktree add a mano para cada panel, y luego te toca acordarte de ejecutar git worktree remove y borrar la rama tú mismo.

Warp también pone un agente de IA en primer plano en la terminal. Puede ejecutar varios agentes a la vez en pestañas o paneles separados, y su propia guía multiagente recomienda un git worktree por agente (consulta MXterm Pro vs Warp). El enfoque de MXterm Pro es más acotado: con el aislamiento activado, crea él mismo la rama y el worktree de cada panel de agente.

Pruébalo tú mismo

SSH con varios paneles, Command Recipes (Cmd+J) y una Control Room (antes War Room) multiagente: gratis para empezar.

Descargar MXterm Pro

¿Ya tienes MXterm Pro? Lee la guía de configuración →

¿Nuevo en MXterm Pro? Mira los precios →

Preguntas frecuentes

¿Necesito saber los comandos de git worktree para usar esto?

No. MXterm Pro elige el nombre de la rama y ejecuta los comandos de worktree add y remove por ti siempre que el aislamiento esté activado. Escribirlos tú es opcional.

¿Qué pasa con un worktree si cierro el panel que lo creó?

Nada. Cerrar un panel, un espacio de trabajo o incluso salir de MXterm Pro nunca quita un worktree. Lo limpias de forma explícita, de dos maneras. Una es la llamada a la herramienta de un agente, que solo funciona si el worktree está totalmente limpio. La otra es "Limpiar worktrees…", junto a la lista de worktrees del panel de Git, cuando ya no necesites la rama.

¿Aislar agentes en worktrees ocupa mucho espacio extra en disco?

Algo, pero mucho menos que un segundo clon completo. Un git worktree comparte el historial de commits y los objetos del repositorio a través del mismo .git. Solo se duplican los archivos de la copia de trabajo y una pequeña cantidad de metadatos por worktree. Así que el costo crece con el tamaño de tu directorio de trabajo, no con todo el historial del repositorio.

¿Cómo paso el trabajo de un agente a mi rama principal?

MXterm Pro no fusiona ramas por ti, a propósito. Cuando la rama swarm/<name> de un agente esté lista, fusiónala como siempre desde tu worktree principal (git merge swarm/brave-otter) o súbela y abre un pull request, lo que ya haga tu equipo.

¿Y si la carpeta todavía no es un repositorio git?

Se omite el aislamiento y los paneles se abren compartiendo esa carpeta directamente, con un aviso en cada uno que explica por qué. MXterm Pro no ejecuta git init en ella. Ejecuta git init, haz tu propio primer commit y vuelve a crear el espacio de trabajo.

Pregunta a una IA sobre MXterm Pro

Abre una respuesta en vivo en ChatGPT, Claude o Perplexity, basada en esta página. La escribe el asistente, no nosotros, así que revisa las fuentes que cita.

Pregunta enviada¿Cómo usa MXterm Pro los git worktrees para que varios agentes de código no se sobrescriban los archivos?