Was gefehlt hat

Bisher gab Golem Claude Augen und Arme auf einem anderen Rechner, aber die Arme reichten nicht bis zum Bildschirm. Claude konnte PowerShell ausführen, Dateien verschieben, Dienste verwalten und Bildschirmfotos machen, und blieb trotzdem vor einem Fenster stehen, das drei Felder ausgefüllt haben wollte.

Ende September installierte ein Techniker eines Softwareunternehmens mit Golem ein Produkt auf dem Server eines Kunden. Einer der Schritte des Installationsprogramms war ein Bildschirm mit einigen Feldern, und Claude sagte, dass es dort nicht schreiben könne. Das stimmte. Es sah den Bildschirm über das Bildschirmfoto, hatte aber kein Werkzeug, um ihn zu bedienen, und das bringt Golem 1.5.

Zwei verschiedene Dinge, die „Agent“ heißen

Heute versteht man unter „Agent“ fast immer einen KI-Agenten, und in diesem Artikel kommen zwei Teile mit diesem Namen vor. Es lohnt sich, sie vorher auseinanderzuhalten.

  • Der KI-Agent ist Claude, das Modell, mit dem ich in der Claude-App oder in Claude Code spreche. Es versteht, worum ich es bitte, entscheidet, was zu tun ist, und ruft die Werkzeuge auf, die es zur Verfügung hat.
  • Der Golem-Agent ist ein Programm, golem.exe, das auf dem anderen Rechner läuft und keine eigene Intelligenz hat. Es nimmt die Aufrufe von Claude entgegen, führt sie dort aus (einen Befehl, eine Dateikopie, das Schreiben in ein Textfeld) und schickt das Ergebnis zurück. Es ist das Teil, das Claude die Werkzeuge aus diesem Artikel bereitstellt.

Zwischen beiden steht der Golem-Client auf meinem Rechner, der Claude mit dem Golem-Agenten auf dem anderen Rechner verbindet. Ab hier ist „der Golem-Agent“ immer das Programm, und Claude nenne ich beim Namen.

Acht neue Werkzeuge

WerkzeugWas es tut
ui_windowsListet die offenen Fenster auf: Titel, Prozess, Größe
ui_controlsLiest die Steuerelemente eines Fensters: Schaltflächen, Textfelder, Kontrollkästchen, Listen
ui_screenshotDas Bild eines einzelnen Fensters, auch wenn ein anderes davor liegt
ui_set_textSchreibt in ein Textfeld
ui_clickDrückt eine Schaltfläche, setzt ein Häkchen oder wählt einen Listeneintrag
ui_keysHolt das Fenster nach vorne und tippt: {ENTER}, {TAB}, ^s
ui_focusHolt ein Fenster nach vorne und stellt es wieder her, wenn es minimiert ist
ui_waitWartet, bis ein Fenster erscheint oder sich schließt

Damit sieht der Fall mit dem Installationsprogramm so aus: Claude startet das Installationsprogramm, wartet auf sein Fenster, liest die Steuerelemente, drückt „Weiter“ bis zur Seite mit den Feldern, füllt sie aus und macht weiter. Endet die Installation mit einem Fenster „Fertigstellen“, schließt Claude es.

Verlangt das Installationsprogramm Administratorrechte, braucht der Golem-Agent sie auch: Starten Sie golem serve als Administrator, und öffnen Sie Golem Assist als Administrator. Sonst erkennt Golem das und antwortet, dass das Fenster außerhalb seiner Reichweite liegt, ohne etwas zu tippen. Unter dem Guardian bleiben solche Fenster immer außerhalb der Reichweite.

Über den Namen des Steuerelements, nicht über Koordinaten

Der einfache Weg wäre gewesen, die Maus auf Koordinaten aus dem Bildschirmfoto zu bewegen und zu klicken. Das wollte ich nicht. Ein Klick über Koordinaten landet irgendwo: Hat sich das Fenster bewegt, liegt ein anderes davor oder hat der Bildschirm eine andere Skalierung, drückt er etwas anderes, und niemand merkt es.

Die Werkzeuge sprechen mit den Anwendungen über UI Automation, dieselbe Schnittstelle, die die Bildschirmleser von Windows verwenden. Jedes Steuerelement wird über seine Kennung, seinen Namen oder seine Position im Baum des Fensters angesprochen, und der Text wird direkt in das Steuerelement geschrieben, ohne über die Tastatur zu gehen. Nur wenn eine Anwendung nichts davon anbietet, kommen Tasten oder ein Mausklick zum Einsatz, und die Antwort sagt, welcher Weg genommen wurde.

