Por que nossas tarefas automatizadas abriam navegadores uns em cima dos outros

Ler o original em inglês

browser-automationmulti-agentclaude-codeworkflow-design

Imagem de capa: Por que nossas tarefas automatizadas abriam navegadores uns em cima dos outros

De quatro a dez. Esse é o número de sessões de trabalho automatizadas que rodamos ao mesmo tempo, e ele deixou de fazer sentido na primeira vez que uma janela de navegador abriu num lugar onde a gente não conseguia ver.

Nós não iniciamos esses navegadores. Foi o trabalho que os iniciou. Ele abria páginas, preenchia formulários, tirava capturas de tela e clicava por páginas de administração chatas que não tinham nenhum atalho razoável. Na maior parte do tempo isso era uma boa notícia. Se uma pessoa não precisa ficar abrindo a mesma página e clicando nos mesmos botões, o trabalho anda.

Mas o navegador continuava falhando de jeitos que sobravam para a gente.

Janelas numa sala sem porta

Às vezes uma janela aparecia fora da borda da tela, como uma cadeira colocada numa sala sem porta. O trabalho continuava acontecendo em algum lugar, mas a gente não via.

Com várias sessões rodando, uma delas também podia cair no mesmo navegador de outra. Abas e logins salvos eram sobrescritos sem aviso nenhum. Nada aparecia para dizer que o trabalho tinha sido perdido. Ele simplesmente sumia por baixo da outra sessão.

A pior versão era mais pessoal. Uma sessão podia pegar o navegador que usamos o dia todo e então pedir que assumíssemos o controle. Isso transformava uma tarefa sem supervisão em uma interrupção. Tínhamos que chegar no meio de um trabalho que não tínhamos acompanhado, sem saber o que já tinha acontecido nem por que ela agora queria o nosso navegador. O trabalho deveria seguir sem a gente. Em vez disso, o navegador nos transformava na última linha de defesa.

Meses de ajustes

Por um tempo tratamos isso como um problema de configuração. Mudávamos uma opção, apontávamos para outro perfil e tentávamos a próxima alternativa. Cada mudança ajudava um pouco, e aí aparecia outro problema. Continuávamos torcendo para existir uma última configuração que resolvesse tudo. O custo foram meios dias de ajustes e testes, além da irritação constante de ser puxado de volta para um trabalho que deveria rodar sozinho.

O que tínhamos deixado passar era simples. Uma tarefa usando um navegador é, na maioria das vezes, um problema de configuração. Muitas tarefas usando a mesma máquina são um problema de revezamento.

Já tínhamos um grupo fixo de espaços de navegador numerados. Fizemos assim depois que perfis de navegador separados encheram o disco do sistema até a máquina travar. O grupo fixo limitava quantos navegadores podiam existir. Ele não decidia quem ficava com cada um, nem impedia que duas tarefas escolhessem o mesmo ao mesmo tempo.

Um gerenciador que distribui os espaços

Então construímos a peça que faltava: um gerenciador que distribui os espaços de navegador (Ler em inglês) e acompanha cada um deles. Ele usa um lock entre processos. Parece algo pesado, mas significa apenas que duas tarefas separadas precisam esperar a sua vez quando querem a mesma coisa. Como uma única chave na recepção: só uma pessoa pode ficar com ela por vez. Isso impediu que duas sessões pegassem o mesmo navegador e cobrissem o trabalho uma da outra.

Depois separamos esses navegadores dos nossos. Cada espaço numerado usa uma cópia dedicada do navegador, mantida longe daquele que usamos no trabalho do dia a dia. Uma sessão automatizada não consegue mais entrar no nosso navegador pessoal. Os logins salvos também ficam mais previsíveis, porque cada espaço de trabalho sempre volta para o mesmo navegador.

Também arrumamos a parte que dava para ver. Quando um navegador inicia, o gerenciador verifica as telas reais ligadas à máquina, deixa de fora a faixa ocupada pela barra de tarefas e organiza as janelas numa grade visível. Ele ignora as posições de janela lembradas de antes, que vinham mandando janelas para fora da tela. Se houver mais janelas do que a grade comporta, as extras se empilham onde ainda dá para vê-las, em vez de sumirem num espaço vazio.

Mais um detalhe comum fez diferença: o login salvo. Cada espaço de navegador é associado ao trabalho que ele precisa fazer, então a próxima sessão volta ao mesmo lugar já logado, em vez de começar do zero. Isso evita aquelas pequenas tarefas repetidas que se acumulam e deixam um sistema menos útil.

O que ainda ajustamos

Por enquanto a tela está configurada como uma grade de duas por duas, e assim cada navegador ganha um quarto legível do monitor. Dá para mudar isso numa única configuração, e é aí que isso deve ficar. O problema maior, quem recebe qual navegador e o que acontece quando várias sessões chegam ao mesmo tempo, não depende mais de sorte.

Estamos felizes por termos investido esse tempo. Este é um trabalho de sustentação, um jeito simples de dizer que muitas outras tarefas dependem dele. Usamos isso todos os dias. Deixá-lo pouco confiável teria somado uma pequena taxa a tudo o que foi construído em cima dele, todos os dias.

Quando várias tarefas automatizadas dividem uma máquina, pergunte quem decide qual tarefa fica com qual navegador, e não qual configuração está errada.

Receba a próxima história de IA no dia a dia

Histórias em linguagem simples sobre usar IA para facilitar o trabalho do dia a dia. Um e-mail curto quando sair uma nova, sem jargão.