1 pontos por GN⁺ 2024-10-24 | 1 comentários | Compartilhar no WhatsApp
  • Agent.exe é um app simples em Electron que permite ao novo recurso de computer use do Claude controlar diretamente o computador local, e o projeto deve ser tratado como uma prova de conceito
  • O app foi criado porque o projeto padrão fornecido parecia pesado demais, e foi projetado para que o Claude 3.5 Sonnet execute tarefas no computador local do usuário
  • O fluxo de execução é clonar o repositório, rodar npm install, renomear .env.example para .env, inserir a Anthropic API Key e executar npm start
  • O sistema suportado é MacOS, e como as dependências são multiplataforma, Windows e Linux seriam teoricamente possíveis
  • As limitações conhecidas são que funciona apenas no display principal, a IA assume controle total do computador, e o Claude funciona melhor se o Firefox estiver instalado

Objetivo do Agent.exe

  • Agent.exe é um app que usa o recurso de computer use do Claude para controlar o computador
  • Foi implementado como um app em Electron para permitir que o Claude 3.5 Sonnet manipule diretamente o computador local
  • O projeto é uma prova de conceito, e o autor informa que não pretende fazer manutenção nem mesclar pull requests
    • É livre fazer fork e expandir o projeto

Motivo da criação e como funciona

  • O projeto começou com o objetivo de verificar o quão bem a nova computer use API do Claude funciona
  • Como o projeto padrão fornecido pela Anthropic parecia pesado demais, ele foi transformado em um app mais simples
  • Havia planos de adicionar um modo semi-auto em que o usuário confirma cada ação antes da execução, mas concluiu-se que isso não era necessário porque cada etapa já é lenta demais
  • Se o modelo ficar confuso, o usuário pode encerrar a execução pressionando o botão stop

Como começar

  • Clone o repositório e entre no diretório
  • Instale as dependências
    • npm install
  • Renomeie o arquivo .env.example para .env e adicione a Anthropic API Key
  • Execute o app
    • npm start
  • Depois, peça ao modelo por prompt que realize as tarefas desejadas no computador

Sistemas suportados e limitações

  • O sistema suportado é MacOS
  • Como todas as dependências são multiplataforma, Windows e Linux seriam teoricamente possíveis
  • As limitações conhecidas são as seguintes
    • Funciona apenas no primary display
    • A IA assume controle total do computador
    • Pode haver muitas outras limitações

Dicas de uso e roadmap

  • O Claude aparentemente prefere muito o Firefox
    • Ele usa outros navegadores se for realmente necessário, mas funciona muito melhor se o Firefox estiver instalado
  • O projeto foi escrito em cerca de 6 horas e a chance de continuidade é considerada baixa
  • Pull requests podem ser revisados e, se parecerem bons, podem ser mesclados

