Szybki start
Wklej doopenclaw.json, aby uzyskać bezpieślną konfigurację domyślną: plugin włączony, ograniczony do main,
tylko sesje wiadomości bezpośrednich, model dziedziczony z sesji.
plugins.entries.* (w tym active-memory.config) należy do kategorii konfiguracji
niewymagającej ponownego uruchomienia:
Gateway automatycznie przeładowuje środowisko uruchomieniowe pluginu i ręczne ponowne uruchomienie nie jest
potrzebne. Aby mimo to wymusić pełne ponowne uruchomienie, uruchom:
plugins.entries.active-memory.enabled: truewłącza pluginconfig.agents: ["main"]obejmuje tylko agentamainconfig.allowedChatTypes: ["direct"]ogranicza działanie do sesji wiadomości bezpośrednich (grupy/kanały należy włączyć jawnie)config.model(opcjonalnie) przypina dedykowany model przywoływania pamięci; brak ustawienia powoduje dziedziczenie bieżącego modelu sesjiconfig.modelFallbackjest używane tylko wtedy, gdy nie można rozstrzygnąć modelu jawnego ani dziedziczonegoconfig.fastModeopcjonalnie zastępuje tryb szybki dla przywoływania pamięci bez zmiany głównego agentaconfig.promptStyle: "balanced"jest wartością domyślną dla tryburecent- Active Memory nadal działa tylko w kwalifikujących się interaktywnych, trwałych sesjach czatu (zobacz Kiedy działa)
Jak to działa
Blokujący podagent może wywoływać tylko skonfigurowane narzędzia przywoływania pamięci (zobacz Narzędzia pamięci). Jeśli związek między zapytaniem a dostępnymi wspomnieniami jest słaby, zwracaNONE, a główna odpowiedź jest kontynuowana
bez dodatkowego kontekstu.
Active Memory jest funkcją wzbogacania konwersacji, a nie funkcją
wnioskowania obejmującą całą platformę:
Warto używać tej funkcji, gdy sesja jest trwała i przeznaczona dla użytkownika, agent ma
istotną pamięć długoterminową do przeszukania, a ciągłość/personalizacja są ważniejsze
niż pełna deterministyczność promptu: stałe preferencje, powtarzające się nawyki,
kontekst długoterminowy, który powinien pojawiać się naturalnie. Nie sprawdza się
w automatyzacji, procesach wewnętrznych, jednorazowych zadaniach API ani w miejscach, gdzie ukryta
personalizacja byłaby zaskakująca.
Kiedy działa
Oba warunki muszą zostać spełnione:- Włączenie w konfiguracji — plugin jest włączony, a identyfikator bieżącego agenta znajduje się w
config.agents. - Kwalifikacja środowiska uruchomieniowego — sesja jest kwalifikującą się interaktywną, trwałą sesją czatu, jej typ czatu jest dozwolony, a identyfikator konwersacji nie jest odfiltrowany.
Typy sesji
config.allowedChatTypes określa, w jakich rodzajach konwersacji może działać
Active Memory. Wartość domyślna:
direct, group, channel, explicit (sesje w stylu portalu
z nieprzezroczystym identyfikatorem sesji, na przykład agent:main:explicit:portal-123).
Sesje wiadomości bezpośrednich działają domyślnie; grupy, kanały i sesje jawne
trzeba włączyć:
config.allowedChatIds i config.deniedChatIds:
allowedChatIdsto lista dozwolonych rozstrzygniętych identyfikatorów konwersacji. Gdy nie jest pusta, Active Memory działa tylko w sesjach, których identyfikator konwersacji znajduje się na liście — zawęża to jednocześnie każdy dozwolony typ czatu, w tym wiadomości bezpośrednie. Aby zachować wszystkie wiadomości bezpośrednie, zawężając tylko grupy, dodaj także identyfikatory bezpośrednich rozmówców doallowedChatIdsalbo pozostawallowedChatTypesograniczone do testowanego wdrożenia grupowego/kanałowego.deniedChatIdsto lista zablokowanych, która zawsze ma pierwszeństwo przedallowedChatTypesiallowedChatIds.
chat_id/open_id, identyfikator czatu Telegram, identyfikator kanału Slack). Dopasowanie
nie uwzględnia wielkości liter. Jeśli allowedChatIds nie jest puste, a OpenClaw nie może
rozstrzygnąć identyfikatora konwersacji dla sesji, Active Memory pomija turę
zamiast zgadywać.
Przełącznik sesji
Wstrzymaj lub wznów Active Memory dla bieżącej sesji czatu bez edytowania konfiguracji:plugins.entries.active-memory.config.enabled ani innej konfiguracji globalnej.
Aby zamiast tego wstrzymać/wznowić działanie we wszystkich sesjach, użyj formy globalnej (wymaga
właściciela lub operator.admin):
plugins.entries.active-memory.config.enabled, ale
pozostawia włączone plugins.entries.active-memory.enabled, dzięki czemu polecenie pozostaje
dostępne i pozwala później ponownie włączyć Active Memory.
Jak zobaczyć działanie
Domyślnie Active Memory wstrzykuje ukryty, niezaufany prefiks promptu, który nie jest widoczny w zwykłej odpowiedzi. Włącz przełączniki sesji odpowiadające oczekiwanym danym wyjściowym:/verbose ondodaje wiersz stanu:🧩 Active Memory: status=ok elapsed=842ms query=recent summary=34 chars/trace ondodaje podsumowanie debugowania:🔎 Active Memory Debug: Lemon pepper wings with blue cheese.
/trace raw śledzony blok Model Input (User Role) pokazuje nieprzetworzony
ukryty prefiks:
Tryby zapytań
config.queryMode określa, jak dużą część konwersacji widzi blokujący podagent.
Należy wybrać najmniejszy tryb, który nadal dobrze obsługuje pytania uzupełniające; wraz ze wzrostem
rozmiaru kontekstu zwiększaj timeoutMs od message przez recent do full.
- message
- recent
- full
Wysyłana jest tylko najnowsza wiadomość użytkownika.Używaj, gdy potrzebne jest najszybsze działanie, najsilniejsze ukierunkowanie na przywoływanie
stałych preferencji, a kolejne tury nie wymagają kontekstu
konwersacji. Zacznij od około
3000–5000 ms dla config.timeoutMs.Style promptów
config.promptStyle określa, jak chętnie lub rygorystycznie podagent
zwraca wspomnienia:
Domyślne mapowanie, gdy
config.promptStyle nie jest ustawione:
config.promptStyle zawsze zastępuje to mapowanie.
Zasady modelu rezerwowego
Jeśliconfig.model nie jest ustawione, Active Memory rozstrzyga model w następującej kolejności:
config.modelFallbackPolicy to przestarzałe pole zgodności zachowane dla
starszych konfiguracji; nie zmienia już zachowania środowiska uruchomieniowego — modelFallback jest
wyłącznie ostatnią możliwością w powyższym łańcuchu, a nie mechanizmem awaryjnym środowiska uruchomieniowego,
który przełącza na inny model, gdy rozstrzygnięty model zgłosi błąd.
Zalecenia dotyczące szybkości
Pozostawienieconfig.model bez ustawienia (dziedziczenie modelu sesji) jest najbezpieczniejszą
opcją domyślną: uwzględnia istniejące preferencje dotyczące dostawcy, uwierzytelniania i modelu. Aby
zmniejszyć opóźnienie, należy zamiast tego użyć dedykowanego szybkiego modelu — jakość przywoływania jest ważna,
ale opóźnienie ma tutaj większe znaczenie niż w głównej ścieżce odpowiedzi, a zakres
narzędzi jest wąski (tylko narzędzia przywoływania pamięci).
Dobre opcje szybkich modeli:
cerebras/gpt-oss-120b, dedykowany model przywoływania o niskim opóźnieniugoogle/gemini-3-flash, rozwiązanie awaryjne o niskim opóźnieniu bez zmiany głównego modelu czatu- standardowy model sesji — w tym celu należy pozostawić
config.modelbez ustawienia
Konfiguracja Cerebras
chat/completions do wybranego
modelu — sama widoczność /v1/models tego nie gwarantuje.
Narzędzia pamięci
config.toolsAllow określa konkretne nazwy narzędzi, które blokujący podagent może
wywoływać. Wartości domyślne zależą od aktywnego dostawcy pamięci:
Jeśli żadne ze skonfigurowanych narzędzi nie jest dostępne lub uruchomienie podagenta
się nie powiedzie, Active Memory pomija przywoływanie w tej turze, a główna odpowiedź jest kontynuowana
bez kontekstu pamięci. W przypadku niestandardowych narzędzi przywoływania niepuste dane wyjściowe narzędzia
widoczne dla modelu są uznawane za dowód przywołania, chyba że pola wyniku strukturalnego
jawnie zgłaszają pusty wynik lub niepowodzenie.
toolsAllow przyjmuje tylko konkretne nazwy narzędzi pamięci: symbole wieloznaczne, wpisy group:*
oraz podstawowe narzędzia agenta (read, exec, message, web_search i
podobne) są po cichu odfiltrowywane przed uruchomieniem ukrytego podagenta.
Wbudowany memory-core
Jawne ustawienietoolsAllow nie jest potrzebne:
Pamięć LanceDB
Wybranie gniazda pamięci wystarcza, aby Active Memory używałomemory_recall:
Lossless Claw
Lossless Claw to zewnętrzny Plugin silnika kontekstu (openclaw plugins install @martian-engineering/lossless-claw) z własnymi narzędziami przywoływania. Najpierw należy skonfigurować go jako
silnik kontekstu; zobacz Silnik kontekstu. Następnie
należy wskazać Active Memory jego narzędzia:
lcm_expand do toolsAllow; Lossless Claw używa go jako
narzędzia niższego poziomu do delegowanego rozwijania, które nie jest przeznaczone dla nadrzędnego
podagenta Active Memory.
Zaawansowane mechanizmy awaryjne
Nie należą do zalecanej konfiguracji.config.thinking zastępuje poziom myślenia podagenta (domyślnie "off",
ponieważ Active Memory działa w ścieżce odpowiedzi, a dodatkowy czas myślenia bezpośrednio
zwiększa opóźnienie widoczne dla użytkownika):
config.fastMode zastępuje tryb szybki wyłącznie dla blokującego podagenta pamięci.
Należy użyć true, false lub "auto"; pozostawienie bez ustawienia powoduje odziedziczenie standardowych
wartości domyślnych agenta, sesji i modelu. "auto" używa skonfigurowanej wartości granicznej
fastAutoOnSeconds modelu przywoływania:
config.promptAppend dodaje instrukcje operatora po domyślnym monicie
i przed kontekstem konwersacji — należy połączyć je z niestandardowym toolsAllow, gdy
Plugin pamięci spoza rdzenia wymaga określonej kolejności narzędzi lub sposobu formułowania zapytań:
config.promptOverride całkowicie zastępuje domyślny monit (kontekst
konwersacji nadal jest później dołączany). Nie jest to zalecane, chyba że celowo
testowany jest inny kontrakt przywoływania — domyślny monit jest dostrojony tak, aby zwracać
NONE albo zwięzły kontekst faktów o użytkowniku dla głównego modelu:
Utrwalanie transkrypcji
Uruchomienia blokującego podagenta tworzą podczas wywołania rzeczywistą transkrypcjęsession.jsonl.
Domyślnie jest ona zapisywana w katalogu tymczasowym i usuwana natychmiast
po zakończeniu uruchomienia.
Aby zachować te transkrypcje na dysku do debugowania:
config.transcriptDir. Z tej opcji należy korzystać
ostrożnie: transkrypcje mogą szybko się gromadzić w intensywnie używanych sesjach, tryb zapytań
full powiela znaczną część kontekstu konwersacji, a transkrypcje te zawierają
ukryty kontekst monitu oraz przywołane wspomnienia.
Konfiguracja
Cała konfiguracja Active Memory znajduje się wplugins.entries.active-memory.
Przydatne pola dostrajania:
Zalecana konfiguracja
Rozpocznij odrecent:
/verbose on jako wiersza stanu oraz /trace on jako podsumowania debugowania
— oba są wysyłane jako wiadomość uzupełniająca po głównej odpowiedzi, a nie
przed nią. Następnie przejdź na message, aby zmniejszyć opóźnienie, lub na full, jeśli dodatkowy kontekst
jest wart wolniejszego działania subagenta.
Okres karencji zimnego startu
Przed wersją v2026.5.2 plugin niejawnie wydłużałtimeoutMs o dodatkowe 30000
ms podczas zimnego startu, dzięki czemu rozgrzewanie modelu, ładowanie indeksu osadzeń i pierwsze
przywołanie mogły korzystać z jednego większego budżetu. W wersji v2026.5.2 ten okres karencji przeniesiono za
jawną konfigurację setupGraceTimeoutMs: timeoutMs jest teraz domyślnie budżetem pracy
przywoływania, chyba że jawnie włączono tę opcję. Hak blokujący opakowuje ten budżet w
dwie stałe fazy: do 1500 ms na kontrolę wstępną sesji/konfiguracji przed rozpoczęciem
przywoływania, a następnie osobne, stałe 1500 ms na zakończenie przerwania i odzyskanie transkrypcji
po zatrzymaniu pracy przywoływania. Żaden z tych przydziałów nie wydłuża wykonywania modelu ani narzędzi.
Jeśli wykonano aktualizację z wersji v2026.4.x i dostosowano timeoutMs do starego
mechanizmu niejawnego okresu tolerancji (jednym z przykładów jest zalecana wartość początkowa
timeoutMs: 15000), należy ustawić setupGraceTimeoutMs: 30000, aby przywrócić efektywny
budżet sprzed wersji v5.2:
timeoutMs + setupGraceTimeoutMs + 3000 ms (skonfigurowany
budżet pracy przywoływania, plus maksymalnie 1500 ms na kontrolę wstępną, plus stały
limit 1500 ms na zakończenie po przywołaniu). Osadzony moduł uruchamiający przywoływanie korzysta
z tego samego efektywnego budżetu limitu czasu, dlatego setupGraceTimeoutMs obejmuje zarówno
zewnętrzny mechanizm nadzorujący tworzenie promptu, jak i wewnętrzne blokujące uruchomienie przywoływania.
W przypadku Gatewayów z ograniczonymi zasobami, gdzie opóźnienie zimnego startu jest akceptowanym
kompromisem, niższe wartości (5000-15000 ms) również działają — kompromisem jest większe
prawdopodobieństwo, że pierwsze przywołanie po ponownym uruchomieniu Gateway zwróci pusty wynik
przed zakończeniem rozgrzewania.
Debugowanie
Jeśli Active Memory nie pojawia się tam, gdzie jest oczekiwana:- Należy potwierdzić, że Plugin jest włączony w
plugins.entries.active-memory.enabled. - Należy potwierdzić, że identyfikator bieżącego agenta znajduje się na liście w
config.agents. - Należy potwierdzić, że test odbywa się w interaktywnej, trwałej sesji czatu.
- Należy włączyć
config.logging: truei obserwować logi Gateway. - Należy sprawdzić działanie samego wyszukiwania w pamięci za pomocą
openclaw status --deep.
maxSummaryChars. Jeśli Active Memory działa zbyt
wolno, należy obniżyć queryMode, obniżyć timeoutMs albo zmniejszyć liczbę ostatnich tur i
limity znaków na turę.
Typowe problemy
Active Memory korzysta z potoku przywoływania skonfigurowanego Pluginu pamięci, dlatego większość nieoczekiwanych wyników przywoływania wynika z problemów z dostawcą osadzeń, a nie z błędów Active Memory. Domyślna ścieżkamemory-core używa memory_search i memory_get;
gniazdo memory-lancedb używa memory_recall. Jeśli używany jest inny Plugin
pamięci, należy potwierdzić, że config.toolsAllow wskazuje narzędzia faktycznie
rejestrowane przez ten Plugin.
Dostawca osadzeń został zmieniony lub przestał działać
Dostawca osadzeń został zmieniony lub przestał działać
Jeśli
memorySearch.provider nie jest ustawione, OpenClaw używa osadzeń OpenAI. Należy ustawić
memorySearch.provider jawnie dla osadzeń Bedrock, DeepInfra, Gemini, GitHub
Copilot, LM Studio, lokalnych, Mistral, Ollama, Voyage lub zgodnych z OpenAI.
Jeśli skonfigurowany dostawca nie może działać, memory_search może
przejść na wyszukiwanie wyłącznie leksykalne; błędy w czasie działania po
wybraniu dostawcy nie powodują automatycznego przełączenia awaryjnego.Opcjonalne memorySearch.fallback należy ustawić tylko wtedy, gdy wymagane jest celowe
pojedyncze przełączenie awaryjne. Pełna lista dostawców i przykłady znajdują się w sekcji
Wyszukiwanie w pamięci.Przywoływanie jest wolne, puste lub niespójne
Przywoływanie jest wolne, puste lub niespójne
- Należy włączyć
/trace on, aby wyświetlać należące do Pluginu podsumowanie debugowania Active Memory w sesji. - Należy włączyć
/verbose on, aby po każdej odpowiedzi wyświetlać również wiersz stanu🧩 Active Memory: .... - W logach Gateway należy szukać
active-memory: ... start|done,memory sync failed (search-bootstrap)lub błędów osadzania dostawcy. - Należy uruchomić
openclaw status --deep, aby sprawdzić zaplecze wyszukiwania w pamięci i stan indeksu. - Jeśli używane jest
ollama, należy potwierdzić, że model osadzeń jest zainstalowany (ollama list).
Pierwsze przywołanie po ponownym uruchomieniu Gateway zwraca `status=timeout`
Pierwsze przywołanie po ponownym uruchomieniu Gateway zwraca `status=timeout`
W wersji v2026.5.2 i nowszych, jeśli konfiguracja zimnego startu (rozgrzanie modelu i wczytanie
indeksu osadzeń) nie zakończyła się przed uruchomieniem pierwszego przywołania, operacja
może przekroczyć skonfigurowany budżet
timeoutMs i zwrócić status=timeout
z pustym wynikiem. W logach Gateway pojawia się active-memory timeout after Nms
przy pierwszej kwalifikującej się odpowiedzi po ponownym uruchomieniu.Zalecana wartość setupGraceTimeoutMs znajduje się w sekcji Okres tolerancji zimnego startu
w części Zalecana konfiguracja.