83 Punkte von GN⁺ 2026-02-20 | Noch keine Kommentare. | Auf WhatsApp teilen
  • In Produkten mit lang laufenden Agenten ist Prompt Caching die Schlüsseltechnik, die Latenz und Kosten drastisch senkt, indem Berechnungen aus vorherigen Roundtrips wiederverwendet werden; die gesamte Architektur von Claude Code wurde darum herum entworfen
  • Caching funktioniert über Präfix-Matching, daher entscheidet die Reihenfolge – statische Inhalte nach vorn, dynamische Inhalte nach hinten – über Kosten und Performance
  • Wenn während einer Sitzung Tools oder Modelle gewechselt werden, wird der Cache ungültig, daher sind Umgehungsdesigns mit leichten Stubs und Tools für Zustandswechsel unverzichtbar statt Tools zu entfernen
  • Auch die bei Überschreitung des Kontextfensters ausgeführte Kompaktierung (Zusammenfassung/Verkleinerung) muss das Cache-Präfix des Elterndialogs teilen, um eine Kostenexplosion zu vermeiden
  • Die Cache-Trefferquote sollte wie Uptime überwacht werden; schon wenige Prozent Cache-Misses haben gravierende Auswirkungen auf Kosten und Latenz und sollten als Incident behandelt werden

  • „Cache Rules Everything Around Me“ gilt auch für Agenten
  • Prompt Caching macht Produkte mit lang laufenden Agenten wie Claude Code überhaupt erst möglich
  • Es reduziert latency und cost erheblich, indem Berechnungen aus vorherigen Roundtrips wiederverwendet werden

Wie Prompt Caching funktioniert und wie der System-Prompt angeordnet werden sollte

  • Prompt Caching arbeitet mit Präfix-(Prefix-)Matching; die API cached ab dem Beginn der Anfrage alles bis zu jedem cache_control-Haltepunkt
  • Entscheidend ist, gemeinsame Präfixe zwischen Anfragen zu maximieren; dafür müssen statische Inhalte zuerst und dynamische Inhalte später platziert werden
  • Die Reihenfolge in Claude Code:
    • Statischer System-Prompt und Tools (globales Caching)
    • Claude.MD (Caching innerhalb des Projekts)
    • Sitzungskontext (Caching innerhalb der Sitzung)
    • Dialognachrichten
  • Diese Reihenfolge ist überraschend fragil; eine Cache-Invalidierung kann entstehen durch
    detaillierte Zeitstempel im statischen System-Prompt,
    nicht deterministisches Shuffling der Tool-Reihenfolge,
    Aktualisierungen von Tool-Parametern
    usw.

Update-Strategie mit System Messages

  • Es gibt Situationen, in denen Informationen im Prompt veralten, etwa durch veränderte Zeitangaben oder Dateiänderungen des Nutzers
  • Den Prompt direkt zu aktualisieren führt zu Cache-Misses und kann die Kosten für Nutzer erhöhen
  • Stattdessen wird die Information im nächsten Turn als Nachricht übermittelt
    • Claude Code fügt Aktualisierungen in der nächsten User Message oder im nächsten Tool Result mit dem Tag <system-reminder> ein
    • So kann zum Beispiel ein Zeit-Update wie „Jetzt ist Mittwoch“ übermittelt werden
  • Mit solchen system messages lässt sich der Cache erhalten

Warum man das Modell nicht mitten in der Sitzung wechseln sollte

  • Der Prompt-Cache ist modellspezifisch, daher kann die Kostenberechnung beim Caching kontraintuitiv ausfallen
  • Beispiel: Wenn in einem 100k-Token-Dialog mit Opus für eine einfache Frage zu Haiku gewechselt wird, muss der Cache für Haiku von Grund auf neu aufgebaut werden; das kann teurer sein, als einfach mit Opus zu antworten
  • Wenn ein Modellwechsel nötig ist, ist ein Subagenten-Ansatz am besten: Opus bereitet eine „Handoff“-Nachricht für das andere Modell vor und übergibt sie
    • Der Explore-Agent von Claude Code nutzt diesen Ansatz bei Haiku

