Desenvolvedores agora podem iniciar várias sessões de agentes de codificação ao mesmo tempo sem temer a sobrescrita de arquivos de estado ou conflitos de arquivos ocultos. Um padrão consultivo de "compartilhamento zero" (share-nothing) isola o espaço de trabalho de cada agente e alerta sobre possíveis conflitos. A abordagem substitui locks rígidos por um registro leve que sinaliza sobreposições de trabalho antes que elas ocorram, mantendo os pipelines em movimento mesmo quando uma sessão falha.
Por que agentes paralelos causam problemas
Executar mais de um assistente de codificação automatizado em um único repositório acelera a geração de código, testes ou refatoração. Na prática, dois problemas surgem imediatamente.
- Corrupção de estado – Dois agentes escrevem no mesmo arquivo de estado; a escrita posterior sobrescreve a anterior, apagando o progresso.
- Colisão de arquivos – Dois agentes editam o mesmo arquivo de origem sem saber da existência um do outro. O conflito aparece mais tarde, quando um diff mostra mudanças divergentes.
Ambos os problemas desperdiçam o tempo do desenvolvedor e podem introduzir bugs difíceis de rastrear.
A regra "share nothing"
A ideia central é simples: cada agente recebe seu próprio rascunho privado no disco e escreve apenas em arquivos pertencentes àquela sessão. Apenas um arquivo deliberadamente compartilhado por branch é permitido, e ele segue a regra "o último a escrever vence" — o agente que escrever por último determina o conteúdo final.
Uma camada de presença rastreia cada sessão ativa:
- Nome da branch
- Lista de arquivos sendo acessados
- Timestamp da última atividade
Quando uma nova sessão é iniciada, ela consulta o registro. Se outra sessão já estiver lidando com qualquer um dos mesmos arquivos, o desenvolvedor recebe um aviso antes que qualquer trabalho comece.
Locks consultivos vs. bloqueantes
Arquivos de lock tradicionais agem como uma estrada sem saída: uma vez que um lock é assumido, qualquer outro processo espera até que o lock seja liberado. Se a sessão proprietária falhar, o lock pode persistir indefinidamente, forçando uma busca manual por arquivos de lock obsoletos.
O modelo consultivo é mais suave. Ele emite um aviso quando um conflito potencial é detectado, mas não interrompe a nova sessão. Se uma entrada no registro for antiga — o que significa que o processo que a criou não existe mais — o sistema apenas emite um aviso, deixando ao desenvolvedor a decisão de prosseguir.
Como implementar o padrão
- Particionar o estado por escritor – Dê a cada agente seu próprio diretório para arquivos temporários e estado. Reserve arquivos compartilhados para dados verdadeiramente globais e aplique a regra "o último a escrever vence" apenas neles.
- Injetar consciência no lançamento – Antes de um agente começar, leia o registro de presença e compare a lista de arquivos solicitada com as entradas existentes. Aborte ou avise se uma sobreposição for encontrada.
- Verificar a atividade no momento da leitura – Ao consultar uma entrada do registro, verifique se o ID do processo registrado ainda está em execução no SO. Descarte entradas pertencentes a processos mortos.
- Preferir o modelo consultivo ao bloqueante – Permita que os desenvolvedores mantenham o controle. Um aviso permite que eles continuem, pausem ou cancelem, evitando deadlocks.
- Rastrear estados de espera – Quando muitos agentes estão ativos, a atenção do desenvolvedor torna-se o gargalo. Exiba quais agentes estão aguardando entrada humana para que o trabalho possa ser repriorizado.
Tudo isso pode ser construído com um simples diretório de arquivos JSON; nenhum banco de dados externo ou barramento de mensagens é necessário. O formato de armazenamento simples torna o sistema fácil de auditar e portátil entre ambientes.
Riscos e contrapontos
Algumas equipes podem argumentar que um lock rígido garante a segurança: dois agentes nunca poderão escrever no mesmo arquivo. A desvantagem é a redução da resiliência — sessões que falham deixam locks órfãos que travam todo o fluxo de trabalho.
O que observar
Se você está lidando com múltiplos assistentes de código baseados em IA, o padrão consultivo "share nothing" oferece um caminho pragmático para evitar que eles "pisem no pé" uns dos outros. Ao isolar o estado, expor a intenção precocemente e permitir que os humanos decidam quando prosseguir, o método equilibra segurança com a flexibilidade que os pipelines de desenvolvimento modernos exigem.
