Diesen Bericht gibt es auch auf Englisch – dort zusätzlich mit den Zahlen zu jedem einzelnen Pull Request und einem Anhang zur Messmethode.
Wie wir hierher gekommen sind
Im März haben wir zwei KI-Modelle auf eigenen Servern getestet, jeweils einen Tag lang. Am Ende stand die Frage offen: Wie gut sind selbst gehostete Modelle mittlerweile wirklich?
Die Antwort hat uns überzeugt genug, um es nicht bei einem Test zu belassen. Seitdem hosten wir Modelle dauerhaft selbst. Sie sind heute im täglichen Einsatz, und wir haben inzwischen erhebliche Betriebserfahrung damit.
Dabei hat sich eine Trennung herausgebildet, die für diesen Artikel wichtig ist:
- Beim Entwickeln – wenn also ein Agent Code schreibt – arbeiten wir weiterhin sehr viel mit Claude Code.
- In den ausgelieferten Anwendungen, die selbst KI benutzen, läuft dagegen praktisch nur DeepSeek.
Der Grund für das Zweite ist nicht Sparsamkeit, sondern Zuschnitt. Diese Anwendungen führen keine offenen Chats mit vielen frei fliegenden, komplexen Enden. Sie bewegen sich in festen, teils fast deterministischen Regeln – und dafür ist DeepSeek vollkommen ausreichend.
Das ist die eigentliche Faustregel, und sie zieht sich durch alles Folgende: Je enger der Rahmen, desto weniger Modell braucht es.
Was hier gemessen wird, ist also kein Laborversuch mit einer neuen Technologie, sondern ein Stichtag mitten im laufenden Betrieb. Die offene Frage war nicht mehr „funktioniert das überhaupt”, sondern: Wo genau liegt der Unterschied zum kommerziellen Spitzenmodell – und was heißt das für die Frage, wer im Unternehmen einen Agenten bekommt?
Was wir gemacht haben
Wir haben zwei KI-Agenten einen Arbeitstag lang gleichzeitig an derselben Codebasis arbeiten lassen: community.programmieren.de, einer öffentlichen Wettbewerbsplattform, auf der Schulen ihre Programmierprojekte zeigen und die Öffentlichkeit darüber abstimmt. Echte Software, die ohne VPN im offenen Netz steht und am Tag darauf einer Schulleiterkonferenz vorgestellt wurde.
- Spur A – „Regeln, Rechte, Daten”: Datenschicht, die einzige Datenbankmigration, die Regeln, an denen Geld hängt. Bearbeitet von Claude Code mit Opus 5.
- Spur B – „Was Besucher sehen”: Oberfläche, Barrierefreiheit, öffentliche Leseseite. Bearbeitet von einem selbst gehosteten DeepSeek V4 Flash, über vLLM auf Seibert-eigenen GPUs, gesteuert über die freien Werkzeuge Reasonix und First Mate – beides Open-Source-Projekte Dritter, keine Seibert-Entwicklungen.
Beide Aufträge waren bis auf Vorgangsliste und Dateigrenzen wortgleich: gleiches Review-Gatter, gleiche Subagenten-Regel, gleiche Merge-Bedingung. Getrennte Dateien waren der einzige Kollisionsschutz – jede Spur bekam eine Liste „das gehört dir” und „das fasst du nicht an”. Beide nutzten dieselbe CI und denselben automatischen Review-Agenten.
Die Zahlen
Die Messweise gehört dazu, sonst ist die Tabelle wertlos: Zeilen als Summe jedes Merge-Commits gegen seinen main-Elternteil (git diff --numstat <merge>^1 <merge>), Zeiten aus den API-Zeitstempeln, Urteile aus den PR-Kommentaren. Alles nachrechenbar.
Und eine Offenlegung, die dazugehört: Die Auswertung selbst hat Opus 5 erstellt – in einer eigenen Sitzung, die weder an Spur A noch an Spur B beteiligt war. Ein Modell bewertet hier also unter anderem seine eigene Spur. Wir haben das nicht kaschiert, sondern die Selbstauskunft unabhängig gegen Merge-Commits und Zeitstempel nachgerechnet; sie stimmt auf die Zeile. Trotzdem gilt: Wer diesen Zahlen misstraut, hat einen legitimen Grund dafür, und alle Rohdaten liegen im Repository.
Und die wichtigste Einschränkung vorweg: Der Zuschnitt war ungleich. Spur A hatte die Datenschicht, die Migration und die Geldregeln – das wiegt pro Zeile schwerer als Oberfläche und Leseseiten. „Anwendungscode je Stunde” ist deshalb keine Rangliste, sondern nur zusammen mit dem Zuschnitt lesbar. Wer aus dieser Tabelle „Modell A schlägt Modell B” macht, hat sie falsch gelesen.
Das Ergebnis, das uns wirklich beschäftigt hat, steht ohnehin nicht in der Tabelle. Es sind fünf Lehren darüber, woran man Fertigsein misst – und dass die üblichen Messgrößen genau das nicht messen.
Inhalt wird geladen...






