EconLab AI

Technische Grundlagen: Agentic Coding

Umfassende Referenz von EconLab AI.
Von den Grundlagen der Softwarearchitektur bis zu Multi-Agent-Systemen in Produktion.

Schicht 1: Computer-Grundlagen

Diese Begriffe sind die Basis fuer alles Weitere. Ohne sie bleiben die hoeheren Konzepte unklar.

Prozess (Process)

Was es ist: Ein laufendes Programm auf deinem Computer. Wenn du Chrome oeffnest, startet ein Prozess. Wenn du ein Terminal oeffnest, startet ein anderer.

Warum es wichtig ist: Ein Coding Agent ist am Ende ein Prozess. Er laeuft als Programm auf einem Computer -- nicht mehr, nicht weniger.

Technisch: Jeder Prozess hat:

  • Einen eigenen Speicherbereich (andere Prozesse koennen nicht reinschauen)
  • Eine Prozess-ID (PID) zur Identifikation
  • Einen Parent-Prozess (wer hat ihn gestartet?)
  • Zugriff auf Ressourcen (Dateien, Netzwerk, CPU)
Interaktiv: Prozess-Baum (klicke auf einen Prozess)
Betriebssystem
Verwaltet alle Prozesse, Speicher und Hardware-Zugriff. Weist jedem Prozess eine PID zu.
+-- Prozess 1: Chrome (PID 1234)
PID: 1234 | Parent: OS | stdin: Tastatur/Maus | stdout: Bildschirm | stderr: Console-Log | Speicher: ~500MB
+-- Prozess 2: Terminal (PID 1235)
PID: 1235 | Parent: OS | stdin: Tastatur | stdout: Terminal-Fenster | stderr: Terminal-Fenster (rot) | Speicher: ~30MB
+-- Prozess 3: Agent-Loop (PID 1236)
PID: 1236 | Parent: Terminal (1235) | stdin: User-Input / API | stdout: Antworten an User | stderr: Fehler-Logs | Speicher: ~200MB
+-- Kind-Prozess: bash (PID 1237)
PID: 1237 | Parent: Agent-Loop (1236) | Der Agent startet bash als Kind-Prozess, um Befehle auszufuehren. stdin/stdout werden vom Agent gelesen/geschrieben.

stdin, stdout, stderr (Standard-Streams)

Was es ist: Jeder Prozess hat drei "Kanaele" fuer Kommunikation:

StreamRichtungZweckBeispiel
stdin (Standard Input)Rein → ProzessEingabe empfangenTastatur-Eingabe, Daten von anderem Programm
stdout (Standard Output)Prozess → RausNormale AusgabeErgebnis eines Befehls
stderr (Standard Error)Prozess → RausFehlermeldungen"Datei nicht gefunden"

Warum es wichtig ist: Wenn ein Agent ein CLI-Tool ausfuehrt, liest er das Ergebnis aus stdout. Wenn etwas schiefgeht, kommt die Fehlermeldung ueber stderr. Die gesamte Agent-Tool-Kommunikation laeuft ueber diese Streams.

Animation: Datenfluss zwischen Agent und Tool
Agent-Loop
stdin: "erstelle angebot"
stdout: "PDF erstellt"
stderr: "" (kein Fehler)
CLI-Tool
(z.B. pdf-cli)

Pipe (|) und Multiplexing/Demultiplexing

Pipe (|): Verbindet stdout eines Programms mit stdin eines anderen. Das ist die Unix-Philosophie: kleine Programme, die zusammenarbeiten.

Animation: Pipe-Chain
cat datei.txt
Liest Datei
Zeile 1, Zeile 2...
|
stdout→stdin
grep "wichtig"
Filtert Zeilen
wichtig: Zeile 2
|
stdout→stdin
wc -l
Zaehlt Ergebnisse
1

Multiplexer (Mux): Mehrere Eingangssignale werden in EINEN Kanal zusammengefuehrt.

Demultiplexer (Demux): EIN Signal wird auf mehrere Ausgangskanaele verteilt.

Interaktiv: Mux / Demux Diagramm

Multiplexer (Mux)

MUX Eingang A Eingang B Eingang C EIN Ausgang

Demultiplexer (Demux) -- Agent-Kontext

DEMUX LLM-Antwort Text → User Tool-Call → Executor Steuerbefehl → Logic

Im Agent-Kontext: Wenn ein Agent eine Nachricht vom LLM bekommt, muss er entscheiden: Ist das Text fuer den User? Ist das ein Tool-Call? Ist das ein Steuerbefehl? Das ist Demultiplexing -- ein Datenstrom wird auf verschiedene Handler verteilt.

Tmux (Terminal Multiplexer): Ein Programm das mehrere Terminal-Sessions in einem Fenster verwaltet -- auch ein Multiplexer, diesmal fuer Terminal-Streams.

CLI (Command Line Interface)

Was es ist: Ein Programm, das ueber Text-Befehle im Terminal gesteuert wird -- im Gegensatz zu einer grafischen Oberflaeche (GUI).

bash
# GUI: Du klickst auf "Datei > Speichern"
# CLI: Du tippst:
cp dokument.txt backup/dokument.txt
Praxis-Insight: Erfahrene Agent-Entwickler argumentieren, dass CLIs BESSER fuer Agents sind als HTTP-APIs oder MCP-Server.
EigenschaftCLIHTTP-API / MCP
Aufruftool --parameter wertJSON-Objekt ueber HTTP
ErgebnisText auf stdoutJSON in HTTP-Response
Installierenapt install tool / pip install toolServer starten, Port konfigurieren
Token-KostenWenig (kurzer Text)Viel (JSON-Schema, Metadaten)
Agent kann esSofort (bash ist immer da)Braucht Konfiguration

Die Erkenntnis: LLMs sind extrem gut darin, CLI-Befehle zu schreiben und deren Ausgabe zu verstehen. Das ist billiger und zuverlaessiger als komplexe API-Protokolle.

SSH (Secure Shell)

