İçeriğe geç / Skip to content / Zum Inhalt

Was ist ein Harness? Der Unterschied zwischen Modell und Coding-Tool (am Beispiel DeepSeek)

Ahmet Balaman
Vibe CodingHarnessDeepSeekAI AgentTool CallingAgent LoopKI-CodingClaudeCursorLLM

Ein Schüler hat mich letzten Monat gefragt: „Ich habe DeepSeek im Browser ausprobiert, es wusste alles. Dann habe ich es in meinen Editor eingebunden und dasselbe Modell hat sich angestellt wie ein Anfänger. Ist das Modell schlecht, oder mache ich etwas falsch?"

Weder noch. Der Unterschied kommt vom Harness. Wenn wir über Vibe Coding reden, vergleichen wir ständig Modelle – „ist Claude besser, GPT oder DeepSeek" – aber ein erheblicher Teil der Ausgabequalität liegt gar nicht im Modell, sondern in der Schicht, die darum herum gewickelt ist. In diesem Artikel geht es darum, was ein Harness ist, was er tatsächlich tut, und warum sich dasselbe Modell in zwei Werkzeugen wie zwei verschiedene Entwickler verhält.

Was ist ein Modell? Was ist ein Harness?

Ein Modell ist erstaunlich simpel: Du gibst Text hinein, du bekommst Text heraus. Das war's. DeepSeek, Claude, GPT – alle passen in diese Definition. Das Modell hat kein Gedächtnis, sieht deine Dateien nicht, kann kein Terminal ausführen, erinnert sich nicht an das vorherige Gespräch. Stell es dir als eine einzelne Funktion vor:

antwort = modell(text)

Ein Harness ist das Programm, das um diese Funktion herum geschrieben ist. Claude Code, Cursor, Codex CLI, Cline, Continue, opencode – alles Harnesses. Der Code, der das Modell aufruft, entscheidet, was hineingeht, die Anweisungen aus der Antwort ausführt und das Ergebnis wieder zurückspielt.

Der Vergleich, den ich im Unterricht benutze: Das Modell ist ein exzellenter Entwickler, der in einem abgeschlossenen Raum ohne Fenster sitzt. Keine Augen, keine Hände, kein Gedächtnis. Du schiebst ein Blatt Papier hinein, er schreibt die Antwort darauf, er schiebt es zurück. Der Harness ist die Person an der Tür: Sie entscheidet, welches Blatt hineingeht, was darauf steht, und welche Datei sie aufgrund der Antwort öffnet und zurückträgt.

Gib einem exzellenten Entwickler ein leeres Blatt, und du bekommst keine gute Antwort. Das liegt nicht am Entwickler.

Die fünf Aufgaben eines Harness

Wenn du ein Coding-Tool öffnest, passieren im Hintergrund fünf Dinge. Keines davon ist Aufgabe des Modells.

1. System-Prompt und Regeln

Der Harness setzt seine eigenen Anweisungen vor deinen Satz: „Du bist ein Coding-Assistent, du kannst diese Werkzeuge nutzen, du musst eine Datei lesen, bevor du sie schreibst, halte dich an den Codestil des Nutzers." Dateien im Projektwurzelverzeichnis – CLAUDE.md, .cursorrules, AGENTS.md – landen ebenfalls hier.

Diese Schicht erklärt, warum dasselbe Modell dir in einem Werkzeug den einen Kommentarstil liefert und im anderen einen anderen.

2. Tool-Definitionen

Das Modell kann keine Datei von sich aus lesen. Der Harness übergibt ihm eine Liste: read_file, write_file, run_command, search. Das Modell antwortet dann: „Ich möchte jetzt read_file("api/session.php") aufrufen." Das ist eine Anfrage, keine Aktion.

Den Aufruf macht der Harness. Er liest die Datei, nimmt den Inhalt, hängt ihn an die nächste Nachricht und schickt ihn ans Modell zurück.

3. Der Agent-Loop

Das ist das Herzstück. Ein Harness macht keine einzelne Frage-Antwort-Runde, sondern dreht eine Schleife:

  1. Schicke die Anfrage des Nutzers ans Modell.
  2. Will das Modell ein Tool aufrufen, rufe es auf.
  3. Hänge das Ergebnis des Tools an die Konversation an.
  4. Schicke sie wieder ans Modell.
  5. Gehe zu 2, bis das Modell „fertig" sagt oder ein Limit erreicht ist.

Genau diese Schleife ist der Unterschied zwischen DeepSeek im Chatfenster und DeepSeek in einem Agenten. Der Chat gibt dir eine Runde; ein Agent nimmt sich vielleicht dreißig.

