Der Golem Guardian lässt einen Techniker über die acht Ziffern eines Servers hinein, ohne dass jemand davor sitzt. Er bedient einen Techniker nach dem anderen, und solange jemand die Sitzung offen hat, bekommt der Nächste, der klopft, toque_ocupado.

Gestern hat mir der Support eines Kunden den Bericht über einen ganzen Nachmittag voller toque_ocupado geschickt. Ein Techniker war mit einem Server fertig und hatte die Verbindung getrennt, und sein Kollege kam nicht hinein. golem_disconnect schloss die Verbindung des Clients, aber die Sitzung des Guardian lebte weiter, bis 30 Minuten ohne Aufrufe vergangen waren, und so lange war der Platz von jemandem belegt, der gar nicht mehr da war. So hatte ich es entworfen.

Version 1.6 behebt das und ergänzt, was fehlte, damit sich zwei Techniker einen Server teilen können, ohne sich gegenseitig anzurufen.

Trennen gibt den Platz frei

golem_disconnect bittet den Guardian jetzt, die Sitzung zu schließen, und die Antwort sagt, ob er es getan hat (guardian_session_released). Der nächste Techniker kommt beim nächsten Versuch hinein.

Auch ein Techniker, der beim Client 1.5 bleibt, gibt den Platz frei. Beim Trennen schließt ein Client 1.5 nur seine MCP-Sitzung, und der Guardian 1.6 behandelt das als Trennen. Es reicht, den Guardian des Servers zu aktualisieren, damit niemand den Platz belegt zurücklässt.

Wer drin ist, und eine Notiz für ihn

Ist der Platz belegt, sagt die Antwort, wer ihn hat, wann er hineinkam, wie viele Minuten er schon nichts getan hat und wie viele ihm bleiben. Diese Angaben sind für den fragenden Techniker verschlüsselt und vom Guardian signiert, sodass das Portal, über das die Nachricht läuft, nicht weiß, wem die Sitzung gehört.

Wer weiß, wer drin ist, hinterlässt dem anderen Techniker mit golem_notify über den Guardian eine kurze Notiz, in beide Richtungen: Wer wartet, schreibt dem, der drin ist, und umgekehrt. Der Inhaber sieht sie in der nächsten Antwort eines beliebigen Werkzeugs, und wer es sofort erfahren will, startet golem_listen. Damit lauscht das Monitor-Werkzeug von Claude auf die Ereignisse: Notizen, jemand, der zu warten beginnt, der Platz, der frei wird.

Warten, bis man dran ist, und die Abgabe nach 5 Minuten

golem_connect akzeptiert wait: true. Ist der Platz belegt, antwortet der Aufruf pending, und Claude fragt mit resume erneut nach, höchstens einmal pro Minute und bis zu 10 Minuten lang. In der Zwischenzeit sieht der, der drin ist, in jeder Antwort, dass jemand auf ihn wartet.

Macht der Inhaber 5 Minuten lang keinen einzigen Aufruf, während jemand wartet, gibt der Guardian die Sitzung an den Ersten in der Warteschlange ab. Ich dachte dabei an das Claude-Gespräch, das auf einem anderen Rechner offen bleibt und das niemand schließen wird. Wer hineinkommt, erfährt, wen er abgelöst hat und wie viele von dessen Aufgaben angehalten wurden. Wer draußen bleibt, erfährt bei seinem nächsten Werkzeug, dass die Sitzung abgegeben wurde und an wen, statt einen Netzwerkfehler zu sehen. Die 5 Minuten lassen sich bei der Installation des Guardian mit --yield-minutes ändern, und mit 0 wird nie abgegeben.

Abgegeben wird nur an jemanden, der noch wartet. Hat der Techniker in der Warteschlange sein Gespräch geschlossen, nimmt er niemandem die Sitzung weg, und ein Blick auf den Zustand mit golem_status zählt nicht als Aktivität: Ein Claude, das nur prüfte, ob die Verbindung noch lebte, verhinderte bisher die Abgabe.

Getestet auf einem echten Server

Die Zertifizierung lief über mehrere Runden in einer Windows Sandbox und zwei auf einem echten Server, mit zwei Technikern an zwei verschiedenen Clients. Der echte Server zeigte, was die Sandbox nicht zeigen konnte: Fast alle Guardians bei Kunden arbeiten über einen Tunnel, und in diesem Modus wurde der Tunnel im selben Augenblick geschlossen wie die Sitzung. Der Techniker, der trennte, bekam einen Fehler, obwohl der Platz frei geworden war, und der Wartende hatte keinen Weg, seine Nachrichten zu empfangen. In 1.6 bleibt der Tunnel nach dem Ende einer Sitzung noch 10 Minuten bestehen, und die nächste Sitzung nutzt ihn.

Außerdem tauchte ein Fehler aus Version 1.4 auf: Ein frisch installierter Guardian konnte eine Stunde lang niemanden annehmen, weil seine erste Anfrage an das Portal in derselben Sekunde ankam, in der sein Platz registriert wurde. Jetzt wird diese Ablehnung in den ersten 10 Minuten erneut versucht.

Nebenbei: 1.5.4

Version 1.5.4 erschien am Tag davor und bekam keine eigene Notiz. Ein Softwarehersteller kann in sein Programm eine Schaltfläche „Fernsupport“ einbauen, die Golem Assist öffnet und verbindet, ohne dass der Benutzer noch etwas drücken muss, und das Installationsprogramm des Clients bereitet den Schlüssel des Technikers für den Guardian vor.

Aktualisieren

Version 1.6.0 ist signiert, und die Hashes jeder Datei stehen in der Installationsanleitung. Ein Server, der schon einen Guardian hat, muss ihn nicht neu installieren: Man ersetzt seine golem.exe und behält die acht Ziffern und die Identität. Bei einer Neuinstallation bekommt der Server einen neuen Platz. Ein Client 1.6 kommt in einen Guardian 1.5 hinein und umgekehrt; Notizen und Warten brauchen beide auf 1.6.