Bevor Golem tippt oder klickt, prüft es, dass das Fenster vorne ist. Arbeitet die Person am Rechner gerade in einem anderen Fenster und lässt Windows den Fokuswechsel nicht zu, wird nichts gesendet, und die Antwort sagt es. Eine Taste im falschen Fenster richtet mehr Schaden an als gar keine.

Auf dem Rechner eines Kunden, mit Golem Assist

Golem Assist ist das Fenster, das ein Kunde öffnet, wenn er Hilfe braucht: Es zeigt ihm eine zwölfstellige Nummer, er nennt sie mir, und ich bin drin. Es startet den Golem-Agenten in der Sitzung des Kunden, mit seinem Desktop, also funktionieren die Hände sofort. Jetzt kann Claude das Formular ausfüllen, das der Kunde vor sich hat, und der Kunde sieht auf seinem Bildschirm, wie es geschrieben wird.

Dafür braucht der Kunde die Version 1.5 von Golem Assist. Die Werkzeuge stellt der Golem-Agent bereit, der auf seinem Rechner läuft, und dieses Programm steckt in GolemAssist.exe.

Auf einem Server, vor dem niemand sitzt, mit dem Guardian

Der Guardian läuft als Windows-Dienst, und Dienste leben in einer Sitzung ohne Desktop. Damit die Hände den Bildschirm erreichen, startet der Guardian einen kleinen Helfer ohne Fenster in der Sitzung der Person, die am Server angemeldet ist, und gibt ihm die Desktop-Werkzeuge und die Bildschirmfotos. Ist niemand angemeldet, sagen die Werkzeuge das, statt seltsam zu scheitern. Der Helfer endet mit der Golem-Sitzung.

Der Helfer läuft mit den normalen Rechten des Benutzers dieser Sitzung. Ein Fenster, das als Administrator geöffnet wurde, nimmt keine Tasten von einem nicht erhöhten Prozess an, und Golem erkennt das und sagt es.

Kennwörter bleiben nicht im Protokoll

Golem notiert jeden Aufruf in golem-audit.log neben der ausführbaren Datei, damit der Besitzer des Rechners weiß, was darauf getan wurde. Wenn Claude ein Kennwort eingibt, tut es das mit secret=true, und dann enthalten weder die Antwort noch das Protokoll den Text. Das Kennwort geht allerdings durch das Gespräch mit Claude, das es kennen muss, um es einzugeben; wenn Sie das nicht wollen, geben Sie es selbst ein.

Mit einem ERP in Visual FoxPro

Was UI Automation in einer Anwendung in Visual FoxPro sieht, hängt von der Version und vom Bildschirm ab. Bei der Zertifizierung dieser Version zeigte der Anmeldebildschirm eines ERP in VFP Advanced 10.2 73 Steuerelemente mit Namen und Wert, und die Klicks landeten an der richtigen Stelle. Mit anderen Versionen und anderen Bildschirmen kann deutlich weniger zu sehen sein.

Trotzdem empfehle ich für ein ERP in VFP FoxAgent als Kindserver von Golem. Er bedient die Bildschirme aus der Anwendung heraus, mit ihren Formularen und Daten, und hängt nicht davon ab, was die Anwendung nach außen zeigt.

Im Nur-Ansehen-Modus

Mit --read-only, dem Nur-Ansehen-Modus, werden seit 1.5.1 die drei veröffentlicht, die den Bildschirm nur lesen (ui_windows, ui_controls und ui_screenshot), genau wie screenshot. Die fünf, die schreiben, klicken, fokussieren oder warten, bleiben draußen.

Getestet

Vor der Veröffentlichung habe ich die üblichen und die neuen Tests laufen lassen: der Golem-Agent schreibt und klickt in einem Testfenster und im Editor von Windows 11, der Guardian ist mit seinem Helfer installiert, ein erhöhtes Fenster verweigert Tasten, und nach dem Entfernen des Guardian lebt kein Helfer mehr. Die aktuelle Version, 1.5.3, ist signiert, und die Hashes jeder Datei stehen in der Installationsanleitung.