Przejdź do głównej treści
Wbudowany silnik jest domyślnym backendem pamięci. Przechowuje indeks pamięci w bazie danych SQLite osobnej dla każdego agenta i nie wymaga dodatkowych zależności, aby rozpocząć.

Co zapewnia

  • Wyszukiwanie po słowach kluczowych przez pełnotekstowe indeksowanie FTS5 (punktacja BM25).
  • Wyszukiwanie wektorowe przez osadzenia z dowolnego obsługiwanego dostawcy.
  • Wyszukiwanie hybrydowe, które łączy oba podejścia dla najlepszych wyników.
  • Obsługa CJK przez tokenizację trigramową dla języka chińskiego, japońskiego i koreańskiego.
  • Przyspieszenie sqlite-vec dla zapytań wektorowych w bazie danych (opcjonalnie).

Pierwsze kroki

Domyślnie wbudowany silnik używa osadzeń OpenAI. Jeśli masz już skonfigurowane OPENAI_API_KEY albo models.providers.openai.apiKey, wyszukiwanie wektorowe działa bez dodatkowej konfiguracji pamięci. Aby jawnie ustawić dostawcę:
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai",
      },
    },
  },
}
Bez dostawcy osadzeń dostępne jest tylko wyszukiwanie po słowach kluczowych. Aby wymusić lokalne osadzenia GGUF, zainstaluj oficjalny plugin dostawcy llama.cpp, a następnie wskaż w local.modelPath plik GGUF:
openclaw plugins install @openclaw/llama-cpp-provider
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "local",
        fallback: "none",
        local: {
          modelPath: "~/.node-llama-cpp/models/embeddinggemma-300m-qat-Q8_0.gguf",
        },
      },
    },
  },
}

Obsługiwani dostawcy osadzeń

DostawcaIDUwagi
BedrockbedrockUżywa łańcucha poświadczeń AWS
DeepInfradeepinfraDomyślnie: BAAI/bge-m3
GeminigeminiObsługuje multimodalność (obraz + audio)
GitHub Copilotgithub-copilotUżywa subskrypcji Copilot
Lokalnylocal@openclaw/llama-cpp-provider
Mistralmistral
OllamaollamaLokalny/samodzielnie hostowany
OpenAIopenaiDomyślnie: text-embedding-3-small
Zgodny z OpenAIopenai-compatibleOgólny punkt końcowy /v1/embeddings
Voyagevoyage
Ustaw memorySearch.provider, aby przełączyć się z OpenAI na innego dostawcę.

Jak działa indeksowanie

OpenClaw indeksuje MEMORY.md i memory/*.md jako fragmenty (~400 tokenów z nakładaniem 80 tokenów) i przechowuje je w bazie danych SQLite osobnej dla każdego agenta.
  • Lokalizacja indeksu: baza danych agenta właściciela pod adresem ~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite
  • Utrzymanie magazynu: pliki poboczne SQLite WAL są ograniczane przez okresowe punkty kontrolne oraz punkty kontrolne przy zamykaniu.
  • Obserwowanie plików: zmiany w plikach pamięci wyzwalają reindeksowanie z opóźnieniem antydrganiowym (1,5 s).
  • Automatyczne reindeksowanie: gdy dostawca osadzeń, model lub konfiguracja dzielenia na fragmenty się zmieni, cały indeks jest automatycznie odbudowywany.
  • Reindeksowanie na żądanie: openclaw memory index --force
Możesz także indeksować pliki Markdown spoza obszaru roboczego za pomocą memorySearch.extraPaths. Zobacz odniesienie konfiguracji.

Kiedy używać

Wbudowany silnik jest właściwym wyborem dla większości użytkowników:
  • Działa od razu bez dodatkowych zależności.
  • Dobrze obsługuje wyszukiwanie po słowach kluczowych i wektorowe.
  • Obsługuje wszystkich dostawców osadzeń.
  • Wyszukiwanie hybrydowe łączy najlepsze cechy obu podejść do pobierania.
Rozważ przełączenie na QMD, jeśli potrzebujesz rerankingu, rozszerzania zapytań albo chcesz indeksować katalogi poza obszarem roboczym. Rozważ Honcho, jeśli chcesz pamięć między sesjami z automatycznym modelowaniem użytkownika.

Rozwiązywanie problemów

Wyszukiwanie w pamięci jest wyłączone? Sprawdź openclaw memory status. Jeśli żaden dostawca nie jest wykryty, ustaw go jawnie albo dodaj klucz API. Lokalny dostawca nie został wykryty? Potwierdź, że lokalna ścieżka istnieje, i uruchom:
openclaw memory status --deep --agent main
openclaw memory index --force --agent main
Zarówno samodzielne polecenia CLI, jak i Gateway używają tego samego identyfikatora dostawcy local. Ustaw memorySearch.provider: "local", gdy chcesz używać lokalnych osadzeń. Nieaktualne wyniki? Uruchom openclaw memory index --force, aby odbudować indeks. Obserwator może pominąć zmiany w rzadkich przypadkach brzegowych. sqlite-vec się nie ładuje? OpenClaw automatycznie przełącza się na podobieństwo cosinusowe w procesie. openclaw memory status --deep raportuje lokalny magazyn wektorowy oddzielnie od dostawcy osadzeń, więc Vector store: unavailable wskazuje na ładowanie sqlite-vec, natomiast Embeddings: unavailable wskazuje na dostawcę/uwierzytelnianie albo gotowość modelu. Sprawdź w logach konkretny błąd ładowania.

Konfiguracja

Informacje o konfiguracji dostawcy osadzeń, dostrajaniu wyszukiwania hybrydowego (wagi, MMR, zanikanie czasowe), indeksowaniu wsadowym, pamięci multimodalnej, sqlite-vec, dodatkowych ścieżkach i wszystkich innych opcjach konfiguracji znajdziesz w odniesieniu konfiguracji pamięci.

Powiązane