Du hast deinen ersten Production Agent ausgeliefert — eine KI, die nicht nur Fragen beantwortet, sondern tatsächlich Dinge tut: 50–200 Tool Calls hintereinander (Anfragen an externe Dienste wie Slack, Linear, GitHub), schreibt Code, verschickt Nachrichten, erstellt Tickets. Ein Kunde verlässt sich auf das Ergebnis. Das Leben ist schön.
Dann bekommt ein Kunde eine falsche Antwort. Dein Agent hat ins falsche Linear-Projekt geschrieben, einen kaputten PR gemergt, eine Slack-DM an den CEO statt an den Junior-Entwickler geschickt. Du musst herausfinden, warum — bevor er es nochmal macht.
Also greifst du zu den glänzenden neuen Observability-Tools, die im April 2026 jede große Plattform rausgehauen hat. Am 8. April hat Anthropic Managed Agents gelauncht — mit eingebautem Session Tracing und Tool-Call-Logs. Am 10. April hat Zed Agent Metrics veröffentlicht — Dashboards, die 2 Millionen Sessions, 15,4 Millionen Turns und Latenz-Histogramme über 536 verschiedene Agents tracken. Am 15. April hat OpenAI sein Agents SDK aktualisiert — mit Auto-Tracing, das jeden Tool Call, jede Übergabe und jeden Model-Output aufzeichnet — null zusätzliche Instrumentierung — plus volle OpenTelemetry-Kompatibilität (OpenTelemetry ist der Industriestandard zum Sammeln von Performance-Daten, quasi der Universalstecker für Monitoring-Tools).
Jeder Anbieter hat dasselbe Problem gelöst: Zeig mir, was passiert ist. Und sie haben es gut gelöst. Du öffnest die Traces — Spans (einzelne Datensätze für jede Operation) für jeden LLM-Aufruf, jeden Tool Call, jeden Token (ein Wort-Fragment, das die KI verarbeitet). Wunderschöne Wasserfall-Diagramme. Präzise Latenz-Zahlen.
Aber hier bricht es zusammen. Ein Agent-Trace ist kein Microservice-Trace. Microservices — die kleinen, unabhängigen Programme, die die meisten Web-Apps antreiben — sind deterministisch: gleicher Input, gleicher Output, gleicher Bug, reproduzierbarer Fix. Agents sind nicht-deterministisch: Starte denselben Task nochmal, bekomm andere Entscheidungen bei Schritt 47. Der Agent hat Pfad A gewählt, aber du siehst nicht, wie Pfad B ausgesehen hätte, oder warum er bei 80.000 Token akkumuliertem Kontext (das "Arbeitsgedächtnis" der KI — alles, was sie bis dahin gelesen und generiert hat) A statt B genommen hat.
Wie Simon Willison in seinem Agentic Engineering Patterns Guide vom 3. April schrieb: "Wir können nicht sicherstellen, dass ein Agent korrekt handelt, oder Probleme diagnostizieren, wenn seine Operationen komplett undurchsichtig sind." Und Sentrys Post-Mortem vom 16. April hat genau den Fehlermodus getroffen: Jeder Span meldet status: ok, aber der Output ist völlig falsch. Der Bug lebt zwischen den Agents — ein Tool Call verschlechtert lautlos den Input für einen anderen Agent zwei Schritte später.
Eine falsche Agent-Entscheidung aus ihrem Trace zu debuggen ist wie eine menschliche Entscheidung aus dem Google-Kalender zu debuggen — du siehst, welche Meetings stattfanden, nicht was dabei gedacht wurde.
Der Workaround des Marktes: LLM-as-Judge — ein zweites KI-Modell bewerten lassen, was das erste entschieden hat. Braintrust (80 Millionen Dollar im Februar eingesammelt, bei einer Bewertung von 800 Millionen Dollar), LangSmiths Trajectory Evals und Arize Phoenix schrauben Evaluation auf Traces drauf. Aber jede Lösung bringt eine neue Abhängigkeit, zusätzliche Token-Kosten pro Entscheidungspunkt und — hier wird's richtig gut — das Judge-Modell hat dieselben architektonischen blinden Flecken wie der Agent, den es bewerten soll.
Der praktische Workaround heute: Zwinge deinen Agent dazu, bei jedem Verzweigungspunkt strukturiertes Reasoning auszugeben. Nicht nur den Tool-Call-Record, sondern eine JSON-Begründung:
import json
def log_decision(step: int, options: list[str], chosen: str, reasoning: str):
"""Emit a searchable reasoning trail at every branch."""
entry = {
"step": step,
"options_considered": options,
"chosen_action": chosen,
"reasoning": reasoning,
"context_tokens_used": get_current_context_length(),
}
logger.info("agent_decision", extra=entry)
return entry
# Inside your agent loop:
log_decision(
step=47,
options=["post to #general", "post to #engineering", "DM the assignee"],
chosen="DM the assignee",
reasoning="Ticket is labeled 'confidential', channel posting violates policy"
)
Ja, das kostet extra Tokens. Ja, es verlangsamt die Ausführung. Aber es ist der einzige Weg, eine durchsuchbare Reasoning-Spur zu bauen, die ein Mensch nach einem Fehler auditieren kann — denn die Traces allein verraten dir nicht, warum Schritt 47 schiefgegangen ist.
Jede Plattform hat "was ist passiert" geliefert. Keine hat "warum dieser Pfad und nicht jener" geliefert. Das erste Unternehmen, das Reasoning-native Observability baut — nicht Trace-native, Reasoning-native — wird den Debugging-Layer für jeden Production Agent besitzen, so wie Datadog das Monitoring für Microservices besitzt. Bis dahin liest du den Kalender deines Agents und rätst, was er sich dabei gedacht hat.





