← Voltar ao blog

IA & Agentes

Copilot Studio - Windows 365 for Agents - quando o agente precisa de um PC de verdade

Copilot Studio - Windows 365 for Agents - when your agent needs a real PC

Copilot Studio - Windows 365 for Agents - quando o agente precisa de um PC de verdade

Fala dataholics, fechando a sequência de novidades do Copilot com a que eu achei mais divertida de testar. Todo mundo que trabalha com integração já esbarrou naquele sistema que não tem API, não tem conector e o fornecedor sumiu. O Windows 365 for Agents é a resposta da Microsoft pra isso: um servidor MCP que dá ao seu agente o controle de um Cloud PC inteiro.

O que veremos nesse post:

  • O que esse MCP server entrega

  • Como funciona a sessão

  • O que o agente consegue fazer no desktop e no browser

  • Os limites de segurança, que são muitos


Um Cloud PC como ferramenta do agente

O Windows 365 for Agents é um servidor MCP que você pluga no agente e que dá controle operacional completo de um Cloud PC do Windows 365. São três frentes: interação de desktop com mouse, teclado, captura de tela e execução de comando; automação de browser via Microsoft Edge; e inspeção semântica de interface usando o Windows UI Automation.

Ele ficou GA em junho e o server id é mcp_W365ComputerUse. Se você já leu a parte 3 da série de tools e conectores, o caminho de plugar é o mesmo de qualquer outro MCP.

Tem um detalhe que passa batido e que amarra com o post de harness lá do começo da semana: a documentação avisa que essa feature roda no standard harness, com o licenciamento clássico, e não no GitHub Copilot harness. Ou seja, computer use não te obriga a entrar no modelo de crédito.


A sessão é o começo de tudo

Nada acontece sem sessão. Você chama StartSession, ele conecta e aloca o recurso de Cloud PC e devolve um sessionId. No fim você chama EndSession passando esse id pra liberar a máquina, e tem GetSessionDetails pra consultar metadado de uma sessão específica.

Aqui vai um cuidado bem prático que está escrito na doc: pra manter sessão longa viva, mande alguma requisição pelo menos a cada 30 minutos, senão ela é despejada por inatividade. A sugestão deles é usar o get_screen_size como heartbeat, porque é leve. Guarda esse detalhe, é o tipo de coisa que quebra automação demorada de madrugada e você fica sem entender.


O que o agente consegue fazer

No desktop ele clica (com os cinco botões do mouse, incluindo duplo clique), arrasta com precisão de pixel, rola a tela, digita texto e combinação de teclas, tira screenshot da tela inteira ou de um recorte, dá zoom numa região pra ler texto pequeno, roda OCR na tela toda devolvendo confiança e bounding box de cada trecho, lista e ativa janela por título aproximado, mexe no clipboard, lista e mata processo e abre aplicação.

No browser ele navega, lê texto e HTML da página, clica e digita por seletor CSS, preenche formulário inteiro numa chamada, troca de aba, salva a página em PDF e ainda tira o accessibility snapshot, que devolve a árvore da página com ref ids estáveis pra você clicar por referência em vez de coordenada. Bem mais confiável que ficar mirando pixel.

Uma sequência típica de preencher formulário fica mais ou menos assim:

StartSession                    -> devolve sessionId
browser_navigate                url da pagina
browser_wait_for                seletor do formulario
browser_fill_form               lista de {selector, value}
browser_click                   #submit-btn
browser_wait_for                seletor da confirmacao
browser_get_text                le o resultado pra validar
EndSession                      libera o Cloud PC

E pra aplicação desktop, onde não existe seletor CSS, o caminho é outro:

activate_window                 titulo parcial da janela
take_screenshot                 estado atual
find_ui_element                 role: "Button", name: "Salvar"
click                           usa as coordenadas devolvidas acima
type_text                       preenche o campo
press_keys                      ["ctrl","s"]
take_screenshot                 confere o resultado

O find_ui_element é a peça que faz isso funcionar sem gambiarra, porque ele procura por texto, papel do controle ou nome acessível e devolve a coordenada clicável. Você não fica dependendo de o botão estar sempre no mesmo lugar da tela.


Os limites, e eles são bem-vindos

Essa é a parte que eu recomendo ler com calma antes de prometer automação pro time, porque o ambiente é bem cercado:

  • Shell com allow list - só passam git, npm, dotnet, python, cargo, node, pip, dir, mkdir, del, copy, move, robocopy, findstr, where, type e notepad.

  • Padrões bloqueados - metacaractere de shell (pipe, ponto e vírgula, e comercial, redirecionamento), expansão de variável, flags de eval como python -c e node -e, git config --global, npm -g, rm -rf e sudo.

  • Sandbox do Python - até 262.144 caracteres de código, 512 MB de memória e 30 segundos de execução.

  • Timeout - 30 segundos por padrão nos comandos, teto de 120 segundos, e stdout e stderr truncam em 32 KB cada.

  • Sem tool de arquivo - não existe leitura e escrita dedicada. Você lê com o comando type e escreve com Python, porque o redirecionamento de saída está bloqueado.

  • Cookie redigido - dá pra listar nome, domínio, path e flags, mas o valor nunca é devolvido.

  • Só Edge no DOM - o focus_browser até foca Chrome e Firefox, mas as tools de DOM funcionam apenas na instância do Edge.

E tem um detalhe que eu achei sensacional: existe um failsafe de cursor, então se o ponteiro chegar a cinco pixels de qualquer canto da tela as operações de mouse são canceladas. É o clássico "mata a automação puxando o mouse pro canto", só que embutido no produto.

Reginaldo, então dá pra automatizar qualquer sisteminha legado com isso?

Dá, e é exatamente pra isso que serve, só que eu iria com calma. Automação por interface quebra quando a tela muda, e agora quem vai clicar é um modelo interpretando screenshot e árvore de acessibilidade. Onde existir API ou conector, use a API. Guarde o computer use pro que realmente não tem outro caminho, e monte o fluxo verificando o resultado a cada passo, que é o motivo de aquele take_screenshot final estar ali no exemplo.


RESUMO

  • Windows 365 for Agents é um MCP server que dá ao agente um Cloud PC inteiro, GA desde junho.

  • Roda no standard harness, então não entra no modelo de Copilot Credits.

  • Sessão explícita com StartSession e EndSession, e heartbeat a cada 30 minutos em processo longo.

  • Desktop, browser via Edge e inspeção de UI, com find_ui_element evitando clique por coordenada fixa.

  • Allow list no shell, sandbox no Python, cookie redigido e failsafe de cursor.

  • Use quando não existir API, e valide cada passo do fluxo.

Com isso fecho a sequência de novidades do Copilot dessa semana. Comenta aí qual sistema da sua empresa você colocaria nesse agente primeiro, aposto que todo mundo tem um candidato na cabeça.

Referências:

Windows 365 for Agents MCP server

Windows 365 for Agents

Espero que tenha gostado.

#windows365 #mcp #copilotstudio #computeruse #microsoft #ia #agentes #datainaction

#windows365#mcp#copilotstudio#computeruse#microsoft#ia#agentes#datainaction

Gostou? Tem mais no YouTube e no LinkedIn.

← Voltar ao blog