Kurs-Agent

Modell: wird gesucht …

Prof. Dr.-Ing. Ralph Wystup M.Sc. und Claude (Anthropic, Claude Code) — gemeinsam erstellt

1 · LLM-Eingabe

Agent (sein Wort, 16.10.2026): Prompt ans LLM → reinen Python-Code in die Interpreter-Eingabe → Interpreter → Simulator (läuft ohne Fehler?) → antwortet der ESP32 (Strg+C/D, Banner, >>>)? → Download → meldet das Brett einen Traceback? Jede Fehlermeldung kommt als Anhang an den Prompt und geht erneut ans LLM, höchstens drei Runden. Gemessen wird nur „läuft", nicht „richtig" — es gibt keinen Maßstab (sein Wort, 11:30: „alles weg").

2 · LLM-Ausgabe

3 · Interpreter-Eingabe (Python für den ESP32)

Zum Ändern freigegeben — damit niemand einen fertigen Text durchwinkt.

4 · Interpreter-Ausgabe

Alles von Hand, wie es der Agent tut: Text hin- und herreichen.

5 · Direkt am ESP32 (Eingabeaufforderung des Bretts)

Nicht verbunden. Nach „Betriebssystem" und „Laden" verbindet die Seite von selbst.

Protokoll — live, was der Diener tut (von Ihnen oder von der Entwicklungs-KI über die Brücke)

Datei ablage\protokoll_testen.txt; jede Zeile ein Schritt mit Uhrzeit. Aktualisiert jede Sekunde, zeigt die letzten 120 Zeilen.

Das System des Kurses — Beschreibung (Stand 16.10.2026)

Prof. Dr.-Ing. Ralph Wystup M.Sc. und Claude (Anthropic, Claude Code) — gemeinsam erstellt

Zweck. Ein Kurspaket, mit dem Schülerinnen und Schüler einen ESP32 in MicroPython programmieren — mit einem Sprachmodell als Helfer, das auf dem Kursrechner läuft. Kein Internet, kein Konto, nichts installiert: alles liegt in einem Ordner und läuft mit dem Python, das der Ordner mitbringt.

Was dazugehört.

  • Diese Seite (Frage.html) — fünf Fenster: LLM-Eingabe, LLM-Ausgabe, Interpreter-Eingabe, Interpreter-Ausgabe, Direkt am ESP32. Jedes Fenster zeigt nur die rohe Ausgabe seiner Quelle. Der Agent läuft in dieser Seite.
  • Der Diener (agent\oberflaeche.py) — ein kleines Programm auf 127.0.0.1:8777: liefert die Seite, startet auf Knopfdruck je ein Werkzeug, hält die Leitung zum Brett, startet und beendet den Modellserver und schreibt jeden Schritt in ablage\protokoll_testen.txt.
  • Das Sprachmodell — Qwen2.5-7B-Instruct (4,7 GB) im llama-server (llama.cpp) auf 127.0.0.1:8099. Es schreibt Text; es führt nichts aus und ruft nichts auf.
  • Der Python-Interpreter des Kurses (ablage\python) — übersetzt die Programme (py_compile) und führt Simulator und Werkzeuge aus.
  • Die Werkzeuge (agent\werkzeuge) — je eines ein Programm: Simulator (machine nachgebaut, misst Pins, Takt, Tastgrad), Anschlüsse zeigen, MicroPython aufspielen (Banner gemessen), Programm aufspielen (Prüfsumme vom Brett, Neustart), Nachlesen am Brett.
  • Das Brett — ESP32-WROOM-32 DevKit am USB (CH340, COM3), Bord-LED D2 = GPIO 2, MicroPython v1.29.0.
  • Drei Testprogramme (testprogramme\) — vom Auftraggeber, zum Ändern freigegeben.

Wie es gestartet und beendet wird. Doppelklick auf START.bat: Das Fenster „Kurs-Agent" bleibt offen, solange gearbeitet wird; der Diener läuft darin, startet den Modellserver und öffnet diese Seite. Fenster schließen = Kurs aus: Leitung zu, Modellserver beendet, Diener beendet. Vor dem Start sieht agent\einrichten.py nach, was da ist; es wird nichts installiert.

Der Agent — seine Schritte, wörtlich vom Auftraggeber. Prompt ans LLM → reinen Python-Code in die Interpreter-Eingabe → der Interpreter zeigt sein Ergebnis → Simulator: läuft es ohne Fehler? → ist der ESP32 angeschlossen und meldet er sich (Strg+B; sonst läuft das alte Programm noch: Strg+C; sonst Betriebssystem aufspielen)? → Freigabe ist >>> → das übersetzte Programm aufspielen und starten → meldet das Brett einen Traceback? Jede Fehlermeldung geht als Anhang zum alten Prompt zurück ans LLM, höchstens drei Runden. Gemessen wird „läuft", nicht „richtig": es gibt keinen Maßstab. Alles, was der Agent tut, steht mit Uhrzeit unter den Knöpfen und im Protokoll.

Was heute gemessen ist (16.10.2026, am Brett an COM3). Sechs Agentenläufe hintereinander, alle in Runde 1 bestanden: Blinken 1 s an / 3 s aus, 3 s an / 1 s aus, alle 2 s, jede halbe Sekunde. Dabei lief jedes Mal das vorige Programm noch; der Agent stoppte es mit Strg+C und bekam die Freigabe. Die Rückschleife mit Anhang ist am Brett noch nie nötig gewesen; der Weg über das Betriebssystem und der leere Rechner (Anforderung 8, 9) sind ungemessen.

Wie gearbeitet wird. Nach den Anforderungen (eigener Reiter): nie vermuten, immer messen; der manuelle Test zu 100 %; autark; kein Fake; Fehler ohne Ausnahme benennen; alles gegen die Anforderungen prüfen; erst Literatur und Git, dann eigene Ansätze; alles in einem Ordner; nichts installieren; geht nicht gibt es nicht. In der Entwicklung — nicht im Kurs — prüft ein Tor (einspielen.py) jede Lieferung und ein Regelwächter (regelwaechter.py) jeden Schritt der KI gegen diese Anforderungen.

Ordner. agent\ Diener, Einrichtung, Werkzeuge · ablage\ Python des Kurses, Werkstatt, Protokoll · paket\ Modell, llama-server, Python-Vorlage, Pakete, Treiber, Firmware, Vorlagen, Brett-Tafel · testprogramme\ · Frage.html, START.bat.

Übersicht — was auf diesem Rechner läuft und was der Agent tut (Stand 16.10.2026)

Kurs-Agent — was auf dem Kursrechner läuft: ein Ordner, kein Internet, nichts installiert START.bat — der Schalter Fenster offen = Kurs läuft Fenster zu = alles aus Modellserver · llama-server · :8099 Qwen2.5-7B-Instruct Q4_K_M (4,7 GB) schreibt nur Text, führt nichts aus Entwicklung — nicht Teil des Systems Brücke: beobachtet, misst, spielt ein Tor einspielen.py: nichts nach C: ohne Messung, Quelle und Freigabe Regelwächter: prüft jeden Schritt der KI gegen die Anforderungen Im Kurs läuft davon nichts. Frage.html im Browser 1 LLM-Eingabe (An das LLM, Agent) 2 LLM-Ausgabe, Wort für Wort 3 Interpreter-Eingabe (Python) 4 Interpreter-Ausgabe, Befehle 5 Direkt am ESP32 (Terminal) Der Agent läuft in dieser Seite Abbruch · Leeren · Fortschritt Diener · agent\oberflaeche.py · :8777 liefert die Seite, startet je ein Werkzeug hält die Leitung zum Brett (Terminal) schreibt ablage\protokoll_testen.txt startet und beendet den Modellserver Python des Kurses · ablage\python Interpreter: python.exe -m py_compile Simulator: programm_testen Werkzeuge: esp32_laden (Prüfsumme), esp32_firmware, esp32_nachlesen, ports_zeigen ESP32-WROOM-32 · COM3 (CH340) MicroPython v1.29 · main.py LED an GPIO 2 meldet Banner und >>> Strg+B · Strg+C · Betriebssystem öffnet die Seite startet HTTP Streaming startet · beendet startet je Werkzeug als Prozess COM3 Terminal (seriell) Der Agent — in der Seite, nach seinen Schritten, höchstens drei Runden 1 Prompt → LLM 2 Code → Interpreter-Eingabe 3 Interpreter (py_compile) 4 Simulator: läuft ohne Fehler? 5 Brett meldet sich? Strg+B · Strg+C · Betriebssystem 6 Freigabe >>> → Aufspielen mit Prüfsumme 7 Traceback vom Brett? 8 STATUS BESTANDEN Jede Fehlermeldung (Interpreter, Simulator, Traceback) geht als Anhang zum alten Prompt zurück ans LLM — nächste Runde. Schweigt das Brett auch mit neuem Betriebssystem, endet der Lauf mit Befund: Hardware, kein Fall für das LLM. Prof. Dr.-Ing. Ralph Wystup M.Sc. und Claude (Anthropic, Claude Code) — gemeinsam erstellt · 16.10.2026

Wer was tut: die Seite zeigt, der Agent entscheidet nach seinen Schritten, der Diener startet, das Werkzeug misst, das Brett antwortet, das Modell schreibt Text. Jedes Fenster zeigt nur die rohe Ausgabe seiner Quelle.

Installation — Schritt für Schritt (Stand 16.10.2026)

Grundsatz. Ein einziger Ordner Kurs_Agent mit allen Dateien; START.bat löst alles aus. Der Ordner bringt alles mit: ein eigenes Python, den Modellserver, das Sprachmodell, die MicroPython-Firmware, den USB-Treiber, die Werkzeuge und diese Seite. Beim Start sieht die Einrichtung nach, was auf dem Rechner schon da ist, und richtet nur das Fehlende ein — aus dem Paket, ohne Internet. Kein Konto, kein Herunterladen, nichts aus dem Netz.

Was der Rechner braucht.

  • Windows 10 oder 11, 64 Bit.
  • Etwa 6 GB freier Platz auf dem Laufwerk (der Ordner ist rund 5 GB groß, das Modell allein 4,7 GB).
  • Arbeitsspeicher: der Modellserver belegt im Betrieb rund 4,5 GB; gemessen auf einem Rechner mit 16 GB. Mit 8 GB wird es eng, darunter passt das 7B-Modell nicht.
  • Einen freien USB-Anschluss und ein USB-Datenkabel (kein reines Ladekabel).
  • Das Brett: ESP32-WROOM-32 DevKit (30 Pins) mit USB-Wandler CH340. Die Bord-LED liegt an GPIO 2.

Schritt 1 — Ordner kopieren. Den ganzen Ordner Kurs_Agent vom Stick auf das Laufwerk kopieren, zum Beispiel nach C:\Kurs_Agent. Der Ort ist frei wählbar; alles leitet sich vom Ort der START.bat ab. Geprüft ist bisher nur C:\Kurs_Agent.

Schritt 2 — Brett anschließen. Den ESP32 per USB verbinden. Im Geräte-Manager (Windows-Taste, „Geräte-Manager" eintippen) unter „Anschlüsse (COM & LPT)" erscheint „USB-SERIAL CH340 (COMx)"; die Nummer x merken (die Seite erkennt den Anschluss beim Start selbst und trägt ihn ein; nur zur Kontrolle). Fehlt der Treiber, erscheint ein unbekanntes Gerät — das ist kein Hindernis: START.bat stellt das in Schritt 3 fest und installiert den Treiber aus dem Paket (paket\treiber, Windows-Bordmittel pnputil, kein Netz). Verlangt Windows dafür Administratorrechte, holt START.bat sie für diesen einen Schritt selbst: Es erscheint die Windows-Abfrage „Möchten Sie zulassen, dass …" — mit Ja beantworten. Mehr ist nicht zu tun.

Schritt 3 — START.bat doppelklicken. Zeigt Windows beim ersten Start vom Stick einen blauen Hinweis „Der Computer wurde durch Windows geschützt" (SmartScreen): auf „Weitere Informationen" und dann „Trotzdem ausführen" klicken — das kommt nur einmal. Ein schwarzes Fenster „Kurs-Agent" geht auf. Es ist der Schalter: Es bleibt offen, solange gearbeitet wird. Darin läuft zuerst die Einrichtung (agent\einrichten.py), die zwölf Punkte nachsieht — Python des Kurses, pip, pyserial, mpremote, esptool, tkinter, CH340-Treiber, Sprachmodell, Modellserver, Firmware, Werkzeuge, Seite — und jedes fehlende Stück aus dem Paket einrichtet: das Python wird aus paket\python_vorlage kopiert — die mitgelieferte Vorlage ist vollständig (mit pip, pyserial, mpremote, esptool, tkinter), mehr ist für Python nicht zu tun; fehlt trotzdem ein Paket, kommt es als Rad aus paket\pakete, tkinter aus dem Archiv; der Treiber aus paket\treiber. Jeder Punkt wird davor und danach gemessen und mit Ergebnis angezeigt; geholt wird nichts aus dem Netz. Was das Paket nicht hat, wird gesagt. Danach startet der Diener, der Diener startet den Modellserver (er lädt das Modell in den Arbeitsspeicher, je nach Rechner 15 bis 60 Sekunden) und öffnet diese Seite im Browser unter http://127.0.0.1:8777. Der erste Start auf einem Rechner dauert 1 bis 3 Minuten (Python kopieren, Pakete einrichten, Modell laden); danach etwa eine halbe Minute.

Schritt 4 — bereit? Oben rechts auf der Seite muss „Modell: Qwen2.5-7B-Instruct…" stehen. Solange dort „wird gesucht" steht, lädt der Modellserver noch. Das Feld „Anschluss" in Fenster 4 ist beim Start selbst gefüllt worden („Anschluss erkannt: COMx" in der Zeile darunter); nur wenn dort „Kein USB-Anschluss erkannt" steht, das Brett prüfen und die COM-Nummer aus Schritt 2 eintragen.

Schritt 5 — erster Test von Hand. In Fenster 3 unter „Vorgefertigt" test1_blink_1hz.py wählen, „In die Eingabe" drücken, dann in Fenster 4 „Programm auf den ESP32". Der Interpreter übersetzt zuerst (bei Erfolg bleibt sein Fenster leer, der Rückgabewert steht in der Zeile darunter), dann läuft der Fortschrittsbalken über dem ESP32-Fenster, und das Brett meldet MPY: soft reboot. Die Bord-LED blinkt einmal je Sekunde. Meldet das Brett nichts: „Betriebssystem auf den ESP32" drücken (spielt MicroPython auf, etwa 60 Sekunden), dann Schritt 5 wiederholen.

Schritt 6 — der Agent. In Fenster 1 den Auftrag eintippen, zum Beispiel „Schreibe ein MicroPython-Programm, das die LED am ESP32 eine Sekunde an und drei Sekunden aus blinken lässt", dann „Agent" drücken. Während er läuft, sind alle anderen Knöpfe grau; unter den Knöpfen steht jeder Schritt mit Uhrzeit. „Abbruch" hält ihn an. Am Ende steht STATUS BESTANDEN oder GESCHEITERT mit Befund.

Schritt 7 — beenden. Das Fenster „Kurs-Agent" schließen. Damit werden Leitung, Modellserver und Diener beendet; danach läuft nichts mehr vom Kurs. Den Browser-Reiter schließen.

Wenn es klemmt.

  • „Modell: wird gesucht" bleibt stehen. Der Modellserver ist nicht hochgekommen. Fenster „Kurs-Agent" ansehen: Dort steht, was er gemeldet hat. Häufigste Ursache: zu wenig freier Arbeitsspeicher — andere Programme schließen, Fenster schließen, START.bat neu starten. Blockiert ein Virenschutz oder Smart App Control den Server, versucht der Diener zuerst die signierte Fassung unter paket\llama_signiert.
  • „Diener antwortet nicht" auf der Seite. Das Fenster „Kurs-Agent" ist zu oder abgestürzt. START.bat neu starten; die Seite verbindet sich von selbst wieder.
  • COM-Anschluss belegt. Ein anderes Programm hält die Leitung (Thonny, Arduino-IDE, ein Terminal). Dort schließen, dann erneut.
  • Falscher Anschluss. Die COM-Nummer im Geräte-Manager nachsehen und im Feld „Anschluss" eintragen.
  • Das Brett meldet sich nicht. Erst Verbinden und Strg+C im Terminal (das alte Programm läuft noch), sonst „Betriebssystem auf den ESP32". Hilft auch das nicht: Kabel (Datenkabel?), anderer USB-Anschluss, Brett ab- und anstecken.
  • Der Kurs läuft schon. Sagt START.bat, wenn es bereits ein Fenster „Kurs-Agent" gibt; dann öffnet es nur den Browser.

Entfernen. Den Ordner löschen. Mehr ist nicht auf dem Rechner — außer dem CH340-Treiber im Treiberspeicher von Windows, falls er in Schritt 3 eingerichtet wurde.

Ehrlich gesagt. Geprüft ist das alles auf einem eingerichteten Windows-11-Rechner mit 16 GB (16.10.2026, Brett an COM3): Einrichtung 12 von 12, Schalter 9 von 9, sechs Agentenläufe. Der erste Start ohne vorhandenes ablage\python ist nachgestellt worden: Die Einrichtung baute das Python aus der Vorlage auf, 12 von 12, Simulator 10 von 10 (beim ersten Versuch fehlten pip-Rad und esptool-Rad — behoben, die Vorlage ist seither vollständig). Auf einem fremden, leeren Rechner mit fehlendem Treiber ist es noch nicht gemessen worden.

Die Anforderungen — sein Wort, 15.10.2026

  1. Wir vermuten nie etwas! Wir rechnen und prüfen immer — ein für alle Mal. Und das wird bis ins kleinste Detail befolgt.
    Keine Aussage über einen Zustand ohne Messung daneben. Ein Werkzeug, das etwas nicht gemessen hat, sagt NICHT GEMESSEN — nie „läuft jetzt".
  2. Der manuelle Test muss zu 100 % funktionieren!
    Jeder Knopf im Reiter Testen tut jedes Mal, was er sagt — mit dem Brett, nicht nur am Rechner. Was nicht 100 % geht, wird nicht angeboten.
  3. Das System muss autark funktionieren, also ohne Internet. In der Entwicklung beobachtet, analysiert und verbessert die KI das System — aber sie ist nie Teil des Systems.
    Alles läuft auf diesem Rechner (127.0.0.1): Seite, Diener, Werkzeuge, 7B. Kein Netz, kein Konto, keine Brücke im Betrieb.
  4. Wir bescheißen nicht! Kein Fake, keine fertigen Programme aus der Hinterhand, um dem User zu gefallen.
    Keine Lösung in Vorlagen, Vorspann, Prüfern oder Werkzeugen. Jeder Lauf belegt, woher sein Code kam — Rohantwort, Prüfsumme bis aufs Brett.
  5. Es wird grundehrlich geprüft, ob es Fehler gibt; sie werden ohne Ausnahme benannt und behoben.
    Auch die eigenen Fehler und die der Werkzeuge — mit Messung, Ursache und Abhilfe. Nichts wird weggelassen, weil es unbequem ist.
  6. Alles wird gegen diese Anforderungen immer bis ins Detail geprüft!
    Vor jeder Abgabe, jedem Einspielen, jeder Aussage: Anforderungen Punkt für Punkt gegen das Ergebnis halten — mit Messung, nicht mit Durchsicht.
  7. Wir überlassen nichts dem Zufall. Zuerst wird in der Literatur und im Git nachgesehen; erst nach ausführlicher Information — dann und nur dann — entstehen eigene Ansätze auf dieser Grundlage und dem allgemeinen Wissen.
    Vor jedem Bauschritt Stand der Technik lesen und die Quellen nennen; ein eigener Ansatz benennt, worauf er fußt. Kein Eigenbau aus dem Stegreif.
  8. Alles muss über eine Datei auf einen jungfräulichen Rechner übergeben werden können.
    Ein Archiv mit allem — Seite, Diener, Werkzeuge, Python, llama-server, 7B, Treiber, Firmware. Entpacken, START.bat, fertig; geprüft auf einem Rechner ohne Python und ohne Netz.
  9. Bevor etwas auf diesem Rechner installiert wird, wie Treiber, ist nachzusehen, ob es das schon gibt. Ansonsten ist alles mitzuführen — wir haben kein Internet.
    Jeder Einrichtungsschritt prüft erst, was da ist (Treiber, Python, Pakete, Firmware), und tut nur, was fehlt. Alles, was fehlen kann, liegt im Paket; nichts kommt aus dem Netz — was nicht da ist, wird gesagt.
  10. Wir suchen immer eine Lösung — geht nicht gibt es nicht!
    Ein Hindernis wird benannt, dann wird gesucht: Literatur, Git, ein anderer Weg, eine Messung mehr. Die Suche selbst gehört in den Bericht.

Wortlaut und Umsetzung je Anforderung auch in ANFORDERUNGEN.md im Paketordner. Neue Anforderungen kommen hier dazu.