4. Kontextverwaltung

Das Modell liest in jeder Runde die gesamte Historie neu, und jedes Modell hat ein Kontextlimit. Eine Sitzung mit dreißig Runden sprengt dieses Limit locker. Hier entscheidet der Harness: Welche Datei geht vollständig hinein, welche wird zusammengefasst, welcher alte Schritt fliegt raus, wann wird die Konversation komprimiert.

Hier trennen sich gute und schlechte Harnesses am deutlichsten. Dasselbe Modell – aber einer gibt ihm die drei relevanten Dateien, der andere dreißig irrelevante. Der zweite ist teurer und schlechter zugleich.

5. Freigabe und Sicherheitsgrenze

Wenn das Modell sagt „führe diesen Befehl aus", fragt der Harness dich vorher, oder macht er es einfach? Aus welchem Verzeichnis darf er nicht heraus? Diese Entscheidungen gehören dem Harness, nicht dem Modell.

Anatomie einer Runde: ein DeepSeek-Beispiel

Machen wir es konkret. Du hast DeepSeek in ein Agenten-Tool eingebunden und getippt:

„Korrigiere in api/session.php die Dauerberechnung so, dass sie der serverseitigen Differenz vertraut statt dem Wert vom Client."

Grob, was im Hintergrund passiert:

Runde 1 – Der Harness schickt ans Modell: System-Prompt + Tool-Liste + Projektregeln + deinen Satz. Das Modell antwortet: „Ich muss zuerst die Datei lesen: read_file("api/session.php")."

Runde 2 – Der Harness liest die Datei, hängt 200 Zeilen an die Konversation, schickt sie zurück. Diesmal sagt das Modell: „Zeile 41 nutzt $_POST['duration'] direkt. Hier ist die Änderung, die ich vorschlage: write_file(...)."

Runde 3 – Je nach Einstellung fragt der Harness dich um Freigabe oder schreibt direkt. Er meldet das Ergebnis ans Modell. Das Modell: „Lass uns die Tests laufen lassen: run_command("php tests/session_test.php")."

Runde 4 – Die Testausgabe geht ans Modell zurück. Ist sie rot, korrigiert das Modell und die Schleife läuft weiter. Ist sie grün, sagt das Modell „fertig" und die Schleife schließt.

In diesen vier Runden hat das Modell nur eines getan: Text erzeugt. Die Datei lesen, schreiben, den Test ausführen, die Ausgabe zurücktragen – alles Harness. Was sich wie ein Agent anfühlt, ist nicht das Modell, sondern die Schleife.

Warum sich dasselbe Modell in verschiedenen Werkzeugen anders verhält

Jetzt ist die Antwort klar. Was sich ändert, wenn du dasselbe Modell in zwei Werkzeugen laufen lässt:

  • Der System-Prompt. Einer sagt „lies, bevor du schreibst", der andere nicht.
  • Das Tool-Set. Einer hat run_command, der andere nicht. Ein Agent, der keine Tests ausführen kann, kann nicht überprüfen, ob der Code läuft.
  • Die Kontextauswahl. Einer indiziert das Projekt und findet die drei relevanten Dateien; der andere schickt nur den offenen Tab.
  • Das Rundenlimit. Einer erlaubt dreißig Runden, der andere bricht nach fünf ab.
  • Das Fehler-Feedback. Einer gibt den Compilerfehler ans Modell zurück; der andere zeigt ihn dir und hört auf.

Das war die Ursache für das „im Browser schlau, im Editor dumm" meines Schülers: Die Erweiterung, die er nutzte, schickte nur die gerade geöffnete Datei. Das Modell musste über eine Codebasis raten, die es nicht sehen konnte.

Welchen Platz DeepSeek in diesem Bild hat

Ich habe DeepSeek als Beispiel gewählt, weil es die Harness-Frage sichtbarer macht als andere: Weil es ein Modell mit offenen Gewichten ist, liegt die Wahl des Harness vollständig bei dir.

Ein geschlossenes Modell kommt meist mit dem Werkzeug seines Herstellers – Modell und Harness stammen aus derselben Quelle und sind aufeinander abgestimmt. Bei DeepSeek gibt es kein solches Bündel. Die API folgt der OpenAI-Form, also lässt sie sich in fast jedes Agenten-Tool einbinden, das einen „OpenAI-kompatiblen Endpoint" akzeptiert: Basis-URL und Key ändern, fertig. Und weil die Gewichte offen sind, kannst du es auch auf deinem eigenen Server betreiben.

