Vortrag · ca. 20 Minuten

KI-Harness

Was zwischen Sprachmodell und fertigem Coding-Agenten passiert – und wie man selbst einen baut.

Michael Strübing
SmartLife – Online

Agent Modell Harness

Weiter mit → oder Leertaste · alle Tastenkürzel mit ?

Ausgangslage

Ein Sprachmodell allein kann nichts tun

Frage„Warum schlägt in meinem Projekt der Test test_rabatt fehl?“

Nur das Modell

„Ohne den Code kann ich nur raten: vielleicht ein Rundungsfehler, ein falscher Prozentwert oder ein veralteter Erwartungswert. Kannst du mir die Funktion zeigen?“

  • sieht keine Dateien
  • kann nichts ausprobieren
  • vergisst alles nach dem Gespräch

Modell + Harness

  1. pytest→ ein Test rot
  2. grep→ shop/preise.py, Zeile 42
  3. read→ Zeile 43 gelesen

„Zeile 43 teilt durch 10 statt durch 100. Soll ich das korrigieren?“

Gleiches Modell. Den Unterschied macht der Harness: Er gibt dem Modell Augen und Hände.

Grundlagen

Was ist ein Harness?

Sprach­modell LLM

Alles um das Modell herum

Der Harness baut den Kontext, führt Werkzeuge aus, setzt Grenzen und hält die Schleife am Laufen. Das Modell selbst „denkt“ nur.

Harness oder Workflow? Ein Skript, das claude -p und codex exec – also zwei fertige Agenten mit verschiedenen Modellen – dasselbe Code-Review machen lässt und die Befunde sammelt, ist ein Workflow. Einen eigenen Harness baut, wer die Schleife selbst steuert – auch auf fertigen Bausteinen.

Mit → kommen die sechs Bausteine nacheinander dazu – oder einen anklicken.

1 · System-Prompt

Legt Rolle, Arbeitsweise und Regeln fest – und erklärt dem Modell, wann es welches Werkzeug nutzen soll.

In der Praxis: Fertige Harnesses liefern hier viel erprobtes Know-how mit. Eigene Projektregeln kommen zusätzlich aus Dateien wie CLAUDE.md oder AGENTS.md.

2 · Werkzeuge

Das Modell kann nichts selbst ausführen. Es antwortet mit einem strukturierten Aufruf – Name plus JSON-Argumente. Der Harness führt ihn aus und gibt das Ergebnis zurück.

Typisch: Dateien lesen, gezielt ändern, suchen, Shell-Befehle, Webrecherche.

3 · Kontext

Das Kontextfenster ist begrenzt, und jede gelesene Datei kostet Platz. Der Harness entscheidet, was drinbleibt, fasst Älteres zusammen und lagert Teilaufgaben an Subagenten aus.

Stichworte: Compaction, Subagenten, gezieltes Lesen statt ganzer Dateien.

4 · Berechtigungen

Bevor ein Aufruf läuft, entscheidet der Harness: erlauben, nachfragen oder blockieren. Dazu kommt eine Sandbox, die zum Beispiel Netz und Dateisystem begrenzt.

Stichworte: Freigabe-Modi, Sandbox, Hooks mit eigenen Regeln.

5 · Gedächtnis

Neue Modellaufrufe kennen frühere Sitzungen nur durch den Kontext, den der Harness bereitstellt. Projektwissen kann deshalb in Dateien über Sitzungen hinweg erhalten bleiben.

Beispiele: CLAUDE.md, AGENTS.md, Memory-Notizen.

6 · Erweiterungen

Neue Fähigkeiten kommen von außen dazu, ohne den Harness selbst zu ändern.

Beispiele: MCP-Server (Datenbanken, Browser, Ticketsystem), Skills, Hooks, Plugins.

Agent = Modell + Harness

Zwei Agenten mit demselben Modell können sich völlig unterschiedlich verhalten – je nachdem, wie gut ihr Harness ist.

Herzstück

Die Agent-Schleife

Ablauf zwischen Nutzer, Harness, Modell und Werkzeugen Modell zustandslos Harness Schleife & Regeln Werkzeuge Dateien · Shell · Web Nutzer Mensch

Szenario: Ein Test schlägt fehl. Mit → läuft die Schleife Schritt für Schritt.

Schritt 0 / 13
0Tokens im Kontext
0Modellaufrufe
0Werkzeugaufrufe
0Tokens verarbeitet
Kontext, wie ihn das Modell siehtBeispielwerte, gerundet
  1. Der Kontext ist noch leer.

Kontext

Was das Modell wirklich sieht

Unser Textbeispiel

In unserem Beispiel stellt der Harness Textnachrichten, Werkzeug-Beschreibungen und Ergebnisse für jeden Modellaufruf zusammen. Zugriff auf Dateien bekommt das Modell über Werkzeuge.

Beispiel einer Coding-Sitzung nach einigen Minuten: rund 44.500 Tokens. Gerundete Beispielwerte.

System-Prompt

Rolle und Arbeitsweise – bei jedem Aufruf ganz vorn.

