Connect with us

Entwicklung & Code

Volle Kontrolle – Gas Town orchestriert zehn und mehr Coding-Agenten


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Mad Max als Vorbild für Softwareentwicklung? Das neue Framework Gas Town des Entwicklers und Bloggers Steve Yegge orchestriert mehr als zehn Coding-Agenten gleichzeitig mit einer Architektur, die von der postapokalyptischen Filmreihe inspiriert ist. Der Ansatz: nicht perfekte Einzelagenten, sondern kontrolliertes Chaos mit Agenten-Rollen wie Bürgermeister, Wächter und Raffinerie, die alle an die Mad-Max-Filme angelehnt sind (siehe Tabelle am Ende des Artikels). Gas Town ist dabei nichts für schwache Nerven oder einen kleinen Geldbeutel.

Weiterlesen nach der Anzeige


Ingo Eichhorst

Ingo Eichhorst

Ingo Eichhorst ist AI Architect und Engineering Trainer bei IONOS. Seit über 15 Jahren arbeitet er in verschiedenen IT-Rollen wie CTO, Solution Architect und Software Engineer. Aktuell beschäftigt er sich intensiv mit KI-gestützter Softwareentwicklung, KI-Architektur und den Herausforderungen beim Einsatz von KI-Agenten in der Praxis.

Yegge betont, dass sich das System noch im Alpha-Stadium befindet und erhebliche Vorkenntnisse zu Coding-Agenten voraussetzt, um mit dem Chaos in der Stadt der Coding-Agenten umgehen zu können. Zudem benötigt man durch die starke Skalierung schnell ein zweites oder drittes Claude-Max-Abonnement von Anthropic, das je nach Variante 100 oder 200 US-Dollar pro Monat kostet.

Gas Town zählt zu einer ganzen Gruppe an Anwendungen, die von der Community derzeit heiß diskutiert werden und deren Ziel es ist, Coding-Agenten zu koordinieren. Zu diesen Orchestratoren gehören zum Beispiel Ralph, Loom oder AutoClaude. Yegge hat das Framework am 1. Januar 2026 veröffentlicht, nach nur siebzehn Tagen Entwicklungszeit. Allerdings steckt im Konzept die Erfahrung von über einem Jahr an Experimenten. Er hat es mithilfe von KI-Agenten in Go geschrieben.

Yegge geht von dem Gedanken aus, dass es schon immer die Aufgabe von Ingenieuren gewesen ist, komplexes Chaos in beherrschbare Strukturen zu verwandeln. Das Tool geht dabei einen Failure Mode nach dem anderen mit unterschiedlichen Konzepten an. Der Autor spricht von nichtdeterministischer Idempotenz, zwei Begriffen, die sich auf den ersten Blick ausschließen, aber durch die Kontrollstrukturen des Frameworks zusammenfinden. Die parallele Arbeit von drei bis fünf Coding- und anderen KI-Agenten kann zu chaotischen Systemzuständen führen. Was passiert beispielsweise, wenn mehrere Agenten an gleichen oder ähnlichen Aufgaben arbeiten? Wer kümmert sich um Merge-Konflikte? Wie lässt sich doppelte Arbeit verhindern? Gas Town bedient sich unterschiedlichster Konzepte, um Ordnung in das Chaos zu bringen (siehe folgende Abbildung).


Infografik Struktur Gas Town

Infografik Struktur Gas Town

Die Gas-Town-Architektur mit Control Plane (Mayor, Deacon) und Data Plane (Polecats, Rigs, Refinery, Witness). Der Task-Management-Agent Beads verwaltet alle Tasks, Convoys bündeln Aufgaben für die Arbeitsagenten.

Weiterlesen nach der Anzeige

