Skip to main content
Ta strona zawiera listę wszystkich opcji konfiguracji wyszukiwania w pamięci OpenClaw. Omówienia koncepcyjne znajdują się tutaj:

Omówienie pamięci

Jak działa pamięć.

Wbudowany silnik

Domyślny backend SQLite.

Silnik QMD

Lokalny proces pomocniczy.

Wyszukiwanie w pamięci

Potok wyszukiwania i dostrajanie.

Active Memory

Podagent pamięci dla sesji interaktywnych.
Wszystkie ustawienia wyszukiwania w pamięci znajdują się w sekcji agents.defaults.memorySearch pliku openclaw.json (lub w zastępującej ją sekcji agents.list[].memorySearch dla poszczególnych agentów), chyba że zaznaczono inaczej.
Przełącznik funkcji Active Memory i konfiguracja podagenta znajdują się w sekcji plugins.entries.active-memory, a nie memorySearch.Active Memory korzysta z modelu dwóch warunków:
  1. Plugin musi być włączony i wskazywać identyfikator bieżącego agenta
  2. żądanie musi pochodzić z kwalifikującej się interaktywnej, trwałej sesji czatu
Model aktywacji, konfigurację należącą do Pluginu, utrwalanie transkrypcji i bezpieczny wzorzec wdrażania opisano w sekcji Active Memory.

Wybór dostawcy

Gdy provider nie jest ustawione, OpenClaw używa osadzeń OpenAI. Aby użyć Bedrock, DeepInfra, Gemini, GitHub Copilot, Mistral, Ollama, Voyage, lokalnego modelu GGUF lub punktu końcowego /v1/embeddings zgodnego z OpenAI, należy jawnie ustawić provider. Starsze konfiguracje, które nadal zawierają provider: "auto", są rozpoznawane jako openai.
Zmiana dostawcy osadzania, modelu, ustawień dostawcy, źródeł, zakresu, dzielenia na fragmenty lub tokenizera może spowodować niezgodność istniejącego indeksu wektorowego SQLite. Zamiast automatycznie ponownie generować wszystkie osadzenia, OpenClaw wstrzymuje wyszukiwanie wektorowe i zgłasza ostrzeżenie dotyczące tożsamości indeksu. Gdy wszystko będzie gotowe, indeks należy przebudować za pomocą openclaw memory status --index --agent <id> lub openclaw memory index --force --agent <id>.
Gdy provider nie jest ustawione, obecne jest starsze provider: "auto" lub provider: "none" celowo wybiera tryb wyłącznie FTS, przywoływanie z pamięci może nadal korzystać z leksykalnego rankingu FTS, gdy osadzenia są niedostępne. Jawnie określeni dostawcy nielokalni stosują zasadę bezpiecznego odrzucania. Jeśli memorySearch.provider zostanie ustawione na konkretnego dostawcę korzystającego ze zdalnego backendu, takiego jak Bedrock, DeepInfra, Gemini, GitHub Copilot, LM Studio, Mistral, Ollama, OpenAI, Voyage lub niestandardowy dostawca zgodny z OpenAI, a dostawca ten będzie niedostępny w czasie działania, memory_search zwróci wynik wskazujący niedostępność zamiast niejawnie używać przywoływania wyłącznie FTS. Należy poprawić konfigurację dostawcy lub uwierzytelniania, przełączyć się na osiągalnego dostawcę albo ustawić provider: "none", jeśli celowo ma być używane przywoływanie wyłącznie FTS.

Niestandardowe identyfikatory dostawców

memorySearch.provider może wskazywać niestandardowy wpis models.providers.<id> dla adapterów dostawców przeznaczonych do pamięci, takich jak ollama, albo dla interfejsów API modeli zgodnych z OpenAI, takich jak openai-responses / openai-completions. OpenClaw rozpoznaje właściciela api tego dostawcy na potrzeby adaptera osadzania, zachowując niestandardowy identyfikator dostawcy do obsługi punktu końcowego, uwierzytelniania i prefiksu modelu. Dzięki temu konfiguracje z wieloma procesorami GPU lub hostami mogą przeznaczyć określony lokalny punkt końcowy na osadzenia pamięci:

