Devgen:Your Github AI Assistant

06.11.2024Stefan Welsch
Tech Artificial Intelligence Developer Experience Development Integration GitOps Productivity Realtime

Banner

Heute stelle ich euch ein wirklich sehr junges Tool vor, welches gerade noch in der Beta Version ist! An dieser Stelle nehme ich schon mal vorweg, dass noch einige Features zu wünschen übrig lassen und es noch einige Bugs zu haben scheint. Aber wie gesagt, es ist eine Beta Version und da nimmt man sowas in Kauf.

Devgen ist ein AI-Assistent, der Code, Issues, Pull Requests und Releases eines Github Repositories analysiert, um daraus Erkenntnisse über das Github Repository zu gewinnen. Es handelt sich um eine Chrome Erweiterung, diese kann entweder direkt über den Chrome Web Store oder direkt über das Github Repository von Devgen installiert werden. Wenn man auf die Seite von Devgen schaut sieht man, dass es noch nicht wirklich viel Dokumentation gibt.

Ok schauen wir uns an was Devgen für uns macht. Auf der Webseite wirbt Devgen mit den beiden folgenden Punkten:

Repository Q&A:

  • Erhalten Sie in Sekundenschnelle fachkundige Einblicke in Ihre Codebasis, mit

    • Nahtlos verknüpften Referenzen zum Code
    • Sofortiger Zugriff auf relevante Probleme
    • Schnelle Navigation zu zugehörigen Pull Requests

Pull Request-Entwurf

  • Schnelles Starten von GitHub Issues

  • Sofortige Initiierung neuer Issues mit ersten Codeänderungen

  • Ermöglicht frühes Feedback und kollaborative Verfeinerung

  • Beschleunigen Sie den Übergang von der Idee zur Implementierung

Schauen wir uns das doch mal genauer an. Ich installiere also erstmal Devgen aus dem Chrome Web Store und gehe ins Github Repository von Teller. Teller ist ein Secrets Management Tool, was man hervorragend für die lokale Entwicklung nutzen kann. Wer mehr darüber erfahren will, kann das unter dem angegebenen Link tun ;-)

Wir öffnen also die Github Seite und wählen dann die Devgen Extension im Browser aus.

image-20241009131034251

Wie bereits erwähnt sehen wir nun die beiden Hauptfunktionen von Devgen. Wollen wir also mal eine Frage zu unserem Repository stellen. Bevor ich dies tun kann, muss ich mich allerdings erstmal mit meinem Github Account anmelden. Danach sehen wir eine Aufforderung einen Index zu erstellen. Sobald dieser Index erstellt wurde, können wir damit beginnen, Fragen zu dem Repository zu stellen. Um die Erstellung sicherzustellen, können wir im Menu auf den Button mit den 3 Linien klicken um uns den Status des Index anzeigen zu lassen. Hier können wir den Index auch aktualisieren.

image-20241009131936514

Aber nun wollen wir die erste Frage stellen, nämlich wofür ist dieses Repository überhaupt gut. In meinem ersten Versuch habe ich hier keine Antwort erhalten. Auf der Webseite von Devgen steht aber noch etwas über Model Provider. Leider ist auch hier die Dokumentation sehr spärlich und man kann nur raten, dass man einen Model Provider erstellen muss, bevor man die Funktionalität von Devgen nutzen kann. Ich erstelle also den Open Router Model Provider. Wer Open Router nicht kennt, es ist einfach ein Unified Interface für LLM’s. Ich musste bei mir allerdings auch ein Guthaben aufladen, damit ich Open Router in Devgen nutzen konnte. Aber danach sieht es dann folgendermassen aus:

image-20241009151855316

Das sieht doch schon sehr gut aus. Wollen wir aber noch einen Schritte weiter gehen und schauen, ob wir auch Implementationsdetails aus dem Repository auslesen können. Ich will wissen, welche Provider uns aktuell in Teller zur Verfügung stehen.

Sehr schön. Nun gehen wir noch einen Schritt weiter und schauen, ob uns Devgen auch bei der Weiterentwicklung bestimmter Features in diesem Repository unterstützen könnte. Ich will zum Beispiel einen weitere Provider haben, mit dem ich auch OpenShift Secrets auslesen könnte.