Du bist ein Coding-Agent im Terminal.
Lies Dateien, bevor du sie änderst.
Führe nach Änderungen die Tests aus.
Antworte knapp. …

sinngemäß, stark gekürzt

Werkzeug-Beschreibungen

Für jedes Werkzeug Name, Beschreibung und JSON-Schema – oft ein Dutzend und mehr.

{"name": "read_file",
 "description": "Liest eine Datei.",
 "input_schema": { … }}

Projektregeln & Memory

Projektregeln aus CLAUDE.md oder AGENTS.md lädt der Harness nach den Regeln des jeweiligen Werkzeugs.

# AGENTS.md
- Antworten auf Deutsch.
- Tests: npm test
- Keine Zugangsdaten in Logs.

Gesprächsverlauf

Der Verlauf enthält Nachrichten und Werkzeug-Aufrufe. Bei der hier gezeigten Messages API schickt der Harness den benötigten Verlauf erneut.

Werkzeug-Ergebnisse

Dateiinhalte, Testausgaben, Suchtreffer. In diesem Beispiel der größte Brocken – gezieltes Lesen von Ausschnitten spart Kontext.

Neue Nachricht

Seit dem letzten Aufruf kommt zum Beispiel eine Nutzerfrage oder ein neues Werkzeug-Ergebnis dazu.

Prompt-Caching

Fast alles ist gleich wie beim vorigen Aufruf. Bei einem Cache-Treffer kann der Anbieter diesen gleichen Anfang wiederverwenden – schneller und zu einem Bruchteil des Eingabepreises.

Ein stabiler Anfang begünstigt Cache-Treffer: Eine Änderung verhindert die Wiederverwendung ab dieser Stelle. Ein zuvor gespeicherter, unveränderter Anfang kann weiter nutzbar sein.

Werkzeuge

Beschreibung, Aufruf, Ergebnis

Harnessbeschreibt das Werkzeug
{
  "name": "read_file",
  "description": "Liest eine Datei.",
  "input_schema": {
    "type": "object",
    "properties": {
      "path": {"type": "string"}
    },
    "required": ["path"]
  }
}
Modellruft es auf
{
  "type": "tool_use",
  "id": "toolu_01A7…",
  "name": "read_file",
  "input": {
    "path": "shop/preise.py"
  }
}
Harnessliefert das Ergebnis
{
  "type": "tool_result",
  "tool_use_id": "toolu_01A7…",
  "content": "def berechne_rabatt(…"
}

Die ID verbindet Aufruf und Ergebnis. So kann das Modell auch mehrere Werkzeuge auf einmal anfordern.

Werkzeug-Design ist Prompt-Design: Name und Beschreibung helfen dem Modell beim passenden Einsatz. Gezieltes Ändern kann Fehler und Ausgabetokens gegenüber dem Neuschreiben einer ganzen Datei reduzieren.

Kontext-Management

Wenn der Kontext voll wird

Hauptagent13.500 / 100.000 Tokens

Der Harness startet mit System-Prompt, Werkzeugen und Regeln – schon 13.500 Tokens.

Beispiel: Kontextfenster mit 100.000 Tokens, Zusammenfassen ab 80 %. Echte Fenster sind heute oft deutlich größer – das Prinzip bleibt.

Sicherheit

Freigaben, Sandbox, Hooks

Freigabe-Modus · vereinfachtes Beispiel

Zusätzlich

Alles, was etwas verändert oder nach außen geht, braucht ein Ja.

ähnlich: Claude Code „Manual“ (Konfigurationswert: default)

Was mit einzelnen Aktionen passiert
Aktion des AgentenErgebnis
Datei lesenerlaubt
Datei im Projekt ändernRückfrage
npm testRückfrage
rm -rf build/Rückfrage
Befehl schreibt nach ~/.bashrcRückfrage
Internet (curl)Rückfrage
git pushRückfrage

Ökosystem

Erweitern statt neu bauen

  1. Kontext aufbauen
  2. Modell wählt Werkzeug
  3. Prüfen und ausführen
  4. Ergebnis anhängen

Skills

Anleitungen und Skripte für bestimmte Aufgaben. Im Kontext steht nur eine Kurzbeschreibung, der Rest wird bei Bedarf geladen.

dockt an: 1

MCP-Server

Offener Standard für neue Werkzeuge und Daten: Datenbank, Browser, Ticketsystem. Einmal gebaut, in vielen Harnesses nutzbar.

dockt an: 2 und 3

Hooks

Eigene Skripte vor und nach unterstützten Werkzeug-Aufrufen: blockieren, protokollieren, formatieren.

dockt an: 3

Subagenten

Ein Werkzeug startet eine eigene Schleife mit eigenem Kontext. Dieser kann frisch sein oder den bisherigen Verlauf übernehmen; zurück kommt das Ergebnis.

dockt an: 3 und 4

Plugins bündeln Skills, MCP-Server, Hooks und Befehle zu einem Paket, das sich mit einem Befehl installieren lässt.

Vergleich · Stand 13.10.2026

Claude Code und Codex