Rozpoznawanie klucza API

Zdalne osadzenia wymagają klucza API. Bedrock używa zamiast niego domyślnego łańcucha poświadczeń AWS SDK (ról instancji, SSO, kluczy dostępu lub klucza API Bedrock).
OAuth Codex obejmuje tylko czat i uzupełnienia oraz nie spełnia wymagań żądań osadzania.

Konfiguracja zdalnego punktu końcowego

Należy użyć provider: "openai-compatible" dla ogólnego serwera /v1/embeddings zgodnego z OpenAI, który nie powinien dziedziczyć globalnych poświadczeń czatu OpenAI.
string
Niestandardowy bazowy adres URL interfejsu API.
string
Zastępczy klucz API.
object
Dodatkowe nagłówki HTTP (scalane z wartościami domyślnymi dostawcy).

Konfiguracja właściwa dla dostawcy

Zmiana modelu lub outputDimensionality zmienia tożsamość indeksu. OpenClaw wstrzymuje wyszukiwanie wektorowe do czasu jawnego przebudowania indeksu pamięci.
Punkty końcowe osadzania zgodne z OpenAI mogą opcjonalnie używać właściwych dla dostawcy pól żądania input_type. Jest to przydatne w przypadku asymetrycznych modeli osadzania, które wymagają różnych etykiet dla osadzeń zapytań i dokumentów.
Zmiana tych wartości wpływa na tożsamość pamięci podręcznej osadzeń używanej podczas wsadowego indeksowania przez dostawcę. Jeśli model nadrzędny traktuje te etykiety odmiennie, po zmianie należy ponownie zindeksować pamięć.

Konfiguracja osadzania Bedrock

Bedrock korzysta z domyślnego łańcucha poświadczeń AWS SDK oraz tokenu okaziciela sprawdzanego przez OpenClaw, dlatego w konfiguracji nie są przechowywane klucze API. Jeśli OpenClaw działa na EC2 z rolą instancji obsługującą Bedrock, wystarczy ustawić dostawcę i model:
Obsługiwane modele (z wykrywaniem rodziny i domyślnymi wymiarami):Warianty z sufiksem przepustowości (np. amazon.titan-embed-text-v1:2:8k) oraz identyfikatory profili wnioskowania z prefiksem regionu (np. us.amazon.titan-embed-text-v2:0) dziedziczą konfigurację modelu bazowego.Region: rozwiązywany w następującej kolejności: nadpisanie memorySearch.remote.baseUrl, konfiguracja models.providers.amazon-bedrock.baseUrl, AWS_REGION, AWS_DEFAULT_REGION, a następnie wartość domyślna us-east-1.Uwierzytelnianie: OpenClaw najpierw sprawdza AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY lub AWS_BEARER_TOKEN_BEDROCK, a następnie przechodzi do standardowego domyślnego łańcucha dostawców poświadczeń AWS SDK:
  1. Zmienne środowiskowe (AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY), chyba że ustawiono również AWS_PROFILE
  2. SSO (tylko gdy skonfigurowano pola SSO)
  3. Współdzielone pliki poświadczeń i konfiguracji (fromIni, w tym AWS_PROFILE)
  4. Proces poświadczeń (credential_process w pliku konfiguracyjnym AWS)
  5. Poświadczenia tokena tożsamości internetowej
  6. Poświadczenia metadanych instancji ECS lub EC2
