Kurs-Agent — Lehrbeispiel: eine lokale KI schreibt, prüft und flasht Programme

Fassung 3.1 · 05.10.2026 · Prof. Dr.-Ing. Ralph Wystup M.Sc.

Dieses Paket vertieft am realen System, was die veröffentlichte Seite „KI steuert lokale Hardware über eine Brücke" exemplarisch zeigt. Ein KI-Agent mit eigenem Sprachmodell richtet auf einem Windows-Rechner Python ein, schreibt ein Programm für einen ESP32, überspielt es — und entfernt sich danach restlos. Alles läuft aus einem Ordner, vom Stick oder von der Festplatte. Nichts wird installiert, kein Netz wird gebraucht, keine Adminrechte.

Der Weg vom Satz zur blinkenden LED Ihr Auftrag ein Satz auf Deutsch im Menü eingetippt Modell + Agent wählt ein Werkzeug liest das Ergebnis schreib_datei das Programm entsteht programm_testen läuft ohne Hardware LED auf dem Schirm esp32_uebertragen dieselbe Datei auf das Gerät bricht der Test ab, wird der Quelltext berichtigt — und erneut geprüft Ohne ESP32 endet die Kette einen Schritt früher. Der orange Schritt ist dann das Ergebnis: das Programm läuft, die LED blinkt auf dem Bildschirm — nur eben nicht am Steckbrett.

Wofür das Ganze

Nicht nur für den ESP32: Der Agent schreibt auf Anforderung jedes Python-Programm — einen Taschenrechner mit Fenster (tkinter liegt im Paket), ein Skript, das rechnet — und führt es mit dem Paket-Python aus, bevor er es für fertig erklärt.

Die veröffentlichte Seite führt vor, wie eine KI über eine Brücke Hardware am Arbeitsplatz steuert. Dort sieht man zu. Hier hat man es selbst in der Hand: eigenes Modell, eigener ESP32, kein Netz, ein Ordner — derselbe Kreis aus Anforderung, Bau, Abnahme und Nachweis, nur dass jeder Schritt auf dem eigenen Rechner läuft und geprüft wird.

Dieses Paket zeigt an einem kleinen, vollständig laufenden Beispiel, wie Entwicklung mit einem Sprachmodell wirklich abläuft — nicht als Folienvortrag, sondern als Vorgang, den man anstoßen und zusehen kann. Es ist derselbe Ablauf, mit dem auch dieses Paket selbst entstanden ist, nur im kleinen Rahmen.

Der Ablauf — und warum er so und nicht anders ist

Schrittwerwarum er nicht wegfallen darf
1AnforderungMenschEin Satz auf Deutsch. Was nicht gesagt wurde, kann auch nicht geprüft werden.
2BauModellDas Modell schreibt den Quelltext. Das ist der Teil, über den alle reden — und der kleinste.
3AbnahmeWerkzeugDas Programm läuft, und das Gemessene wird mit dem Angekündigten verglichen. Hier entscheidet sich alles.
4BerichtigenModellFällt die Abnahme durch, geht es zurück zu 2 — mit der Fehlermeldung als Eingabe.
5AuslieferungWerkzeugErst nach bestandener Abnahme geht dieselbe Datei auf die Hardware.
6RücklesenWerkzeugDas Gerät selbst meldet, was blinkt: Pegel, Wechsel, Takt — gegen dieselbe Erwartung. Der zweite, unabhängige Weg.
7NachweisWerkzeugWas hat sich am Rechner geändert? Gemessen, nicht behauptet.

Schritt 3 ist der eigentliche Inhalt des Kurses. Ein Sprachmodell schreibt in Sekunden ein Programm, das plausibel aussieht. Ob es tut, was verlangt war, steht damit nicht fest — und genau diese Lücke schließt kein besseres Modell, sondern eine Prüfung, die durchfallen kann.

Deshalb nimmt programm_testen eine Erwartung entgegen:

"erwartet": {"pins": [2], "takt_hz": 1.0}

Ohne diese Zeile ist der Lauf eine Vorführung: etwas blinkt, und niemand hat vorher gesagt, was hätte blinken sollen. Mit ihr ist es eine Abnahme.

Was hier anders ist als im großen Aufbau

Üblicherweise liegen die drei Teile auf drei Rechnern: das Sprachmodell bei einem Anbieter, der Agent auf einem Server, die Hardware am Arbeitsplatz — verbunden über eine Brücke. Hier sind alle drei derselbe Rechner.

Teilgroßer Aufbaudieses Paket
Sprachmodellbeim Anbieter, über das Netzllama-server auf 127.0.0.1
Agent und Werkzeugeauf einem Serverderselbe Rechner, Ordner agent\
Hardwaream Arbeitsplatz, über eine Brückeam selben USB-Anschluss

Am Ablauf ändert das nichts — und das ist der Punkt. Wer ihn hier verstanden hat, hat ihn auch für den verteilten Fall verstanden; dort kommen Strecke und Rechteverwaltung dazu, nicht aber ein anderer Vorgang.

Was gelten soll — und woran man es misst

Die Anforderungen an dieses Paket stehen geschrieben, nicht im Kopf: ANFORDERUNGEN.md führt 55 Punkte in neun Gruppen, jeder so gefasst, dass er scheitern kann, mit der Angabe, woran er gemessen wird.

GruppeKern
A — AutarkieDer Kursrechner hat Windows und sonst nichts. Das Paket bringt alles mit, sucht kein vorhandenes Python und benutzt auch keines.
B — keine StörungLäuft dort schon Thonny oder ein eigenes Python, bleibt daran alles unberührt — auch Benutzerpakete, pip-Zwischenspeicher, PATH, Ports und COM-Anschlüsse.
C — nur im KursordnerGeschrieben wird ausschließlich in ablage\, und das wird erzwungen, nicht gehofft.
D — restlos entfernbarEin Ordner, ein Befehl, danach wird nachgezählt.
E — WeitergabeDerselbe Stick startet auf jedem Rechner; das Modell wird beim Start gewählt.
F — BedienungDoppelklick, anklicken, zusehen. Keine Kommandozeile.
G — der LehrinhaltBauen, Abnahme gegen eine vorher genannte Zahl, berichtigen, erst dann ausliefern.
H — HardwareFabrikneu oder vorprogrammiert, mit oder ohne Treiber, mit oder ohne Steckbrett.
I — FerndiagnoseEin Befehl schreibt alles Nötige in eine Datei — ohne Benutzer- und Rechnernamen.
python pruefe_alles.py

arbeitet die maschinell prüfbaren Punkte ab — derzeit 17 — und nennt, welche von Hand zu prüfen bleiben. Beim Schreiben dieses Prüfskripts fielen zwei eigene Fehler auf: eine Prüfung, die ihr Ergebnis behauptete statt es abzulesen, und eine, die „bestanden" meldete, obwohl der geprüfte Lauf gar nicht stattgefunden hatte.

Das Blinkprogramm ist nur das Beispiel

Eine blinkende Leuchtdiode ist die kleinste Aufgabe, an der sich die ganze Kette zeigen lässt: sie ist in sechs Zeilen geschrieben, in vier Sekunden geprüft und am Ergebnis sieht man sofort, ob es stimmt. Aufgezeichnet wird aber jeder Anschluss — ein Programm mit drei Pins und verschiedenen Takten läuft genauso durch, ebenso Pulsweiten­modulation und Analogeingänge.