Bei DeepSeek gibt es also ein Modell und unendlich viele Harnesses. Das ist zugleich die Flexibilität und die Falle:

  • Chat-Modell oder Reasoning-Modell? DeepSeek bietet zwei Arten: ein normales Chat-Modell und ein Reasoning-Modell, das Schritt für Schritt denkt. Reasoning-Modelle planen in der Regel besser, sind aber langsamer und teurer, und in manchen Versionen ist ihre Tool-Calling-Unterstützung weniger ausgereift als beim Chat-Modell. Bevor du eines in einem Agenten einsetzt: teste Tool-Calling zuerst mit einer trivialen Aufgabe.
  • Die Tool-Calling-Qualität entscheidet. In einem Agenten ist die eine kritische Fähigkeit eines Modells, Tools im richtigen Format und in der richtigen Reihenfolge aufzurufen. Ein Modell mit brillanten Chat-Antworten ist als Agent nutzlos, wenn es das Tool-Call-Format nicht trifft.
  • Günstig zu sein verzeiht keinen verschwenderischen Harness. DeepSeeks Preisvorteil ist real, aber ein schlechter Harness gibt ihn über eine Schleife mit dreißig Runden wieder ab. Günstiges Modell plus verschwenderischer Harness kann teurer werden als teures Modell plus sparsamer Harness.
  • Die Versionen bewegen sich schnell. Modellnamen und Fähigkeiten werden alle paar Monate aktualisiert; prüfe in der offiziellen Dokumentation, was dein gewähltes Modell unterstützt. Der Mechanismus in diesem Artikel ist stabil – die Modellliste nicht.

Solltest du deinen eigenen Harness schreiben?

Die nackteste Version eines Agent-Loops sind wirklich etwa hundert Zeilen: eine while-Schleife, eine Tool-Liste, ein JSON-Parser. Zum Lernen: schreib ihn mindestens einmal – kein Artikel über Harnesses lehrt so viel wie die eigene Schleife.

Aber bau das Werkzeug, das du täglich nutzt, nicht von Grund auf. Der Wert bestehender Werkzeuge liegt nicht in der Schleife, sondern in allem drumherum: Kontextkompaktierung, Projektindizierung, Diff-Anzeige, Undo, Berechtigungssystem, Absturzwiederherstellung. Das sind Monate an Arbeit.

Fünf Fragen bei der Wahl eines Harness

Wenn du ein neues Coding-Tool bewertest, schau nicht auf den Modellnamen. Schau auf das hier:

  1. Welche Werkzeuge gibt es dem Modell? Dateien lesen reicht nicht; Befehle und Tests ausführen zählt genauso.
  2. Wie wählt es den Kontext? Nur die offene Datei, ein Projektindex, oder kann ich Dateien von Hand anhängen?
  3. Was passiert in einer langen Sitzung? Wenn der Kontext voll ist – vergisst es still, fasst es zusammen, oder sagt es mir Bescheid?
  4. Kann ich das Modell tauschen? Kann ich meinen eigenen API-Key und mein eigenes Modell einbinden? (Unverzichtbar, wenn du etwas wie DeepSeek testen willst.)
  5. Wofür fragt es um Erlaubnis? Fragt es vor dem Schreiben von Dateien und dem Ausführen von Befehlen, oder entscheidet es allein?

Die Antworten auf diese fünf machen mehr aus als die Frage, welches Modell darunter steckt.

Ist das günstige Modell wirklich günstiger?

Du wirst oft hören: „fast die gleiche Leistung zu einem Bruchteil des Preises“. Nimm das nicht als gegeben hin — miss es an deiner eigenen Arbeit. Das geht schnell:

  1. Wähle fünf repräsentative Aufgaben — echte Arbeit, keine konstruierten Beispiele.
  2. Lass dieselben fünf Aufgaben in beiden Setups laufen.
  3. Notiere drei Dinge: verbrauchte Tokens, ob das Ergebnis brauchbar war, und wie lange du mit dem Nachbessern verbracht hast.

Der dritte Punkt entscheidet. Ein günstiges Modell, das doppelt so viele Tokens verbraucht und dir eine halbe Stunde Korrektur beschert, ist nicht günstig. Meine Beobachtung: bei routinierter, klar beschriebener Arbeit reicht das günstige Modell wirklich aus; bei vager Arbeit, die Urteilsvermögen verlangt, wird der Unterschied zu einem Zeitverlust weit über den Tokenkosten.

Lege dich deshalb nicht auf ein Setup fest, sondern teile die Arbeit auf: das starke Modell dort, wo die schwierigen Entscheidungen fallen, das günstige dort, wo das Volumen liegt.