Was es ist: Ein Protokoll, um sich sicher und verschluesselt mit einem entfernten Computer zu verbinden und dort Befehle auszufuehren.

Praxis-Beispiel: Ein verbreitetes Pattern: Den Agent auf einem Server (z.B. Fly.io) hosten und sich per SSH vom Smartphone verbinden. So hat man seinen Agent immer dabei.
text
iPhone (SSH-Client)  ───verschluesselt───>  Server auf Fly.io
                                             |
                                             py laeuft hier
                                             |
                                             Zugriff auf GitHub, Tools, etc.

JSON, YAML, Markdown

Drei Datenformate die ueberall vorkommen:

JSON (JavaScript Object Notation): Strukturierte Daten, maschinenlesbar.

json
{
  "kunde": "Mueller GmbH",
  "betrag": 7100,
  "positionen": [
    {"name": "Beratung", "preis": 3600},
    {"name": "Setup", "preis": 3500}
  ]
}

YAML (YAML Ain't Markup Language): Wie JSON, aber menschenlesbarer. Wird oft fuer Konfiguration verwendet.

yaml
kunde: Mueller GmbH
betrag: 7100
positionen:
  - name: Beratung
    preis: 3600
  - name: Setup
    preis: 3500

Markdown: Einfache Textformatierung. DAS zentrale Format fuer Agents.

markdown
# Ueberschrift
**fett**, *kursiv*
- Liste
- Punkte

| Tabelle | Spalte |
|---------|--------|
| Wert    | Wert   |
Praxis-Insight: Die OpenClaw-Community hat erkannt, dass Markdown das beste Format fuer Agents ist. Agents koennen es perfekt lesen, schreiben und traversieren. System Prompts, Firmenwissen, Vorlagen -- alles ist Markdown.

Quiz: Schicht 1 -- Computer-Grundlagen

1. Ueber welchen Kanal liest ein Agent das Ergebnis eines CLI-Tools?

stdout (Standard Output) ist der Kanal, ueber den Programme ihre normale Ausgabe liefern. Der Agent liest das Ergebnis eines CLI-Tools aus stdout.

2. Was macht ein Demultiplexer im Agent-Kontext?

Der Demux verteilt die LLM-Antwort auf verschiedene Handler: Text-Ausgabe an den User, Tool-Calls an den Tool-Executor, Steuerbefehle an die Agent-Logic.

3. Warum sind CLIs laut dem Webinar besser fuer Agents als MCP?

CLI-Aufrufe erzeugen kompakten Text (wenige Tokens), waehrend MCP JSON-Schemas und Metadaten braucht (viele Tokens). Ausserdem ist bash auf jedem System verfuegbar -- keine Konfiguration noetig.

Schicht 2: Wie LLMs funktionieren

LLM (Large Language Model)

Was es ist: Ein neuronales Netzwerk, das auf riesigen Textmengen trainiert wurde und Text generieren kann. "Large" bezieht sich auf die Anzahl der Parameter (Gewichte im Netzwerk).

ModellParameterAnbieterBesonderheit
GPT-4o~200B (geschaetzt)OpenAIMultimodal (Text + Bild)
Claude Sonnet/OpusunbekanntAnthropicStark bei Code und Analyse
Llama 3.18B / 70B / 405BMetaOpen Source, lokal ausfuehrbar
Qwen 2.57B / 14B / 72BAlibabaOpen Source, gutes Deutsch
Mistral7B / 8x7BMistral AIEuropaeisch, Open Source

Wie es funktioniert (vereinfacht):

  1. Text wird in Tokens zerlegt (siehe unten)
  2. Tokens gehen durch das neuronale Netzwerk
  3. Das Netzwerk berechnet fuer JEDES moegliche naechste Token eine Wahrscheinlichkeit
  4. Das wahrscheinlichste Token (oder ein zufaellig gewaehltes aus den Top-Kandidaten) wird ausgegeben
  5. Dieses neue Token wird an den bisherigen Text angehaengt
  6. Zurueck zu Schritt 2 -- bis ein Stop-Signal kommt
Interaktiv: Token-Vorhersage -- Tippe Text ein
Tokens (simuliert):
Naechstes Token -- Wahrscheinlichkeiten:
Berlin
92%
Bonn
3%
Muenchen
1%

Token

Was es ist: Die kleinste Einheit, in der ein LLM Text verarbeitet. NICHT identisch mit einem Wort.

Faustregel: 1 Token ≈ 4 Zeichen im Englischen, ≈ 3 Zeichen im Deutschen (deutsche Woerter sind laenger).

text
"Hallo Welt"     = 2 Tokens:  ["Hallo", " Welt"]
"Auftragsverarbeitung" = 4 Tokens: ["Auf", "trags", "ver", "arbeitung"]
"Hello World"    = 2 Tokens:  ["Hello", " World"]

Warum es wichtig ist: Alles wird in Tokens gemessen und abgerechnet:

  • Context Window = maximale Tokens die das Modell auf einmal sehen kann
  • Kosten = Preis pro 1.000 oder 1.000.000 Tokens
  • Wichtig zu wissen: Agent-Loops sind "token-intensive" weil bei JEDEM Schritt der gesamte Kontext gesendet wird

Context Window (Kontextfenster)

Was es ist: Die maximale Menge an Text (gemessen in Tokens), die ein LLM gleichzeitig "sehen" und verarbeiten kann. Stell dir ein Fenster vor, durch das das Modell auf den Text schaut -- was ausserhalb des Fensters liegt, existiert fuer das Modell nicht.

ModellContext WindowEntspricht ca.
GPT-4o128.000 Tokens~300 Seiten Text
Claude Opus/Sonnet200.000 Tokens~500 Seiten Text
Llama 3.1128.000 Tokens~300 Seiten Text
Webinar-Insight (Teilnehmer-Frage): "Wenn das halbe Context Window voll ist, geht die Performance runter." -- Das ist real.

LLMs werden schlechter, je voller das Context Window ist, weil:

  1. Attention-Mechanismus wird ungenauer bei langen Sequenzen
  2. "Lost in the middle" -- Informationen in der Mitte werden schlechter erinnert als am Anfang oder Ende
  3. Rechenaufwand steigt quadratisch mit der Laenge (bei Standard-Attention)
Interaktiv: Context Window fuellen und komprimieren
0 Tokens128.000 Tokens
System
Nachrichten
Frei
Fuellstand: 18%

RoPE (Rotary Position Embedding)

Was es ist: Eine mathematische Technik, die dem LLM sagt, WO sich jedes Token im Text befindet. Ohne Positionsinformation wuesste das Modell nicht, ob ein Wort am Anfang oder am Ende steht.

Das Problem: Ein neuronales Netzwerk verarbeitet alle Tokens parallel (nicht sequentiell wie ein Mensch liest). Deshalb braucht es eine kuenstliche Positionscodierung.

Wie RoPE funktioniert (vereinfacht):

  • Jede Position im Text wird als Rotation in einem hochdimensionalen Raum codiert
  • Token an Position 1 bekommt eine bestimmte "Drehung"
  • Token an Position 2 bekommt eine andere "Drehung"
  • Der Abstand zwischen zwei Tokens ergibt sich aus der Differenz ihrer Rotationen
  • Das Modell lernt: "Tokens die nah beieinander sind, gehoeren wahrscheinlich zusammen"
Animation: RoPE -- Tokens rotieren an verschiedenen Positionen
Naehere Tokens haben aehnliche Rotationswinkel -- das Modell lernt raeumliche Naehe

Warum es wichtig ist:

  • RoPE ermoeglicht "Context Window Extension" -- laengere Texte verarbeiten als das Training vorgesehen hat
  • Techniken wie YaRN oder NTK-aware Scaling strecken die Rotationen, um laengere Kontexte zu unterstuetzen
  • Das ist der Grund, warum Modelle heute 128K+ Tokens verarbeiten koennen, obwohl sie mit kuerzerem Kontext trainiert wurden

Context Compaction (Kontext-Komprimierung)

Aus der Praxis: "Du machst diese intentionale Compaction -- du komprimierst alles zusammen und schickst das rueber."

Was es ist: Wenn das Context Window volllaeuft, muss der Agent entscheiden: Was behalte ich, was werfe ich raus?

Techniken:

  1. Summarization: Aeltere Nachrichten werden zusammengefasst ("Die letzten 50 Nachrichten haben ergeben: X")
  2. Pruning: Unwichtige Teile werden entfernt (z.B. fehlgeschlagene Tool-Calls)
  3. Sliding Window: Nur die letzten N Nachrichten werden behalten
  4. Hierarchisch: Alte Nachrichten → Zusammenfassung → nur Zusammenfassung bleibt
text
Context Window (vereinfacht):

VOR Compaction:
[System Prompt | Msg 1 | Msg 2 | ... | Msg 47 | Msg 48 | Msg 49 | Msg 50]
 ↑ bleibt       ↑ werden zusammengefasst                 ↑ bleiben komplett

NACH Compaction:
[System Prompt | Zusammenfassung von Msg 1-40 | Msg 41-50 (komplett)]

Inference (Inferenz)

Was es ist: Der Vorgang, ein trainiertes LLM auszufuehren -- also Text zu generieren. Im Gegensatz zu "Training" (wo das Modell lernt) ist Inference die "Nutzung" des fertigen Modells.

text
Training:   Daten → Modell lernt → fertige Gewichte (einmalig, sehr teuer)
Inference:  Prompt → fertige Gewichte → Antwort (jedes Mal, relativ billig)

Wo Inference laeuft:

  • Cloud/API: Anthropic, OpenAI, Google fuehren Inference auf ihren Servern aus
  • Lokal: Ollama oder vLLM laden das Modell auf deinen Computer und fuehren Inference dort aus

Ollama und vLLM

Ollama: Eine einfache Software, die LLMs lokal auf deinem Computer ausfuehrt. "Docker fuer LLMs."

bash
ollama run llama3.1      # Startet Llama 3.1 lokal
ollama run qwen2.5:14b   # Startet Qwen 2.5 mit 14B Parametern

vLLM: Eine leistungsstaerkere Alternative zu Ollama, optimiert fuer Produktions-Workloads und mehrere gleichzeitige Nutzer. Nutzt fortgeschrittene Techniken wie "PagedAttention" fuer effizientere Speichernutzung.

Warum lokal wichtig ist (DSGVO): Wenn Inference lokal laeuft, verlassen keine Daten den Rechner. Kein Cloud-Provider sieht die Firmendaten.

Embedding

Was es ist: Eine mathematische Darstellung von Text als Zahlenvektor (eine Liste von Zahlen). Aehnliche Texte haben aehnliche Vektoren.

text
"Hund"  → [0.21, -0.45, 0.78, 0.12, ...]  (z.B. 768 Zahlen)
"Katze" → [0.19, -0.42, 0.75, 0.15, ...]  (aehnlich! Beides Tiere)
"Auto"  → [-0.61, 0.33, -0.12, 0.89, ...]  (ganz anders)

Wofuer: Semantische Suche. Statt nur nach exakten Woertern zu suchen, kann man nach BEDEUTUNG suchen. "Wie kuendige ich einen Vertrag?" findet auch Dokumente ueber "Vertragsbeendigung" oder "Kuendigungsfristen".

RAG (Retrieval Augmented Generation)

Was es ist: Eine Technik, bei der ein LLM mit externem Wissen angereichert wird, BEVOR es antwortet.

Animation: RAG-Pipeline Schritt fuer Schritt
1. User-Frage: "Was kostet unser Server-Setup?"
2. Embedding-Suche im Firmenwissen
3. Dokument gefunden: preisliste.md → "Server-Setup: 3.500 EUR"
4. Frage + Kontext an LLM senden
5. LLM-Antwort: "Unser Server-Setup kostet 3.500 EUR netto."
Im Agent-Kontext: Der vault-cli aus dem MVP-Plan ist im Grunde ein einfaches RAG-System -- der Agent sucht im Firmenwissen, bevor er antwortet.

Quiz: Schicht 2 -- Wie LLMs funktionieren

1. Warum wird die LLM-Performance schlechter wenn das Context Window voll ist?

Der Attention-Mechanismus wird bei langen Sequenzen ungenauer (quadratischer Aufwand). Zusaetzlich zeigt das "Lost in the middle"-Phaenomen, dass Infos in der Mitte schlechter behalten werden als am Anfang/Ende.

2. Was macht RoPE?

RoPE (Rotary Position Embedding) codiert die Position jedes Tokens als Rotation. Tokens die nah beieinander stehen, haben aehnliche Rotationen -- so lernt das Modell raeumliche Naehe.

3. Was ist der Hauptvorteil von RAG?

RAG reichert das LLM vor der Antwort mit externem Wissen an (z.B. Firmendaten). So kann es spezifische, aktuelle Informationen liefern, ohne dass das Modell neu trainiert werden muss.

Schicht 3: Der Agent Loop -- das Herzstueck

Was ist ein Agent?

Definition (aus dem Webinar): Ein Agent ist ein LLM mit Zugriff auf ein Dateisystem und eine Command-Line Runtime (wie bash). Er operiert in einem "glorified while loop".

Noch einfacher: Ein Agent ist ein Programm, das:

  1. Eine Aufgabe bekommt
  2. Nachdenkt (LLM)
  3. Etwas tut (Tool ausfuehren)
  4. Das Ergebnis prueft
  5. Zurueck zu 2, bis die Aufgabe erledigt ist

Agent Loop (Agent-Schleife)

Was es ist: Der Kern jedes Coding Agents. Ein While-Loop der so lange laeuft, bis die Aufgabe erledigt ist.

DER AGENT LOOP -- Kernmechanismus
1. KONTEXT
SAMMELN
2. LLM
AUFRUFEN
3. ANTWORT
VERARBEITEN
(Demux!)
4. ERGEBNIS
VERIFIZIEREN
LOOP
Schritt 1: Kontext sammeln
System Prompt + bisherige Nachrichten + Dateien/Wissen + Ergebnisse vorheriger Tools
Praxis-Insight: "Die neuesten Modelle sind sehr gut darin, diesen Loop weiterzufuehren. Frueher haben sie oft gestoppt. Aber jetzt, mit dem richtigen Kontext und den richtigen Anweisungen, arbeiten sie weiter."

Pseudocode:

python
def agent_loop(aufgabe):
    nachrichten = [system_prompt, aufgabe]

    while True:
        # 1. Kontext sammeln + 2. LLM aufrufen
        antwort = llm.chat(nachrichten)

        # 3. Antwort verarbeiten (Demux)
        if antwort.hat_tool_call():
            # Tool ausfuehren
            ergebnis = tool_executor(antwort.tool_call)
            nachrichten.append(antwort)
            nachrichten.append(ergebnis)
            # 4. Weiter im Loop

        elif antwort.ist_fertig():
            # Aufgabe erledigt
            return antwort.text

        else:
            # Nur Text-Ausgabe
            zeige_user(antwort.text)
            nachrichten.append(antwort)
"Cloud Code in 200 Zeilen" (aus dem Webinar): Das oben ist das Grundprinzip. Der Rest sind Details: Fehlerbehandlung, Context Management, UI, etc.

Agent Runtime

Was es ist: Die Ausfuehrungsumgebung, in der der Agent laeuft. Wie eine "Buehne" auf der der Agent "auftritt".

Die Agent Runtime stellt bereit:

  • Den Loop selbst (die While-Schleife)
  • Zugang zum LLM (API-Calls oder lokales Modell)
  • Tool-Ausfuehrung (bash, Dateisystem, CLI-Tools)
  • Speicher (Nachrichten-Historie, Dateien)
  • I/O (Kommunikation mit dem User)
Interaktiv: Agent Runtime Architektur (Klicke fuer Details)
Agent Runtime

LLM-Connector

Verbindung zu Ollama, OpenAI, Anthropic oder anderen Providern. Abstrahiert API-Unterschiede. Kann zwischen Modellen wechseln.

Tool-Executor

Fuehrt bash-Befehle, CLI-Tools und Dateisystem-Operationen aus. Startet Kind-Prozesse und liest deren stdout/stderr.

Context Manager

Verwaltet Nachrichten-Historie, fuehrt Compaction durch, pflegt den Session Tree. Entscheidet was behalten und was verworfen wird.

I/O Handler

Kommunikation mit dem User ueber Terminal oder Web-UI. Streaming von LLM-Tokens in Echtzeit. Input-Verarbeitung.

Extensions (Hooks, Skills, Custom Tools)

Erweiterungspunkte fuer benutzerdefinierte Funktionalitaet. Hooks vor/nach LLM-Calls, Skills fuer wiederkehrende Aufgaben, Custom CLI-Tools.

Im py-Kontext: py ist eine Agent Runtime. Claude Code ist eine andere. OpenClaw nutzt py als seine Runtime.

Agent Harness (Agent-Geschirr)

Was es ist: Praktisch synonym mit "Agent Runtime", aber mit einer Nuance: Ein Harness betont den Aspekt des "Einspannens" -- das LLM wird in einen kontrollierten Rahmen eingespannt, der bestimmt, was es tun darf und wie.

Aus der Praxis: "Diese Coding Harnesses, diese Agent Loops oder Agent Harnesses, wie auch immer man sie nennt -- es ist ein glorified While Loop."

Harness = Runtime + Regeln + Grenzen:

  • Runtime: "Wo und wie laeuft der Agent?"
  • Harness: "Innerhalb welcher Grenzen darf er operieren?"

System Prompt

Was es ist: Die erste Nachricht an das LLM, die seine Rolle, Regeln und Faehigkeiten definiert. Der User sieht den System Prompt normalerweise nicht.

text
System Prompt (unsichtbar fuer User):
"Du bist ein Vertriebs-Assistent. Du hast folgende Tools: [...]
 Du darfst nie Rabatte geben ohne Freigabe."

User-Nachricht: "Erstelle ein Angebot fuer Mueller GmbH"

→ Das LLM beruecksichtigt BEIDE Teile bei seiner Antwort.

Im Agent-Kontext: Der System Prompt ist quasi die "DNA" des Agents. Er definiert:

  • Wer der Agent ist (Rolle)
  • Was er kann (Tools-Liste)
  • Was er nicht darf (Regeln)
  • Wie er antworten soll (Ton, Sprache)

In py: Das Equivalent ist die agent-instructions.md Datei -- Markdown, das beim Start geladen wird.

Stateless vs. Stateful

Wichtiger Webinar-Insight: "Jede Interaktion ist stateless -- der gesamte Kontext wird mit jedem Request gesendet."

Stateless: Das LLM hat KEIN Gedaechtnis zwischen Aufrufen. Bei jedem API-Call muss die komplette Konversationshistorie mitgesendet werden.

Animation: Stateless -- Jeder Call wird laenger
Aufruf 1: [System Prompt + "Hallo"]
Aufruf 2: [System Prompt + "Hallo" + "Hi!" + "Wie geht es?"]
Aufruf 3: [System Prompt + "Hallo" + "Hi!" + "Wie geht es?" + "Gut!" + "Erstelle Angebot"]
↑ Wird immer laenger! Die gesamte Historie wird JEDES MAL gesendet.

Das bedeutet: Die Agent Runtime muss den gesamten Zustand verwalten und bei jedem LLM-Call mitsenden. Das LLM selbst "erinnert" sich an nichts.

Event Loop

Was es ist: Ein Programmier-Pattern, bei dem ein Programm kontinuierlich auf Ereignisse (Events) wartet und sie verarbeitet.

python
while true:
    event = warte_auf_naechstes_event()

    if event.typ == "user_nachricht":
        verarbeite_nachricht(event)
    elif event.typ == "tool_ergebnis":
        verarbeite_tool_ergebnis(event)
    elif event.typ == "timeout":
        behandle_timeout(event)
Aus der Praxis: "Du veraenderst nicht nur die Kontext-Informationen, die Markdowns etc., sondern auch die Coding Harness, den Event Loop darunter."

Der Unterschied zum Agent Loop: Der Agent Loop ist ein spezifischer Event Loop, der auf LLM-Antworten reagiert. Ein Event Loop ist das allgemeinere Konzept.

Quiz: Schicht 3 -- Der Agent Loop

1. Was sind die 4 Schritte des Agent Loops?

Der Agent Loop besteht aus: 1) Kontext sammeln (System Prompt + Historie), 2) LLM aufrufen, 3) Antwort verarbeiten (Demux: Text/Tool-Call/Fertig?), 4) Ergebnis verifizieren und ggf. Loop wiederholen.