Uprawnienia IAM: rola lub użytkownik IAM wymaga:
Aby zastosować zasadę najmniejszych uprawnień, należy ograniczyć zakres InvokeModel do określonego modelu:
Najpierw należy zainstalować oficjalnego dostawcę llama.cpp: openclaw plugins install @openclaw/llama-cpp-provider. Model domyślny: embeddinggemma-300m-qat-Q8_0.gguf (~0,6 GB, pobierany automatycznie). Wersje ze źródeł nadal wymagają zatwierdzenia kompilacji natywnej: pnpm approve-builds, a następnie pnpm rebuild node-llama-cpp.Samodzielnego CLI można użyć do zweryfikowania tej samej ścieżki dostawcy, której używa Gateway:
Wartości liczbowe local.contextSize wpływają również na automatyczne rozmieszczanie warstw GPU przez node-llama-cpp, dzięki czemu wagi modelu i żądany kontekst osadzania są dopasowywane łącznie. Po załadowaniu środowiska uruchomieniowego openclaw memory status --deep raportuje ostatnio znane informacje o backendzie llama.cpp, urządzeniu, odciążaniu, żądanym kontekście oraz opatrzone znacznikiem czasu informacje o pamięci; pasywne sprawdzanie stanu nie ładuje modelu.Dla lokalnych osadzeń GGUF należy jawnie ustawić provider: "local". Odwołania do modeli hf: oraz HTTP(S) są obsługiwane w jawnych konfiguracjach lokalnych (za pośrednictwem mechanizmu rozwiązywania modeli node-llama-cpp), ale nie zmieniają domyślnego dostawcy.

Limit czasu osadzania w procesie

number
Zastępuje limit czasu dla przetwarzanych w procesie partii osadzania podczas indeksowania pamięci.Brak ustawienia powoduje użycie wartości domyślnej dostawcy: 600 sekund dla dostawców lokalnych/samodzielnie hostowanych, takich jak local, ollama i lmstudio, oraz 120 sekund dla dostawców hostowanych. Wartość tę należy zwiększyć, gdy lokalne partie osadzania obciążające procesor działają prawidłowo, ale wolno.

Zachowanie indeksowania

Wszystkie opcje znajdują się w memorySearch.sync, chyba że zaznaczono inaczej:
number
Rozmiar fragmentu w tokenach używany podczas dzielenia źródeł pamięci przed osadzaniem (wartość domyślna: 400).
number
Nakładanie się tokenów między sąsiednimi fragmentami w celu zachowania kontekstu w pobliżu granic podziału (wartość domyślna: 80).
Zmiana chunking.tokens lub chunking.overlap zmienia granice fragmentów i unieważnia istniejącą tożsamość indeksu (zobacz ostrzeżenie w sekcji Wybór dostawcy).

Konfiguracja wyszukiwania hybrydowego

Wszystkie opcje w memorySearch.query: Oraz w memorySearch.query.hybrid:

Pełny przykład


Dodatkowe ścieżki pamięci

Ścieżki mogą być bezwzględne lub względne wobec obszaru roboczego. Katalogi są skanowane rekursywnie w poszukiwaniu plików .md. Obsługa dowiązań symbolicznych zależy od aktywnego backendu: wbudowany silnik pomija dowiązania symboliczne, natomiast QMD postępuje zgodnie z zachowaniem bazowego skanera QMD. Do wyszukiwania transkrypcji między agentami w zakresie agenta należy użyć agents.list[].memorySearch.qmd.extraCollections zamiast memory.qmd.paths. Te dodatkowe kolekcje mają ten sam kształt { path, name, pattern? }, ale są scalane osobno dla każdego agenta i mogą zachowywać jawne nazwy współdzielone, gdy ścieżka wskazuje poza bieżący obszar roboczy. Jeśli ta sama rozwiązana ścieżka występuje zarówno w memory.qmd.paths, jak i memorySearch.qmd.extraCollections, QMD zachowuje pierwszy wpis i pomija duplikat.

Pamięć multimodalna (Gemini)

Indeksowanie obrazów i dźwięku wraz z Markdown przy użyciu Gemini Embedding 2:
Dotyczy tylko plików w extraPaths. Domyślne źródła pamięci nadal obsługują wyłącznie Markdown. Wymaga gemini-embedding-2-preview. fallback musi mieć wartość "none".
Obsługiwane formaty: .jpg, .jpeg, .png, .webp, .gif, .heic, .heif (obrazy); .mp3, .wav, .ogg, .opus, .m4a, .aac, .flac (dźwięk).

Pamięć podręczna osadzeń

Zapobiega ponownemu generowaniu osadzeń niezmienionego tekstu podczas ponownego indeksowania lub aktualizacji transkrypcji. Pozostaw maxEntries bez wartości, aby pamięć podręczna była nieograniczona; ustaw tę wartość, gdy ograniczenie przyrostu zajętości dysku jest ważniejsze niż maksymalna szybkość ponownego indeksowania. Po ustawieniu, gdy pamięć podręczna przekroczy limit, najstarsze wpisy (według czasu ostatniej aktualizacji) są usuwane jako pierwsze.