Merkmal Claude Code Codex Eigenbau
Anbieter Anthropic · proprietär OpenAI · Open Source (Apache 2.0) eigener Code
Modelle nur Claude – direkt oder über AWS, Google Cloud, Microsoft OpenAI-Modelle, dazu andere Anbieter und lokale Modelle frei wählbar
Projektregeln CLAUDE.md; AGENTS.md als Fallback (konfigurierbar) AGENTS.md selbst laden
Werkzeuge viele spezialisierte: Read, Edit, Bash, WebFetch, Agent … z. B. Shell, apply_patch, Plan; weitere je Umgebung was man selbst schreibt
Sicherheit Freigabe-Modi bis „Auto“ mit Prüf-Klassifikator; Sandbox optional Standard: Sandbox, Shell-Netz aus; Freigaben konfigurierbar selbst bauen
Erweiterungen MCP, Skills, Hooks, Plugins MCP, Skills, Hooks, Plugins selbst bauen
Subagenten ja, auch eigene ja, auch eigene selbst bauen
Automatisierung claude -p, Claude Agent SDK codex exec, Codex SDK ist ohnehin Code

Beide bieten ähnliche Bausteine. Unterschiede bleiben bei Modellwahl, Werkzeugen und der Ausgestaltung von Freigaben und Sandbox.

Quellen: offizielle Dokumentationen von Claude Code und Codex, geprüft am 13.10.2026.

Selbst bauen

Ein eigener Harness in 30 Zeilen

import subprocess, anthropic
client = anthropic.Anthropic()
 
tools = [{
    "name": "bash",
    "description": "Führt einen Shell-Befehl im Projektordner aus.",
    "input_schema": {"type": "object",
        "properties": {"command": {"type": "string"}},
        "required": ["command"]},
}]
 
def run_tool(args):
    if input(f"$ {args['command']}  ausführen? [j/n] ") != "j":
        return "Vom Nutzer abgelehnt."
    p = subprocess.run(args["command"], shell=True,
                       capture_output=True, text=True, timeout=120)
    return (p.stdout + p.stderr)[-8000:]
 
messages = [{"role": "user", "content": input("Aufgabe: ")}]
 
while True:
    response = client.messages.create(
        model="claude-opus-5-5", max_tokens=16000,
        system="Du bist ein sorgfältiger Coding-Agent.",
        tools=tools, messages=messages)
    messages.append({"role": "assistant", "content": response.content})
    if response.stop_reason != "tool_use":
        break
    messages.append({"role": "user", "content": [
        {"type": "tool_result", "tool_use_id": b.id,
         "content": run_tool(b.input)}
        for b in response.content if b.type == "tool_use"]})
 
print("".join(b.text for b in response.content if b.type == "text"))
  1. Das ist alles. Mit → gehen wir den Code in sechs Schritten durch.
  2. WerkzeugeWerkzeug beschreiben: Name, Beschreibung, JSON-Schema. Mehr weiß das Modell über die Shell nicht.
  3. BerechtigungenAusführen – mit Freigabe: Diese eine Ja/Nein-Frage ist das gesamte Sicherheitsmodell unseres Mini-Harness.
  4. KontextDer Kontext ist eine Liste. Die API ist zustandslos – wir schicken jedes Mal den ganzen Verlauf.
  5. ModellaufrufEin Aufruf: Modell, System-Prompt, Werkzeuge, Verlauf.
  6. SchleifeAntwort anhängen. Ohne Werkzeug-Wunsch endet die Schleife hier; andere Stopgründe brauchen eine gesonderte Behandlung.
  7. SchleifeSonst: ausführen und zurückgeben. Jedes Ergebnis kommt mit der passenden ID als neue Nachricht dazu – und von vorn.
  8. Das ist der Kern von Claude Code, Codex & Co. Was fehlt, ist Handwerk: Kontext-Management, Sandbox, gute Datei-Werkzeuge, Fehlerbehandlung, Streaming, Kostenkontrolle.

Praxis

Vom Spielzeug zum Werkzeug

Unser Mini-Harness0 von 9

Die Schleife ist ein Nachmittag – alles andere ist Produktarbeit. Für die meisten Teams heißt das: einen fertigen Harness nehmen und mit Regeln, Skills und MCP anpassen.

Zum Mitnehmen

Fazit

  1. Das Modell denkt, der Harness handelt. Ausgeführt wird nur, was der Harness zulässt.
  2. Die Schleife ist einfach. Die Qualität steckt in Kontext, Werkzeugen und Sicherheit.
  3. Erst erweitern, dann selbst bauen. Regeln, Skills und MCP holen viel aus fertigen Harnesses heraus – ein eigener lohnt sich für Spezialfälle.

Fragen?

Vielen Dank!

SmartLife – Online
smartlife-online.de

Übersicht

    Tastenkürzel

    → Leertaste Bild ↓
    nächster Schritt bzw. nächste Folie
    ← Bild ↑
    zurück
    Pos1 Ende
    erste bzw. letzte Folie
    O
    Übersicht
    F
    Vollbild
    T
    Hell/Dunkel
    B .
    Bild schwarz