2. Warum ist der LLM-Aufruf "stateless"?

LLMs sind von Natur aus stateless -- sie haben kein Gedaechtnis zwischen einzelnen API-Aufrufen. Die Agent Runtime muss daher die gesamte Konversationshistorie bei JEDEM Call mitsenden.

Schicht 4: Tools & Protokolle

API (Application Programming Interface)

Was es ist: Ein definierter Weg, wie ein Programm mit einem anderen Programm kommuniziert. Wie ein Kellner im Restaurant -- du (Programm A) sagst dem Kellner (API) was du willst, und er bringt es aus der Kueche (Programm B).

text
Du (Client)  ──Bestellung──>  Kellner (API)  ──Weiterleitung──>  Kueche (Server)
                              <──Essen────────                  <──Zubereitung──

Typen die im Webinar vorkommen:

API-TypWo im WebinarBeispiel
REST API (HTTP)Anthropic, OpenAIPOST /v1/messages mit JSON Body
CLI als APIpy, Agent-Toolsbash-Befehl mit Text-Antwort auf stdout
MCP (Model Context Protocol)Tool-IntegrationJSON-RPC ueber stdio oder HTTP

HTTP / REST

HTTP (HyperText Transfer Protocol): Das Protokoll des Webs. Jede Webseite, jede API-Anfrage nutzt HTTP.

