1 points par GN⁺ 2024-10-24 | 1 commentaires | Partager sur WhatsApp
  • Agent.exe est une application Electron simple qui permet de contrôler directement un ordinateur local grâce à la nouvelle fonctionnalité computer use de Claude, et le projet doit être considéré comme une preuve de concept
  • L’app a été créée parce que le projet fourni par défaut semblait trop lourd, et elle est conçue pour permettre à Claude 3.5 Sonnet d’exécuter des tâches sur l’ordinateur local de l’utilisateur
  • Le lancement suit ce flux : cloner le dépôt, exécuter npm install, renommer .env.example en .env, ajouter une Anthropic API Key, puis lancer npm start
  • Le système pris en charge est MacOS, mais comme les dépendances sont cross-platform, Windows et Linux seraient théoriquement possibles
  • Les limites connues sont qu’elle ne fonctionne que sur l’écran principal, que l’IA prend le contrôle total de l’ordinateur, et que Claude fonctionne mieux si Firefox est installé

Objectif d’Agent.exe

  • Agent.exe est une application qui permet à Claude de contrôler un ordinateur via la fonctionnalité computer use
  • Elle est implémentée comme une application Electron permettant à Claude 3.5 Sonnet de manipuler directement l’ordinateur local
  • Le projet est une preuve de concept, et l’auteur indique ne pas prévoir de le maintenir ni de fusionner des pull requests
    • Il est toutefois libre de le fork et de l’étendre

Pourquoi il a été créé et comment il fonctionne

  • Le projet est né de la volonté de vérifier à quel point la nouvelle computer use API de Claude fonctionne bien
  • L’auteur a trouvé le projet de base fourni par Anthropic trop lourd et l’a remplacé par une application plus simple
  • Il était prévu d’ajouter un mode semi-auto dans lequel l’utilisateur confirme chaque action avant son exécution, mais chaque étape s’est révélée trop lente pour que cela soit jugé nécessaire
  • Si le modèle se met à agir de manière confuse, l’utilisateur peut arrêter l’exécution avec le bouton stop

Démarrage

  • Cloner le dépôt puis entrer dans le répertoire
  • Installer les dépendances
    • npm install
  • Renommer le fichier .env.example en .env puis ajouter une Anthropic API Key
  • Lancer l’application
    • npm start
  • Il suffit ensuite de demander au modèle, via un prompt, la tâche à effectuer sur l’ordinateur

Systèmes pris en charge et limites

  • Le système pris en charge est MacOS
  • Toutes les dépendances étant cross-platform, Windows et Linux seraient théoriquement possibles
  • Les limites connues sont les suivantes
    • Fonctionne uniquement sur l’écran principal
    • L’IA prend le contrôle total de l’ordinateur
    • Il peut aussi y avoir beaucoup d’autres limites

Conseils d’utilisation et feuille de route

  • Il est indiqué que Claude a une forte préférence pour Firefox
    • Il peut utiliser d’autres navigateurs si nécessaire, mais il fonctionne nettement mieux si Firefox est installé
  • Le projet a été écrit en environ 6 heures, et il est peu probable qu’il soit poursuivi par la suite
  • Les pull requests pourront être examinées et éventuellement fusionnées si elles semblent pertinentes

