Was ist ein Agent-Harness?

Ein Agent-Harness ist die Schicht um ein Sprachmodell, die aus einzelnen Modellaufrufen einen Agenten macht: Es führt die Schleife aus, führt die Tools aus, die das Modell anfordert, verwaltet das Kontextfenster und entscheidet, was das Modell tun darf.

Wo die Grenzen liegen

Am leichtesten lässt sich der Begriff durch Ausschluss festlegen. Ein laufender Coding-Agent hat vier Ebenen, und nur zwei davon sind das Harness. Darunter liegen ein Modell, das Sie nicht trainiert haben, und eine HTTP-API, die Sie nicht kontrollieren; darüber liegt das, was die Ausgabe auf einen Bildschirm bringt. Das Harness ist alles dazwischen, also alles, was entschieden werden muss.

SchichtZuständigWas sie entscheidet
Modellgewichte und InferenzDer AnbieterAnthropic, OpenAI, Google oder eine Laufzeit auf Ihrem eigenen Rechner.
Wire-FormatDer AnbieterDie eigene HTTP-Form jedes Anbieters für Nachrichten, Tools und Streaming.
Agent-SchleifeDas HarnessAufrufen, Antwort lesen, ausführen, was angefordert wurde, erneut aufrufen, aufhören, wenn es fertig ist.
Tool-AusführungDas HarnessArgumente validieren, das Tool ausführen und entscheiden, was parallel läuft.
Externe Tools (MCP)Das HarnessServer finden, ihren Tools Namensräume geben, JSON-RPC mit ihnen sprechen.
KontextDas HarnessWas im Fenster bleibt, was verdichtet wird, was aus früheren Schritten abgerufen wird.
BerechtigungenDas HarnessWas der Agent ohne Rückfrage tun darf und wofür er vorher fragen muss.
DarstellungDas FrontendEin Terminal, ein Browser, ein Desktop-Fenster oder gar keine Anzeige.

Liest man die Tabelle von oben nach unten, wird klar, warum es den Begriff gibt: Die beiden oberen Zeilen ändern sich alle paar Monate, die untere ist Geschmackssache, und in den fünf mittleren steckt jede schwierige Entscheidung eines Agenten. Diese Mitte zu benennen, ist die Aufgabe des Wortes.

Warum Modellunabhängigkeit der schwierige Teil ist

Fast jedes Harness wird gegen einen Anbieter geschrieben und erst danach an andere angepasst. Genau diese Reihenfolge ist das Problem: Die Annahmen des ersten Anbieters landen im Gesprächsspeicher, im Tool-Schema, in der Art, wie eine gestreamte Antwort geparst wird – an Stellen, an die später niemand denkt. Ein Wechsel bedeutet dann eine Migration, und eine Migration mitten in einer Sitzung bedeutet, dass Sie nicht wechseln.

Die Alternative: den Verlauf in einem Format speichern, das keinem Anbieter gehört, und ihn erst beim Absenden einer Anfrage in das Wire-Format des Anbieters übertragen. Beim Modellwechsel wird nichts konvertiert, weil nie etwas in der Form des alten Modells vorlag. Das ist die eine Designentscheidung, um die OHarness herum gebaut ist, und die Architekturseite beschreibt, wie die Schichtung erzwungen und nicht bloß beabsichtigt wird.

Harness, Framework, SDK

  • Ein SDK bringt eine Anfrage zu einem Modell und eine Antwort zurück. Ein Aufruf, ein Anbieter, keine Erinnerung an den letzten.
  • Ein Framework liefert Bausteine, aus denen Sie einen Agenten zusammensetzen. Schleife, Wiederholungsversuche und Verdichtungsstrategie entscheiden weiterhin Sie – und pflegen sie danach selbst.
  • Ein Harness ist das fertig zusammengesetzte Ganze. Schleife, Tool-Ausführung, Kontextverwaltung und Berechtigungen sind bereits entschieden; Sie liefern Tools, ein Modell und eine Richtlinie.

Der praktische Test ist der Tag, an dem Sie ein anderes Modell wollen. Mit einem SDK schreiben Sie die Aufrufstelle neu. Mit einem Framework finden Sie heraus, wie viele Ihrer eigenen Bausteine den alten Anbieter vorausgesetzt haben. Mit einem dafür gebauten Harness ändern Sie eine Einstellung.

Häufige Fragen

Ist ein Agent-Harness dasselbe wie ein Agent-Framework?

Die beiden überschneiden sich, und der nützliche Unterschied liegt darin, was Sie am Ende in der Hand halten. Ein Framework verlangt, dass Sie einen Agenten aus seinen Bausteinen bauen – Sie schreiben die Schleife, den Graphen, die Wiederholungsversuche. Ein Harness ist die Schleife, bereits geschrieben: Sie geben ihm Tools, ein Modell und eine Reihe von Berechtigungen, und es läuft. Mit den meisten Frameworks lässt sich ein Harness bauen; ein Harness ist das, was Sie sonst selbst gebaut hätten.

Brauche ich ein Harness, wenn ein Anbieter bereits ein SDK liefert?

Ein Anbieter-SDK bringt Sie bis zu einem Modellaufruf und hört dort auf. Es hat keine Meinung dazu, wann erneut aufgerufen wird, was mit einem Tool-Ergebnis geschieht, was wegfällt, wenn das Kontextfenster voll ist, oder ob ein Shell-Befehl ohne Rückfrage laufen darf. Diese Entscheidungen sind das Harness, und wenn Sie keines übernehmen, schreiben Sie eines – meist unbeabsichtigt, verteilt über eine Codebasis, gegen genau einen Anbieter.

Kann ein Harness mit mehr als einem Modellanbieter sprechen?

Ja, aber nur, wenn es von Anfang an so gebaut wurde. Das Schwierige ist nicht HTTP, sondern dass Gesprächsverlauf, Tool-Definitionen und gestreamte Ausgabe jeweils eine anbieterspezifische Form haben. Ein Harness, das den Verlauf in der Form eines Anbieters speichert, muss ihn für einen Wechsel migrieren. Den Verlauf in einer neutralen Form zu speichern und erst im Moment der Anfrage in das Wire-Format eines Anbieters zu übertragen, macht den Wechsel kostenlos.

Gibt es ein Open-Source-Agent-Harness?

Mehrere veröffentlichen ihren Quellcode, darunter OpenCode, Cline und Gemini CLI. OHarness ist kostenlos nutzbar und seine npm-Pakete stehen unter der MIT-Lizenz, das Quellcode-Repository ist jedoch vorerst privat. Es spricht nativ mit Anthropic, OpenAI und Google Gemini, mit jedem OpenAI-kompatiblen Endpunkt und mit lokalen Laufzeiten wie Ollama, LM Studio und vLLM – und es läuft im Terminal, im Browser, als Desktop-App und headless, alles auf derselben Engine.

Die Implementierung ausprobieren

OHarness ist ein modellunabhängiges Agent-Harness und kostenlos nutzbar: zwei Laufzeitabhängigkeiten, jeder Anbieter über schlichtes fetch und SSE angebunden und ein eigener MCP-Client. Die Dokumentation entsteht direkt neben dem Code, den sie beschreibt, und auf der Download-Seite finden Sie die Desktop-Builds und die Kommandozeile.