KI-Programmieragenten können ausführbaren Go-Code erzeugen, doch das bedeutet nicht, dass sie die neuesten Sprachsyntaxvarianten oder Ergänzungen der Standardbibliothek verwenden. Ältere Go-Muster sind in den Trainingsdaten deutlich stärker vertreten, während neuere Funktionen möglicherweise in den Daten, auf denen das Modell basiert, nicht vorkommen. Um diese Lücke zu schließen, hat das GoLand-Team von JetBrains ein Open-Source-Projekt namens Modern Go Guidelines erstellt, das Agenten mit praktischen, an die im Projekt angegebenen Go-Version gebundenen Richtlinien versorgt.
Was bietet das Projekt?
Die Richtlinien decken nützliche Sprachfunktionen und Ergänzungen der Standardbibliothek in den Go-Versionen 1.0 bis 1.27 sowie Muster ab, die der go modernize-Analyzer behandelt. Der Agent erhält keine Richtlinien für Versionen, die neuer sind als die im Projekt verwendete Version. Enthält die Datei go.mod die Direktive go 1.25, kann der Agent die Richtlinien für Go 1.25 und ältere Versionen verwenden, erhält jedoch keine Vorschläge, die auf Go 1.26 oder Go 1.27 basieren.
Das bedeutet laut dem im Artikel angeführten Beispiel, dass der Agent sync.WaitGroup.Go vorschlagen kann, das in Go 1.25 eingeführt wurde, jedoch nicht errors.AsType, das Go 1.26 voraussetzt. Diese Verknüpfung der Richtlinien mit der Projektversion soll die Wahrscheinlichkeit verringern, dass Code erzeugt wird, der eine neuere Version als die verfügbare Umgebung benötigt. Gleichzeitig reduziert sie die Menge an unnötigem Kontext, den der Agent verarbeiten muss.
Schrittweise Offenlegung statt des Ladens des gesamten Kontexts
Die Erweiterung umfasst ein Kommandozeilenwerkzeug namens go-modern-guidelines und eine Anweisungsfähigkeit namens use-modern-go. Das Werkzeug unterstützt zwei Hauptbefehle:
- list: Zeigt kurze, für eine Go-Datei oder eine bestimmte Version relevante Richtlinien an.
- explain: Liefert eine ausführlichere Erklärung und ein Beispiel, das das alte Muster mit der modernen Alternative vergleicht.
Die Anweisungen schlagen vor, dass der Agent vor der Änderung der betreffenden Datei den Befehl list ausführt und explain verwendet, wenn er eine bestimmte Regel verstehen muss. Die Richtlinien können für eine Datei wie ./internal/worker/worker.go angefordert werden, oder die Version kann direkt mit --go-version 1.27 angegeben werden. Die Ausgabe von list beginnt mit den neuesten anwendbaren Richtlinien und enthält eine stabile Kennung für jede Regel, etwa sync_waitgroup_go, testing_t_context und json_omitzero.
Beispiele für moderne Muster
Die Richtlinien enthalten praktische Beispiele dafür, wie gängige Muster durch modernere ersetzt werden können, etwa die Verwendung von slices.Contains anstelle einer manuell geschriebenen Suchschleife, von min und max anstelle manueller Vergleiche sowie von cmp.Or anstelle einer Kette, die den ersten Wert ungleich null auswählt.
Außerdem erläutern sie die Verwendung von sync.WaitGroup.Go anstelle der getrennten Aufteilung von Add, go und Done, die Verwendung von errors.AsType für eine typsichere Fehlerübereinstimmung in Go 1.26 und höher sowie von new(value), wenn in Go 1.26 und höher ein Zeiger auf einen Wert benötigt wird. In Go 1.27 präsentieren die Richtlinien strings.CutLast und bytes.CutLast als Alternative zu LastIndex und manuellem Slicing.
Das Beispiel zu generic_methods, das seit Go 1.27 verfügbar ist, zeigt, wie eine generische Operation von einer Hilfsfunktion auf Paketebene in eine Methode des Typs verschoben werden kann, wenn die Operation natürlich mit diesem Typ verbunden ist. Der Befehl explain gibt die Erklärung der Regel mit einem Vorher-Nachher-Beispiel zurück und kann mehrere Regeln in einem einzigen Aufruf erläutern.
Was ändert sich praktisch für Entwickler?
Der wesentliche Wert liegt hier nicht in der automatischen Aktualisierung alten Codes, sondern darin, dem Agenten während der Erzeugung oder Änderung von Code eine kleine, gezielte Referenz bereitzustellen. Das Projekt ergänzt Werkzeuge wie go fix, statt sie zu ersetzen: Die Modern Go Guidelines helfen dem Agenten, mit einem modernen Muster zu beginnen, während go fix dabei hilft, bereits in der Codebasis vorhandene Muster zu aktualisieren.
Die Erweiterung kann über den Marketplace für Erweiterungen oder aus einem lokalen Repository installiert werden. Für die Integration muss die Go-Toolchain in PATH vorhanden sein. Bei der ersten Verwendung installiert die Integration das Kommandozeilenwerkzeug über go install und speichert es in einem lokalen Cache, ohne das Projekt selbst zu ändern. Der Artikel zeigt Befehle, um das Repository als Claude-Marktplatz hinzuzufügen, modern-go-guidelines zu installieren und /use-modern-go zu aktivieren. Außerdem wird ein Verfahren zum Testen eines lokalen Repositorys vor dessen Veröffentlichung oder Aktualisierung erwähnt, mit Beispielen, die Claude und Codex einbeziehen.
Lesart von certi.news
Das Projekt behandelt ein praktisches Problem beim Einsatz von KI-Agenten: Die syntaktische Korrektheit des Codes garantiert weder seine Eignung für die Sprachversion noch seine Orientierung an den verfügbaren besten Mustern. Die Bindung der Richtlinien an die Datei go.mod setzt eine klare technische Grenze dafür, was der Agent vorschlagen kann, während die schrittweise Offenlegung verhindert, dass er mit nicht benötigtem Kontext überladen wird. Das Werkzeug macht jedoch weder die Überprüfung durch Entwickler noch Tests überflüssig; es stellt dem Agenten Regeln und Beispiele bereit, und die Quelle belegt nicht, dass es jede von ihm erzeugte Änderung unabhängig überprüft. Außerdem reicht die angekündigte Abdeckung bis Go 1.27, sodass Richtlinien für neuere Versionen weiterhin hinzugefügt und aktualisiert werden müssen.