Cap 3: Git Worktrees en Orca
Qué son los Git Worktrees
Un git worktree es una copia de trabajo adicional de tu repositorio que comparte el mismo .git pero opera en un directorio separado con su propio branch. Esto significa que puedes tener múltiples branches checked out simultáneamente sin hacer git stash o git switch.
# Sin worktrees: un solo directorio, un solo branch
~/proyecto/ → branch: main
# Con worktrees: múltiples directorios, múltiples branches
~/proyecto/ → branch: main
~/proyecto-wt/auth/ → branch: feat/auth
~/proyecto-wt/api/ → branch: fix/api-error
~/proyecto-wt/ui/ → branch: refactor/ui
Por qué Orca usa Worktrees
El problema fundamental del desarrollo multi-agente es el conflicto de archivos. Si dos agentes editan el mismo archivo en el mismo directorio, se producen colisiones. Los worktrees resuelven esto de forma nativa en Git:
flowchart LR
subgraph "Sin Worktrees"
A1[Agente 1] -->|edita| F1[src/app.ts]
A2[Agente 2] -->|edita| F1
F1 -->|CONFLICTO| X[Error]
end
flowchart LR
subgraph "Con Worktrees"
B1[Agente 1] -->|edita| F2[wt-auth/src/app.ts]
B2[Agente 2] -->|edita| F3[wt-api/src/app.ts]
F2 -->|merge| M[main]
F3 -->|merge| M
end
Cada agente trabaja en su propio worktree con su propio branch. No hay posibilidad de conflicto en tiempo de edición. Los conflictos solo aparecen al hacer merge, donde el desarrollador los resuelve con contexto completo.
Crear Worktrees en Orca
Desde la UI
- Abre el panel de Worktrees en la sidebar (
Ctrl/Cmd + Shift + W) - Click en + New Worktree
- Especifica el nombre del branch (Orca crea el directorio automáticamente)
- Selecciona el branch base (normalmente
main)
Desde la terminal integrada
# Orca provee un wrapper que gestiona las rutas automáticamente
orca worktree create feat/auth
# Equivalente a:
git worktree add ../proyecto-wt/feat-auth -b feat/auth
Desde el CLI
# Crear worktree y asignar agente en un solo comando
orca worktree create feat/auth --agent claude
Gestionar Worktrees
Listar worktrees activos
orca worktree list
Salida:
WORKTREE BRANCH AGENT STATUS
main main - idle
feat-auth feat/auth claude running
fix-api fix/api-error codex running
refactor-ui refactor/ui - idle
Cambiar entre worktrees
En la UI, haz click en cualquier worktree de la sidebar para cambiar el contexto del editor y la terminal.
# Desde CLI
orca worktree switch feat/auth
Eliminar un worktree
# Desde CLI
orca worktree remove feat-auth
# Equivalente a:
git worktree remove ../proyecto-wt/feat-auth
Orca limpia el directorio y el branch tracking automáticamente. Si el worktree tiene cambios sin commit, Orca te advierte antes de eliminar.
Estructura de directorios
Orca organiza los worktrees en una carpeta paralela al proyecto principal:
~/Desarrollos/
mi-proyecto/ # Repo principal (main)
mi-proyecto-orca-wt/ # Carpeta de worktrees de Orca
feat-auth/ # Worktree para feat/auth
fix-api/ # Worktree para fix/api-error
refactor-ui/ # Worktree para refactor/ui
Esta convención evita que los worktrees contaminen el directorio del proyecto principal.
Worktrees y el flujo multi-agente
El flujo típico con worktrees en Orca es:
sequenceDiagram
participant D as Desarrollador
participant O as Orca
participant G as Git
participant A as Agente
D->>O: "Crea worktree para feature X"
O->>G: git worktree add
G-->>O: Worktree creado
O->>A: Lanzar agente en worktree
A->>A: Trabaja en branch aislado
A-->>O: Commits listos
O-->>D: Notificación: revisar diffs
D->>O: Aprobar y merge
O->>G: git merge + worktree remove
Buenas prácticas
- Un worktree por tarea: no reutilices worktrees para tareas diferentes
- Nombres descriptivos: usa convenciones como
feat/,fix/,refactor/ - Limpia worktrees: elimina los worktrees después de hacer merge
- Branch base actualizado: antes de crear un worktree, asegúrate de que
mainestá actualizado
Comandos Git nativos de referencia
Orca abstrae los comandos de Git, pero es útil conocer los equivalentes nativos:
# Crear worktree
git worktree add <ruta> -b <branch>
# Listar worktrees
git worktree list
# Eliminar worktree
git worktree remove <ruta>
# Limpiar worktrees huérfanos
git worktree prune