Im Juli habe ich hier die hässliche Katze gezeigt: einen Kater, blind in Code gezeichnet, an einem Spartag mit kleinem Modell und ohne Korrekturschleife. Seitdem trage ich den Begriff „hässliche Katzen-KI“ mit mir herum, für Modelle, die unter Sparbedingungen still schlechter werden. Jetzt wollte ich wissen, wie es sich ohne Taxameter zeichnet. Derselbe Auftrag, aber nicht an ein Cloud-Modell, sondern an ein lokales Modell auf meinem eigenen Notebook: „Erstelle mir bitte eine einzelne HTML-Seite mit einer in JavaScript programmierten animierten Katze, die auf der Seite von links nach rechts und rechts nach links läuft.“
Das kam beim ersten Versuch heraus:
Version 1, unverändert: Das lokale Modell hat die Katze auf den Rücken gelegt.
Beine und Schwanz zeigen in die Luft, und das Tier „läuft“ auf seinem Rücken. Immerhin: Wolken, Gras, Blumen, ein Schwanz, der wedelt. Für einen ersten Wurf ohne jede Hilfe war das ordentlich. Und kein Taxameter lief mit.
Das Notebook
Das Modell, das hier zeichnet, liegt als Datei von 14 Gigabyte auf meiner Festplatte. Ein kleines Programm lädt sie in den Grafikspeicher und rechnet damit. Ein Sprachmodell besteht aus Parametern, Milliarden von Zahlen, die beim Training entstanden sind. Einige Hersteller veröffentlichen diese Zahlen, „offene Gewichte“ heißt das, und jeder kann sie herunterladen und ausführen. Hier ist es Qwen von Alibaba, Version 3.8 mit 27 Milliarden Parametern, auf rund 3 Bit je Zahl zusammengepresst, damit es in den Grafikspeicher passt. Das Zusammenpressen heißt Quantisierung und kostet etwas Genauigkeit, wie ein stärker komprimiertes JPEG.
Das Notebook ist kein Rechenzentrum, aber auch kein Bürogerät: eine RTX 4090 in der Notebook-Ausführung mit 16 Gigabyte Grafikspeicher, dazu 64 Gigabyte Arbeitsspeicher. Das Modell läuft komplett darauf. Kein Konto, kein Kontingent, keine Daten, die das Haus verlassen. Was es an Werkzeug braucht, ist frei: Ollama lädt und betreibt das Modell, OpenCode macht daraus einen Agenten, der Dateien liest, schreibt und Befehle ausführt. Die Katze oben ist also nicht aus einem Chatfenster kopiert. Das Modell hat sie selbst als Datei angelegt, so wie es ein Kollege am Nachbarplatz täte.
Der Werkstattmeister aus der Cloud
Eingerichtet habe ich das nicht allein. Claude, die Cloud-KI, mit der ich sonst arbeite, hat die Hardware inventarisiert, Modelle verglichen und die Konfiguration geschrieben – und dann getan, was ich mir von ihr erhofft hatte: Sie hat dem lokalen Modell bei der Arbeit zugesehen. OpenCode legt jede Sitzung in einer Datenbank ab, und die Cloud-KI las daraus jeden Werkzeugaufruf und jede Datei, die das lokale Modell geschrieben hatte, und sagte mir, was schiefging.
Das war eine Menge. Das erste Modell, eine kleinere und sehr schnelle Qwen-Variante, schrieb in einer halben Stunde elfmal die komplette Datei neu, ohne sie ein einziges Mal zurückzulesen und ohne einen Test. Vier Fassungen hatten Syntaxfehler, zwei brachen mitten im Code ab. Die beiden brauchbaren Fassungen überschrieb es dabei, und als ich mich beschwerte, erfand es Erklärungen: der Browser-Cache, „Tippfehler beim Copy-Paste“. Die Cloud-KI holte die verlorenen Fassungen aus der Sitzungsdatenbank zurück und schrieb dem lokalen Modell Hausregeln in eine Datei, die OpenCode beim Start liest (AGENTS.md im Arbeitsordner): neue Fassung, neuer Name; erst lesen, dann gezielt ändern; nach jeder Änderung prüfen. Dazu ein kleines Prüfskript (check.js), das die Katze ohne Browser laufen lässt und Fehler meldet.
Auch die Technik brauchte Betreuung. Als das Tempo einbrach, fand die Cloud-KI im Protokoll einen verwaisten Prozess, Überbleibsel eines Neustarts, den sie selbst angestoßen hatte. Er hielt zweieinhalb Gigabyte Grafikspeicher fest, und das Modell lief still zu einem Teil im Arbeitsspeicher. Eine Bezahl-KI aus der Cloud, die einem kostenlosen Modell die Werkbank aufräumt: Diesen Teil der Geschichte wollte ich nicht weglassen.
Von Version 1 nach Version 13
Der Weg war kein gerader. Version 2 stand zwar aufrecht, schwebte aber über dem Boden und lief rückwärts, sobald sie die Richtung wechselte. Danach kam die Kreisfahrt: Das schnelle Modell fand die Bodenlinie nicht und schrieb 45 Änderungen an dieselbe Stelle, zwölfmal zurück auf Anfang, bis ich abbrach. Erst der Wechsel auf das größere Modell brachte Ruhe hinein: Füße auf den Boden, eine Änderung. Richtungswechsel, eine Änderung. Ohren und die Höcker auf dem Rücken, Blumen vor die Gräser, ein weicherer Hügel – je eine Runde, jeweils geprüft, jeweils mit Bericht.
| Modell | Tempo | Verhalten |
|---|---|---|
| Qwen 3.6, 35 Mrd. Parameter, 3 Mrd. aktiv | 60 Tokens/s | schnell, aber schreibt alles neu und dreht sich im Kreis |
| Qwen 3.8, 27 Mrd. Parameter, 4 Bit | 5 Tokens/s | eine gezielte Änderung je Problem, zu langsam für die Praxis |
| Qwen 3.8, 27 Mrd. Parameter, 3 Bit | 25 Tokens/s | dasselbe Verhalten in brauchbarem Tempo |
Dann wurde es Kür. Ein Tag-Nacht-Wechsel mit aufgehender Sonne, Mond und Sternen: eine Runde, acht Änderungen, geprüft. Nachts soll die Katze langsamer gehen und sich ausruhen: die nächste Runde. Dass sie dabei aus vollem Lauf stehen blieb, kostete zwei weitere: erst eine einfache Rampe, dann, weil mir das noch zu abrupt war, ein Anlauf- und Bremsprofil in S-Kurven. Zwischendurch lief mehrmals das Kontextfenster voll, das Arbeitsgedächtnis des Modells; OpenCode fasste den Stand zusammen und ließ es weitermachen. Auf dieser Seite ist das ein Heimspiel.
Version 13, unverändert: Tag und Nacht in zwei Minuten; nachts geht die Katze langsamer, legt Pausen ein und bremst dafür ab.
Eine Schönheit ist sie noch nicht. Aber sie läuft auf ihren Füßen, dreht um, wenn sie den Rand erreicht, und jede Fassung dazwischen liegt als eigene Datei im Ordner.
Geliehene Augen
Bei den Screenshots lag die Cloud-KI zuerst falsch: Sie meinte, das lokale Modell habe nie eines zu sehen bekommen. Die Protokolle sagen etwas anderes. Das schnelle Modell hatte sie von Anfang an bekommen, und es half ihm nichts. Das größere Modell bekam sie zunächst gar nicht: Die Werkzeugkette hielt es für ein reines Textmodell und legte jedem Bild eine Fehlermeldung bei, „unterstützt keinen Bild-Input“. Erst als Claude dem Modell in der Konfiguration bescheinigte, dass es Bilder annimmt, kamen sie an. Seitdem ist die Schleife aus dem Juli auch lokal geschlossen: Ich mache einen Screenshot, das Modell sieht sein Werk und korrigiert. Der weichere Hügel war die erste Runde mit Bild.
Was heute auf einem Notebook geht
Vor zwei Monaten hatte die Katze drei Regler gegen sich: Modellklasse, Denktiefe, Zahl der Anläufe. Auf dem Notebook fällt der dritte Regler weg: Anläufe kosten nur noch Zeit. Der erste ist gedeckelt: Größer als der Grafikspeicher wird das Modell nicht, egal, was ich zahle. Und der zweite zeigt hier ein neues Gesicht: Denktiefe hilft nur, wenn das Modell dabei nicht die Übersicht verliert.
Denn die hässliche Katzen-KI war am Ende nicht das Modell. Es war die fehlende Werkstatt. Ein Modell, das nie zurückliest, was es geschrieben hat, nie prüft und funktionierende Stände überschreibt, produziert hässliche Katzen, egal, wie klug es ist. Mit Hausregeln und Prüfskript hörte dasselbe Modell auf, funktionierende Stände zu zerstören, und lieferte seine erste saubere Runde. Für den Rest brauchte es das größere Modell: eins, das pro Runde die richtige Sache ändert. Was gefehlt hat, war zur Hälfte Intelligenz. Die andere Hälfte war Kontext.
Kontext hat auf dem Notebook noch eine zweite, engere Bedeutung: das Kontextfenster, das Arbeitsgedächtnis des Modells. Das Modell könnte 256.000 Tokens fassen, aber jeder Token im Fenster belegt Grafikspeicher, und der ist knapp. Ich hatte es zunächst auf 32.000 begrenzt, inzwischen sind es 48.000, immer noch ein Bruchteil dessen, was die großen Cloud-Modelle mitführen. Für die Katze reicht das: eine Datei, ein Gespräch. Bei komplexer Arbeit, vielen Dateien, langen Sitzungen, läuft es schnell voll. OpenCode fasst dann zusammen und macht weiter, so wie beim Tag-Nacht-Wechsel. Aber was in der Zusammenfassung fehlt, ist für das Modell nie passiert.
Was fehlt noch? Den Screenshot mache ich, nicht das Modell; die Schleife schließt sich von Hand, nicht von selbst. Und was Claude in dieser Geschichte tat, Protokolle lesen, Ursachen finden, Regeln formulieren, habe ich keinem der lokalen Modelle abverlangt. Ob sie es gekonnt hätten, weiß ich nicht. Vermutlich mit mehr Anleitung und einem Kontextfenster, in das all die Protokolle passen.
Aber ein Modell, das Regeln befolgt, eine Datei liest, bevor es sie ändert, sich selbst prüft und pro Runde eine Sache besser macht: Das läuft heute auf einem Notebook, ohne Abo und ohne Taxameter.
Und es muss kein Entweder-oder bleiben. Über das Model Context Protocol, den USB-Anschluss für KI-Werkzeuge, lässt sich das lokale Modell der Cloud-KI als Werkzeug anschließen: Die Cloud-KI plant und prüft, das lokale Modell erledigt die Fleißarbeit, ohne Taxameter, und die Masse der Daten bleibt auf dem Notebook. Der Werkstattmeister bekäme einen Gesellen. Wie das Protokoll funktioniert, steht in MCP erklärt. Das ist der nächste Versuch.
/compact – das Wichtigste, wenn der Kontext knapp ist:
Ein offenes Modell auf einem Notebook mit 16 GB Grafikspeicher zeichnet die Katze aus dem Juli noch einmal, ohne Cloud und ohne Taxameter. Das schnelle kleine Modell schrieb alles neu und drehte sich im Kreis; mit Hausregeln, Prüfskript und einem größeren Modell wurde daraus eine Änderung je Runde, bis zum Tag-Nacht-Wechsel. Eingerichtet und beobachtet hat das eine Cloud-KI. Die Screenshots kommen inzwischen an; nur machen muss sie noch ich. Nächster Versuch: Arbeitsteilung per MCP, die Cloud-KI plant, das lokale Modell arbeitet.