glossário
o que é isolamento com worktrees?
TL;DR
Isolamento com worktrees significa que cada agente de IA ganha sua própria cópia do código, na sua própria branch, na sua própria pasta. Assim, os agentes podem editar os mesmos arquivos ao mesmo tempo sem sobrescrever um ao outro. Seu checkout principal fica intocado até você fazer merge. O Pane configura isso automaticamente para cada pane.
Isolamento com worktrees significa que cada agente de IA trabalha na sua própria cópia do código, na sua própria branch, na sua própria pasta. Assim, vários agentes podem mudar os mesmos arquivos ao mesmo tempo sem sobrescrever um ao outro, e seu checkout principal fica intocado até você fazer merge.
o problema
Agentes que compartilham uma pasta vão acabar sobrescrevendo um ao outro.
Você pede ao agente A para reescrever a página de login e ao agente B para adicionar um fluxo de cadastro. Os dois precisam mudar auth.ts. Numa pasta compartilhada, o agente B salva a versão dele e substitui sem aviso as edições do agente A. Nenhum dos agentes percebe, e você descobre depois.
É por isso que vários agentes num diretório é uma aposta. Funciona até dois deles mexerem no mesmo arquivo, e aí o trabalho de alguém se perde.
a solução
Uma worktree por agente: arquivos e branches separados, mesmo histórico.
Dê a cada agente sua própria git worktree: uma pasta separada com uma branch separada, compartilhando o mesmo histórico. O agente A trabalha numa, o agente B em outra, e os dois podem editar auth.ts porque estão editando cópias diferentes.
my-project/ ← main branch, untouched
my-project/worktrees/
├─ login-rewrite/ ← agent A, branch login-rewrite
└─ signup-flow/ ← agent B, branch signup-flowo que fica isolado
Arquivos, branch e shell são separados. Histórico, remoto e objetos do git são compartilhados.
| isolado | compartilhado |
|---|---|
| Arquivos e mudanças não commitadas | Histórico e commits do git |
| Branch | Repositório remoto (origin) |
| Estado do shell e variáveis de ambiente | Configuração do git |
| Pasta de trabalho | Armazenamento de objetos do git, que economiza espaço em disco |
como o pane faz isso
O Pane cria e limpa uma worktree para cada pane automaticamente.
Quando você cria um pane, o Pane entrega a ele uma worktree preparada com antecedência, dá a ele uma branch nova, copia seus arquivos .env, configurações de agentes e node_modules, e inicia o agente lá. Quando você arquiva o pane, o Pane verifica se há trabalho não salvo e remove a worktree. Você nunca digita git worktree add por conta própria.
o que o isolamento não cobre
Worktrees mantêm os arquivos dos agentes separados. Elas não colocam em sandbox o que um agente pode fazer.
Uma worktree é uma pasta, não um sandbox. Os agentes continuam rodando com as permissões do seu usuário, então um deles poderia ler os arquivos de outra worktree pelo caminho, acessar a rede ou mudar coisas fora do repositório. Na prática, os agentes ficam na sua pasta de trabalho, mas se você precisa de limites rígidos, rode-os num contêiner ou numa VM.
Algumas coisas são compartilhadas fora do git: um banco de dados que seu app usa, a porta de um servidor de desenvolvimento, um cache global de pacotes. O Pane dá a cada pane seu próprio bloco de portas em PANE_PORT; para bancos de dados, use um script de configuração ou uma ferramenta que crie um por worktree.
conteúdo relacionado
Fontes
- Correções
- Se algo aqui estiver errado ou desatualizado, nos avise e vamos corrigir e atualizar a data no topo. Abra uma issue no GitHub
- Fontes
perguntas frequentes
Por Parsa Khazaeepoul, cofundador do Pane. .