OpenClaw verwaltet Sitzungen Ende-zu-Ende über diese Bereiche hinweg:Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- Sitzungs-Routing (wie eingehende Nachrichten einer
sessionKeyzugeordnet werden) - Session Store (
sessions.json) und was er erfasst - Transkript-Persistenz (
*.jsonl) und ihre Struktur - Transkript-Hygiene (Provider-spezifische Korrekturen vor Läufen)
- Kontextlimits (Kontextfenster im Vergleich zu erfassten Token)
- Compaction (manuelle und automatische Compaction) und wo Sie Arbeit vor der Compaction einhängen
- Stille Wartungsarbeiten (Speicherschreibvorgänge, die keine für Benutzer sichtbare Ausgabe erzeugen sollten)
- Sitzungsverwaltung
- Compaction
- Speicherübersicht
- Speichersuche
- Sitzungsbereinigung
- Transkript-Hygiene
Maßgebliche Quelle: der Gateway
OpenClaw ist um einen einzelnen Gateway-Prozess herum konzipiert, der den Sitzungszustand besitzt.- UIs (macOS-App, Web Control UI, TUI) sollten den Gateway nach Sitzungslisten und Token-Zählungen abfragen.
- Im Remote-Modus befinden sich Sitzungsdateien auf dem Remote-Host; „Ihre lokalen Mac-Dateien zu prüfen“ spiegelt nicht wider, was der Gateway verwendet.
Zwei Persistenzschichten
OpenClaw persistiert Sitzungen in zwei Schichten:-
Session Store (
sessions.json)- Schlüssel/Wert-Zuordnung:
sessionKey -> SessionEntry - Klein, veränderbar, sicher zu bearbeiten (oder Einträge zu löschen)
- Erfasst Sitzungsmetadaten (aktuelle Sitzungs-ID, letzte Aktivität, Umschalter, Token-Zähler usw.)
- Schlüssel/Wert-Zuordnung:
-
Transkript (
<sessionId>.jsonl)- Append-only-Transkript mit Baumstruktur (Einträge haben
id+parentId) - Speichert die eigentliche Unterhaltung + Tool-Aufrufe + Compaction-Zusammenfassungen
- Wird verwendet, um den Modellkontext für zukünftige Turns neu aufzubauen
- Große Debug-Prüfpunkte vor der Compaction werden übersprungen, sobald das aktive
Transkript die Größenobergrenze für Prüfpunkte überschreitet, wodurch eine zweite riesige
.checkpoint.*.jsonl-Kopie vermieden wird.
- Append-only-Transkript mit Baumstruktur (Einträge haben
mtimeMs/size gecacht und von gleichzeitigen Readern gemeinsam genutzt wird.
Speicherorte auf dem Datenträger
Pro Agent auf dem Gateway-Host:- Store:
~/.openclaw/agents/<agentId>/sessions/sessions.json - Transkripte:
~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl- Telegram-Themensitzungen:
.../<sessionId>-topic-<threadId>.jsonl
- Telegram-Themensitzungen:
src/config/sessions.ts auf.
Store-Wartung und Datenträgersteuerungen
Sitzungspersistenz hat automatische Wartungssteuerungen (session.maintenance) für sessions.json, Transkriptartefakte und Trajectory-Sidecars:
mode:warn(Standard) oderenforcepruneAfter: Altersgrenze für veraltete Einträge (Standard30d)maxEntries: Obergrenze für Einträge insessions.json(Standard500)resetArchiveRetention: Aufbewahrung für*.reset.<timestamp>-Transkriptarchive (Standard: wiepruneAfter;falsedeaktiviert die Bereinigung)maxDiskBytes: optionales Budget für das SitzungsverzeichnishighWaterBytes: optionales Ziel nach der Bereinigung (Standard80%vonmaxDiskBytes)
sessions.json-Dateien nicht für jedes Metadaten-Update geklont oder erneut gelesen werden. Laufzeitcode sollte updateSessionStore(...) oder updateSessionStoreEntry(...) bevorzugen; direkte Whole-Store-Speicherungen sind Kompatibilitäts- und Offline-Wartungstools. Wenn ein Gateway erreichbar ist, delegieren nicht als Dry Run ausgeführte openclaw sessions cleanup und openclaw agents delete Store-Mutationen an den Gateway, damit sich die Bereinigung in dieselbe Writer-Warteschlange einreiht; --store <path> ist der explizite Offline-Reparaturpfad für direkte Dateiwartung. Die maxEntries-Bereinigung wird für produktionsgroße Obergrenzen weiterhin gebündelt, sodass ein Store die konfigurierte Obergrenze kurzzeitig überschreiten kann, bevor die nächste High-Water-Bereinigung ihn wieder herunterschreibt. Session-Store-Lesevorgänge bereinigen oder begrenzen Einträge während des Gateway-Starts nicht; verwenden Sie Schreibvorgänge oder openclaw sessions cleanup --enforce für die Bereinigung. openclaw sessions cleanup --enforce wendet die konfigurierte Obergrenze weiterhin sofort an und bereinigt alte nicht referenzierte Transkript-, Prüfpunkt- und Trajectory-Artefakte, auch wenn kein Datenträgerbudget konfiguriert ist.
Die Wartung behält dauerhafte externe Unterhaltungspointer wie Gruppensitzungen
und Thread-bezogene Chatsitzungen bei, aber synthetische Laufzeiteinträge für Cron, Hooks,
Heartbeat, ACP und Sub-Agents können weiterhin entfernt werden, wenn sie das
konfigurierte Alter, die konfigurierte Anzahl oder das Datenträgerbudget überschreiten.
OpenClaw erstellt bei Gateway-Schreibvorgängen keine automatischen sessions.json.bak.*-Rotationssicherungen mehr. Der alte Schlüssel session.maintenance.rotateBytes wird ignoriert und openclaw doctor --fix entfernt ihn aus älteren Konfigurationen.
Transkript-Mutationen verwenden eine Sitzungsschreibsperre auf der Transkriptdatei. Der Sperrerwerb wartet bis zu
session.writeLock.acquireTimeoutMs, bevor ein Fehler wegen belegter Sitzung angezeigt wird; der Standardwert ist 60000
ms. Erhöhen Sie dies nur, wenn legitime Vorbereitungs-, Bereinigungs-, Compaction- oder Transkript-Mirror-Arbeit
auf langsamen Maschinen länger konkurriert. Erkennung veralteter Sperren und Warnungen zur maximalen Haltedauer bleiben separate Richtlinien.
Durchsetzungsreihenfolge für die Bereinigung des Datenträgerbudgets (mode: "enforce"):
- Entfernen Sie zuerst die ältesten archivierten, verwaisten Transkript- oder verwaisten Trajectory-Artefakte.
- Wenn die Nutzung weiterhin über dem Ziel liegt, entfernen Sie die ältesten Sitzungseinträge und ihre Transkript-/Trajectory-Dateien.
- Fahren Sie fort, bis die Nutzung bei oder unter
highWaterBytesliegt.
mode: "warn" meldet OpenClaw potenzielle Entfernungen, verändert den Store/die Dateien aber nicht.
Wartung bei Bedarf ausführen:
Cron-Sitzungen und Laufprotokolle
Isolierte Cron-Läufe erstellen ebenfalls Sitzungseinträge/Transkripte und haben eigene Aufbewahrungssteuerungen:cron.sessionRetention(Standard24h) bereinigt alte isolierte Cron-Laufsitzungen aus dem Session Store (falsedeaktiviert dies).cron.runLog.maxBytes+cron.runLog.keepLinesbereinigen~/.openclaw/cron/runs/<jobId>.jsonl-Dateien (Standardwerte:2_000_000Byte und2000Zeilen).
cron:<jobId>-Sitzungseintrag, bevor die neue Zeile geschrieben wird. Es übernimmt sichere
Einstellungen wie Thinking-/Fast-/Verbose-Einstellungen, Labels und explizite
vom Benutzer ausgewählte Modell-/Auth-Überschreibungen. Es verwirft umgebenden Unterhaltungskontext wie
Channel-/Gruppen-Routing, Sende- oder Warteschlangenrichtlinie, Elevation, Ursprung und ACP-
Laufzeitbindung, damit ein frischer isolierter Lauf keine veraltete Zustellung oder
Laufzeitberechtigung aus einem älteren Lauf erben kann.
Sitzungsschlüssel (sessionKey)
Ein sessionKey identifiziert, in welchem Unterhaltungs-Bucket Sie sich befinden (Routing + Isolation).
Gängige Muster:
- Haupt-/Direktchat (pro Agent):
agent:<agentId>:<mainKey>(Standardmain) - Gruppe:
agent:<agentId>:<channel>:group:<id> - Raum/Channel (Discord/Slack):
agent:<agentId>:<channel>:channel:<id>oder...:room:<id> - Cron:
cron:<job.id> - Webhook:
hook:<uuid>(sofern nicht überschrieben)
Sitzungs-IDs (sessionId)
Jede sessionKey verweist auf eine aktuelle sessionId (die Transkriptdatei, die die Unterhaltung fortsetzt).
Faustregeln:
- Reset (
/new,/reset) erstellt eine neuesessionIdfür diesesessionKey. - Täglicher Reset (standardmäßig 4:00 Uhr lokaler Zeit auf dem Gateway-Host) erstellt bei der nächsten Nachricht nach der Reset-Grenze eine neue
sessionId. - Leerlaufablauf (
session.reset.idleMinutesoder älteressession.idleMinutes) erstellt eine neuesessionId, wenn nach dem Leerlauffenster eine Nachricht eintrifft. Wenn täglich + Leerlauf beide konfiguriert sind, gewinnt das, was zuerst abläuft. - Systemereignisse (Heartbeat, Cron-Weckrufe, Exec-Benachrichtigungen, Gateway-Buchführung) können die Sitzungszeile verändern, verlängern aber nicht die Frische für den täglichen/Leerlauf-Reset. Reset-Rollover verwirft Systemereignis-Hinweise in der Warteschlange für die vorherige Sitzung, bevor der frische Prompt gebaut wird.
- Parent-Fork-Richtlinie verwendet den aktiven Branch von PI, wenn ein Thread- oder Subagent-Fork erstellt wird. Wenn dieser Branch zu groß ist, startet OpenClaw das Kind mit isoliertem Kontext, statt fehlzuschlagen oder unbrauchbare Historie zu übernehmen. Die Größenrichtlinie ist automatisch; die alte Konfiguration
session.parentForkMaxTokenswird vonopenclaw doctor --fixentfernt.
initSessionState() in src/auto-reply/reply/session.ts.
Session-Store-Schema (sessions.json)
Der Werttyp des Stores ist SessionEntry in src/config/sessions.ts.
Wichtige Felder (nicht vollständig):
sessionId: aktuelle Transkript-ID (der Dateiname wird daraus abgeleitet, sofernsessionFilenicht gesetzt ist)sessionStartedAt: Startzeitstempel für die aktuellesessionId; die Frische für den täglichen Reset verwendet dies. Alte Zeilen können ihn aus dem JSONL-Sitzungsheader ableiten.lastInteractionAt: Zeitstempel der letzten echten Benutzer-/Channel-Interaktion; die Frische für den Leerlauf-Reset verwendet dies, sodass Heartbeat-, Cron- und Exec-Ereignisse Sitzungen nicht am Leben halten. Alte Zeilen ohne dieses Feld fallen für die Leerlauf-Frische auf die wiederhergestellte Sitzungsstartzeit zurück.updatedAt: Zeitstempel der letzten Store-Zeilen-Mutation, verwendet für Auflistung, Bereinigung und Buchführung. Er ist nicht maßgeblich für die Frische beim täglichen/Leerlauf-Reset.sessionFile: optionale explizite Überschreibung des TranskriptpfadschatType:direct | group | room(hilft UIs und Senderichtlinie)provider,subject,room,space,displayName: Metadaten für Gruppen-/Channel-Beschriftung- Umschalter:
thinkingLevel,verboseLevel,reasoningLevel,elevatedLevelsendPolicy(sitzungsbezogene Überschreibung)
- Modellauswahl:
providerOverride,modelOverride,authProfileOverride
- Token-Zähler (Best-Effort / Provider-abhängig):
inputTokens,outputTokens,totalTokens,contextTokens
compactionCount: wie oft die automatische Compaction für diesen Sitzungsschlüssel abgeschlossen wurdememoryFlushAt: Zeitstempel für den letzten Speicher-Flush vor der CompactionmemoryFlushCompactionCount: Compaction-Zähler, als der letzte Flush lief
Transkriptstruktur (*.jsonl)
Transkripte werden vom SessionManager von @earendil-works/pi-coding-agent verwaltet.
Die Datei ist JSONL:
- Erste Zeile: Sitzungsheader (
type: "session", enthältid,cwd,timestamp, optionalparentSession) - Danach: Sitzungseinträge mit
id+parentId(Baum)
message: Benutzer-/Assistent-/ToolResult-Nachrichtencustom_message: von der Erweiterung injizierte Nachrichten, die in den Modellkontext eingehen (können in der UI verborgen werden)custom: Erweiterungszustand, der nicht in den Modellkontext eingehtcompaction: persistierte Compaction-Zusammenfassung mitfirstKeptEntryIdundtokensBeforebranch_summary: persistierte Zusammenfassung beim Navigieren in einem Baum-Branch
SessionManager, um sie zu lesen/schreiben.
Kontextfenster im Vergleich zu erfassten Token
Zwei unterschiedliche Konzepte sind wichtig:- Modell-Kontextfenster: harte Obergrenze pro Modell (Token, die für das Modell sichtbar sind)
- Session-Store-Zähler: fortlaufende Statistiken, die in
sessions.jsongeschrieben werden (verwendet für /status und Dashboards)
- Das Kontextfenster stammt aus dem Modellkatalog (und kann über die Konfiguration überschrieben werden).
contextTokensim Store ist ein Laufzeit-Schätz-/Berichtswert; behandeln Sie ihn nicht als strikte Garantie.
Compaction: was sie ist
Compaction fasst ältere Unterhaltung in einem persistiertencompaction-Eintrag im Transkript zusammen und lässt aktuelle Nachrichten intakt.
Nach der Compaction sehen zukünftige Turns:
- Die Compaction-Zusammenfassung
- Nachrichten nach
firstKeptEntryId
Compaction-Chunk-Grenzen und Tool-Paarung
Wenn OpenClaw ein langes Transkript in Compaction-Chunks aufteilt, hält es Assistant-Tool-Aufrufe mit ihren passendentoolResult-Einträgen zusammen.
- Wenn die Token-Anteil-Aufteilung zwischen einem Tool-Aufruf und seinem Ergebnis liegt, verschiebt OpenClaw die Grenze auf die Assistant-Tool-Aufruf-Nachricht, statt das Paar zu trennen.
- Wenn ein nachfolgender Tool-Ergebnis-Block den Chunk sonst über das Ziel bringen würde, bewahrt OpenClaw diesen ausstehenden Tool-Block auf und lässt das nicht zusammengefasste Ende intakt.
- Abgebrochene/fehlerhafte Tool-Aufruf-Blöcke halten keine ausstehende Aufteilung offen.
Wann Auto-Compaction erfolgt (Pi-Laufzeit)
Im eingebetteten Pi-Agenten wird Auto-Compaction in zwei Fällen ausgelöst:- Überlauf-Wiederherstellung: Das Modell gibt einen Kontextüberlauffehler zurück
(
request_too_large,context length exceeded,input exceeds the maximum number of tokens,input token count exceeds the maximum number of input tokens,input is too long for the model,ollama error: context length exceededund ähnliche Provider-förmige Varianten) → komprimieren → erneut versuchen. - Schwellenwert-Wartung: Nach einem erfolgreichen Turn, wenn:
contextTokens > contextWindow - reserveTokens
Dabei gilt:
contextWindowist das Kontextfenster des ModellsreserveTokensist der Puffer, der für Prompts + die nächste Modellausgabe reserviert ist
agents.defaults.compaction.maxActiveTranscriptBytes gesetzt ist und die
aktive Transkriptdatei diese Größe erreicht. Dies ist ein Dateigrößen-Schutz für lokale
Wiederöffnungskosten, keine rohe Archivierung: OpenClaw führt weiterhin normale semantische Compaction aus,
und sie erfordert truncateAfterCompaction, damit die komprimierte Zusammenfassung zu einem
neuen Nachfolge-Transkript werden kann.
Für eingebettete Pi-Runs fügt agents.defaults.compaction.midTurnPrecheck.enabled: true
einen optionalen Tool-Loop-Schutz hinzu. Nachdem ein Tool-Ergebnis angehängt wurde und vor dem
nächsten Modellaufruf schätzt OpenClaw den Prompt-Druck mit derselben Preflight-
Budgetlogik, die beim Turn-Start verwendet wird. Wenn der Kontext nicht mehr passt, führt der Schutz
keine Compaction innerhalb von Pis transformContext-Hook aus. Er löst ein strukturiertes
Mid-Turn-Precheck-Signal aus, stoppt die aktuelle Prompt-Übermittlung und lässt die
äußere Run-Schleife den bestehenden Wiederherstellungspfad verwenden: übergroße Tool-Ergebnisse kürzen,
wenn das ausreicht, oder den konfigurierten Compaction-Modus auslösen und erneut versuchen. Die
Option ist standardmäßig deaktiviert und funktioniert sowohl mit dem Compaction-Modus default als auch mit
safeguard, einschließlich Provider-gestützter Safeguard-Compaction.
Dies ist unabhängig von maxActiveTranscriptBytes: Der Bytegrößen-Schutz läuft,
bevor ein Turn geöffnet wird, während der Mid-Turn-Precheck später im eingebetteten Pi-Tool-
Loop läuft, nachdem neue Tool-Ergebnisse angehängt wurden.
Compaction-Einstellungen (reserveTokens, keepRecentTokens)
Pis Compaction-Einstellungen befinden sich in den Pi-Einstellungen:
- Wenn
compaction.reserveTokens < reserveTokensFloor, erhöht OpenClaw den Wert. - Die Standarduntergrenze beträgt
20000Tokens. - Setzen Sie
agents.defaults.compaction.reserveTokensFloor: 0, um die Untergrenze zu deaktivieren. - Wenn der Wert bereits höher ist, lässt OpenClaw ihn unverändert.
- Manuelles
/compactberücksichtigt ein explizitesagents.defaults.compaction.keepRecentTokensund behält Pis Schnittpunkt für das jüngste Ende bei. Ohne ein explizites Aufbewahrungsbudget bleibt manuelle Compaction ein harter Checkpoint, und der neu aufgebaute Kontext beginnt bei der neuen Zusammenfassung. - Setzen Sie
agents.defaults.compaction.midTurnPrecheck.enabled: true, um den optionalen Tool-Loop-Precheck nach neuen Tool-Ergebnissen und vor dem nächsten Modell- aufruf auszuführen. Dies ist nur ein Auslöser; die Zusammenfassungserstellung verwendet weiterhin den konfigurierten Compaction-Pfad. Sie ist unabhängig vonmaxActiveTranscriptBytes, was ein Bytegrößen-Schutz für das aktive Transkript beim Turn-Start ist. - Setzen Sie
agents.defaults.compaction.maxActiveTranscriptBytesauf einen Bytewert oder eine Zeichenfolge wie"20mb", um lokale Compaction vor einem Turn auszuführen, wenn das aktive Transkript groß wird. Dieser Schutz ist nur aktiv, wenntruncateAfterCompactionebenfalls aktiviert ist. Lassen Sie den Wert ungesetzt oder setzen Sie ihn auf0, um ihn zu deaktivieren. - Wenn
agents.defaults.compaction.truncateAfterCompactionaktiviert ist, rotiert OpenClaw das aktive Transkript nach der Compaction in eine komprimierte Nachfolger-JSONL. Das alte vollständige Transkript bleibt archiviert und wird vom Compaction-Checkpoint verlinkt, statt direkt überschrieben zu werden.
ensurePiCompactionReserveTokens() in src/agents/pi-settings.ts
(aufgerufen aus src/agents/pi-embedded-runner.ts).
Austauschbare Compaction-Provider
Plugins können überregisterCompactionProvider() in der Plugin-API einen Compaction-Provider registrieren. Wenn agents.defaults.compaction.provider auf eine registrierte Provider-ID gesetzt ist, delegiert die Safeguard-Extension die Zusammenfassung an diesen Provider statt an die eingebaute summarizeInStages-Pipeline.
provider: ID eines registrierten Compaction-Provider-Plugins. Nicht setzen, um die standardmäßige LLM-Zusammenfassung zu verwenden.- Das Setzen eines
providererzwingtmode: "safeguard". - Provider erhalten dieselben Compaction-Anweisungen und dieselbe Richtlinie zur Identifier-Erhaltung wie der eingebaute Pfad.
- Der Safeguard bewahrt nach der Provider-Ausgabe weiterhin den Kontext der jüngsten Turns und der Split-Turn-Suffixe.
- Die eingebaute Safeguard-Zusammenfassung destilliert vorherige Zusammenfassungen mit neuen Nachrichten erneut, statt die vollständige vorherige Zusammenfassung wörtlich zu bewahren.
- Der Safeguard-Modus aktiviert standardmäßig Qualitätsprüfungen für Zusammenfassungen; setzen Sie
qualityGuard.enabled: false, um das Verhalten „bei fehlerhaft geformter Ausgabe erneut versuchen“ zu überspringen. - Wenn der Provider fehlschlägt oder ein leeres Ergebnis zurückgibt, fällt OpenClaw automatisch auf die eingebaute LLM-Zusammenfassung zurück.
- Abbruch-/Timeout-Signale werden erneut ausgelöst (nicht verschluckt), um die Abbruchanforderung des Aufrufers zu respektieren.
src/plugins/compaction-provider.ts, src/agents/pi-hooks/compaction-safeguard.ts.
Benutzerseitig sichtbare Oberflächen
Sie können Compaction und Session-Status beobachten über:/status(in jeder Chat-Session)openclaw status(CLI)openclaw sessions/sessions --json- Gateway-Logs (
pnpm gateway:watchoderopenclaw logs --follow):embedded run auto-compaction start+complete - Ausführlicher Modus:
🧹 Auto-compaction complete+ Compaction-Anzahl
Stilles Housekeeping (NO_REPLY)
OpenClaw unterstützt „stille“ Turns für Hintergrundaufgaben, bei denen der Benutzer keine Zwischenausgabe sehen soll.
Konvention:
- Der Assistant beginnt seine Ausgabe mit dem exakten stillen Token
NO_REPLY/no_reply, um anzuzeigen: „keine Antwort an den Benutzer ausliefern“. - OpenClaw entfernt/unterdrückt dies in der Auslieferungsschicht.
- Die Unterdrückung des exakten stillen Tokens ist nicht case-sensitiv, sodass
NO_REPLYundno_replybeide zählen, wenn die gesamte Nutzlast nur aus dem stillen Token besteht. - Dies ist nur für echte Hintergrund-/Nicht-Auslieferungs-Turns gedacht; es ist keine Abkürzung für gewöhnliche handlungsorientierte Benutzeranfragen.
2026.1.10 unterdrückt OpenClaw außerdem Entwurfs-/Typing-Streaming, wenn ein
Teil-Chunk mit NO_REPLY beginnt, sodass stille Vorgänge während des Turns keine teilweise
Ausgabe preisgeben.
„Memory Flush“ vor der Compaction (implementiert)
Ziel: Bevor Auto-Compaction erfolgt, einen stillen agentischen Turn ausführen, der dauerhaften Zustand auf die Festplatte schreibt (z. B.memory/YYYY-MM-DD.md im Agent-Arbeitsbereich), damit Compaction keinen
kritischen Kontext löschen kann.
OpenClaw verwendet den Ansatz Pre-Threshold Flush:
- Session-Kontextnutzung überwachen.
- Wenn sie einen „weichen Schwellenwert“ überschreitet (unterhalb von Pis Compaction-Schwellenwert), eine stille „Speicher jetzt schreiben“-Anweisung an den Agenten ausführen.
- Das exakte stille Token
NO_REPLY/no_replyverwenden, sodass der Benutzer nichts sieht.
agents.defaults.compaction.memoryFlush):
enabled(Standard:true)model(optionale exakte Provider-/Modell-Überschreibung für den Flush-Turn, zum Beispielollama/qwen3:8b)softThresholdTokens(Standard:4000)prompt(Benutzernachricht für den Flush-Turn)systemPrompt(zusätzlicher System-Prompt, der für den Flush-Turn angehängt wird)
- Der Standard-Prompt/System-Prompt enthält einen
NO_REPLY-Hinweis, um die Auslieferung zu unterdrücken. - Wenn
modelgesetzt ist, verwendet der Flush-Turn dieses Modell, ohne die Fallback-Kette der aktiven Session zu erben, sodass lokales Housekeeping nicht stillschweigend auf ein kostenpflichtiges Konversationsmodell zurückfällt. - Der Flush läuft einmal pro Compaction-Zyklus (nachverfolgt in
sessions.json). - Der Flush läuft nur für eingebettete Pi-Sessions (CLI-Backends überspringen ihn).
- Der Flush wird übersprungen, wenn der Session-Arbeitsbereich schreibgeschützt ist (
workspaceAccess: "ro"oder"none"). - Siehe Memory für das Dateilayout und die Schreibmuster des Arbeitsbereichs.
session_before_compact-Hook in der Extension-API bereit, aber OpenClaws
Flush-Logik lebt derzeit auf der Gateway-Seite.
Checkliste zur Fehlerbehebung
- Falscher Session-Schlüssel? Beginnen Sie mit /concepts/session und bestätigen Sie den
sessionKeyin/status. - Abweichung zwischen Store und Transkript? Bestätigen Sie den Gateway-Host und den Store-Pfad aus
openclaw status. - Compaction-Spam? Prüfen Sie:
- Kontextfenster des Modells (zu klein)
- Compaction-Einstellungen (
reserveTokenszu hoch für das Modellfenster kann frühere Compaction verursachen) - aufgeblähte Tool-Ergebnisse: Session-Pruning aktivieren/anpassen
- Stille Turns lecken? Bestätigen Sie, dass die Antwort mit
NO_REPLYbeginnt (case-insensitives exaktes Token) und dass Sie einen Build verwenden, der den Streaming-Unterdrückungs-Fix enthält.