image-20241009162748250

Ohne dies nun im Detail zu testen, gibt es mir doch schon eine Grundidee wie ich basierend auf dem vorhandenen Code einen neuen Provider schreiben könnte. Das ist ziemlich cool. Devgen kann mir auch dabei helfen Beispiele für bestimmte Features zu geben. Schauen wir uns einmal einen Teil der Readme von Teller an. Hier sehen wir schon ein paar rudimentäre Beispiele. Wir wollen nun mittels Devgen ein Beispiel für eins der Features anzeigen lassen.

image-20241009164318767

Dazu können wir einfach ein bestimmtes Feature selektieren und einen Rechtsklick darauf machen. Im Browser Kontextmenu gibt es durch das Browser-Plugin nun eine Option “Add Local shell population”.

image-20241009164525619

Damit wird der aktuelle Kontext wieder an Devgen übergeben und wir können dazu eine beliebige Frage stellen.

image-20241009164733504

Zugegeben in diesem Szenario bietet uns das nicht wirklich einen Mehrwert, da der Befehl relativ simpel ist. Aber ich denke man kann im Ansatz erkennen wie nützlich diese Funktion sein kann, wenn es um komplexere Beispiele geht.

Gehen wir einen Schritt weiter und schauen uns an, wie man mit Devgen Github Issues angehen kann. Wir wechseln im GIthub Repository zum Tab Issues.

image-20241009170622072

Wir können nun aus dieser Liste ein beliebiges Issue selektieren und anschliessend wieder einen Rechtsklick darauf machen, oder noch einfacher, dieses Issue einfach per Drag & Drop in das Textfeld ziehen.

image-20241009170705128

Auch hier wird das aktuelle Issue wieder als Kontext für Devgen gesetzt.

image-20241009171532020

Wir erhalten also einen aktiven Vorschlag, wie wir den Fehler beheben können. Auch hier habe ich die Lösung nicht weiter verifiziert, aber alleine die Idee, dass man dem LLM auf diesem Wege nicht seinen vermuteten Kontext, sondern es sich diesen selbst aus dem Github Repository zusammenstellt, finde ich persönlich schon recht genial. Gerade bei der Fehlersuche habe ich schon häufig gesehen, dass man einfach das Symptom behandelt und weniger nach dem Ursprung des Fehlers sucht. Auf der Seite von Devgen wird hier auch gezeigt, dass man sich direkt einen Patch generieren lassen kann. Dies hat leider bei mir nicht funktioniert.

Limitationen

Devgen hat momentan noch ein paar Limitationen. Man kann beispielsweise keine Repositories aus einer Organisation checken, die privat oder nur intern verfügbar sind. Das Repository muss also unter dem persönlichen Benutzer liegen (mit diesem muss man sich auch anmelden), oder es muss öffentlich verfügbar sein.

Ich hatte ausserdem teilweise noch Probleme beim Erstellen des Index. Es kann aber sein, dass es lediglich ein Anzeigeproblem war und ich einfach zu wenig Geduld hatte ;-)

Fazit

Persönlich finde ich Devgen als Idee nicht schlecht, aber momentan noch nicht wirklich brauchbar, da es wie gesagt, nicht für interne Repositories einer Organisation funktioniert. Es ist auch schade, dass es kein OpenSource Projekt ist, denn gerade, wenn ich meinen Code einem LLM zur Verfügung stelle, würde ich doch ganz gerne wissen, wie es funktioniert und welche Sicherheitslücken es eventuell gibt. Nicht, dass ich jetzt denke ich finde jede Sicherheitslücke, aber es würde es wahrscheinlich machen, dass diese schneller durch irgendjemanden entdeckt werden.

Stefan Welsch

Stefan Welsch – Manitu, Pionier, Stuntman, Mentor. Als Gründer von b-nova ist Stefan immer auf der Suche nach neuen und vielversprechenden Entwicklungsfeldern. Er ist durch und durch Pragmatiker und schreibt daher auch am liebsten Beiträge die sich möglichst nahe an 'real-world' Szenarien anlehnen.