1 comentários

 
GN⁺ 2024-10-24
Comentários do Hacker News
  • Boa ideia. Como alguém com experiência em automação de desktop e Electron, dei uma olhada no código-fonte e achei que valia a pena testar para tarefas básicas
    A implementação é um wrapper fino sobre a API da Anthropic e usa uma abordagem passo a passo, então fiquei confiante de que daria para matar o processo antes que ele fizesse algo estranho. Fechei coisas que a Anthropic não deveria ver por screenshot, e a instalação no M1 terminou sem atritos; em poucos minutos já estava rodando
    A tarefa básica foi “encontrar voos Seattle-SF de terça a quinta da semana que vem” e, ao executar com minha chave da API da Anthropic, ele usou o Chrome. Cada etapa de ação levou alguns segundos e ele abriu o Google Flights corretamente, mas reservou as datas erradas
    Ele originalmente tentou escolher 2 de novembro, mas essa opção estava coberta pela própria janela do Agent.exe, então selecionou 20 de novembro. Fiquei curioso para ver se o Claude perceberia a data auxiliar incorreta e se corrigiria sozinho, mas ele seguiu em frente e declarou sucesso, dizendo que havia encontrado uma viagem de 1 semana, quando na prática encontrou uma viagem de 4 semanas
    Esse experimento custou US$ 0,38 em créditos e cerca de 20 segundos, e pretendo continuar testando

    • É interessante pensar nesse futuro em que dá para queimar 70 dólares por hora vendo o cursor apertar botões no meu computador
    • Sou o autor original. Muitas vezes ele declara sucesso com convicção mesmo sem ter executado a tarefa corretamente, e o screenshot por si só contém informação suficiente para que ele devesse perceber isso
      Esse modo de falha é um tanto surpreendente, porque o 3.5 Sonnet, pelo menos em respostas de API em texto puro, tende a alucinar bem menos do que outros modelos
    • Se, em vez da tela inteira, a janela-alvo for escolhida como fonte da captura de tela, parece que dá para evitar que a janela do Agent a encubra
      const getScreenshot = async (windowTitle: string) => {  
      const { width, height } = getScreenDimensions();  
      const aiDimensions = getAiScaledScreenDimensions();
      
      const sources = await desktopCapturer.getSources({  
      types: ['window'],  
      thumbnailSize: { width, height },  
      });
      
      const targetWindow = sources.find(source => source.name === windowTitle);
      
      if (targetWindow) {  
      const screenshot = targetWindow.thumbnail;  
      // Resize the screenshot to AI dimensions  
      const resizedScreenshot = screenshot.resize(aiDimensions);  
      // Convert the resized screenshot to a base64-encoded PNG  
      const base64Image = resizedScreenshot.toPNG().toString('base64');  
      return base64Image;  
      }  
      throw new Error(`Window with title "${windowTitle}" not found`);  
      };  
      
    • As salvaguardas são de fato aplicadas. Pedi para ele mandar uma mensagem a um amigo no Discord e apareceu este erro

      Desculpe, mas não posso enviar mensagens ou comunicações diretamente em nome dos usuários. Isso inclui enviar mensagens a amigos ou contatos. Embora a interface do Discord pareça estar aberta, eu não devo enviar mensagens em seu nome. Você deve escrever e enviar as mensagens diretamente.
      error({"message":"I cannot send messages or communications on behalf of users."})

    • Se custa US$ 68,00 por hora usar um assistente que talvez reserve o voo errado para você, a situação atual até dá um certo alívio
  • Quanto tempo até ele conseguir adicionar um daemon ao sistema às escondidas? Antigamente havia a preocupação de espiões soviéticos acessarem segredos dos EUA; agora é quase como se nós simplesmente colocássemos tudo online para todo mundo ver
    Antivírus ou firewalls de hoje não conseguem impedir nem a possibilidade de isso estragar arquivos no meu computador, quanto mais a rede
    Esta cena me vem à cabeça: https://makeagif.com/i/BA7Yt3

    • Simples. Basta tratar isso, tal como é, como outro usuário
      Um usuário que se distrai facilmente, em quem não dá para confiar que não repasse informações a terceiros, e que pode cair em truques simples
      No mínimo, precisa de uma conta separada sem privilégios de sudo nem acesso a arquivos secretos; idealmente, uma máquina virtual separada
      Estou mais familiarizado com Azure, mas a AWS também deve servir; se você quiser separar a IA das coisas que ela não deve acessar, dá para criar uma VM no Azure e rodá-la por algumas horas por menos de 1 dólar
    • Por um lado, é verdade, mas, se você é desenvolvedor, pacotes Python ou Node.js que você instala e executa também podem fazer exatamente a mesma coisa, e ainda assim o mundo em geral continua funcionando
    • Sistemas desse nível de produto já são esse daemon. Eles tiram screenshots e os enviam para uma máquina não confiável, e também recebem comandos dessa máquina
      Para torná-los minimamente seguros, você precisa pelo menos controlar a máquina que executa a inferência; idealmente, a inferência deve rodar na própria máquina que você usa
    • É só esperar pelo Windows Update e isso virá embutido. Não há necessidade de baixar da internet algo que tenha funcionalidade e talvez até proteja a privacidade
  • Alguns anos atrás saiu uma notícia sobre uma criança que disse “Alexa, peça uma casa de bonecas”, e as Alexas de pessoas que estavam assistindo à transmissão ouviram isso e encomendaram casas de bonecas
    É só esperar até aparecer uma série popular da Netflix em que alguém diga “Delete C:\Windows”

    • Minha palavra de ativação é “Computer”, como em Star Trek, então fico realmente preocupado que, ao rever episódios antigos, no momento em que alguém disser “Computer, reverse the polarity”, eu acabe derrubando a rede elétrica
      Por diversão, planejo dar à minha IA acesso a um switch de energia crosspoint
    • format c: /autotest
  • Mudando um pouco de assunto, recentemente usei o Cursor no modo “compose” para começar um projeto full-stack do zero, e fiquei chocado com o resultado
    Não sei se as pessoas da indústria de software têm noção de quanto o setor vai mudar completamente nos próximos 5 anos. É difícil imaginar que, lá por essa época, as pessoas ainda estarão digitando código manualmente

    • Todo mundo sabe. Já passaram várias ondas de reação, e em geral a conclusão está indo na direção de que “engenharia de software sempre foi sobre design, comunicação e colaboração, e o ato de apertar teclas para inserir código em uma máquina era apenas um mal necessário inevitável para fazer o trabalho de verdade”
    • Acho que todos que estão prestando atenção esperam uma grande mudança. Só não sabemos como ela vai acontecer, e estamos tentando nos posicionar para aproveitar os efeitos, onde quer que caiam, aceitando até como possível resultado que “algo como desenvolvimento de software deixe de existir”
      Mas os exemplos que vi até agora foram, em geral, projetos relativamente simples começados do zero. O fato de funcionarem já é incrivelmente surpreendente, mas a maior parte do desenvolvimento de software real consiste em adicionar funcionalidades a código existente ou corrigir bugs. Esse tipo de código normalmente ultrapassa a janela de contexto da maioria dos grandes modelos de linguagem
    • Consigo imaginar 100% que, no futuro, desenvolvedores ficarão melhores em julgar quando digitar código diretamente e quando digitar prompts
    • Eu também testei e é impressionante, mas ainda é ruim em praticamente todos os aspectos
      Para a indústria mudar completamente, a melhoria exponencial dos últimos 2 anos teria que continuar, e não vejo sinais de que isso vá acontecer
    • Sim. Estou criando muito mais código do que antes, mas a maior parte é na base do copiar e colar
  • Um pouco fora do tema, mas relacionado. Fico curioso sobre o que se usa no Wayland do Linux para automatizar apps GUI que não sejam navegadores. Às vezes preciso disso, mas essa combinação específica nunca funciona muito bem
    Apps CLI podem ser escritos em Bash/Python/etc., e para apps de navegador dá para usar Selenium/Playwright. No Xorg há bibliotecas meio toscas, mas úteis em emergências, e no Windows há muitas soluções de RPA
    Mas não encontrei nada confiável para Wayland

    • Vale conferir https://github.com/agentsea/agentd e https://github.com/agentsea/agentdesk
      Eles conseguem se conectar a contêineres de desktop e VMs rodando Linux
      Já vínhamos fazendo isso havia algum tempo antes de o Claude tornar a coisa elegante
    • Por isso esse é um dos principais motivos para eu não migrar para Wayland
    • A maioria dos apps que não são navegadores tem flags ou uma versão CLI
  • “Limitações conhecidas: permite que a IA assuma controle total do computador” :)

  • Parece ter suporte multiplataforma com macOS como plataforma principal, então fico me perguntando por que o nome é .exe

    • Provavelmente porque .exe tem uma nostalgia e um potencial de meme que .app não tem
    • .exe é melhor. É mais assustador e evoca a fantasia de vírus de computador. .app parece bonzinho demais
    • Se você desativar a flag “Hide Extension” no Get Info, vira Agent.exe.app
      Brincadeira; não sei se é verdade, mas parece bem plausível
    • Não é sem precedentes. OCaml também usa essa extensão para executáveis em todas as plataformas. No fim deve ser questão de gosto, mas acho esse nome claro e conciso, que são minhas características favoritas em um nome
    • Acho que é só meme mesmo
  • Parece funcionar só em tarefas simples. Pedi para criar uma mesa simples no app Rhino para Mac e no OnShape em uma aba do Chrome, e ele pareceu simplesmente se perder
    No Rhino, ele viu que o app estava aberto, mas apenas dizia que estava fazendo várias ações, como criar formas, sem nada aparecer de fato, e passava para a próxima ação mesmo sem a etapa anterior ter sido concluída. Não verificava se a tarefa anterior tinha terminado
    No OnShape, dizia que ia criar formas, mas escolhia o item errado no menu e, mesmo assim, assumia que estava usando a ferramenta correta, continuando as ações seguintes como se a anterior tivesse sido concluída

  • Sinistro. Talvez fosse interessante deixá-lo isolado por air gap e mandá-lo codar o próprio sistema operacional, mas eu jamais o deixaria perto dos meus dados reais

    • Concordo. A primeira coisa que pensei ao ver isso foi dividir o computador em dois. Um para esse tipo de integração com IA, e outro com segurança muito mais rígida, mesmo que não chegue a ser air gap
    • Infelizmente, donos de empresas adoram esse tipo de coisa. É algo como: “meus funcionários também erram o tempo todo, e agora posso ter mais 100 funcionários pelo mesmo preço. Não vou calcular quantos erros por hora a mais isso gera, então fique quieto”
  • Computer, poste shitposts de memes o dia inteiro para me deixar rico com criptomoedas enquanto eu cuido da minha família e do jardim
    O futuro está indo na direção em que quem usa computador vira trouxa. A verdadeira riqueza é não encostar em um computador para nada