REST: Ein Architekturstil fuer APIs, der HTTP-Methoden nutzt.

MethodeBedeutungAgent-Beispiel
GETDaten abrufenDatei vom Server lesen
POSTDaten sendenPrompt an LLM senden
PUTDaten aktualisierenDatei ueberschreiben
DELETEDaten loeschenDatei loeschen
Interaktiv: HTTP Request & Response
REQUEST (Client → Server)
POST /v1/messages HTTP/1.1
Host: api.anthropic.com
Content-Type: application/json
x-api-key: sk-ant-...

{
  "model": "claude-sonnet-4-20250514",
  "messages": [
    {"role":"user", "content":"Hallo!"}
  ]
}
RESPONSE (Server → Client)
HTTP/1.1 200 OK
Content-Type: application/json

{
  "content": [{
    "type": "text",
    "text": "Hallo! Wie kann ich..."
  }],
  "stop_reason": "end_turn",
  "usage": {"input_tokens": 12, ...}
}

SDK (Software Development Kit)

Was es ist: Eine Bibliothek die die API-Aufrufe vereinfacht. Statt rohe HTTP-Requests zu schreiben, nutzt du fertige Funktionen.

python
# OHNE SDK (roher HTTP-Request):
import requests
response = requests.post("https://api.anthropic.com/v1/messages",
    headers={"x-api-key": key, "content-type": "application/json"},
    json={"model": "claude-sonnet-4-20250514", "messages": [{"role": "user", "content": "Hallo"}]})

