Vibe Coding mit Google Jules

Seit kurzem ist Jules, der Coding Assistent von Google in seiner Beta-Version für jeden nutzbar. Nachdem ich gerade JetBrains Junie getestet habe, dachte ich es wäre ein guter Zeitpunkt auch diesen Assistenten genauer unter die Lupe zu nehmen.

Was ist Google Jules überhaupt?

Google Jules ist ein asynchroner Entwicklungsagent, der darauf ausgelegt ist, Software-Engineering-Aufgaben wie das Beheben von Fehlern oder die Implementierung kleinerer Features zu übernehmen. Das Besondere daran ist die direkte Exportmöglichkeit zu GitHub, was den Workflow erheblich beschleunigen kann. Es ist im Grunde ein KI-gestützter Assistent, der Code verstehen, analysieren und modifizieren kann, um Entwickler bei wiederkehrenden oder komplexen Aufgaben zu entlasten.

Ein Bildschirmfoto zeigt einen Code-Editor, in dem verschiedene Programmierbefehle und Codezeilen angezeigt werden. Auf der linken Seite befindet sich eine Liste von Befehlen, während rechts der eigentliche Code in TypeScript sichtbar ist. In der oberen linken Ecke sind Kommentare zu Änderungen an ESLint-Regeln und zur Einhaltung von Dateinamenskonventionen zu sehen. So sieht Jules im Webbrowser aus.

Der Zweck von Jules ist es, die Produktivität von Entwicklerteams zu steigern, indem es ihnen repetitive Arbeiten abnimmt und sie sich auf anspruchsvollere, kreative Aufgaben konzentrieren können. Es ist ein Projekt, das von Google entwickelt wird und sich derzeit noch in der Beta-Phase befindet. Das bedeutet, es ist noch nicht perfekt, aber die Richtung stimmt.

Einer mein ersten Tests: n98-magerun2 Dokumentation auf Vordermann bringen.

Ich habe Jules den Auftrag gegeben, die mir als Maintainer von n98-magerun2 schon länger auf dem Herzen lag: die Überarbeitung der README.md Dokumentation. Ziel war es, fehlende Optionen und Argumente bei den Kommandos zu ergänzen und die Doku auf den neuesten Stand zu bringen. Das ist eine Aufgabe die einfach eine Fleißarbeit darstellt. Nichts kompliziertes. Einfach eine Aufgabe für die man nie Zeit reserviert, weil andere Dinge mehr Prio haben.

Julie verbindet sich direkt mit dem Repository über einen GitHub Account. Man gibt die Repositories über Github frei. Bisher sehe ich auch nur die Unterstützung für GitHub.

Ein Bildschirm zeigt eine Benutzeroberfläche eines Softwareentwicklungstools, das Informationen über das Projekt "netz98/magerun2" im Entwicklungszweig "develop" anzeigt. Es gibt ein Textfeld mit der Aufforderung, einen Test zu schreiben, der die Fetch-Funktion simuliert, sowie Schaltflächen für Planungs- und Inspirationsanfragen.

Man startet mit einem einfachen Prompt in der eine Aufgabe beschrieben wird.

Und nach einem Prompt rennt Jules dann los:

  • Projekt-Klonen & Abhängigkeiten: Jules hat das n98-magerun2-Projekt von GitHub geklont und eigenständig die PHP-Abhängigkeiten installiert. Das ist schon mal ein starker Start – kein manuelles composer install für mich. Das macht der Assistent (wie erwartet) im Hintergrund in einer VM. Man kann es der KI hier auch ein wenig leichter machen und in einer Repository Konfiguration eine Reihe von Bash-Befehlen interlegen. Damit können Software-Dependencies die benötigt werden installiert werden. In meinem Fall brauche ich mindestens mal PHP und Composer.

Text in einem Feld zur Konfiguration einer Entwicklungsumgebung zeigt Befehle zur Installation von PHP-Paketen sowie zum Herunterladen und Ausführen eines Installers. Es gibt Anweisungen zum Ausführen eines Validierungsbefehls und Hinweise zu den Repos, die Jules zur Verfügung stehen.

  • Planung: Der Clou war, dass Jules clevererweise bin/n98-magerun2 list aufgerufen hat. Damit hat es sich eine vollständige Liste aller verfügbaren Kommandos mit deren Optionen und Argumenten verschafft.

  • er läuft und läuft und läuft:

Der Asstistent arbeitet. Je nach Server-Ressourcen bei Google kann das auch mal länger laufen (gerade war die Google I/O und es ist besonders viel Last auf den Servern).

Ein Screenshot zeigt eine Diskussion über die Überprüfung und Aktualisierung einer README.md-Datei zur Dokumentation von Befehlen. Die Schritte umfassen das Abrufen einer vollständigen Liste von Befehlen, das Vergleichen von Dokumentationen und das Aktualisieren der README.md-Datei, um fehlende Informationen hinzuzufügen. Am Ende wird ein genehmigter Plan zur Stellungnahme präsentiert.

  • Vergleich & Überarbeitung: Anschließend hat Jules diese gesammelten Informationen mit der bestehenden README.md verglichen. Fehlende Einträge wurden ergänzt und bestehende Beschreibungen mit detaillierteren Optionen und Argumenten angereichert, basierend auf den Hilfetexten der Kommandos.