1 commentaires

 
GN⁺ 2024-10-24
Commentaires Hacker News
  • Bonne idée. En tant que personne ayant de l’expérience en automatisation desktop et avec Electron, j’ai parcouru le code source et j’ai eu l’impression que ça valait le coup d’essayer pour des tâches de base.
    L’implémentation est un mince wrapper au-dessus de l’API Anthropic et adopte une approche étape par étape, ce qui m’a donné l’assurance de pouvoir tuer le processus avant qu’il ne fasse n’importe quoi. J’avais fermé ce qu’Anthropic ne devait pas voir dans les captures d’écran, l’installation sur M1 s’est déroulée sans accroc, et l’app tournait en quelques minutes.
    La tâche de base était « trouver des vols Seattle-SF de mardi à jeudi la semaine prochaine », et quand je l’ai lancée avec ma clé API Anthropic, il a utilisé Chrome. Chaque étape d’action prenait quelques secondes ; Google Flights s’est bien ouvert, mais il a réservé les mauvaises dates.
    Il voulait initialement choisir le 2 novembre, mais cette option était masquée par la fenêtre Agent.exe elle-même, alors il a sélectionné le 20 novembre. J’étais curieux de voir si Claude remarquerait la mauvaise date secondaire et se corrigerait tout seul, mais il a laissé tel quel et a déclaré avoir réussi à trouver un voyage d’une semaine, alors qu’il avait en réalité trouvé un voyage de 4 semaines.
    Cette expérience m’a coûté 0,38 $ de crédits et environ 20 secondes, et je compte continuer à tester.

    • Un futur où l’on peut brûler 70 dollars de l’heure à regarder le curseur appuyer sur des boutons sur son ordinateur, c’est fascinant.
    • Je suis l’auteur original. Il arrive souvent qu’il déclare avec assurance avoir réussi alors qu’il n’a en réalité pas correctement exécuté la tâche, même quand les captures d’écran contiennent suffisamment d’informations pour qu’il s’en rende compte.
      Ce mode d’échec est assez surprenant, car dans les réponses textuelles classiques via API, 3.5 Sonnet a plutôt peu d’hallucinations, du moins par rapport aux autres modèles.
    • Choisir la fenêtre cible comme source de capture d’écran au lieu de tout l’écran devrait éviter que la fenêtre Agent ne masque des éléments.
      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`);  
      };  
      
    • Les garde-fous sont bel et bien appliqués. Je lui ai demandé d’envoyer un message à un ami sur Discord, et j’ai eu cette erreur :

      Désolé, mais je ne peux pas envoyer directement des messages ou des communications au nom d’utilisateurs. Cela inclut l’envoi de messages à des amis ou contacts. L’interface de Discord semble ouverte, mais je ne dois pas envoyer de message à votre place. Vous devez rédiger et envoyer le message vous-même.
      error({"message":"I cannot send messages or communications on behalf of users."})

    • À 68,00 $ de l’heure pour utiliser un assistant susceptible de réserver les mauvais vols, la situation actuelle me rassure un peu.
  • Combien de temps avant qu’il puisse ajouter en douce un daemon au système ? Avant, on s’inquiétait que des espions soviétiques accèdent à des secrets américains ; maintenant, c’est comme si nous mettions simplement tout en ligne pour que tout le monde le voie.
    Les antivirus ou pare-feu d’aujourd’hui ne peuvent pas empêcher ça d’abîmer les fichiers de mon ordinateur, sans même parler du réseau.
    Ça me rappelle cette scène : https://makeagif.com/i/BA7Yt3

    • C’est simple. Il faut le traiter tel quel, comme un autre utilisateur.
      Un utilisateur facilement distrait, à qui l’on ne peut pas faire confiance pour ne pas transmettre des informations à des tiers, et qui peut tomber dans des pièges très simples.
      Au minimum, il faut un compte séparé sans droits sudo ni accès aux fichiers secrets ; dans l’idéal, une machine virtuelle séparée.
      Je connais surtout Azure, mais AWS devrait aussi convenir : si vous voulez isoler l’IA de ce à quoi elle ne doit pas accéder, créer une VM sur Azure et la faire tourner quelques heures coûte moins d’un dollar.
    • D’un côté, c’est vrai, mais si vous êtes développeur, les packages Python ou Node.js que vous installez et exécutez peuvent faire exactement la même chose, et pourtant le monde continue globalement de tourner.
    • Les systèmes de ce niveau de produit sont déjà ce daemon. Ils prennent des captures d’écran et les envoient à une machine non fiable, puis reçoivent aussi des commandes de cette machine.
      Pour rendre ça un minimum sûr, il faut au moins contrôler la machine qui exécute l’inférence, et idéalement faire l’inférence sur la machine même que l’on utilise.
    • Il suffira d’attendre une mise à jour Windows pour que ce soit intégré. Inutile de télécharger quelque chose depuis Internet pour obtenir des fonctionnalités et peut-être même de la protection de la vie privée.
  • Il y a quelques années, aux infos, un enfant avait dit « Alexa, commande-moi une maison de poupée », et les Alexa des gens qui regardaient l’émission l’avaient entendu et avaient commandé des maisons de poupée.
    Il ne reste plus qu’à attendre qu’une série populaire sur Netflix diffuse quelqu’un disant « Delete C:\Windows ».

    • Mon mot d’activation est « Computer », comme dans Star Trek, donc quand je revois de vieux épisodes et que quelqu’un dit « Computer, reverse the polarity », j’ai vraiment peur de faire tomber le réseau électrique.
      Pour m’amuser, je prévois de donner à mon IA l’accès à l’interrupteur d’alimentation crosspoint.
    • format c: /autotest
  • Je change un peu de sujet, mais j’ai récemment utilisé Cursor en mode « compose » pour lancer un projet full-stack à partir de zéro, et le résultat m’a sidéré.
    Je ne sais pas si les gens du secteur logiciel mesurent à quel point l’industrie va être complètement transformée dans les 5 prochaines années. J’ai du mal à imaginer qu’à ce moment-là, on tape encore du code à la main

    • Tout le monde le sait. Il y a déjà eu plusieurs vagues de réactions, et on en arrive globalement à l’idée que « l’ingénierie logicielle a toujours été une affaire de conception, communication et collaboration, et le fait d’appuyer sur des touches pour entrer du code dans une machine n’était qu’un mal nécessaire inévitable pour faire le vrai travail »
    • Tous ceux qui suivent le sujet s’attendent, je pense, à un grand changement. On ne sait simplement pas comment cela va évoluer, et on accepte aussi comme issue possible que « le développement logiciel tel qu’on le connaît n’existe plus », tout en essayant de se positionner pour tirer parti des retombées, où qu’elles tombent.
      Mais les exemples vus jusqu’ici concernent surtout des projets relativement simples démarrés de zéro. Le fait que ça fonctionne est en soi incroyablement impressionnant, mais la majeure partie du développement logiciel réel consiste à ajouter des fonctionnalités à du code existant ou à corriger des bugs. Et ce code dépasse généralement la fenêtre de contexte de la plupart des grands modèles de langage
    • J’imagine tout à fait que les développeurs deviendront bien meilleurs pour décider quand taper directement du code et quand saisir un prompt
    • Je l’ai essayé aussi, et c’est impressionnant, mais ça reste médiocre à tous les niveaux.
      Pour que l’industrie soit complètement transformée, il faudrait que les améliorations exponentielles des deux dernières années se poursuivent, et je ne vois aucun signe que ce soit le cas
    • Exact. Je produis beaucoup plus de code qu’avant, mais la plupart du temps, c’est du copier-coller
  • Un peu hors sujet, mais lié : je me demande ce qu’on utilise sous Wayland, sur Linux, pour automatiser des applications GUI qui ne sont pas des navigateurs. J’en ai parfois besoin, mais cette combinaison reste vraiment compliquée.
    Pour les applis CLI, on peut écrire du Bash/Python/autre ; pour les applis web, on peut utiliser Selenium/Playwright. Sous Xorg, il existe des bibliothèques un peu rustiques mais utilisables en dépannage, et sous Windows il y a beaucoup de solutions RPA.
    Mais pour Wayland, je n’ai rien trouvé de fiable

    • Tu peux regarder https://github.com/agentsea/agentd et https://github.com/agentsea/agentdesk
      Ça permet de se connecter à des conteneurs de bureau et à des VM exécutant Linux.
      On faisait ça depuis un moment déjà, avant que Claude ne rende le truc cool
    • C’est donc l’une des principales raisons pour lesquelles je ne passe pas à Wayland
    • La plupart des applis qui ne sont pas des navigateurs ont des flags ou une version CLI
  • « Limitation connue : laisser l’IA prendre totalement le contrôle de l’ordinateur » :)

  • Ça ressemble à une prise en charge multiplateforme avec macOS comme plateforme principale, alors pourquoi le nom .exe ?

    • Probablement parce que .exe a une nostalgie et un potentiel de mème que .app n’a pas
    • .exe, c’est mieux. C’est plus inquiétant et ça évoque l’imaginaire des virus informatiques. .app paraît trop inoffensif
    • Si tu désactives le flag « Hide Extension » dans Get Info, ça devient Agent.exe.app.
      Je plaisante ; je ne sais pas si c’est vrai, mais ça paraît tout à fait possible
    • Ce n’est pas sans précédent. OCaml utilise aussi cette extension pour les exécutables sur toutes les plateformes. Au final, c’est sans doute une question de goût, mais ce nom est clair et concis, ce qui correspond à mes qualités préférées dans un nom
    • Je pense que c’est juste un mème
  • On dirait que ça ne marche que sur des tâches simples. Je lui ai demandé de créer une table simple dans l’appli Mac Rhino et dans OnShape dans un onglet Chrome, et il a simplement semblé se perdre.
    Dans Rhino, il voyait bien que l’appli était ouverte, mais il se contentait de dire qu’il effectuait plusieurs actions, comme créer des formes, sans que rien n’apparaisse réellement, puis passait à l’action suivante alors que l’étape précédente n’était pas terminée. Il ne vérifiait pas que l’action précédente était achevée.
    Dans OnShape, il disait qu’il allait créer une forme, sélectionnait le mauvais élément dans le menu, puis continuait comme s’il utilisait le bon outil et comme si l’action précédente était terminée

  • Flippant. Ça pourrait être amusant si on le mettait derrière un air gap pour lui faire coder son propre OS, mais je ne voudrais jamais l’approcher de mes vraies données

    • D’accord. Ma première réaction en voyant ça a été d’imaginer séparer l’ordinateur en deux machines : l’une pour ce genre d’intégration IA, l’autre avec une sécurité beaucoup plus stricte, même si elle n’est pas totalement air-gapped
    • Malheureusement, les patrons adorent ce genre de choses. Du style : « Mes employés font déjà des erreurs tout le temps ; maintenant je peux avoir 100 employés de plus pour le même prix. Je ne vais pas calculer combien d’erreurs de plus ça fait par heure, alors silence »
  • Computer, fais de moi un riche de la crypto en postant toute la journée des shitposts de mèmes pendant que je m’occupe de ma famille et de mon jardin.
    L’avenir va dans une direction où la personne qui utilise l’ordinateur est le pigeon. La vraie richesse, c’est de ne toucher à aucun ordinateur pour quoi que ce soit