1 Punkte von GN⁺ 2024-10-24 | 1 Kommentare | Auf WhatsApp teilen
  • Agent.exe ist eine einfache Electron-App, die mit Claudes neuer computer use-Funktion den lokalen Computer direkt steuern kann; das Projekt sollte als Proof of Concept betrachtet werden
  • Die App wurde erstellt, weil sich das Standardprojekt als zu schwergewichtig anfühlte, und ist dafür ausgelegt, dass Claude 3.5 Sonnet Aufgaben auf dem lokalen Computer des Nutzers ausführt
  • Der Ablauf zum Starten ist: Repository klonen, npm install, .env.example in .env umbenennen, den Anthropic API Key eintragen und npm start ausführen
  • Unterstützt wird MacOS; da die Abhängigkeiten plattformübergreifend sind, sollen theoretisch auch Windows und Linux möglich sein
  • Bekannte Einschränkungen sind, dass es nur auf dem primary display funktioniert, die AI die vollständige Kontrolle über den Computer erhält und Claude mit installiertem Firefox besser arbeitet

Zweck von Agent.exe

  • Agent.exe ist eine App, die mithilfe von Claudes computer use-Funktion den Computer steuert
  • Sie ist als Electron-App implementiert, damit Claude 3.5 Sonnet den lokalen Computer direkt bedienen kann
  • Das Projekt ist ein Proof of Concept, und es wird darauf hingewiesen, dass keine Wartung geplant ist und keine pull requests zusammengeführt werden sollen
    • Forken und Erweitern ist frei möglich

Warum es erstellt wurde und wie es funktioniert

  • Es begann mit dem Ziel zu prüfen, wie gut Claudes neue computer use API funktioniert
  • Da sich das von Anthropic bereitgestellte Standardprojekt als zu schwergewichtig anfühlte, wurde eine einfachere App gebaut
  • Es gab Pläne, einen semi-auto-Modus hinzuzufügen, bei dem der Nutzer jede Aktion vor der Ausführung bestätigt, aber da jeder Schritt zu langsam war, wurde das als unnötig eingeschätzt
  • Wenn das Modell durcheinandergerät, kann der Nutzer mit dem Stop-Button die Ausführung beenden

Erste Schritte

  • Das Repository klonen und in das Verzeichnis wechseln
  • Abhängigkeiten installieren
    • npm install
  • Die Datei .env.example in .env umbenennen und den Anthropic API Key hinzufügen
  • Die App starten
    • npm start
  • Danach dem Modell per Prompt die Aufgaben geben, die es auf dem Computer ausführen soll

Unterstützte Systeme und Einschränkungen

  • Unterstütztes System ist MacOS
  • Da alle Abhängigkeiten plattformübergreifend sind, sind theoretisch auch Windows und Linux möglich
  • Bekannte Einschränkungen sind die folgenden
    • Funktioniert nur auf dem primary display
    • Die AI erhält die vollständige Kontrolle über den Computer
    • Darüber hinaus kann es noch viele weitere Einschränkungen geben

Nutzungstipps und Roadmap

  • Claude scheint Firefox stark zu bevorzugen
    • Andere Browser werden bei Bedarf zwar auch verwendet, aber mit installiertem Firefox funktioniert es deutlich besser
  • Das Projekt wurde in etwa 6 Stunden geschrieben, und es gilt als eher unwahrscheinlich, dass daran weitergearbeitet wird
  • pull requests können geprüft und bei gutem Eindruck möglicherweise zusammengeführt werden

