Silnik kontekstu
Silnik kontekstu steruje tym, jak OpenClaw buduje kontekst modelu dla każdego uruchomienia. Decyduje, które wiadomości uwzględnić, jak podsumowywać starszą historię oraz jak zarządzać kontekstem na granicach subagentów. OpenClaw jest dostarczany z wbudowanym silnikiemlegacy. Wtyczki mogą rejestrować
alternatywne silniki, które zastępują aktywny cykl życia silnika kontekstu.
Szybki start
Sprawdź, który silnik jest aktywny:Instalowanie wtyczki silnika kontekstu
Wtyczki silnika kontekstu instaluje się tak samo jak każdą inną wtyczkę OpenClaw. Najpierw zainstaluj, a potem wybierz silnik w slocie:contextEngine na "legacy" (albo
całkowicie usuń ten klucz — "legacy" jest wartością domyślną).
Jak to działa
Za każdym razem, gdy OpenClaw uruchamia prompt modelu, silnik kontekstu uczestniczy w czterech punktach cyklu życia:- Ingest — wywoływane, gdy nowa wiadomość jest dodawana do sesji. Silnik może zapisać lub zindeksować wiadomość we własnym magazynie danych.
- Assemble — wywoływane przed każdym uruchomieniem modelu. Silnik zwraca uporządkowany
zestaw wiadomości (oraz opcjonalne
systemPromptAddition), które mieszczą się w budżecie tokenów. - Compact — wywoływane, gdy okno kontekstu jest pełne albo gdy użytkownik uruchamia
/compact. Silnik podsumowuje starszą historię, aby zwolnić miejsce. - After turn — wywoływane po zakończeniu uruchomienia. Silnik może utrwalić stan, uruchomić kompaktowanie w tle albo zaktualizować indeksy.
Cykl życia subagenta (opcjonalnie)
OpenClaw obecnie wywołuje jeden hook cyklu życia subagenta:- onSubagentEnded — sprzątanie po zakończeniu sesji subagenta albo po jej usunięciu.
prepareSubagentSpawn jest częścią interfejsu z myślą o przyszłym użyciu, ale
środowisko uruchomieniowe jeszcze go nie wywołuje.
Dodatek do promptu systemowego
Metodaassemble może zwrócić ciąg systemPromptAddition. OpenClaw
dodaje go na początku promptu systemowego dla danego uruchomienia. Umożliwia to silnikom wstrzykiwanie
dynamicznych wskazówek dotyczących przypominania, instrukcji pobierania lub podpowiedzi
zależnych od kontekstu bez konieczności używania statycznych plików workspace.
Silnik legacy
Wbudowany silniklegacy zachowuje oryginalne działanie OpenClaw:
- Ingest: no-op (menedżer sesji obsługuje utrwalanie wiadomości bezpośrednio).
- Assemble: pass-through (istniejący pipeline sanitize → validate → limit w środowisku uruchomieniowym obsługuje składanie kontekstu).
- Compact: deleguje do wbudowanego kompaktowania przez podsumowanie, które tworzy jedno podsumowanie starszych wiadomości i pozostawia nienaruszone ostatnie wiadomości.
- After turn: no-op.
systemPromptAddition.
Gdy plugins.slots.contextEngine nie jest ustawione (albo jest ustawione na "legacy"), ten
silnik jest używany automatycznie.
Silniki wtyczek
Wtyczka może zarejestrować silnik kontekstu przy użyciu API wtyczek:Interfejs ContextEngine
Wymagane składowe:| Składowa | Rodzaj | Cel |
|---|---|---|
info | Właściwość | Identyfikator silnika, nazwa, wersja i informacja, czy zarządza kompaktowaniem |
ingest(params) | Metoda | Zapis pojedynczej wiadomości |
assemble(params) | Metoda | Budowanie kontekstu dla uruchomienia modelu (zwraca AssembleResult) |
compact(params) | Metoda | Podsumowanie/redukcja kontekstu |
assemble zwraca AssembleResult zawierający:
messages— uporządkowane wiadomości do wysłania do modelu.estimatedTokens(wymagane,number) — szacowana przez silnik łączna liczba tokenów w złożonym kontekście. OpenClaw używa tego do podejmowania decyzji o progu kompaktowania i do raportowania diagnostycznego.systemPromptAddition(opcjonalne,string) — dodawane na początku promptu systemowego.
| Składowa | Rodzaj | Cel |
|---|---|---|
bootstrap(params) | Metoda | Inicjalizacja stanu silnika dla sesji. Wywoływane raz, gdy silnik po raz pierwszy widzi sesję (np. import historii). |
ingestBatch(params) | Metoda | Przetworzenie zakończonego turnu jako partii. Wywoływane po zakończeniu uruchomienia, ze wszystkimi wiadomościami z tego turnu naraz. |
afterTurn(params) | Metoda | Prace cyklu życia po uruchomieniu (utrwalanie stanu, uruchamianie kompaktowania w tle). |
prepareSubagentSpawn(params) | Metoda | Przygotowanie współdzielonego stanu dla sesji potomnej. |
onSubagentEnded(params) | Metoda | Sprzątanie po zakończeniu działania subagenta. |
dispose() | Metoda | Zwalnianie zasobów. Wywoływane przy zamykaniu gateway lub przeładowaniu wtyczki — nie per sesja. |
ownsCompaction
ownsCompaction kontroluje, czy wbudowane automatyczne kompaktowanie Pi w trakcie próby pozostaje
włączone dla uruchomienia:
true— silnik zarządza zachowaniem kompaktowania. OpenClaw wyłącza wbudowane w Pi automatyczne kompaktowanie dla tego uruchomienia, a implementacjacompact()w silniku odpowiada za/compact, kompaktowanie przy odzyskiwaniu po przepełnieniu oraz każde proaktywne kompaktowanie, które chce wykonać wafterTurn().falselub nieustawione — wbudowane automatyczne kompaktowanie Pi może nadal działać podczas wykonywania promptu, ale metodacompact()aktywnego silnika nadal jest wywoływana dla/compacti odzyskiwania po przepełnieniu.
ownsCompaction: false nie oznacza, że OpenClaw automatycznie wraca do
ścieżki kompaktowania silnika legacy.
Oznacza to, że istnieją dwa prawidłowe wzorce dla wtyczek:
- Tryb przejęcia — zaimplementuj własny algorytm kompaktowania i ustaw
ownsCompaction: true. - Tryb delegowania — ustaw
ownsCompaction: falsei spraw, abycompact()wywoływałodelegateCompactionToRuntime(...)zopenclaw/plugin-sdk/core, aby użyć wbudowanego zachowania kompaktowania OpenClaw.
compact() jest niebezpieczne dla aktywnego silnika nieprzejmującego kompaktowania, ponieważ
wyłącza normalną ścieżkę /compact i kompaktowania przy odzyskiwaniu po przepełnieniu dla
tego slotu silnika.
Dokumentacja config
kind: "context-engine" nadal mogą się ładować i uruchamiać swój kod
rejestracyjny; plugins.slots.contextEngine wybiera tylko to, który zarejestrowany identyfikator silnika
OpenClaw rozwiązuje, gdy potrzebuje silnika kontekstu.
Relacja z kompaktowaniem i pamięcią
- Kompaktowanie jest jedną z odpowiedzialności silnika kontekstu. Silnik legacy deleguje do wbudowanego podsumowywania OpenClaw. Silniki wtyczek mogą implementować dowolną strategię kompaktowania (podsumowania DAG, pobieranie wektorowe itd.).
- Wtyczki pamięci (
plugins.slots.memory) są oddzielone od silników kontekstu. Wtyczki pamięci zapewniają wyszukiwanie/pobieranie; silniki kontekstu sterują tym, co model widzi. Mogą działać razem — silnik kontekstu może używać danych z wtyczki pamięci podczas składania. - Przycinanie sesji (obcinanie starych wyników narzędzi w pamięci) nadal działa niezależnie od tego, który silnik kontekstu jest aktywny.
Wskazówki
- Użyj
openclaw doctor, aby sprawdzić, czy Twój silnik ładuje się poprawnie. - Jeśli przełączasz silniki, istniejące sesje nadal działają z obecną historią. Nowy silnik przejmuje obsługę przyszłych uruchomień.
- Błędy silnika są rejestrowane i pokazywane w diagnostyce. Jeśli silnik wtyczki
nie zarejestruje się albo nie można rozwiązać wybranego identyfikatora silnika, OpenClaw
nie przełącza się automatycznie na tryb zapasowy; uruchomienia kończą się błędem, dopóki nie naprawisz wtyczki albo
nie przełączysz
plugins.slots.contextEnginez powrotem na"legacy". - Do programowania używaj
openclaw plugins install -l ./my-engine, aby podlinkować lokalny katalog wtyczki bez kopiowania.
Powiązane
- Context — jak budowany jest kontekst dla turnów agenta
- Plugin Architecture — rejestrowanie wtyczek silnika kontekstu
- Compaction — podsumowywanie długich rozmów