Deinen API-Schlüssel an einen fremden Harness geben

Ein quelloffener Harness läuft auf deinem eigenen Rechner und seine Telemetrie ist womöglich standardmäßig aus — trotzdem gibst du ihm deinen API-Schlüssel, deine Codebasis und manchmal Zugriff auf externe Dienste. Vier Dinge vor der Einrichtung:

  • Nimm einen separaten API-Schlüssel mit Ausgabenlimit, nicht den deines Hauptkontos.
  • Halte den Schlüssel in einer Umgebungsvariablen, niemals in einer Projektdatei.
  • Sieh dir beim ersten Lauf den Netzwerkverkehr an und überzeuge dich selbst davon, dass die Telemetrie wirklich aus ist.
  • Starte mit eingeschränkter automatischer Befehlsausführung und erweitere sie, wenn du das Werkzeug kennst.

Das ist keine Paranoia, sondern die übliche Sorgfalt bei jedem fremden Entwicklerwerkzeug.

Was das für Vibe Coding bedeutet

In meinen Vibe-Coding-Artikeln sage ich immer dasselbe: Die Entscheidungen gehören dir, die Umsetzung dem Modell. Der Harness ist das dritte Bein dieses Satzes – wie deine Entscheidungen tatsächlich beim Modell ankommen. Dein Entscheidungsdokument kann perfekt sein; schickt der Harness es nie mit, bedeutet es nichts.

Bevor du also in die Debatte „welches Modell ist besser" einsteigst, frag lieber: Was gebe ich meinem Modell, und was mache ich mit seiner Antwort? Sobald das klar ist, wird die Modellwahl einfach.

Welches Werkzeug bei welcher Aufgabe hervorsticht, steht in Vibe-Coding-Werkzeuge im Vergleich; zur Methode selbst gibt es 7 praktische Tipps.

Häufige Fragen

Was bedeutet Harness bei KI?

Ein Harness ist die Softwareschicht, die um ein KI-Modell herum geschrieben wird und es zu einem nutzbaren Werkzeug macht. Sie baut den System-Prompt, stellt dem Modell Werkzeuge bereit (Dateien lesen, Befehle ausführen), führt die vom Modell angeforderten Aufrufe aus und spielt die Ergebnisse zurück. Claude Code, Cursor und Cline sind Beispiele für Harnesses.

Was ist der Unterschied zwischen Modell und Harness?

Ein Modell ist nur eine Funktion, die Text entgegennimmt und Text zurückgibt; es hat kein Gedächtnis, keinen Dateizugriff und keine Handlungsfähigkeit. Ein Harness ist das Programm, das diese Funktion in einer Schleife ausführt, ihr Kontext liefert und die Tool-Aufrufe aus ihrer Antwort tatsächlich ausführt. Agentenverhalten kommt aus der Schleife, nicht aus dem Modell.

Kann ich DeepSeek in meinem eigenen Coding-Tool nutzen?

Ja. DeepSeeks API folgt der OpenAI-Form und funktioniert daher in den meisten Agenten-Tools, in denen du Basis-URL und Key selbst setzen kannst. Da die Gewichte offen sind, kannst du es auch selbst hosten. Prüfe vorher, ob das gewählte Modell Function Calling unterstützt.

Warum liefern zwei Werkzeuge mit demselben Modell unterschiedliche Ergebnisse?

Weil das Modell gleich ist, seine Eingabe aber nicht. System-Prompt, Tool-Set, mitgeschickte Dateien, Rundenlimit und Fehler-Feedback unterscheiden sich von Werkzeug zu Werkzeug. Ein Werkzeug, das dem Modell die drei relevanten Dateien gibt, bekommt eine ganz andere Qualität als eines, das nur den offenen Tab schickt.

Was ist ein Agent-Loop?

Es ist der Ablauf, in dem der Harness das Modell wiederholt statt einmal aufruft: Anfrage schicken, das gewünschte Tool ausführen, das Ergebnis anhängen, erneut schicken. Die Schleife läuft, bis das Modell „fertig" sagt. Genau deshalb fühlt sich ein Werkzeug an, als würde es „von allein arbeiten".

Muss ich meinen eigenen Harness schreiben?

Für die tägliche Arbeit nicht; der Wert bestehender Werkzeuge liegt in Kontextverwaltung und Berechtigungen, nicht in der Schleife. Zum Lernen empfehle ich aber, einmal eine einfache Schleife zu schreiben – etwa hundert Zeilen, und sie macht das Thema klarer als jede Menge Lesestoff.

Kommentare