Indeksowanie wsadowe

Dostępne dla gemini, openai i voyage. Przetwarzanie wsadowe OpenAI jest zwykle najszybsze i najtańsze w przypadku dużego uzupełniania danych historycznych. remote.nonBatchConcurrency steruje bezpośrednimi wywołaniami osadzania używanymi przez dostawców lokalnych/samodzielnie hostowanych oraz dostawców hostowanych, gdy ich wsadowe API nie są aktywne. W przypadku indeksowania niewsadowego Ollama domyślnie używa 1, aby nie przeciążać mniejszych hostów lokalnych; na większych maszynach można ustawić wyższą wartość. Jest to ustawienie odrębne od sync.embeddingBatchTimeoutSeconds, które steruje limitem czasu bezpośrednich wywołań osadzania.

Wyszukiwanie w pamięci sesji (eksperymentalne)

Indeksuj transkrypcje sesji i udostępniaj je za pośrednictwem memory_search:
Indeksowanie sesji wymaga jawnego włączenia i działa asynchronicznie. Wyniki mogą być nieznacznie nieaktualne. Dzienniki sesji znajdują się na dysku, dlatego dostęp do systemu plików należy traktować jako granicę zaufania.
Trafienia z transkrypcji sesji również podlegają ustawieniu tools.sessions.visibility. Domyślna widoczność tree udostępnia tylko bieżącą sesję i sesje przez nią uruchomione. Aby przywołać z innej sesji niepowiązaną sesję tego samego agenta wysłaną przez Gateway, na przykład wiadomość prywatną, należy świadomie rozszerzyć widoczność do agent (lub all tylko wtedy, gdy wymagane jest również przywoływanie między agentami i zezwalają na to zasady komunikacji między agentami). Poniższe przykłady umieszczają te ustawienia w agents.defaults. Można także zastosować równoważne ustawienia memorySearch w nadpisaniu dla konkretnego agenta, jeśli tylko jeden agent ma indeksować i przeszukiwać transkrypcje sesji. Aby umożliwić przywoływanie z Gateway do wiadomości prywatnych w obrębie tego samego agenta:
Podczas korzystania z QMD ustawienia agents.defaults.memorySearch.experimental.sessionMemory i sources: ["sessions"] same w sobie nie eksportują transkrypcji do QMD. Należy również ustawić memory.qmd.sessions.enabled: true.

Akceleracja wektorowa SQLite (sqlite-vec)

Gdy sqlite-vec jest niedostępne, OpenClaw automatycznie przechodzi na obliczanie podobieństwa cosinusowego w procesie.

Przechowywanie indeksów

Wbudowane indeksy pamięci znajdują się w bazie danych SQLite OpenClaw każdego agenta pod ścieżką agents/<agentId>/agent/openclaw-agent.sqlite.

Konfiguracja backendu QMD

Ustaw memory.backend = "qmd", aby włączyć. Wszystkie ustawienia QMD znajdują się w memory.qmd: searchMode: "search" korzysta wyłącznie z wyszukiwania leksykalnego/BM25. W tym trybie OpenClaw nie wykonuje semantycznych testów gotowości wektorowej ani obsługi osadzeń QMD, również podczas memory status --deep; vsearch i query nadal wymagają gotowości wektorowej i osadzeń QMD. rerank: false zmienia tylko tryb query QMD i wymaga QMD 2.1 lub nowszego. W bezpośrednim trybie CLI OpenClaw przekazuje --no-rerank; w trybie MCP obsługiwanym przez mcporter przekazuje rerank: false do ujednoliconego narzędzia zapytań QMD. Pozostaw tę wartość nieustawioną, aby używać domyślnego mechanizmu ponownego szeregowania zapytań QMD. OpenClaw preferuje aktualne formaty kolekcji i zapytań MCP QMD, ale zachowuje obsługę starszych wersji QMD, próbując w razie potrzeby zgodnych flag wzorców kolekcji i starszych nazw narzędzi MCP. Gdy QMD deklaruje obsługę wielu filtrów kolekcji, kolekcje tego samego źródła są przeszukiwane w jednym procesie QMD; starsze kompilacje QMD zachowują ścieżkę zgodności dla poszczególnych kolekcji. To samo źródło oznacza, że kolekcje trwałej pamięci (domyślne pliki pamięci oraz ścieżki niestandardowe) są grupowane razem, natomiast kolekcje transkrypcji sesji pozostają odrębną grupą, dzięki czemu dywersyfikacja źródeł nadal korzysta z obu danych wejściowych.
Nadpisania modeli QMD pozostają po stronie QMD, a nie w konfiguracji OpenClaw. Aby globalnie zastąpić modele QMD, należy ustawić zmienne środowiskowe, takie jak QMD_EMBED_MODEL, QMD_RERANK_MODEL i QMD_GENERATE_MODEL, w środowisku uruchomieniowym Gateway.