Während einer Sitzung keine Tools hinzufügen oder entfernen

  • Änderungen an der Tool-Menge sind eine der häufigsten Ursachen für Cache-Invalidierungen
  • Da Tools Teil des gecachten Präfixes sind, invalidiert schon das Hinzufügen oder Entfernen eines einzigen Tools den Cache des gesamten Dialogs
  • Plan Mode — cache-zentriertes Design

    • Intuitiver Ansatz: Wenn der Nutzer in den Plan Mode wechselt, nur noch Read-only-Tools übrig lassen → zerstört den Cache
    • Tatsächliches Design: Alle Tools bleiben immer in der Anfrage enthalten, und EnterPlanMode sowie ExitPlanMode werden als Tools implementiert
      • Beim Eintritt in den Plan Mode werden per System Message Anweisungen gegeben: nur die Codebasis erkunden, keine Dateien bearbeiten, nach Abschluss ExitPlanMode aufrufen
      • Die Tool-Definitionen ändern sich niemals
    • Zusätzlicher Vorteil: Da EnterPlanMode ein Tool ist, das das Modell selbst aufrufen kann, kann es beim Erkennen schwieriger Probleme autonom in den Plan Mode wechseln, ohne den Cache zu zerstören
  • Tool Search — Lazy Loading statt Entfernen

    • Claude Code kann Dutzende MCP-Tools laden; alle einzubeziehen ist teuer, sie zu entfernen zerstört den Cache
    • Lösung: ein defer_loading-Ansatz, bei dem statt des Entfernens nur leichte Stubs mit Namen (defer_loading: true) gesendet werden
      • Falls nötig, lädt das Modell das vollständige Schema über das ToolSearch-Tool
      • Da dieselben Stubs immer in derselben Reihenfolge vorhanden sind, bleibt das gecachte Präfix stabil
    • Mit der tool search-Funktion der API lässt sich das vereinfachen

Kontext-Forking — Kompaktierung (Compaction)

  • Wenn das Kontextfenster überschritten wird, wird eine Kompaktierung durchgeführt: Der Dialog wird zusammengefasst und eine neue Sitzung gestartet
  • Eine intuitive Implementierung (Zusammenfassung in einem separaten API-Aufruf mit anderem System-Prompt und anderen Tools) stimmt überhaupt nicht mit dem Cache-Präfix des Hauptdialogs überein, sodass für alle Input-Tokens der volle Preis anfällt
  • Cache-Safe-Forking-Lösung

    • Bei der Kompaktierung werden derselbe System-Prompt, derselbe User-Kontext, derselbe System-Kontext und dieselben Tool-Definitionen wie im Elterndialog verwendet
    • Die Dialognachrichten des Elterndialogs werden vorne platziert, der Kompaktierungs-Prompt wird am Ende als neue User Message angehängt
    • Aus Sicht der API sieht diese Anfrage fast genauso aus wie die letzte Anfrage des Elterndialogs; dadurch kann das gecachte Präfix wiederverwendet werden, und neu sind nur die Tokens des Kompaktierungs-Prompts
    • Innerhalb des Kontextfensters muss ein „Kompaktierungs-Puffer“ für die kompakte Nachricht und die Output-Tokens der Zusammenfassung reserviert werden
    • Auf Basis dieses Musters hat Anthropic Compaction direkt in die API integriert, sodass Entwickler es selbst anwenden können

Zusammenfassung der wichtigsten Lehren

  • Prompt Caching ist Präfix-Matching; wenn sich irgendwo im Präfix etwas ändert, wird alles danach ungültig → das gesamte System muss auf diese Einschränkung hin entworfen werden
  • Statt den System-Prompt zu ändern, ist es für den Erhalt des Caches vorteilhafter, während des Dialogs System Messages einzufügen
  • Tools oder Modelle nicht mitten im Dialog wechseln → Zustandswechsel als Tools modellieren und statt Tool-Entfernung Lazy Loading nutzen
  • Die Cache-Trefferquote muss wie Uptime überwacht werden; schon wenige Prozent Cache-Miss-Rate wirken sich dramatisch auf Kosten und Latenz aus
  • Fork-Operationen (Kompaktierung, Zusammenfassung, Skill-Ausführung) müssen das Präfix des Elterndialogs teilen, damit Cache-Treffer möglich sind
  • Wenn du einen Agenten baust, musst du von Tag eins an um Prompt Caching herum designen

Noch keine Kommentare.

Noch keine Kommentare.