Der Screenshot zeigt eine Programmieroberfläche mit Code und Dokumentation für das Tool "m98-magerun2". Auf der linken Seite sind Befehle und deren Beschreibungen aufgelistet, die zur Ausführung von Magento-Kommandos dienen, sowie globale Konfigurationsparameter. Rechts wird der Inhalt einer README.md-Datei angezeigt, in der Anweisungen zur Nutzung des Tools und die Verwendung des PHP CLI-Interpreters beschrieben sind.

Und hier ist das Ergebnis:

Dokumentation für ein README.md-Dokument, das aktualisiert wurde, um fehlende Befehle und Optionen zu integrieren. Es wird beschrieben, wie die README umfassender gestaltet werden kann, um n98-magerun2-Befehle zu erklären, einschließlich zusätzlicher Kommandos und ihrer Argumente.

Jules hat einen Pull Request auf GitHub erstellt, den man sich hier anschauen kann: https://github.com/netz98/n98-magerun2/pulls.

Die Änderungen waren repräsentativ und haben die Dokumentation deutlich verbessert. Davon profiert jetzt jeder. Gleichzeitig hat Jules auch alle Optionen in schön formatierte Tabellen gepackt. Wunderschön :-)

Was geht (schon) und was (noch) nicht?

Was geht:

Code-Analyse und -Verständnis: Jules kann Projekte klonen, Abhängigkeiten installieren und Code analysieren, um fehlende Dokumentation oder potenzielle Fehler zu identifizieren.

Dokumentations-Generierung: Wie mein Test gezeigt hat, ist Jules in der Lage, bestehende Dokumentation zu erweitern und zu aktualisieren, indem es sich die "Source of Truth" (in diesem Fall die --help-Ausgaben der Kommandos) selbst beschafft.

Direkter GitHub-Export: Die Möglichkeit, die Änderungen direkt als Pull Request zu exportieren, ist ein riesiger Vorteil für den Workflow.

Kleine Features und Bugfixes: Der primäre Anwendungsfall von Jules liegt in der Bearbeitung kleinerer, klar definierter Aufgaben.

Was (noch) nicht geht (oder verbesserungsbedürftig ist):

Komplexe Architekturen: Für tiefgreifende architektonische Entscheidungen oder die Entwicklung völlig neuer, komplexer Features ist Jules (noch) nicht gedacht. Hier ist weiterhin menschliches Fachwissen und kreatives Denken gefragt.

Feinheiten und Nuancen: Manchmal fehlt es der KI noch an dem "Gefühl" für bestimmte Feinheiten oder den Kontext, der nur durch jahrelange Erfahrung in einem Projekt entsteht. Eine menschliche Überprüfung der generierten Änderungen ist daher unerlässlich.

Interaktion und Nachfragen: Obwohl Jules einen Plan erstellt und um Genehmigung bittet, ist die iterative Kommunikation noch nicht so flüssig wie mit einem menschlichen Kollegen.

Tageslimit: Aktuell gibt es ein tägliches Aufgabenlimit, wie man auf dem Screenshot sehen kann. Das ist verständlich in einer Beta-Phase, aber für den produktiven Einsatz natürlich ein limitierender Faktor. Hier habe ich mich bei Google für ein größeres Limit registriert. Mal sehen ob Google ein Herz für Open Source Maintainer hat.

Ein Fortschrittsbalken zeigt den Status der täglichen Aufgabenbeschränkung an, mit einem aktuellen Fortschritt von drei von fünf Aufgaben. Der Balken ist lila und teilweise gefüllt.

Fazit und Ausblick

Google Jules ist ein spannendes Tool, das einen vielversprechende Ansätze hat. Gerade für Aufgaben wie die Aktualisierung von Dokumentationen, das Beheben kleinerer Bugs oder das Hinzufügen einfacher Features kann es eine enorme Zeitersparnis bedeuten. Es arbeitet nicht direkt in der IDE sondern ist eher wie ein Kollege zu sehen, dem man einen Auftrag gibt und der sich nach einer Weile mit einem Ergebnis zurückmeldet. Wie im echten Leben gibt es dann eine QA/Code Review und man gibt einen Kommentar mit Verbesserungsvorschlägen oder es passt.

Ich bin gespannt, wie sich Jules weiterentwickeln wird. Die Idee eines intelligenten Entwicklungsagenten, der uns bei der täglichen Arbeit unterstützt, ist nicht neu, aber Google scheint hier einen praktikablen Ansatz gefunden zu haben. Ein paar Dinge konnte der Assistent nicht lösen. Das liegt zum Teil aber am nicht ganz einfachen Dev-Setup. Hier sehe ich schon, dass ich für den KI Assistenten nachbessern muss. Wenn das Setup für den Entwickler einfach ist, dann ist es auch für den KI Assistenten einfach und man bekommt bessere Ergebnisse von der KI. Es gibt also viel zu tun :-)