# MIT SDK (eine Zeile):
from anthropic import Anthropic
message = Anthropic().messages.create(model="claude-sonnet-4-20250514",
    messages=[{"role": "user", "content": "Hallo"}])

MCP (Model Context Protocol)

Was es ist: Ein offener Standard (von Anthropic) der definiert, wie LLMs mit externen Tools kommunizieren. Denk an USB-C fuer AI-Tools.

Praxis-Insight: Viele erfahrene Agent-Entwickler sind kritisch gegenueber MCP. Das Argument: Es ist "over-engineered" fuer viele Use-Cases. Ein CLI-Tool ist simpler, billiger (weniger Tokens) und genauso effektiv.
AspektCLI-ToolMCP-Server
Setuppip install toolServer starten, JSON-Config
Aufruftool --flag wertJSON-RPC Message
Token-Kosten~50 Tokens~200-500 Tokens
Zustandslos?Ja (jeder Aufruf ist unabhaengig)Nein (Server laeuft dauerhaft)
VorteilEinfach, universellStandard-Protokoll, Tool-Discovery

Wann MCP trotzdem sinnvoll ist:

  • Tool-Discovery (Agent kann verfuegbare Tools automatisch entdecken)
  • Komplexe Interaktionen die Zustand brauchen (z.B. Datenbank-Session)
  • Standard-Integration in verschiedene AI-Produkte