Integracja z mcporter

Wszystkie ustawienia znajdują się w memory.qmd.mcporter. Kieruje wyszukiwania QMD przez długotrwale działający demon MCP mcporter zamiast uruchamiać qmd dla każdego zapytania, ograniczając narzut zimnego startu w przypadku większych modeli. Wymaga zainstalowanego mcporter dostępnego w PATH oraz skonfigurowanego serwera mcporter, który uruchamia qmd mcp. W prostszych konfiguracjach lokalnych, w których koszt uruchamiania procesu dla każdego zapytania jest akceptowalny, należy pozostawić tę opcję wyłączoną.
Określa, które sesje mogą otrzymywać wyniki wyszukiwania QMD. Schemat taki sam jak session.sendPolicy:
Dostarczana wartość domyślna zezwala wyłącznie na wiadomości prywatne/bezpośrednie, odrzucając grupy i inne typy kanałów. match.keyPrefix dopasowuje znormalizowany klucz sesji; match.rawKeyPrefix dopasowuje nieprzetworzony klucz zawierający agent:<id>:.
memory.citations ma zastosowanie do wszystkich backendów:
Gdy inicjalizacja QMD przy uruchamianiu Gateway jest włączona, OpenClaw uruchamia QMD tylko dla kwalifikujących się agentów. Jeśli update.onBoot ma wartość true i nie skonfigurowano okresowej konserwacji aktualizacji ani osadzeń, podczas uruchamiania używany jest jednorazowy menedżer na potrzeby odświeżenia startowego, który następnie zostaje zamknięty. Jeśli skonfigurowano interwał aktualizacji lub osadzania, podczas uruchamiania otwierany jest długotrwały menedżer QMD, aby zarządzał obserwatorem i licznikami interwałów; update.onBoot: false pomija wyłącznie natychmiastowe odświeżenie startowe.

Pełny przykład QMD


Dreaming

Dreaming konfiguruje się w plugins.entries.memory-core.config.dreaming, a nie w agents.defaults.memorySearch. Dreaming działa jako jedno zaplanowane przetwarzanie i wykorzystuje wewnętrzne fazy lekką, głęboką i REM jako szczegół implementacyjny. Opis zachowania koncepcyjnego i poleceń z ukośnikiem zawiera strona Dreaming.

Ustawienia użytkownika

Przykład

  • Dreaming zapisuje stan maszyny w memory/.dreams/.
  • Dreaming zapisuje czytelny dla człowieka opis w DREAMS.md (lub istniejącym dreams.md).
  • dreaming.model korzysta z istniejącej bramy zaufania podagenta Pluginu; przed jego włączeniem należy ustawić plugins.entries.memory-core.subagent.allowModelOverride: true.
  • Dream Diary ponawia próbę raz z domyślnym modelem sesji, gdy skonfigurowany model jest niedostępny. Błędy zaufania lub listy dozwolonych są rejestrowane i nie powodują niejawnego ponowienia próby.
  • Zasady i progi faz lekkiej, głębokiej i REM są zachowaniem wewnętrznym, a nie konfiguracją dostępną dla użytkownika.

Powiązane