Ein typischer Tag in der Stadt Gas Town beginnt damit, dass der menschliche Entwickler (Overseer) gemeinsam mit dem Hauptagenten, dem Bürgermeister (Mayor), die Aufgaben für den Tag in natürlicher Sprache festlegt. Der Bürgermeister zerlegt diese Aufgaben in kleinere Teilaufgaben und speichert sie im Task-Manager (Beads). Sobald die Vorbereitungen fertig sind, bündelt er Aufgaben in einem Arbeitsauftrag, im Convoy, und schickt sie in eines der Repositories, Rigs. Wenn Gas Town Zugriff auf eine gültige GitHub-Authentifizierung hat, kann der Bürgermeister Repositories einfach klonen und für die Verwendung mit Gas Town initialisieren.

Das Aufteilen der Aufgaben begegnet dem Problem der nachlassenden Qualität der Antworten von Coding-Agenten, je weiter sich ihr Kontextfenster füllt. Bei den Claude-LLMs sind das aktuell 200.000 Token. Bei Erreichen des Limits komprimiert der Coding-Agent die Dialoge, um Platz zu schaffen. In der Praxis führt schon ein zu sechzig Prozent gefülltes Kontextfenster zu einer merklichen Reduktion der Ausgabenqualität.

Im Rig werden Arbeiter-Agenten (Polecats) aktiv, die mit der Abarbeitung von Aufgaben beginnen. Je mehr Aufgaben anliegen, desto mehr Polecats treten in Aktion. Sie schaffen sich mit Git-Worktrees ihre eigene Arbeitsumgebung und kümmern sich eigenständig um die Umsetzung.

Über Mailboxes und Handoffs können sie miteinander kommunizieren. Das Mailbox-System ist von Erlang inspiriert und dient der Kommunikation zwischen langlebigen Agenten, wie dem Bürgermeister und dem Wächter. Handoffs hingegen arbeiten synchron und dienen der Übergabe des Arbeitszustands an eine neue Arbeiter-Instanz, wenn der Kontext über die oben beschriebene kritische Füllmenge hinaus ansteigt.

Da in Gas Town immer mal etwas schiefläuft, beschäftigt der Bürgermeister den Wächter (Deacon), der das Gesamtsystem periodisch analysiert, Zombieprozesse aufräumt, festgefahrene Sessions wieder anstößt und die wichtigsten Systemfunktionen am Leben hält. Im Unterschied zum Wächter, der auf Systemebene patrouilliert, überwacht der Aufseher (Witness) innerhalb eines Rigs einzelne Agenten. Jeden Agenten, den er etwa beim Faulenzen erwischt, ermordet er eiskalt und ersetzt ihn.

Mit mehreren Agenten kommt es zu vielen parallelen Änderungen, doppelter Arbeit und unzähligen Merge-Konflikten. Außerdem berichten mehr und mehr Entwicklerinnen und Entwickler, dass die Freude an ihrem Job abgenommen hat, seit sie nur noch Code von KI-Agenten reviewen.

Um diesen Problemen Herr zu werden, gibt es in Gas Town eine Raffinerie. Sie überprüft alle Arbeitsergebnisse der Agenten und räumt auf. Merge-Konflikte und schlechte Codequalität bekämpft sie mehrheitlich durch Qualitätskriterien, die sich über konfigurierbare Review-Presets und ein projektspezifisches CLAUDE.md anlegen lassen.

Nachdem alle Aufgaben abgeschlossen sind, meldet der Bürgermeister dem Entwickler stolz die erfolgreiche Abarbeitung der Convoy-Aufgabengruppe.

Agenten in Gas Town stellen austauschbare Instanzen dar, vergleichbar mit dem Konzept von Cattle statt Pets bei der Orchestrierung der Infrastruktur mit virtuellen Maschinen oder Containern, etwa mit Kubernetes. Auch darüber hinaus hat das Framework viel mit Kubernetes gemeinsam: Es gibt eine Control Plane (Bürgermeister und Wächter), die eine Data Plane (die Polecats und Aufseher) managen. Dabei sind die Arbeiter-Agenten (Polecats) austauschbar: Wenn sie den Dienst niederlegen oder stecken bleiben, werden sie durch eine neue Instanz ersetzt, ohne dass der Kontext aus der letzten Session verloren geht.

