Kontext-Engine
Eine Kontext-Engine steuert, wie OpenClaw für jeden Lauf Modellkontext erstellt. Sie entscheidet, welche Nachrichten einbezogen werden, wie ältere Verläufe zusammengefasst werden und wie Kontext über Subagent-Grenzen hinweg verwaltet wird. OpenClaw wird mit einer integriertenlegacy-Engine ausgeliefert. Plugins können
alternative Engines registrieren, die den aktiven Lebenszyklus der Kontext-Engine ersetzen.
Schnellstart
Prüfen Sie, welche Engine aktiv ist:Installieren eines Kontext-Engine-Plugins
Kontext-Engine-Plugins werden wie jedes andere OpenClaw-Plugin installiert. Installieren Sie es zuerst und wählen Sie dann die Engine im Slot aus:contextEngine auf "legacy" (oder
entfernen Sie den Schlüssel vollständig — "legacy" ist der Standardwert).
Funktionsweise
Jedes Mal, wenn OpenClaw einen Modell-Prompt ausführt, ist die Kontext-Engine an vier Lebenszyklus-Punkten beteiligt:- Ingest — wird aufgerufen, wenn der Sitzung eine neue Nachricht hinzugefügt wird. Die Engine kann die Nachricht in ihrem eigenen Datenspeicher speichern oder indexieren.
- Assemble — wird vor jedem Modelllauf aufgerufen. Die Engine gibt eine geordnete
Menge von Nachrichten zurück (und eine optionale
systemPromptAddition), die innerhalb des Token-Budgets bleibt. - Compact — wird aufgerufen, wenn das Kontextfenster voll ist oder wenn der Benutzer
/compactausführt. Die Engine fasst älteren Verlauf zusammen, um Speicherplatz freizugeben. - After turn — wird aufgerufen, nachdem ein Lauf abgeschlossen ist. Die Engine kann den Status persistieren, eine Hintergrund-Kompaktierung auslösen oder Indizes aktualisieren.
Subagent-Lebenszyklus (optional)
OpenClaw ruft derzeit einen Hook für den Subagent-Lebenszyklus auf:- onSubagentEnded — Aufräumen, wenn eine Subagent-Sitzung abgeschlossen wird oder bereinigt wird.
prepareSubagentSpawn ist als Teil der Schnittstelle für die zukünftige Verwendung vorhanden,
wird aber von der Laufzeit derzeit noch nicht aufgerufen.
Ergänzung des System-Prompts
Die Methodeassemble kann einen String systemPromptAddition zurückgeben. OpenClaw
stellt diesen dem System-Prompt für den Lauf voran. Dadurch können Engines
dynamische Recall-Hinweise, Retrieval-Anweisungen oder kontextabhängige Hinweise einfügen,
ohne statische Workspace-Dateien zu benötigen.
Die Legacy-Engine
Die integriertelegacy-Engine bewahrt das ursprüngliche Verhalten von OpenClaw:
- Ingest: no-op (der Sitzungsmanager übernimmt die Nachrichtenpersistenz direkt).
- Assemble: Durchreichen (die bestehende Pipeline sanitize → validate → limit in der Laufzeit übernimmt die Kontextzusammenstellung).
- Compact: delegiert an die integrierte Zusammenfassungs-Kompaktierung, die eine einzelne Zusammenfassung älterer Nachrichten erstellt und aktuelle Nachrichten unverändert beibehält.
- After turn: no-op.
systemPromptAddition bereit.
Wenn plugins.slots.contextEngine nicht gesetzt ist (oder auf "legacy" gesetzt ist), wird diese
Engine automatisch verwendet.
Plugin-Engines
Ein Plugin kann über die Plugin-API eine Kontext-Engine registrieren:Die ContextEngine-Schnittstelle
Erforderliche Mitglieder:| Member | Kind | Purpose |
|---|---|---|
info | Property | Engine-ID, Name, Version und ob sie die Kompaktierung besitzt |
ingest(params) | Method | Eine einzelne Nachricht speichern |
assemble(params) | Method | Kontext für einen Modelllauf erstellen (gibt AssembleResult zurück) |
compact(params) | Method | Kontext zusammenfassen/reduzieren |
assemble gibt ein AssembleResult zurück mit:
messages— die geordneten Nachrichten, die an das Modell gesendet werden.estimatedTokens(erforderlich,number) — die Schätzung der Engine für die Gesamtzahl der Tokens im zusammengestellten Kontext. OpenClaw verwendet dies für Entscheidungen über Kompaktierungsgrenzen und für Diagnoseberichte.systemPromptAddition(optional,string) — wird dem System-Prompt vorangestellt.
| Member | Kind | Purpose |
|---|---|---|
bootstrap(params) | Method | Engine-Status für eine Sitzung initialisieren. Wird einmal aufgerufen, wenn die Engine eine Sitzung zum ersten Mal sieht (z. B. Verlauf importieren). |
ingestBatch(params) | Method | Einen abgeschlossenen Turn als Batch aufnehmen. Wird nach Abschluss eines Laufs aufgerufen, mit allen Nachrichten dieses Turns auf einmal. |
afterTurn(params) | Method | Lebenszyklusarbeit nach dem Lauf (Status persistieren, Hintergrund-Kompaktierung auslösen). |
prepareSubagentSpawn(params) | Method | Gemeinsamen Status für eine Child-Sitzung einrichten. |
onSubagentEnded(params) | Method | Aufräumen, nachdem ein Subagent beendet wurde. |
dispose() | Method | Ressourcen freigeben. Wird während des Herunterfahrens des Gateways oder beim Neuladen des Plugins aufgerufen — nicht pro Sitzung. |
ownsCompaction
ownsCompaction steuert, ob Pis integrierte automatische In-Attempt-Kompaktierung
für den Lauf aktiviert bleibt:
true— die Engine besitzt das Kompaktierungsverhalten. OpenClaw deaktiviert Pis integrierte automatische Kompaktierung für diesen Lauf, und die Implementierungcompact()der Engine ist verantwortlich für/compact, Kompaktierung zur Overflow-Wiederherstellung und jede proaktive Kompaktierung, die sie inafterTurn()ausführen möchte.falseoder nicht gesetzt — Pis integrierte automatische Kompaktierung kann während der Prompt- Ausführung weiterhin laufen, aber die Methodecompact()der aktiven Engine wird weiterhin für/compactund Overflow-Wiederherstellung aufgerufen.
ownsCompaction: false bedeutet nicht, dass OpenClaw automatisch auf
den Kompaktierungspfad der Legacy-Engine zurückfällt.
Das bedeutet, dass es zwei gültige Plugin-Muster gibt:
- Owning-Modus — implementieren Sie Ihren eigenen Kompaktierungsalgorithmus und setzen Sie
ownsCompaction: true. - Delegating-Modus — setzen Sie
ownsCompaction: falseund lassen Siecompact()delegateCompactionToRuntime(...)ausopenclaw/plugin-sdk/coreaufrufen, um das integrierte Kompaktierungsverhalten von OpenClaw zu verwenden.
compact() ist für eine aktive nicht-besitzende Engine unsicher, weil es
den normalen Kompaktierungspfad für /compact und zur Overflow-Wiederherstellung für diesen
Engine-Slot deaktiviert.
Konfigurationsreferenz
kind: "context-engine" können weiterhin geladen werden und ihren Registrierungscode
ausführen; plugins.slots.contextEngine wählt nur aus, welche registrierte Engine-ID
OpenClaw auflöst, wenn eine Kontext-Engine benötigt wird.
Beziehung zu Kompaktierung und Memory
- Kompaktierung ist eine Verantwortung der Kontext-Engine. Die Legacy-Engine delegiert an die integrierte Zusammenfassung von OpenClaw. Plugin-Engines können jede beliebige Kompaktierungsstrategie implementieren (DAG-Zusammenfassungen, Vektorretrieval usw.).
- Memory-Plugins (
plugins.slots.memory) sind von Kontext-Engines getrennt. Memory-Plugins stellen Suche/Retrieval bereit; Kontext-Engines steuern, was das Modell sieht. Sie können zusammenarbeiten — eine Kontext-Engine könnte Memory- Plugin-Daten während der Zusammenstellung verwenden. Plugin-Engines, die den aktiven Memory- Prompt-Pfad verwenden möchten, solltenbuildMemorySystemPromptAddition(...)ausopenclaw/plugin-sdk/corebevorzugen; dies wandelt die aktiven Memory-Prompt-Abschnitte in eine sofort voranstellbaresystemPromptAdditionum. Wenn eine Engine eine Steuerung auf niedrigerer Ebene benötigt, kann sie weiterhin rohe Zeilen ausopenclaw/plugin-sdk/memory-host-coreüberbuildActiveMemoryPromptSection(...)abrufen. - Session-Pruning (das Kürzen alter Tool-Ergebnisse im Arbeitsspeicher) läuft weiterhin, unabhängig davon, welche Kontext-Engine aktiv ist.
Tipps
- Verwenden Sie
openclaw doctor, um zu prüfen, ob Ihre Engine korrekt geladen wird. - Wenn Sie Engines wechseln, werden bestehende Sitzungen mit ihrem aktuellen Verlauf fortgeführt. Die neue Engine übernimmt für zukünftige Läufe.
- Engine-Fehler werden protokolliert und in Diagnosen angezeigt. Wenn sich eine Plugin-Engine
nicht registrieren lässt oder die ausgewählte Engine-ID nicht aufgelöst werden kann, fällt OpenClaw
nicht automatisch zurück; Läufe schlagen fehl, bis Sie das Plugin reparieren oder
plugins.slots.contextEnginewieder auf"legacy"setzen. - Für die Entwicklung verwenden Sie
openclaw plugins install -l ./my-engine, um ein lokales Plugin-Verzeichnis zu verknüpfen, ohne es zu kopieren.
Verwandt
- Kontext — wie Kontext für Agent-Turns erstellt wird
- Plugin-Architektur — Registrieren von Kontext-Engine-Plugins
- Kompaktierung — Zusammenfassen langer Konversationen