Technische Grundlagen: Agentic Coding
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)
▼ stdin, stdout, stderr (Standard-Streams)
Was es ist: Jeder Prozess hat drei "Kanaele" fuer Kommunikation:
| Stream | Richtung | Zweck | Beispiel |
|---|---|---|---|
| stdin (Standard Input) | Rein → Prozess | Eingabe empfangen | Tastatur-Eingabe, Daten von anderem Programm |
| stdout (Standard Output) | Prozess → Raus | Normale Ausgabe | Ergebnis eines Befehls |
| stderr (Standard Error) | Prozess → Raus | Fehlermeldungen | "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.
(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.
Liest Datei
Filtert Zeilen
Zaehlt Ergebnisse
Multiplexer (Mux): Mehrere Eingangssignale werden in EINEN Kanal zusammengefuehrt.
Demultiplexer (Demux): EIN Signal wird auf mehrere Ausgangskanaele verteilt.
Multiplexer (Mux)
Demultiplexer (Demux) -- Agent-Kontext
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).
# GUI: Du klickst auf "Datei > Speichern" # CLI: Du tippst: cp dokument.txt backup/dokument.txt
| Eigenschaft | CLI | HTTP-API / MCP |
|---|---|---|
| Aufruf | tool --parameter wert | JSON-Objekt ueber HTTP |
| Ergebnis | Text auf stdout | JSON in HTTP-Response |
| Installieren | apt install tool / pip install tool | Server starten, Port konfigurieren |
| Token-Kosten | Wenig (kurzer Text) | Viel (JSON-Schema, Metadaten) |
| Agent kann es | Sofort (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.
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.
{
"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.
kunde: Mueller GmbH betrag: 7100 positionen: - name: Beratung preis: 3600 - name: Setup preis: 3500
Markdown: Einfache Textformatierung. DAS zentrale Format fuer Agents.
# Ueberschrift **fett**, *kursiv* - Liste - Punkte | Tabelle | Spalte | |---------|--------| | Wert | Wert |
Quiz: Schicht 1 -- Computer-Grundlagen
1. Ueber welchen Kanal liest ein Agent das Ergebnis eines CLI-Tools?
2. Was macht ein Demultiplexer im Agent-Kontext?
3. Warum sind CLIs laut dem Webinar besser fuer Agents als MCP?
▼ 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).
| Modell | Parameter | Anbieter | Besonderheit |
|---|---|---|---|
| GPT-4o | ~200B (geschaetzt) | OpenAI | Multimodal (Text + Bild) |
| Claude Sonnet/Opus | unbekannt | Anthropic | Stark bei Code und Analyse |
| Llama 3.1 | 8B / 70B / 405B | Meta | Open Source, lokal ausfuehrbar |
| Qwen 2.5 | 7B / 14B / 72B | Alibaba | Open Source, gutes Deutsch |
| Mistral | 7B / 8x7B | Mistral AI | Europaeisch, Open Source |
Wie es funktioniert (vereinfacht):
- Text wird in Tokens zerlegt (siehe unten)
- Tokens gehen durch das neuronale Netzwerk
- Das Netzwerk berechnet fuer JEDES moegliche naechste Token eine Wahrscheinlichkeit
- Das wahrscheinlichste Token (oder ein zufaellig gewaehltes aus den Top-Kandidaten) wird ausgegeben
- Dieses neue Token wird an den bisherigen Text angehaengt
- Zurueck zu Schritt 2 -- bis ein Stop-Signal kommt
▼ 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).
"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.
| Modell | Context Window | Entspricht ca. |
|---|---|---|
| GPT-4o | 128.000 Tokens | ~300 Seiten Text |
| Claude Opus/Sonnet | 200.000 Tokens | ~500 Seiten Text |
| Llama 3.1 | 128.000 Tokens | ~300 Seiten Text |
LLMs werden schlechter, je voller das Context Window ist, weil:
- Attention-Mechanismus wird ungenauer bei langen Sequenzen
- "Lost in the middle" -- Informationen in der Mitte werden schlechter erinnert als am Anfang oder Ende
- Rechenaufwand steigt quadratisch mit der Laenge (bei Standard-Attention)
▼ 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"
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)
Was es ist: Wenn das Context Window volllaeuft, muss der Agent entscheiden: Was behalte ich, was werfe ich raus?
Techniken:
- Summarization: Aeltere Nachrichten werden zusammengefasst ("Die letzten 50 Nachrichten haben ergeben: X")
- Pruning: Unwichtige Teile werden entfernt (z.B. fehlgeschlagene Tool-Calls)
- Sliding Window: Nur die letzten N Nachrichten werden behalten
- Hierarchisch: Alte Nachrichten → Zusammenfassung → nur Zusammenfassung bleibt
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.
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."
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.
"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.
Quiz: Schicht 2 -- Wie LLMs funktionieren
1. Warum wird die LLM-Performance schlechter wenn das Context Window voll ist?
2. Was macht RoPE?
3. Was ist der Hauptvorteil von RAG?
▼ 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:
- Eine Aufgabe bekommt
- Nachdenkt (LLM)
- Etwas tut (Tool ausfuehren)
- Das Ergebnis prueft
- 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.
SAMMELN
AUFRUFEN
VERARBEITEN
(Demux!)
VERIFIZIEREN
System Prompt + bisherige Nachrichten + Dateien/Wissen + Ergebnisse vorheriger Tools
Pseudocode:
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)
▼ 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)
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.
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.
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
Stateless: Das LLM hat KEIN Gedaechtnis zwischen Aufrufen. Bei jedem API-Call muss die komplette Konversationshistorie mitgesendet werden.
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.
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)
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?
2. Warum ist der LLM-Aufruf "stateless"?
▼ 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).
Du (Client) ──Bestellung──> Kellner (API) ──Weiterleitung──> Kueche (Server)
<──Essen──────── <──Zubereitung──Typen die im Webinar vorkommen:
| API-Typ | Wo im Webinar | Beispiel |
|---|---|---|
| REST API (HTTP) | Anthropic, OpenAI | POST /v1/messages mit JSON Body |
| CLI als API | py, Agent-Tools | bash-Befehl mit Text-Antwort auf stdout |
| MCP (Model Context Protocol) | Tool-Integration | JSON-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.
| Methode | Bedeutung | Agent-Beispiel |
|---|---|---|
| GET | Daten abrufen | Datei vom Server lesen |
| POST | Daten senden | Prompt an LLM senden |
| PUT | Daten aktualisieren | Datei ueberschreiben |
| DELETE | Daten loeschen | Datei loeschen |
Host: api.anthropic.com
Content-Type: application/json
x-api-key: sk-ant-...
{
"model": "claude-sonnet-4-20250514",
"messages": [
{"role":"user", "content":"Hallo!"}
]
}
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.
# 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.
| Aspekt | CLI-Tool | MCP-Server |
|---|---|---|
| Setup | pip install tool | Server starten, JSON-Config |
| Aufruf | tool --flag wert | JSON-RPC Message |
| Token-Kosten | ~50 Tokens | ~200-500 Tokens |
| Zustandslos? | Ja (jeder Aufruf ist unabhaengig) | Nein (Server laeuft dauerhaft) |
| Vorteil | Einfach, universell | Standard-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.
Client <──res── Server
~~~ Verbindung zu ~~~
Client ──req──> Server
Client <──res── Server
~~~ Verbindung zu ~~~
↕ 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.
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:
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?
2. Was macht SSE anders als WebSocket?
3. Warum nutzt die Anthropic API SSE?
▼ 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.
▼ 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 fuer einen Agent FROM python:3.12-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["python", "agent.py"]
| Eigenschaft | Container (Docker) | VM (Virtual Machine) |
|---|---|---|
| Start-Zeit | Sekunden | Minuten |
| Speicher | MBs | GBs |
| Isolation | Prozess-Level (teilt Kernel) | Hardware-Level (eigener Kernel) |
| Sicherheit | Gut, aber Container-Escape moeglich | Sehr hoch |
| Fuer Agents | Standard-Wahl | Wenn 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.
# 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.
| Eigenschaft | Docker | Firecracker | Volle VM |
|---|---|---|---|
| Start-Zeit | ~1s | <125ms | 30-60s |
| Speicher-Overhead | ~50MB | ~5MB | ~512MB+ |
| Isolation | Kernel geteilt | Eigener Kernel | Eigener Kernel |
| Genutzt von | Ueberall | AWS Lambda, Fly.io | Cloud-VMs |
▼ 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?
2. Was macht Firecracker besonders?
▼ 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.
▼ 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.
/review → Code-Review mit Checkliste durchfuehren /test → Tests schreiben und ausfuehren /deploy → Build + Test + Deploy Pipeline /refactor → Systematisches Refactoring mit Sicherheitsnetz
Wie Skills funktionieren:
- Ein Skill ist eine Markdown-Datei mit Anweisungen
- Wenn der User
/skill-nametippt, wird diese Datei als System-Prompt geladen - Der Agent folgt den Anweisungen im Skill
- Das ist wie ein "Modus-Wechsel" -- der Agent wird zum Spezialisten
▼ 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.
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.
Beispiel: User fragt "Analysiere diese CSV-Datei". Statt ein vorgefertigtes CSV-Tool:
- Agent liest die CSV-Datei
- Agent schreibt ein Python-Script das genau diese Analyse macht
- Agent fuehrt das Script aus
- 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.
| Aspekt | BYOK | Managed Key |
|---|---|---|
| API-Key | User bringt eigenen | Service stellt bereit |
| Kosten | User zahlt direkt an LLM-Provider | Service berechnet Aufschlag |
| Kontrolle | User hat volle Kontrolle ueber Limits/Kosten | Service kontrolliert |
| Datenschutz | Daten gehen direkt zum Provider | Daten gehen ueber Service |
Quiz: Schicht 6 -- Architecture Patterns
1. Was ist der Hauptzweck von Hooks?
2. Was ist "Malleable Software"?
3. Was bedeutet BYOK?
Glossar
Alle Begriffe auf einen Blick. Klicke auf Spalten-Header zum Sortieren.
| Begriff ↕ | Schicht ↕ | Kurz-Erklaerung |
|---|---|---|
| Prozess | 1 | Ein laufendes Programm mit eigener PID |
| PID | 1 | Process ID -- eindeutige Nummer fuer jeden Prozess |
| stdin | 1 | Standard-Eingabe eines Prozesses |
| stdout | 1 | Standard-Ausgabe eines Prozesses |
| stderr | 1 | Fehler-Ausgabe eines Prozesses |
| Pipe | 1 | Verbindet stdout eines Prozesses mit stdin des naechsten |
| Multiplexer | 1 | Zusammenfuehren mehrerer Eingaben zu einem Strom |
| Demultiplexer | 1 | Aufteilen eines Stroms auf verschiedene Handler |
| CLI | 1 | Text-basierte Programmsteuerung (Command Line Interface) |
| SSH | 1 | Verschluesselte Remote-Verbindung zu einem Server |
| JSON | 1 | Strukturiertes Datenformat (JavaScript Object Notation) |
| YAML | 1 | Menschenlesbares Datenformat fuer Konfiguration |
| Markdown | 1 | Einfache Textformatierung -- DAS Format fuer Agents |
| LLM | 2 | Large Language Model -- KI die Text generiert |
| Token | 2 | Kleinste Texteinheit fuer LLMs (~4 Zeichen) |
| Context Window | 2 | Maximale Textmenge die ein LLM gleichzeitig "sehen" kann |
| RoPE | 2 | Positionscodierung durch Rotation im Vektorraum |
| Compaction | 2 | Zusammenfassen aelterer Nachrichten um Platz zu sparen |
| Inference | 2 | Der Prozess wenn ein LLM Text generiert |
| Ollama | 2 | Tool um LLMs lokal auf dem eigenen Computer auszufuehren |
| Embedding | 2 | Zahlendarstellung von Text fuer mathematische Vergleiche |
| RAG | 2 | Retrieval-Augmented Generation -- LLM mit externem Wissen |
| Agent | 3 | LLM + Tools + Loop = autonomes System |
| Agent Loop | 3 | Der While-Loop: denken → handeln → beobachten → wiederholen |
| System Prompt | 3 | Unsichtbare Anweisung die das Verhalten des LLM steuert |
| CLAUDE.md | 3 | Projekt-Kontext-Datei die automatisch in den System Prompt geladen wird |
| Tool Use | 3 | LLM ruft externe Werkzeuge auf (Function Calling) |
| Headless | 3 | Agent laeuft ohne User-Interface (automatisiert) |
| API | 4 | Schnittstelle fuer Programm-zu-Programm-Kommunikation |
| HTTP/REST | 4 | Web-Protokoll fuer API-Aufrufe (GET, POST, PUT, DELETE) |
| SDK | 4 | Bibliothek die API-Aufrufe vereinfacht |
| MCP | 4 | Model Context Protocol -- Standard fuer LLM-Tool-Kommunikation |
| WebSocket | 4 | Persistente bidirektionale Verbindung |
| SSE | 4 | Server-Sent Events -- Einweg-Streaming vom Server |
| Container | 5 | Isolierte Ausfuehrungsumgebung (Docker) |
| Docker | 5 | Tool zum Erstellen und Verwalten von Containern |
| Docker Compose | 5 | Multi-Container-Setup mit YAML-Konfiguration |
| VM | 5 | Virtual Machine -- simulierte Hardware |
| Firecracker | 5 | MicroVM von Amazon -- VM-Sicherheit, Container-Speed |
| Sandbox | 5 | Isolierte Ausfuehrungsumgebung (allgemein) |
| Hooks | 6 | Einstiegspunkte im Agent-Lifecycle fuer eigenen Code |
| Skills | 6 | Vordefinierte Agent-Faehigkeiten per Slash-Command |
| Session Tree | 6 | Hierarchische Konversations-Struktur mit Sub-Agents |
| Malleable Software | 6 | Software die der Agent on-the-fly schreibt |
| BYOK | 6 | Bring Your Own Key -- eigener API-Key |
Weiterfuehrende Fragen
Diese Fragen gehen ueber das Webinar hinaus und regen zum Weiterdenken an:
- 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?
- Multi-Agent Koordination: Drei Agents arbeiten am selben Codebase. Wie verhinderst du Konflikte? Welche Architektur-Patterns aus der verteilten Systeme-Theorie sind anwendbar?
- Compliance & Audit: Ein Agent trifft Entscheidungen und fuehrt Code aus. Wie dokumentierst du das lueckenlos fuer Audit-Zwecke? Welche Hooks brauchst du?
- 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?
- 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?
- 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)
- 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?