Wenn Entwicklerinnen und Entwickler blind mit Agenten Code produzieren, akkumulieren sich auf Dauer die technischen Schulden. Die tauchen auch als Fehlannahmen (Heresies) im inneren Monolog der Agenten auf, und menschliche Entwickler können sie darüber aufspüren und nachvollziehen. Grund für die Fehler ist oft das eingeschränkte Kontextfenster, aufgrund dessen Agenten aus dem Blick verlieren, was in der letzten Session vorgefallen ist. Früher gewählte Ansätze geraten in Vergessenheit und Agenten wählen mitunter fremde Designmethoden, die die Architekturkonsistenz verletzen. In einer größeren Codebasis können beispielsweise drei bis vier unterschiedliche Logging Libraries auftauchen.

Um dem zu begegnen, erfordert es sorgfältige Reviews durch Menschen, was wiederum am Produktivitätsgewinn durch die multiplen Agenten nagt. Gas Town wählt eine andere Strategie, die auf Stichproben basiert, den Sweeps: systematische Korrekturwellen, die Architektur-Drift und schlechte Praktiken eindämmen, ohne dass Entwickler alle Fehlannahmen bedenken oder alle Codezeilen einzeln analysieren müssen. Ein sechzigminütiger Review-Sweep mündet in konkreten Aufgaben für das Task-Management (Beads), die so in den Kontext der beteiligten Agenten gelangen. Das lenkt künftige Entscheidungen in die Richtung, die die menschlichen Entwickler für richtig halten.

