Alle Artikel
2026-03-259 min

Context Rot in OpenClaw-Agenten beheben: So bleibt das Gedächtnis deines Agenten scharf

MemoryContextContextEnginePerformanceOpenClaw

Was Context Rot ist und warum es jeden trifft

Ein Tweet von gestern Nacht fasst es gut zusammen:

> *"The reason it forgets tasks and hallucinates isn't actually a model intelligence issue, it's an architecture problem. By default, OpenClaw (like most agents right now) just appends everything into a giant context window or a flat vector database. Eventually, it hits 'context rot'"*

Das ist präzise. Und es passiert langsam genug, dass die meisten Leute es erst nach Wochen bemerken.

Die Symptome:

  • Der Agent gibt zunehmend vage Antworten auf Fragen, die er früher präzise beantwortet hat
  • Er "vergisst" Präferenzen oder Konventionen, die in MEMORY.md stehen
  • Tool-Calls werden häufiger falsch oder werden ausgelassen
  • Reaktionszeiten steigen (das Kontextfenster wird schwerer zu verarbeiten)
  • Halluzinationen nehmen zu — der Agent erfindet Fakten, statt zuzugeben, dass er es nicht weiß
  • Die Ursache: Wenn jede Session-Interaktion an eine wachsende History angehängt wird, verliert das Modell irgendwann den Überblick. LLMs haben ein "Aufmerksamkeitsbudget". Je länger der Kontext, desto schlechter die Präzision bei älteren Einträgen — das ist der "Lost in the Middle"-Effekt, gut dokumentiert in der Forschung.

    OpenClaw's Version 2026.3.7-beta.1 hat dafür eine direkte Lösung eingeführt: das ContextEngine-Plugin-Interface.

    ---

    Warum das Standard-Setup zu Context Rot führt

    In einem frischen OpenClaw-Setup ist die Architektur einfach: Jede Nachricht wird an die Session-History angehängt. Das funktioniert gut für die ersten Wochen.

    Das Problem entsteht durch Kumulation:

    ```

    Session 1: 500 Token History

    Session 10: 5.000 Token History

    Session 100: 50.000 Token History

    ```

    Dazu kommen MEMORY.md (die bei jeder Hauptsession geladen wird), tägliche Notizen, SOUL.md, USER.md — all das wird in das Kontextfenster gepumpt.

    Bei Claude Opus mit 200K Token Kontextfenster klingt das nach kein Problem. Aber:

    1. Kosten: 50.000 Token Input × 48 Heartbeats täglich = 2,4 Millionen Token — nur an einem Tag, nur für Kontext

    2. Qualität: LLMs performen schlechter bei sehr langen Kontexten. Die Informationen am Anfang werden faktisch "übersehen"

    3. Konflikte: MEMORY.md von heute kann MEMORY.md von vor drei Monaten widersprechen — der Agent weiß nicht, welche Version aktuell ist

    Kurz: ein aufgeblähtes Kontextfenster ist kein Zeichen von Erinnerung. Es ist ein Zeichen von Chaos.

    ---

    Die Lösung: Dreistufiges Gedächtnis

    Die sauberste Lösung kommt aus der Computer-Architektur, angewandt auf Agenten. Genauso wie ein Betriebssystem RAM, Cache und Festplatte trennt, trennen wir Agenten-Gedächtnis in drei Ebenen:

    Ebene 1: Core Memory (immer im Kontext)

    Kleine, dichte Information, die bei jedem Turn verfügbar ist:

  • SOUL.md — Persönlichkeit und Kern-Regeln (200-400 Wörter)
  • USER.md — Wer der Agent hilft (unter 500 Wörter)
  • Aktuelle Aufgabe / laufende Projekte (aus HEARTBEAT.md, nur die ersten 10 Punkte)
  • Diese Ebene darf nie größer als ~2.000 Token werden. Sie ist das "RAM" des Agenten.

    Ebene 2: Recall Memory (durchsuchbar, nicht blind injiziert)

    Sämtliche Session-History, tägliche Notizen, vergangene Cron-Ergebnisse — aber nicht automatisch im Kontext. Nur wenn relevant:

    ```

    # Statt: alle daily files in den Kontext laden

    # Besser: nur bei explizitem Bedarf

    memory_search("was haben wir letzte Woche über Deployment entschieden?")

    # → Gibt nur die relevanten Snippets zurück, nicht alles

    ```

    OpenClaw's `memory_search`-Tool macht genau das: semantische Suche über alle Memory-Dateien, gibt Top-Treffer zurück. Das sind ~500-1.000 Token statt 50.000.

    Ebene 3: Archival Memory (für Tiefensuche)

    Ältere Informationen, die selten gebraucht werden: Entscheidungen von vor 6 Monaten, abgeschlossene Projekte, abgelaufene Cron-Konfigurationen. Der Agent kann darauf zugreifen, wenn er explizit danach sucht — aber es wird nie automatisch geladen.

    In der Praxis: Alles, was älter als 30 Tage ist, wird aus den täglichen Notizen in eine komprimierte Archiv-Datei verschoben.

    ---

    Konkrete Implementierung: Was wir geändert haben

    Hier ist, was wir in unserem Setup konkret getan haben, um Context Rot zu beheben:

    Schritt 1: MEMORY.md komprimieren und regelmäßig bereinigen

    Das größte schnelle Gewinn: MEMORY.md ist über Monate gewachsen und enthält veraltete Informationen.

    ```bash

    # Wie groß ist MEMORY.md gerade?

    wc -w ~/.openclaw/workspace/MEMORY.md

    # → 8.432 Wörter — viel zu viel

    # Ziel: unter 1.000 Wörter

    # Dabei: was ist noch aktuell? Was kann weg?

    ```

    Wir haben einen monatlichen Cron-Job eingeführt:

    ```

    Zeitplan: 0 9 1 * * (erster Tag des Monats, 9 Uhr)

    Prompt:

    Führe eine MEMORY.md-Bereinigung durch:

    1. Lies MEMORY.md vollständig

    2. Prüfe jeden Eintrag: Ist er noch relevant? Ist er aktuell?

    3. Entferne Einträge, die:

    - Älter als 3 Monate und kein dauerhafter Kontext sind

    - Von abgeschlossenen Projekten handeln

    - Durch neuere Einträge überholt wurden

    4. Verdichte verwandte Einträge zu kompakten Zusammenfassungen

    5. Schreibe eine neue, komprimierte MEMORY.md (Ziel: unter 800 Wörter)

    6. Archiviere die alte Version als memory/archive/YYYY-MM.md

    ```

    Nach dem ersten Durchlauf: von 8.432 auf 743 Wörter. Keine relevante Information verloren — aber 90% weniger Token-Last.

    Schritt 2: Tägliche Notizen nur selektiv laden

    Standard-Verhalten in AGENTS.md ist, die letzten 2 Tage an Notizen zu laden:

    ```markdown

    3. Read memory/YYYY-MM-DD.md (today + yesterday) for recent context

    ```

    Das ist vernünftig. Aber bei Agenten mit vielen täglichen Einträgen (Sam: ~2.000 Wörter pro Tag) werden daraus schnell 4.000 Token nur für die letzten zwei Tage.

    Unsere Lösung: Strukturiertere tägliche Notizen mit klaren Abschnitten, damit der Agent nur relevante Teile laden muss:

    ```markdown

    # memory/2026-03-25.md

    Aktuelle Aufgaben (IMMER LESEN)

  • PR #247 wartet auf Review
  • Dimitrios braucht Monatsreport bis Freitag
  • Entscheidungen heute (NUR WENN RELEVANT)

  • Sam/fix-auth-flow gemerged (14:23)
  • ClickUp Task TC-89 auf "In Review" gesetzt
  • Detaillierte Logs (NUR AUF ANFRAGE)

    [vollständige Details...]

    ```

    Der Agent lädt nur den "Aktuelle Aufgaben"-Teil automatisch — den Rest nur wenn er explizit danach sucht.

    Schritt 3: Session-Grenzen respektieren

    Das unterschätzte Problem: Sehr lange Einzelsessions akkumulieren immer mehr Kontext. Jede Nachricht wird zur History, die beim nächsten Turn mitgeschickt wird.

    Für Cron-Jobs: Immer `sessionTarget: "isolated"` verwenden. Isolierte Sessions starten ohne History-Overhead.

    Für Hauptsessions (direkte Chats): Explizit neue Sessions starten bei großen Kontextwechseln:

    ```

    # Statt eine ewige Session

    # Beim Wechsel von "Projektplanung" zu "Code-Review":

    /restart # OpenClaw startet neue Session mit frischem Kontext

    # (die wichtigen Infos stehen in MEMORY.md — die wird neu geladen)

    ```

    Das klingt gegen-intuitiv (Kontext verlieren?), aber der Gewinn überwiegt: Die neue Session liest MEMORY.md frisch und hat vollen "Aufmerksamkeitsfokus".

    Schritt 4: ContextEngine konfigurieren (OpenClaw ≥ 2026.3.7)

    Mit dem ContextEngine-Update kommt ein explizites Interface für diese Konfigurationen. In `openclaw.json` oder der agent-spezifischen Konfiguration:

    ```json

    {

    "contextEngine": {

    "strategy": "tiered",

    "coreMemoryMaxTokens": 2000,

    "recallMemorySearchK": 5,

    "archiveAfterDays": 30,

    "compactSessionHistoryAfterTurns": 20,

    "hooks": {

    "onIngest": "scoped",

    "onAssemble": "progressive",

    "onCompact": "summarize"

    }

    }

    }

    ```

    Was die Hooks bedeuten:

  • `onIngest: "scoped"`: Neue Informationen werden nur in relevante Gedächtnisebenen geschrieben, nicht blind in alles
  • `onAssemble: "progressive"`: Kontext wird progressiv zusammengestellt — zuerst Core Memory, dann Recall nur wenn nötig
  • `onCompact: "summarize"`: Wenn die Session-History zu lang wird, wird sie zusammengefasst statt abgeschnitten
  • Wichtig: Das ContextEngine-Interface ist ab Version 2026.3.7-beta.1 verfügbar. Mit `openclaw --version` prüfen, ob du die richtige Version hast.

    ---

    Was sich nach der Umstellung verändert hat

    Wir haben diese Änderungen in unserem 6-Agenten-Setup vor zwei Wochen ausgerollt. Die messbaren Veränderungen:

    Token-Verbrauch: -58% (von ~180.000 Token täglich auf ~76.000 Token täglich — bei gleicher Aufgabenlast)

    Antwortqualität: Deutlich präziser bei Fragen zu Informationen, die mehr als 3 Tage alt sind. Vorher: vage oder falsch. Nachher: korrekt und mit Quellangabe aus den Memory-Dateien.

    Halluzinations-Rate: Stark gesunken. Hauptsächlich deshalb, weil der Agent jetzt seltener "rät" — er sucht stattdessen aktiv in den Memory-Dateien.

    Kosten: -58% bei Input-Token bedeutet bei unserem Mix (hauptsächlich Sonnet) eine monatliche Ersparnis von ~€85. Das ist direkt messbar in der Anthropic Console.

    ---

    Die "HyperStack"-Lösung aus der Community

    In der Reddit-Community r/ClaudeCode ist gerade ein anderer Ansatz viral gegangen: "HyperStack" — ein Community-Projekt speziell für OpenClaw.

    Statt die volle Konversationshistorie zu dumpen, speichert HyperStack Wissen in strukturierten "Cards" — ähnlich wie Karteikarten:

    ```json

    {

    "cards": [

    {

    "id": "arch-001",

    "topic": "GitHub-Workflow",

    "content": "Niemals direkt auf main pushen. Branches von dev, PRs auf dev.",

    "lastUpdated": "2026-03-10",

    "relevanceScore": 0.94

    },

    {

    "id": "pref-003",

    "topic": "Dimitrios Präferenzen",

    "content": "Kurze Updates bevorzugt. Keine langen Erklärungen wenn nicht gefragt.",

    "lastUpdated": "2026-02-28",

    "relevanceScore": 0.87

    }

    ]

    }

    ```

    Beim Assemblieren des Kontexts werden nur die Top-N Cards nach Relevanz eingebunden — Hybrid-Suche (semantic + keyword).

    Das ist ein valider Ansatz, aber aufwändiger einzurichten als die nativere OpenClaw-Lösung über memory_search + dreistufige Struktur. Für Teams, die sehr viel Wissen akkumulieren (>10.000 Facts), kann HyperStack die bessere Wahl sein.

    ---

    Schnell-Check: Wie schwer ist dein Context Rot?

    Hier ist ein einfacher Test, um zu verstehen wie stark das Problem bei dir ist:

    ```bash

    # 1. Wie groß ist deine MEMORY.md?

    wc -w ~/.openclaw/workspace/MEMORY.md

    # > 2.000 Wörter: dringend bereinigen

    # 500-2.000 Wörter: im akzeptablen Bereich

    # < 500 Wörter: gut

    # 2. Wie viele tägliche Notiz-Dateien gibt es?

    ls memory/20*.md | wc -l

    # > 60 Dateien ohne Archivierung: zu viel

    # Alles über 30 Tage sollte archiviert sein

    # 3. Wie groß sind die täglichen Notizen im Schnitt?

    wc -w memory/2026-03-*.md | tail -1

    # > 1.000 Wörter/Tag: zu viel Detail in den Notizen

    # 300-600 Wörter/Tag: vernünftig

    # 4. Testen: Frag den Agenten nach etwas, das er vor 2 Wochen getan hat

    # Gibt er eine präzise Antwort mit konkreten Details?

    # → Ja: kein akutes Problem

    # → Vage oder falsch: Context Rot ist aktiv

    ```

    ---

    Das Prinzip hinter allem: Scoped Memory Injection

    Das Kernprinzip, das all diese Maßnahmen verbindet:

    Injiziere nicht blind alles in jeden Prompt. Injiziere nur, was für den aktuellen Turn relevant ist.

    Das klingt einfach. Es ist einfach. Aber es erfordert, dass man die Standard-Konfiguration aktiv überschreibt — weil "alles immer laden" die sichere Standardwahl ist (man verliert nichts), aber nicht die gute.

    Die Dreistufigkeit — Core immer, Recall on-demand, Archiv on-demand — ist die praktische Umsetzung dieses Prinzips.

    Wenn du das in deinem Setup noch nicht hast: fang mit MEMORY.md an. Reduziere sie auf unter 800 Wörter. Der Unterschied wird sofort spürbar sein.

    ---

    Das vollständige Setup — ContextEngine-Konfiguration, MEMORY.md-Bereinigung als Cron-Job, die dreistufige Gedächtnisarchitektur für alle 6 Agenten und die exakten Prompts für die monatliche Bereinigung — ist im OpenClaw Setup Playbook dokumentiert.

    18 Kapitel, basierend auf echter Produktionserfahrung.

    Komplett auf Deutsch verfügbar. 🇩🇪

    Mehr erfahren?

    Unser Playbook enthält 18 detaillierte Kapitel — komplett auf Deutsch.

    Zum Playbook