Agentes em sandboxes: escolha primeiro como o código volta para você
Checkout compartilhado, worktree ou clone isolado mudam a revisão e a recuperação do trabalho de agentes em Docker Sandboxes.
A Docker publicou uma comparação entre checkouts compartilhados, worktrees e clones isolados para agentes em Docker Sandboxes.[3] O texto trata localização do código, duração do ambiente e quantidade de repositórios como escolhas combináveis, não como um único modo obrigatório de trabalho.[3]
Minha leitura é começar pela pergunta que costuma ficar para o fim: onde estará o resultado quando o agente terminar ou o ambiente desaparecer? Sem essa resposta, isolamento pode virar apenas uma forma mais organizada de perder alterações.
O que muda para quem desenvolve
Montar o checkout do computador permite acompanhar edições no editor e usar Git dos dois lados, mas humano e agente passam a compartilhar a mesma árvore de arquivos.[3] Uma troca de branch ou uma edição interfere no trabalho em andamento nesse arranjo.[3] Dependências com binários nativos também podem conflitar entre o Linux do sandbox e hosts Windows ou macOS.[3]
Worktrees dão diretórios e branches próprios, mas montar somente uma worktree vinculada pode deixar inacessíveis os metadados referenciados pelo arquivo .git.[3] No modo de clone descrito pela Docker, a origem é montada como somente leitura e o sandbox recebe um clone independente, com suas próprias dependências e operações Git.[3]
A decisão, portanto, deve separar colaboração imediata de autonomia operacional. Recomendo checkout compartilhado apenas quando a intervenção simultânea for desejada e supervisionada. Para delegações longas, prefira definir uma entrega explícita por branch e revisão.
Como aplicar
Antes de distribuir tarefas, escreva um pequeno contrato operacional para cada ambiente:
- Qual diretório o agente pode alterar?
- Quem instala dependências e em qual ambiente?
- Qual serviço pode ocupar cada porta?
- Onde os commits serão preservados?
- Como o resultado será trazido para revisão?
Como experimento, use um repositório descartável e uma alteração pequena. Peça ao agente para produzir um commit no ambiente isolado, traga a branch ao ambiente de revisão e confirme o diff antes de encerrar o sandbox. Inclua um arquivo não commitado no exercício para tornar visível o que o procedimento de entrega deixa de preservar. Não use dados importantes nessa simulação.
Cuidados e limites
No desenho descrito, worktrees internas de um sandbox persistente continuam compartilhando serviços e ferramentas desse ambiente; independência desses recursos requer sandboxes separados.[3] A remoção do sandbox elimina arquivos que existam apenas ali, por isso a Docker orienta exportar ou enviar o trabalho antes de removê-lo.[3]
Não confunda uma branch exclusiva com isolamento completo. Minha recomendação é escolher separadamente isolamento de arquivos, dependências, serviços e credenciais. Mais separação aumenta o custo de preparação e de integração. Menos separação cobra esse custo na forma de coordenação. O melhor arranjo é aquele cujo procedimento de entrega você consegue verificar.
Fonte
[3] Fonte: Docker Blog