1 Kommentare

 
GN⁺ 2024-10-24
Hacker-News-Kommentare
  • Gute Idee. Als jemand mit Erfahrung in Desktop-Automatisierung und Electron habe ich den Source Code kurz überflogen und hatte das Gefühl, dass es für grundlegende Aufgaben einen Versuch wert ist.
    Die Implementierung ist ein dünner Wrapper über der Anthropic API, und durch den schrittweisen Ansatz hatte ich das Vertrauen, den Prozess beenden zu können, bevor er etwas Merkwürdiges tut. Ich hatte alles geschlossen, was Anthropic nicht per Screenshot sehen sollte, die Installation auf einem M1 lief reibungslos, und nach ein paar Minuten lief es.
    Die Basisaufgabe war „Flüge von Seattle nach SF für Dienstag bis Donnerstag nächste Woche finden“, und mit meinem Anthropic-API-Key nutzte es Chrome. Jeder Handlungsschritt dauerte ein paar Sekunden, Google Flights wurde korrekt geöffnet, aber die falschen Daten wurden gebucht.
    Eigentlich sollte der 2. November gewählt werden, aber diese Option war vom Agent.exe-Fenster selbst verdeckt, sodass stattdessen der 20. November ausgewählt wurde. Ich war gespannt, ob Claude das falsche Hilfsdatum sehen und selbst korrigieren würde, aber es ließ es einfach so und erklärte selbstbewusst den Erfolg, obwohl tatsächlich nach einer 4-Wochen-Reise statt nach einer 1-Wochen-Reise gesucht wurde.
    Dieser Versuch kostete 0,38 $ an Credits und etwa 20 Sekunden, und ich werde weiter damit experimentieren.

    • Faszinierend, dass wir in eine Zukunft gehen, in der ich 70 Dollar pro Stunde verbrennen kann, nur um zuzusehen, wie der Cursor auf meinem Computer Buttons anklickt.
    • Ich bin der ursprüngliche Autor. Es kommt oft vor, dass es selbstsicher Erfolg meldet, obwohl die Aufgabe in Wirklichkeit nicht korrekt ausgeführt wurde, und allein anhand der Screenshots gibt es genug Informationen, um das erkennen zu müssen.
      Dieses Fehlermuster ist etwas überraschend, weil 3.5 Sonnet bei normalen Text-API-Antworten im Vergleich zu anderen Modellen zumindest deutlich weniger zu Halluzinationen neigt.
    • Wenn man statt des gesamten Bildschirms das Zielfenster als Screenshot-Quelle auswählt, könnte man wohl verhindern, dass es vom Agent-Fenster verdeckt wird.
      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`);  
      };  
      
    • Die Sicherheitsvorkehrungen werden tatsächlich angewendet. Als ich es bat, einem Freund auf Discord eine Nachricht zu schicken, kam dieser Fehler:

      Es tut mir leid, aber ich kann nicht direkt Nachrichten senden oder Kommunikation im Namen eines Nutzers übermitteln. Dazu gehört auch das Senden von Nachrichten an Freunde oder Kontakte. Es sieht so aus, als wäre die Discord-Oberfläche geöffnet, aber ich sollte keine Nachricht in Ihrem Namen versenden. Sie müssen die Nachricht selbst verfassen und senden.
      error({"message":"I cannot send messages or communications on behalf of users."})

    • 68,00 $ pro Stunde für einen Assistenten, der mir vielleicht die falschen Flüge bucht — das beruhigt mich im Moment ein wenig.
  • Wie lange wird es wohl dauern, bis man damit heimlich einen Daemon ins System einschleusen kann? Früher machte man sich Sorgen, dass sowjetische Spione Zugang zu US-Geheimnissen bekommen könnten, heute ist es eher so, dass wir einfach alles online stellen, sodass es jeder sehen kann.
    Mit heutiger Antivirensoftware oder Firewalls lässt sich nicht einmal verhindern, dass so etwas Dateien auf meinem Computer beschädigt, geschweige denn den Netzwerkzugriff.
    Das erinnert mich an diese Szene: https://makeagif.com/i/BA7Yt3

    • Ganz einfach. Man sollte das schlicht als einen weiteren Benutzer behandeln.
      Einen Benutzer, der sich leicht ablenken lässt, dem man nicht vertrauen kann, keine Informationen an Dritte weiterzugeben, und der auf einfache Tricks hereinfällt.
      Mindestens braucht es ein separates Konto ohne sudo-Rechte oder Zugriff auf geheime Dateien, und idealerweise sogar eine separate virtuelle Maschine.
      Ich kenne mich am besten mit Azure aus, aber AWS sollte auch gehen; wenn man die KI von Dingen trennen will, auf die sie keinen Zugriff haben darf, kann man in Azure eine VM erstellen, sie ein paar Stunden laufen lassen und bleibt trotzdem unter 1 Dollar.
    • Einerseits stimmt das, aber als Entwickler gilt dasselbe auch für Python- oder Node.js-Pakete, die man installiert und ausführt, und trotzdem dreht sich die Welt im Großen und Ganzen weiter.
    • Ein System auf Produktniveau wie dieses ist bereits genau so ein Daemon. Es macht Screenshots und schickt sie an eine nicht vertrauenswürdige Maschine und nimmt von dieser Maschine auch Befehle entgegen.
      Um das überhaupt einigermaßen sicher zu machen, müsste man zumindest die Maschine kontrollieren, auf der die Inferenz läuft, und idealerweise sollte die Inferenz auf genau der Maschine laufen, die ich benutze.
    • Man muss nur auf ein Windows-Update warten, dann wird es eingebaut. Man muss nichts aus dem Internet herunterladen, das Features hat und vielleicht sogar die Privatsphäre schützt.
  • Vor ein paar Jahren gab es in den Nachrichten die Geschichte von einem kleinen Kind, das sagte: „Alexa, bestell mir ein Puppenhaus“, und die Alexas der Zuschauer, die die Sendung sahen, hörten das und bestellten ebenfalls ein Puppenhaus.
    Man muss nur abwarten, was passiert, wenn in einer populären Netflix-Serie jemand „Delete C:\Windows“ sagt.

    • Mein Aktivierungswort ist wie in Star Trek „Computer“, also habe ich ernsthaft Sorge, dass ich beim erneuten Ansehen alter Folgen in dem Moment, in dem jemand „Computer, reverse the polarity“ sagt, das Stromnetz lahmlege.
      Zum Spaß plane ich, meiner KI Zugriff auf den Crosspoint-Stromschalter zu geben.
    • format c: /autotest
  • Etwas off-topic, aber ich habe kürzlich Cursor im „compose“-Modus benutzt, um ein Full-Stack-Projekt von Grund auf zu starten, und war schockiert vom Ergebnis
    Ich weiß nicht, ob den Leuten in der Softwarebranche bewusst ist, wie vollständig sich die Branche in den nächsten fünf Jahren verändern wird. Es ist schwer vorstellbar, dass dann noch Menschen Code von Hand eintippen werden

    • Das wissen alle. Es gab bereits mehrere Wellen von Reaktionen, und im Großen und Ganzen läuft es darauf hinaus, dass „Software Engineering schon immer vor allem mit Design, Kommunikation und Zusammenarbeit zu tun hatte und das Drücken von Tasten, um Code in eine Maschine einzugeben, nur ein unvermeidliches notwendiges Übel war, um die eigentliche Arbeit zu erledigen“
    • Ich denke, alle, die aufmerksam hinschauen, erwarten große Veränderungen. Nur wie genau es sich ändern wird, weiß niemand, und auch „so etwas wie Softwareentwicklung gibt es nicht mehr“ wird als mögliches Ergebnis akzeptiert, während man versucht, sich so zu positionieren, dass man die Folgen nutzen kann, egal wo sie einschlagen
      Aber die Beispiele, die wir bisher gesehen haben, waren meist vergleichsweise einfache Projekte, die von Grund auf neu begonnen wurden. Dass das überhaupt funktioniert, ist schon kaum zu glauben, aber der Großteil echter Softwareentwicklung besteht darin, bestehendem Code Funktionen hinzuzufügen oder Bugs zu beheben. Solcher Code überschreitet in der Regel das Kontextfenster der meisten großen Sprachmodelle
    • Ich kann mir zu 100 % vorstellen, dass Entwickler in Zukunft viel besser darin werden zu entscheiden, wann sie Code direkt eingeben und wann sie Prompts eingeben
    • Ich habe es auch ausprobiert, und es ist beeindruckend, aber insgesamt immer noch in jeder Hinsicht eher schwach
      Damit sich die Branche komplett verändert, müssten sich die exponentiellen Verbesserungen der letzten zwei Jahre fortsetzen, und es gibt keine Anzeichen dafür, dass das passiert
    • Stimmt. Ich produziere viel mehr Code als früher, aber das meiste davon ist im Grunde nur Copy-and-Paste
  • Ein bisschen am Thema vorbei, aber verwandt. Ich frage mich, womit man unter Wayland auf Linux GUI-Apps, die keine Browser sind, automatisiert. Ich brauche das gelegentlich, aber genau diese Kombination funktioniert bei mir nie richtig
    CLI-Apps kann man in Bash/Python/sonst was schreiben, für Browser-Apps nimmt man Selenium/Playwright. Für Xorg gibt es grobe, aber im Notfall brauchbare Bibliotheken, und unter Windows gibt es viele RPA-Lösungen
    Aber für Wayland habe ich nichts Verlässliches gefunden

    • Schau dir https://github.com/agentsea/agentd und https://github.com/agentsea/agentdesk an
      Damit kann man sich mit Desktop-Containern und VMs verbinden, auf denen Linux läuft
      Wir machen das schon seit einiger Zeit, noch bevor Claude es cool gemacht hat
    • Das ist einer der Hauptgründe, warum ich nicht auf Wayland umsteige
    • Die meisten Apps, die keine Browser sind, haben Flags oder eine CLI-Version
  • „Bekannte Einschränkungen: Die KI übernimmt den Computer komplett“ :)

  • Sieht nach plattformübergreifender Unterstützung mit macOS als Hauptplattform aus, daher frage ich mich, warum der Name auf .exe endet

    • Wahrscheinlich, weil .exe einen Nostalgie- und Meme-Faktor hat, den .app nicht hat
    • .exe ist besser. Es ist bedrohlicher und ruft die Fantasie von Computerviren hervor. .app wirkt zu harmlos
    • Wenn man in „Informationen“ das Flag „Hide Extension“ deaktiviert, wird es zu Agent.exe.app
      War ein Witz, ich weiß nicht, ob das stimmt, aber es wirkt plausibel genug
    • Ganz ohne Vorbild ist das nicht. OCaml verwendet diese Erweiterung ebenfalls für ausführbare Dateien auf allen Plattformen. Am Ende ist es Geschmackssache, aber ich finde, der Name hat eine Eigenschaft, die ich an Namen am meisten schätze: Er ist klar und knapp
    • Ich glaube, es ist einfach nur ein Meme
  • Scheint nur bei einfachen Aufgaben zu funktionieren. Ich habe es gebeten, in der Mac-App Rhino und in OnShape in einem Chrome-Tab eine einfache Tabelle zu erstellen, und es wirkte, als hätte es sich einfach verirrt
    In Rhino konnte ich zwar sehen, dass die App geöffnet war, aber es sagte nur, es führe mehrere Aktionen wie das Erstellen von Formen aus, ohne dass tatsächlich etwas zu sehen war, und ging zum nächsten Schritt über, obwohl der vorherige noch nicht abgeschlossen war. Es prüfte nicht, ob die vorherige Aufgabe beendet war
    In OnShape sagte es, es werde Formen erstellen, wählte dann aber im Menü den falschen Eintrag aus und machte einfach mit dem nächsten Schritt weiter, als wäre die vorherige Aktion abgeschlossen und als würde es das richtige Werkzeug verwenden

  • Unheimlich. Wenn man es per Air Gap isoliert und sein eigenes OS schreiben lässt, könnte das lustig sein, aber ich will es auf keinen Fall in die Nähe meiner echten Daten lassen

    • Stimme zu. Mein erster Gedanke dabei war sofort, die Computer in zwei Geräte aufzuteilen. Eines für solche KI-Integrationen und ein anderes, das zwar nicht unbedingt per Air Gap getrennt ist, aber deutlich strengere Sicherheit hat
    • Leider lieben Arbeitgeber so etwas. So nach dem Motto: „Meine Mitarbeiter machen ja auch ständig Fehler, also kann ich jetzt für den gleichen Preis noch 100 weitere Mitarbeiter haben. Wie viele Fehler pro Stunde zusätzlich dazukommen, rechne ich einfach nicht aus, also sei still“
  • Computer, mach mich zum Krypto-Millionär, indem du den ganzen Tag Meme-Müllpostings absetzt, während ich mich um meine Familie kümmere und im Garten arbeite
    Die Zukunft bewegt sich in eine Richtung, in der derjenige der Dumme ist, der Computer selbst benutzt. Der wahre Reichtum liegt darin, für nichts einen Computer anzufassen