WebSocket

Was es ist: Eine persistente, bidirektionale Verbindung zwischen Client und Server. Im Gegensatz zu HTTP (Frage-Antwort) bleibt die Leitung offen.

Vergleich: HTTP vs WebSocket
HTTP (Request-Response)
Client ──req──> Server
Client <──res── Server
~~~ Verbindung zu ~~~
Client ──req──> Server
Client <──res── Server
~~~ Verbindung zu ~~~
WebSocket (Persistent)
Client ══════════ Server
       ↕ Daten ↕
       ↕ Daten ↕
       ↕ Daten ↕
~~~ Verbindung bleibt offen ~~~

Im Agent-Kontext: WebSockets werden fuer Streaming genutzt. Wenn Claude dir Wort fuer Wort antwortet, nutzt das im Hintergrund oft eine persistente Verbindung.

SSE (Server-Sent Events)

Was es ist: Eine Einweg-Streaming-Verbindung vom Server zum Client. Einfacher als WebSocket, aber nur in eine Richtung.

text
WebSocket:  Client ←→ Server  (bidirektional)
SSE:        Client ←── Server  (nur Server sendet)

Im Agent-Kontext: Die Anthropic API nutzt SSE fuer Streaming-Responses. Jedes Token wird als separates Event geschickt:

text
event: content_block_delta
data: {"type":"content_block_delta","delta":{"type":"text_delta","text":"Hallo"}}

event: content_block_delta
data: {"type":"content_block_delta","delta":{"type":"text_delta","text":" Welt"}}

Quiz: Schicht 4 -- Tools & Protokolle

1. Was ist der Hauptvorteil von CLI-Tools gegenueber MCP laut Webinar?

CLI-Aufrufe erzeugen nur ~50 Tokens (kurzer Befehl + Text-Ausgabe), waehrend MCP JSON-Schemas und Metadaten braucht (~200-500 Tokens). Ausserdem ist bash auf jedem System verfuegbar -- kein Server-Setup noetig.

2. Was macht SSE anders als WebSocket?

SSE (Server-Sent Events) ist eine Einweg-Verbindung: nur der Server sendet Daten zum Client. WebSocket ist bidirektional -- beide Seiten koennen jederzeit senden.

3. Warum nutzt die Anthropic API SSE?

SSE erlaubt es, die Antwort Token fuer Token zu streamen, waehrend sie generiert wird. So sieht der User sofort die ersten Woerter, statt auf die komplette Antwort warten zu muessen.

Schicht 5: Isolation & Sandboxing

Warum brauchen Agents Isolation?

Das Problem: Ein Agent fuehrt Code aus. Dieser Code kann ALLES tun -- Dateien loeschen, Netzwerk-Requests machen, System-Einstellungen aendern. Ohne Isolation ist das wie ein neuer Mitarbeiter mit Admin-Rechten am ersten Tag.

Praxis-Insight: "The biggest risk isn't the LLM being malicious -- it's the LLM being confidently wrong and executing something destructive."
Interaktiv: Isolation Layers -- klicke auf eine Schicht
Schicht 1: Dateisystem-Beschraenkung
Schicht 2: Netzwerk-Beschraenkung
Schicht 3: Prozess-Isolation (Container)
Schicht 4: Hardware-Isolation (VM / MicroVM)

Container / Docker

Was es ist: Ein Container ist eine leichtgewichtige, isolierte Umgebung die alles enthaelt was eine Anwendung braucht (Code, Bibliotheken, Einstellungen). Docker ist das bekannteste Tool dafuer.

Analogie: Ein Container ist wie ein Umzugskarton mit Aufschrift. Alles was reingehoert ist drin, nichts anderes. Du kannst den Karton ueberall hinstellen und er funktioniert.

dockerfile
# Dockerfile fuer einen Agent
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "agent.py"]
EigenschaftContainer (Docker)VM (Virtual Machine)
Start-ZeitSekundenMinuten
SpeicherMBsGBs
IsolationProzess-Level (teilt Kernel)Hardware-Level (eigener Kernel)
SicherheitGut, aber Container-Escape moeglichSehr hoch
Fuer AgentsStandard-WahlWenn maximale Sicherheit noetig

Docker Compose

Was es ist: Ein Tool um mehrere Container gleichzeitig zu starten und zu verbinden. Eine YAML-Datei beschreibt das gesamte Setup.

Interaktiv: Docker Compose Stack -- klicke auf Services
agent Port 3000
↕ internes Netzwerk ↕
postgres Port 5432
mcp-server Port 8080
yaml
# docker-compose.yml
services:
  agent:
    build: .
    ports: ["3000:3000"]
    environment:
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
    volumes:
      - ./workspace:/app/workspace
    depends_on: [postgres]

  postgres:
    image: pgvector/pgvector:pg16
    environment:
      - POSTGRES_DB=agent
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:

