Context Rot in OpenClaw-Agenten beheben: So bleibt das Gedächtnis deines Agenten scharf
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:
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:
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)
Entscheidungen heute (NUR WENN RELEVANT)
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:
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. 🇩🇪