Bundled plugin guides
Memory LanceDB
memory-lancedb to oficjalny zewnętrzny Plugin pamięci, który przechowuje pamięć długoterminową w
LanceDB i używa osadzeń do odtwarzania. Może automatycznie odtwarzać istotne
wspomnienia przed turą modelu i przechwytywać ważne fakty po odpowiedzi.
Użyj go, gdy chcesz mieć lokalną wektorową bazę danych dla pamięci, potrzebujesz punktu końcowego osadzeń zgodnego z OpenAI albo chcesz trzymać bazę pamięci poza domyślnym wbudowanym magazynem pamięci.
Instalacja
Zainstaluj memory-lancedb przed ustawieniem plugins.slots.memory = "memory-lancedb":
openclaw plugins install @openclaw/memory-lancedbPlugin jest publikowany w npm i nie jest dołączony do obrazu runtime OpenClaw. Instalator zapisuje wpis Plugin i przełącza slot pamięci, gdy nie jest on własnością żadnego innego Plugin.
Szybki start
{ plugins: { slots: { memory: "memory-lancedb", }, entries: { "memory-lancedb": { enabled: true, config: { embedding: { provider: "openai", model: "text-embedding-3-small", }, autoRecall: true, autoCapture: false, }, }, }, },}Po zmianie konfiguracji Plugin uruchom ponownie Gateway:
openclaw gateway restartNastępnie sprawdź, czy Plugin został załadowany:
openclaw plugins listOsadzenia obsługiwane przez dostawcę
memory-lancedb może używać tych samych adapterów dostawców osadzeń pamięci co
memory-core. Ustaw embedding.provider i pomiń embedding.apiKey, aby użyć
skonfigurowanego profilu uwierzytelniania dostawcy, zmiennej środowiskowej albo
models.providers.<provider>.apiKey.
{ plugins: { slots: { memory: "memory-lancedb", }, entries: { "memory-lancedb": { enabled: true, config: { embedding: { provider: "openai", model: "text-embedding-3-small", }, autoRecall: true, }, }, }, },}Ta ścieżka działa z profilami uwierzytelniania dostawców, które udostępniają poświadczenia osadzeń. Na przykład GitHub Copilot może być używany, gdy profil/plan Copilot obsługuje osadzenia:
{ plugins: { slots: { memory: "memory-lancedb", }, entries: { "memory-lancedb": { enabled: true, config: { embedding: { provider: "github-copilot", model: "text-embedding-3-small", }, }, }, }, },}OpenAI Codex / ChatGPT OAuth nie jest poświadczeniem osadzeń OpenAI Platform.
Dla osadzeń OpenAI użyj profilu uwierzytelniania z kluczem API OpenAI,
OPENAI_API_KEY albo models.providers.openai.apiKey. Użytkownicy korzystający wyłącznie z OAuth mogą użyć
innego dostawcy obsługującego osadzenia, takiego jak GitHub Copilot lub Ollama.
Osadzenia Ollama
Dla osadzeń Ollama preferuj dołączonego dostawcę osadzeń Ollama. Używa on
natywnego punktu końcowego Ollama /api/embed i stosuje te same reguły uwierzytelniania/adresu bazowego URL co
dostawca Ollama opisany w Ollama.
{ plugins: { slots: { memory: "memory-lancedb", }, entries: { "memory-lancedb": { enabled: true, config: { embedding: { provider: "ollama", baseUrl: "http://127.0.0.1:11434", model: "mxbai-embed-large", dimensions: 1024, }, recallMaxChars: 400, autoRecall: true, autoCapture: false, }, }, }, },}Ustaw dimensions dla niestandardowych modeli osadzeń. OpenClaw zna
wymiary dla text-embedding-3-small i text-embedding-3-large; modele niestandardowe
wymagają tej wartości w konfiguracji, aby LanceDB mogło utworzyć kolumnę wektorową.
Dla małych lokalnych modeli osadzeń obniż recallMaxChars, jeśli widzisz błędy
długości kontekstu z lokalnego serwera.
Dostawcy zgodni z OpenAI
Niektórzy dostawcy osadzeń zgodni z OpenAI odrzucają parametr encoding_format,
podczas gdy inni go ignorują i zawsze zwracają wektory number[].
Dlatego memory-lancedb pomija encoding_format w żądaniach osadzeń i
akceptuje odpowiedzi w postaci tablic liczb zmiennoprzecinkowych albo odpowiedzi float32 zakodowane w base64.
Jeśli masz surowy punkt końcowy osadzeń zgodny z OpenAI, który nie ma
dołączonego adaptera dostawcy, pomiń embedding.provider (albo zostaw openai) i
ustaw embedding.apiKey oraz embedding.baseUrl. Zachowuje to bezpośrednią
ścieżkę klienta zgodnego z OpenAI.
Ustaw embedding.dimensions dla dostawców, których wymiary modeli nie są
wbudowane. Na przykład ZhiPu embedding-3 używa wymiarów 2048:
{ plugins: { entries: { "memory-lancedb": { enabled: true, config: { embedding: { apiKey: "${ZHIPU_API_KEY}", baseUrl: "https://open.bigmodel.cn/api/paas/v4", model: "embedding-3", dimensions: 2048, }, }, }, }, },}Limity odtwarzania i przechwytywania
memory-lancedb ma dwa osobne limity tekstu:
| Ustawienie | Domyślnie | Zakres | Dotyczy |
|---|---|---|---|
recallMaxChars |
1000 |
100-10000 | tekstu wysyłanego do API osadzeń na potrzeby odtwarzania |
captureMaxChars |
500 |
100-10000 | długości wiadomości kwalifikującej się do automatycznego przechwycenia |
customTriggers |
[] |
0-50 | dosłownych fraz, które sprawiają, że automatyczne przechwytywanie rozważa wiadomość |
recallMaxChars steruje automatycznym odtwarzaniem, narzędziem memory_recall, ścieżką zapytań
memory_forget oraz openclaw ltm search. Automatyczne odtwarzanie preferuje
najnowszą wiadomość użytkownika z tury i wraca do pełnego promptu tylko wtedy, gdy
nie ma dostępnej wiadomości użytkownika. Dzięki temu metadane kanału i duże bloki promptu
nie trafiają do żądania osadzeń.
captureMaxChars steruje tym, czy odpowiedź jest wystarczająco krótka, aby można ją było rozważyć
do automatycznego przechwycenia. Nie ogranicza osadzeń zapytań odtwarzania.
customTriggers pozwala dodać dosłowne frazy automatycznego przechwytywania bez pisania
wyrażeń regularnych. Wbudowane wyzwalacze obejmują typowe frazy pamięci w języku angielskim, czeskim,
chińskim, japońskim i koreańskim.
Polecenia
Gdy memory-lancedb jest aktywnym Plugin pamięci, rejestruje przestrzeń nazw CLI ltm:
openclaw ltm listopenclaw ltm search "project preferences"openclaw ltm statsPodpolecenie query uruchamia zapytanie niewektorowe bezpośrednio na tabeli LanceDB:
openclaw ltm query --cols id,text,createdAt --limit 20openclaw ltm query --filter "category = 'preference'" --order-by createdAt:desc--cols <columns>: rozdzielona przecinkami lista dozwolonych kolumn (domyślnieid,text,importance,category,createdAt).--filter <condition>: klauzula WHERE w stylu SQL; ograniczona do 200 znaków i zawężona do znaków alfanumerycznych, operatorów porównania, cudzysłowów, nawiasów oraz małego zestawu bezpiecznych znaków interpunkcyjnych.--limit <n>: dodatnia liczba całkowita; domyślnie10.--order-by <column>:<asc|desc>: sortowanie w pamięci stosowane po filtrze; kolumna sortowania jest automatycznie dołączana do projekcji.
Agenci otrzymują również narzędzia pamięci LanceDB z aktywnego Plugin pamięci:
memory_recalldo odtwarzania opartego na LanceDBmemory_storedo zapisywania ważnych faktów, preferencji, decyzji i encjimemory_forgetdo usuwania pasujących wspomnień
Pamięć masowa
Domyślnie dane LanceDB znajdują się w ~/.openclaw/memory/lancedb. Nadpisz
ścieżkę za pomocą dbPath:
{ plugins: { entries: { "memory-lancedb": { enabled: true, config: { dbPath: "~/.openclaw/memory/lancedb", embedding: { apiKey: "${OPENAI_API_KEY}", model: "text-embedding-3-small", }, }, }, }, },}storageOptions przyjmuje pary klucz/wartość typu string dla backendów pamięci masowej LanceDB i
obsługuje rozwijanie ${ENV_VAR}:
{ plugins: { entries: { "memory-lancedb": { enabled: true, config: { dbPath: "s3://memory-bucket/openclaw", storageOptions: { access_key: "${AWS_ACCESS_KEY_ID}", secret_key: "${AWS_SECRET_ACCESS_KEY}", endpoint: "${AWS_ENDPOINT_URL}", }, embedding: { apiKey: "${OPENAI_API_KEY}", model: "text-embedding-3-small", }, }, }, }, },}Zależności runtime
memory-lancedb zależy od natywnego pakietu @lancedb/lancedb. Spakowany
OpenClaw traktuje ten pakiet jako część pakietu Plugin. Uruchomienie Gateway
nie naprawia zależności Plugin; jeśli zależności brakuje, zainstaluj ponownie albo
zaktualizuj pakiet Plugin i uruchom ponownie Gateway.
Jeśli starsza instalacja loguje błąd brakującego dist/package.json albo brakującego
@lancedb/lancedb podczas ładowania Plugin, zaktualizuj OpenClaw i uruchom ponownie
Gateway.
Jeśli Plugin loguje, że LanceDB jest niedostępne na darwin-x64, użyj domyślnego
backendu pamięci na tej maszynie, przenieś Gateway na obsługiwaną platformę albo
wyłącz memory-lancedb.
Rozwiązywanie problemów
Długość wejścia przekracza długość kontekstu
Zwykle oznacza to, że model osadzeń odrzucił zapytanie odtwarzania:
memory-lancedb: recall failed: Error: 400 the input length exceeds the context lengthUstaw niższe recallMaxChars, a następnie uruchom ponownie Gateway:
{ plugins: { entries: { "memory-lancedb": { config: { recallMaxChars: 400, }, }, }, },}Dla Ollama sprawdź też, czy serwer osadzeń jest osiągalny z hosta Gateway:
curl http://127.0.0.1:11434/v1/embeddings \ -H "Content-Type: application/json" \ -d '{"model":"mxbai-embed-large","input":"hello"}'Nieobsługiwany model osadzeń
Bez dimensions znane są tylko wbudowane wymiary osadzeń OpenAI.
Dla lokalnych lub niestandardowych modeli osadzeń ustaw embedding.dimensions na rozmiar wektora
zgłaszany przez ten model.
Plugin ładuje się, ale nie pojawiają się żadne wspomnienia
Sprawdź, czy plugins.slots.memory wskazuje na memory-lancedb, a następnie uruchom:
openclaw ltm statsopenclaw ltm search "recent preference"Jeśli autoCapture jest wyłączone, Plugin będzie odtwarzać istniejące wspomnienia, ale
nie będzie automatycznie zapisywać nowych. Użyj narzędzia memory_store albo włącz
autoCapture, jeśli chcesz automatycznego przechwytywania.