VM (Virtual Machine)

Was es ist: Eine komplett simulierte Computer-Hardware. Hat eigenen Kernel, eigenes Betriebssystem, eigenen Speicher. Maximale Isolation.

Nachteil: Schwer, langsam zu starten (Minuten), viel Speicher (GBs). Fuer Agents oft Overkill.

Firecracker (MicroVM)

Was es ist: Von Amazon entwickelte MicroVMs. Kombiniert VM-Sicherheit mit Container-Geschwindigkeit.

EigenschaftDockerFirecrackerVolle VM
Start-Zeit~1s<125ms30-60s
Speicher-Overhead~50MB~5MB~512MB+
IsolationKernel geteiltEigener KernelEigener Kernel
Genutzt vonUeberallAWS Lambda, Fly.ioCloud-VMs
Praxis-Beispiel: Fly.io nutzt Firecracker. Jeder Agent laeuft in einer eigenen MicroVM -- schnell und sicher.

Sandbox

Was es ist: Ein allgemeiner Begriff fuer eine isolierte Ausfuehrungsumgebung. Wie ein Sandkasten fuer Kinder -- man kann darin spielen, aber der Sand bleibt im Kasten.

Im Agent-Kontext: Jeder gute Agent laeuft in einer Sandbox. Die konkreten Technologien dahinter koennen Firecracker oder andere Isolation-Mechanismen sein.

Quiz: Schicht 5 -- Isolation & Sandboxing

1. Warum brauchen Agents Isolation?

Agents fuehren Code aus -- und LLMs koennen Fehler machen. Ohne Isolation koennte ein fehlerhafter Befehl Dateien loeschen, auf sensible Daten zugreifen oder das System beschaedigen.

2. Was macht Firecracker besonders?

Firecracker kombiniert das Beste aus beiden Welten: Die Sicherheit einer VM (eigener Kernel) mit der Geschwindigkeit eines Containers (Start in unter 125ms, nur ~5MB Overhead).

Schicht 6: Architecture Patterns

Hooks (Lifecycle Hooks)

Was es ist: Punkte im Lebenszyklus des Agents, an denen du eigenen Code einhaengen kannst. Wie Event-Listener in JavaScript oder Middleware in Express.

Praxis-Insight: Hooks sind ein zentrales Konzept in py. Sie erlauben dir, das Verhalten des Agents zu veraendern, ohne den Core-Code anzufassen.
Interaktiv: Hook Points im Agent Lifecycle -- klicke auf Hooks
1on_session_start
|
2on_message
|
3before_tool_call
|
4after_tool_call
|
5on_response
|
6on_session_end

Skills / Slash Commands

Was es ist: Vordefinierte Faehigkeiten die der Agent per Slash-Command aktivieren kann. Wie Makros oder Shortcuts -- ein Befehl loest eine komplexe Aktion aus.

text
/review      → Code-Review mit Checkliste durchfuehren
/test        → Tests schreiben und ausfuehren
/deploy      → Build + Test + Deploy Pipeline
/refactor    → Systematisches Refactoring mit Sicherheitsnetz

Wie Skills funktionieren:

  1. Ein Skill ist eine Markdown-Datei mit Anweisungen
  2. Wenn der User /skill-name tippt, wird diese Datei als System-Prompt geladen
  3. Der Agent folgt den Anweisungen im Skill
  4. Das ist wie ein "Modus-Wechsel" -- der Agent wird zum Spezialisten
Praxis-Insight: Skills sind der Schluessel fuer Team-Adoption. Statt jedem Entwickler beizubringen wie man mit dem Agent redet, erstellt man Skills die das Wissen kapseln.

Session Tree (Konversations-Architektur)

Was es ist: Die hierarchische Struktur wie Agents Konversationen und Sub-Tasks organisieren. Nicht eine lange Chat-History, sondern ein Baum aus Sessions.

Interaktiv: Session Tree -- klicke auf Branches
Main Session -- "Baue ein Dashboard"
├── Sub-Agent: Backend
├── Sub-Agent: Frontend
└── Sub-Agent: Tests

Warum ein Baum? Jeder Sub-Agent hat seinen eigenen Context Window. Das Main-Agent muss nicht alle Details kennen -- nur die Ergebnisse. Das spart Tokens und erlaubt Parallelitaet.

Malleable Software

Was es ist: Software die sich selbst anpassen kann -- der Agent aendert den Code waehrend der Ausfuehrung basierend auf dem was gebraucht wird.

Praxis-Insight: "The best software is software that doesn't exist yet -- it gets written by the agent when needed." Die Idee: Statt ein Tool fuer jeden Use-Case zu bauen, schreibt der Agent das Tool on-the-fly.

Beispiel: User fragt "Analysiere diese CSV-Datei". Statt ein vorgefertigtes CSV-Tool:

  1. Agent liest die CSV-Datei
  2. Agent schreibt ein Python-Script das genau diese Analyse macht
  3. Agent fuehrt das Script aus
  4. Agent liest das Ergebnis und antwortet

Das Script existierte vorher nicht und wird vielleicht nie wieder gebraucht -- aber es war perfekt fuer diesen einen Moment.

BYOK (Bring Your Own Key)

Was es ist: Ein Architektur-Muster bei dem der User seinen eigenen API-Key mitbringt statt den des Service-Anbieters zu nutzen.

AspektBYOKManaged Key
API-KeyUser bringt eigenenService stellt bereit
KostenUser zahlt direkt an LLM-ProviderService berechnet Aufschlag
KontrolleUser hat volle Kontrolle ueber Limits/KostenService kontrolliert
DatenschutzDaten gehen direkt zum ProviderDaten gehen ueber Service
Praxis-Beispiel: py nutzt BYOK -- du brauchst deinen eigenen Anthropic API-Key. Das bedeutet: keine versteckten Kosten, volle Transparenz, und deine Daten gehen nie ueber einen Mittelsmann.

Quiz: Schicht 6 -- Architecture Patterns