Um einen Sweep zu starten, lassen sich Entwickler vom Bürgermeister über einen persistenten Workspace (~/gas-town//crew//rig/) einen Git-Worktree erzeugen und sehen dort die Arbeitsergebnisse eines Convoys wie gewohnt in der IDE oder im Terminal. Anstatt selbst Änderungen vorzunehmen, beauftragen sie den Bürgermeister mit der Erstellung von Korrekturaufgaben. Diese ändern das Verhalten der Agenten und führen zu einer weiteren Erhöhung der Codequalität. Nach und nach steigert sich so das Vertrauen in die Agentenschar und der Aufwand für Sweeps reduziert sich. Sweeps stellen eine Art Garbage Collection für technische Schulden dar. Zusätzlich sollten Developer aber nicht auf die gängigen Kontrollmethoden wie Rule-Dateien (AGENT.md oder CLAUDE.md) und statische Quality Gates wie Fitness Functions oder statische Codeanalyse verzichten.



Source link

Entwicklung & Code

AI Slop verstopft Open Source: GitHub kündigt Maßnahmen an


GitHub hat erste Schritte angekündigt, um das Problem der schmuddeligen KI-Beiträge für Open-Source-Projekte anzugehen. Immer mehr Maintainer beklagen sich über derartige Pull Requests (PRs), deren Autorinnen und Autoren „möglicherweise nicht vollständig verstehen, was sie beitragen“ (Brecht Van Lommel, Blender). Das zu Microsoft gehörende GitHub steht als KI-Treiber im Zentrum der Kritik, hat nun aber eine Reihe von Maßnahmen in Planung.

Weiterlesen nach der Anzeige

Im Blogeintrag erkennt GitHub das Problem an: „Als Heimat von Open Source haben wir die Verantwortung, euch bei dem zu helfen, was auf euch zukommt.“ Als erste Maßnahme kündigt GitHub an, dass Maintainer PRs künftig einfach löschen können. Das gibt ihnen die Möglichkeit, schon anhand einer schnellen Prüfung AI Slop kurzerhand auszusortieren, um die Übersichtlichkeit des Repos zu erhalten. Das war auch eine der Hauptforderungen vieler überlasteter Projektverantwortlicher.

Weitere Funktionen, die GitHub derzeit erwägt, sind an Bedingungen geknüpfte PRs oder Triage-Tools, die PRs aussortieren, die Erfordernisse nicht erfüllen, die die Maintainer beispielsweise in einer Datei CONTRIBUTING.md manifestieren.

Vorangegangen war ein Aufruf von GitHub in der Community, in dem der Anbieter um Feedback bittet. Hier kündigt GitHub noch an, dass Maintainer PRs auf bestimmte Gruppen von Kontributoren oder für Mirrors einschränken können sollen.

In den vergangenen Wochen hatte die Kritik zugenommen: Gentoo Linux ist auf dem Weg, von GitHub zu Codeberg zu wechseln, und Curl stoppte das Bug-Bounty-Programm auf Hacker One aus ähnlichen Gründen. Zuletzt hatten sich Rémi Verschelde, Maintainer der Spiele-Engine Godot, und Brecht Van Lommel, Softwarearchitekt bei Blender, kritisch zu Wort gemeldet. Verschelde schreibt auf Bluesky: „Offen gesagt werden AI-Slop-PRs für die Godot-Maintainer immer anstrengender und demoralisierender.“ Gleichzeitig ruft er dazu auf, Godot besser finanziell zu unterstützen, um mehr Maintainer bezahlen zu können: Das „ist die einzige praktikable Lösung, die ich mir vorstellen kann.“

Weitere Vorschläge in den Kommentaren zu seinem Posting sind ein Authentifizierungssystem für Kontributoren oder ein Vorrang für erfahrene Entwickler mit ausreichend historischen GitHub-Beiträgen. Das hält auch Verschelde für möglich: „Ich möchte die Zugangsbarriere nicht erhöhen, aber wir haben vielleicht keine andere Wahl.“ An GitHub möchte er festhalten, aufgrund der guten Vernetzung der Projekte und nicht zuletzt wegen der kostenlosen CI.

Weiterlesen nach der Anzeige

Kritik an GitHub zielt in erster Linie auf die KI-treibende Politik von Microsoft, in deren Zentrum der Copilot steht. Alex McLean, Maintainer des Musik-Projekts Strudel, berichtet etwa: „Bei uns gab es keine KI-Bot-PRs mehr, seit wir von Microsoft GitHub zu Codeberg umgezogen sind. Ich vermute, dort gibt es keine Anreize dafür.“ Ein anderer Kommentator bezweifelt, dass GitHub ernsthafte Maßnahmen ergreifen will: „Das werden sie nicht. GitHub untersteht Microsofts KI-Team. Jedes neue Update auf der GitHub-Homepage hat einen KI-Bezug.“ Hier wird sich Microsoft beweisen müssen, um eine weitere Abwanderung einzudämmen.

Brecht Van Lommel schreibt im Blender-Blog neben seinem eingangs genannten Zitat: Für Maintainer ist es sinnvoll, neue Entwickler in das Projekt einzuweisen, um dieses voranzubringen, „auch wenn es für den Reviewer schneller gewesen wäre, die Änderungen selbst vorzunehmen (mit oder ohne KI). Daher sollten Reviewer wissen, ob sie mit einem Menschen zusammenarbeiten, damit sie entscheiden können, ob sich der Aufwand lohnt.“


(who)



Source link

Weiterlesen

Entwicklung & Code

Neu in .NET 10.0 [11]: Vereinfachungen bei Lambda-Ausdrücken in C# 14.0


In Lambda-Ausdrücken kann man in C# 14.0 jetzt Parameter-Modifizierer wie scoped, ref, in, out und ref readonly verwenden, ohne dabei den Datentyp benennen zu müssen.

Weiterlesen nach der Anzeige


Der Dotnet-Doktor – Holger Schwichtenberg

Der Dotnet-Doktor – Holger Schwichtenberg

Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

Ein Beispiel: Für den Delegate


delegate bool Extract(string text, out T result);


musste man vor C# 14.0 Folgendes schreiben:


Extract ExtractOld = (string text, out int result) 
  => Int32.TryParse(text, out result);


Weiterlesen nach der Anzeige

Ab C# 14.0 können Entwicklerinnen und Entwickler im Lambda-Ausdruck die Nennung der Datentypen string und int weglassen, weil diese Datentypen aus dem Kontext bereits klar sind:


Extract ExtractNew = (text, out result) 
  => Int32.TryParse(text, out result);


Das geht allerdings nicht, wenn ein variadischer Parameter mit params zum Einsatz kommt:


Add AddOld = (out int result, params List data) 
  => { result = data.Sum(); return true; };


Nicht möglich ist also folgende Verkürzung:


Add AddNew = (out result, params data) 
  => { result = data.Sum(); return true; };



(rme)



Source link

Weiterlesen

Entwicklung & Code

Kyverno 1.17 wird einige APIs zugunsten von CEL-Policies entfernen


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Kyverno hat sich als Policy-as-Code-Werkzeug für Kubernetes etabliert, mit dem sich Richtlinien direkt als Kubernetes-Ressourcen definieren und durchsetzen lassen – von Validierung über Mutation bis hin zur Image-Verifikation. Das Tool begegnet so der wachsenden Komplexität beim Betrieb von Kubernetes-Clustern, indem es Sicherheits- und Compliance-Regeln als Code abbildet. Mit Version 1.17 vollzieht das CNCF-Projekt laut eigener Ankündigung nun einen strategischen Schnitt: Die in Version 1.16 eingeführte CEL-first-Architektur (Common Expression Language) verlässt den Beta-Status und wird zur stabilen Grundlage.

Weiterlesen nach der Anzeige

Die zentrale Neuerung in Kyverno 1.17 ist laut CNCF-Blog die Promotion sämtlicher CEL-basierter Policy-Typen auf die API-Version v1. Damit gelten sie als stabil und produktionsreif. Im Einzelnen betrifft das: ValidatingPolicy, MutatingPolicy, GeneratingPolicy, ImageValidatingPolicy, DeletingPolicy sowie PolicyException – jeweils inklusive ihrer Namespaced-Varianten (etwa NamespacedValidatingPolicy).

Die Common Expression Language ist dieselbe Ausdruckssprache, die der Kubernetes-API-Server selbst für seine nativen ValidatingAdmissionPolicies und MutatingAdmissionPolicies verwendet. Dem Kyverno-Entwicklungsteam zufolge soll der Wechsel zur CEL die Evaluierungsleistung spürbar verbessern und die Einarbeitungszeit für Plattform-Teams senken, da sie sich nur noch mit einer Sprache auseinandersetzen müssen.

Parallel dazu hat das Projekt die verfügbaren CEL-Funktionen erheblich ausgebaut. Neu hinzugekommen sind unter anderem Hash-Funktionen (md5, sha1, sha256), mathematische Rundung (math.round(value, precision)), das Dekodieren von X.509-Zertifikaten (x509.decode(pem)), Zufallsstring-Generierung, JSON- und YAML-Parsing sowie zeitbasierte Funktionen wie time.now() und time.toCron(timestamp), die etwa auch Policies für Wartungsfenster ermöglichen sollen.

Mit dem GA-Status der CEL-Policies geht eine klare Ansage an Bestandsnutzer einher: Laut der Ankündigung markiert Kyverno 1.17 die bisherigen Typen ClusterPolicy und CleanupPolicy offiziell als veraltet (deprecated). Diese JMESPath-basierten APIs bleiben in der aktuellen Version zwar funktionsfähig, sollen aber in einer künftigen Version vollständig entfallen – voraussichtlich noch im laufenden Jahr. Die Entwickler empfehlen ausdrücklich, neue Policies ausschließlich mit den CEL-basierten APIs zu schreiben, um den späteren Migrationsaufwand nicht weiter zu vergrößern.

Weiterlesen nach der Anzeige

Für Teams mit umfangreichen bestehenden Policy-Beständen stellt das Projekt einen Migrationsleitfaden bereit, der eine Feld-für-Feld-Zuordnung von Legacy-Konfigurationen zu den neuen Äquivalenten bieten soll. Beispielsweise wird das bisherige validate.pattern auf CEL-Ausdrücke in ValidatingPolicy abgebildet. Wer bislang ClusterPolicy-Regeln für Mutation, Validierung und Generierung in einem einzigen Objekt gebündelt hat, muss diese künftig auf die spezialisierten Typen ValidatingPolicy, MutatingPolicy und GeneratingPolicy aufteilen.

Bereits in Version 1.16 hatte Kyverno Namespaced-Varianten für Validierung, Cleanup und Image-Verifikation eingeführt. Version 1.17 schließt laut Ankündigung diese Lücke mit NamespacedMutatingPolicy und NamespacedGeneratingPolicy. Namespace-Besitzer können damit eigene Mutations- und Generierungsregeln definieren – etwa um automatisch Sidecar-Container zu injizieren oder Standard-ConfigMaps zu erzeugen –, ohne clusterweite Berechtigungen zu benötigen oder andere Mandanten zu beeinflussen. Damit soll echte Multi-Tenancy auf Policy-Ebene möglich werden.

Für mehr Sicherheit in der Supply Chain bringt Kyverno 1.17 laut der Ankündigung Unterstützung für Cosign v3, um die Image-Verifikation mit dem sich weiterentwickelnden Sigstore-Ökosystem kompatibel zu halten. Die neuen YAML- und JSON-Parsing-Funktionen in CEL sollen es zudem erleichtern, komplexe Metadaten und Software Bill of Materials (SBOMs) innerhalb von Attestierungen zu prüfen.

Bei der Observability haben die Entwickler an zwei Stellschrauben gedreht: Ein neues Flag --allowedResults ermöglicht es, gezielt nur bestimmte Ergebnisse (etwa ausschließlich fehlgeschlagene Prüfungen) in Reports zu speichern. Das soll den Druck auf etcd in großen Clustern deutlich reduzieren. Darüber hinaus liefert Kyverno 1.17 laut dem Blogbeitrag standardmäßig detailliertere Latenz- und Ausführungsmetriken für CEL-Policies.

Neben den technischen Neuerungen hat das Kyverno-Projekt seinen gesamten Webauftritt auf Basis des Starlight-Frameworks neu gestaltet. Die überarbeitete Dokumentation umfasst eine nach Nutzererfahrung gestaffelte Struktur – vom Schnelleinstieg bis zur Referenz für fortgeschrittene Policy-Autoren. Der Katalog mit über 300 Beispiel-Policies soll sich nun nach Kategorie und Typ (CEL vs. JMESPath) filtern lassen.

Für Entwickler und Integratoren hat das Projekt seine Kernkomponenten entkoppelt: Die CEL-basierten APIs sind in ein eigenes Repository (kyverno/api) ausgelagert worden, was den Import von Kyverno-Typen in eigene Go-Projekte erleichtern soll. Zusätzlich steht ein dediziertes SDK-Projekt (kyverno/sdk) für den Bau eigener Controller und Tools bereit.

Für die weitere Entwicklung skizzieren die Kyverno-Maintainer mehrere Schwerpunkte: Die verschiedenen Unterprojekte – CLI, Policy Reporter und Kyverno-Authz – sollen zu einer einheitlichen Plattform zusammenwachsen. Zudem will das Team automatisierte Performancetests etablieren und granulare Durchsatz- sowie Latenz-Daten bereitstellen, damit Plattform-Teams das Verhalten von Kyverno in Hochlast-Szenarien besser einschätzen können. Ein Upgrade von Version 1.16 auf 1.17 soll laut den Entwicklern unkompliziert sein, allerdings empfehlen sie, Manifeste auf die neue API-Version v1 umzustellen. Die bisherige v1beta1 werde für eine Übergangszeit weiter unterstützt.


(map)



Source link

Weiterlesen

Beliebt