1. Was ist der Hauptzweck von Hooks?

Hooks sind Einstiegspunkte im Agent-Lifecycle, an denen du eigenen Code einhaengen kannst. So passt du das Verhalten an (z.B. Logging, Permissions, Custom-Logic) ohne den Agent-Core zu veraendern.

2. Was ist "Malleable Software"?

Malleable Software ist Software die erst dann geschrieben wird wenn sie gebraucht wird. Der Agent erstellt z.B. ein Python-Script fuer eine spezifische Analyse, fuehrt es aus, und das Script existierte vorher nicht.

3. Was bedeutet BYOK?

BYOK (Bring Your Own Key) bedeutet, dass der User seinen eigenen API-Key nutzt und direkt an den LLM-Provider (z.B. Anthropic) zahlt. Keine versteckten Kosten, volle Transparenz.

Glossar

Alle Begriffe auf einen Blick. Klicke auf Spalten-Header zum Sortieren.

Begriff ↕ Schicht ↕ Kurz-Erklaerung
Prozess1Ein laufendes Programm mit eigener PID
PID1Process ID -- eindeutige Nummer fuer jeden Prozess
stdin1Standard-Eingabe eines Prozesses
stdout1Standard-Ausgabe eines Prozesses
stderr1Fehler-Ausgabe eines Prozesses
Pipe1Verbindet stdout eines Prozesses mit stdin des naechsten
Multiplexer1Zusammenfuehren mehrerer Eingaben zu einem Strom
Demultiplexer1Aufteilen eines Stroms auf verschiedene Handler
CLI1Text-basierte Programmsteuerung (Command Line Interface)
SSH1Verschluesselte Remote-Verbindung zu einem Server
JSON1Strukturiertes Datenformat (JavaScript Object Notation)
YAML1Menschenlesbares Datenformat fuer Konfiguration
Markdown1Einfache Textformatierung -- DAS Format fuer Agents
LLM2Large Language Model -- KI die Text generiert
Token2Kleinste Texteinheit fuer LLMs (~4 Zeichen)
Context Window2Maximale Textmenge die ein LLM gleichzeitig "sehen" kann
RoPE2Positionscodierung durch Rotation im Vektorraum
Compaction2Zusammenfassen aelterer Nachrichten um Platz zu sparen
Inference2Der Prozess wenn ein LLM Text generiert
Ollama2Tool um LLMs lokal auf dem eigenen Computer auszufuehren
Embedding2Zahlendarstellung von Text fuer mathematische Vergleiche
RAG2Retrieval-Augmented Generation -- LLM mit externem Wissen
Agent3LLM + Tools + Loop = autonomes System
Agent Loop3Der While-Loop: denken → handeln → beobachten → wiederholen
System Prompt3Unsichtbare Anweisung die das Verhalten des LLM steuert
CLAUDE.md3Projekt-Kontext-Datei die automatisch in den System Prompt geladen wird
Tool Use3LLM ruft externe Werkzeuge auf (Function Calling)
Headless3Agent laeuft ohne User-Interface (automatisiert)
API4Schnittstelle fuer Programm-zu-Programm-Kommunikation
HTTP/REST4Web-Protokoll fuer API-Aufrufe (GET, POST, PUT, DELETE)
SDK4Bibliothek die API-Aufrufe vereinfacht
MCP4Model Context Protocol -- Standard fuer LLM-Tool-Kommunikation
WebSocket4Persistente bidirektionale Verbindung
SSE4Server-Sent Events -- Einweg-Streaming vom Server
Container5Isolierte Ausfuehrungsumgebung (Docker)
Docker5Tool zum Erstellen und Verwalten von Containern
Docker Compose5Multi-Container-Setup mit YAML-Konfiguration
VM5Virtual Machine -- simulierte Hardware
Firecracker5MicroVM von Amazon -- VM-Sicherheit, Container-Speed
Sandbox5Isolierte Ausfuehrungsumgebung (allgemein)
Hooks6Einstiegspunkte im Agent-Lifecycle fuer eigenen Code
Skills6Vordefinierte Agent-Faehigkeiten per Slash-Command
Session Tree6Hierarchische Konversations-Struktur mit Sub-Agents
Malleable Software6Software die der Agent on-the-fly schreibt
BYOK6Bring Your Own Key -- eigener API-Key

Weiterfuehrende Fragen

Diese Fragen gehen ueber das Webinar hinaus und regen zum Weiterdenken an:

  1. Token-Oekonomie: Wenn ein Context Window 200K Tokens hat und ein Agent durchschnittlich 50 Loops braucht -- wie designst du System Prompts die sowohl informativ als auch token-effizient sind?
  2. Multi-Agent Koordination: Drei Agents arbeiten am selben Codebase. Wie verhinderst du Konflikte? Welche Architektur-Patterns aus der verteilten Systeme-Theorie sind anwendbar?
  3. Compliance & Audit: Ein Agent trifft Entscheidungen und fuehrt Code aus. Wie dokumentierst du das lueckenlos fuer Audit-Zwecke? Welche Hooks brauchst du?
  4. Cost Optimization: Agent A kostet 0.50$ pro Task mit Claude Opus. Agent B macht das gleiche mit Claude Haiku fuer 0.02$ -- aber mit 15% Fehlerrate. Ab welcher Fehlerrate lohnt sich das teurere Modell?
  5. Security Boundaries: Ein Agent hat Zugriff auf Firmen-Repositories ueber SSH. Wie stellst du sicher, dass er nicht versehentlich Secrets commited oder auf falsche Repos zugreift?
  6. Evaluation: Wie misst du ob ein Agent "gut" arbeitet? Welche Metriken jenseits von "funktioniert der Code" sind sinnvoll? (Hint: Token-Effizienz, Time-to-Solution, Error-Rate, User-Satisfaction)
  7. Malleable vs. Stable: Malleable Software klingt maechtig -- aber wann ist es besser, stabilen, getesteten Code zu haben statt on-the-fly generiertem? Wo liegt die Grenze?