Przejdź do głównej treści

Wyszukiwanie pamięci

memory_search znajduje trafne notatki z Twoich plików pamięci, nawet wtedy, gdy sformułowanie różni się od oryginalnego tekstu. Działa przez indeksowanie pamięci na małe fragmenty i przeszukiwanie ich przy użyciu embeddingów, słów kluczowych albo obu metod naraz.

Szybki start

Jeśli masz skonfigurowany klucz API OpenAI, Gemini, Voyage lub Mistral, wyszukiwanie pamięci działa automatycznie. Aby jawnie ustawić dostawcę:
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai", // or "gemini", "local", "ollama", etc.
      },
    },
  },
}
W przypadku lokalnych embeddingów bez klucza API użyj provider: "local" (wymaga node-llama-cpp).

Obsługiwani dostawcy

DostawcaIDWymaga klucza APIUwagi
OpenAIopenaiTakWykrywany automatycznie, szybki
GeminigeminiTakObsługuje indeksowanie obrazów/audio
VoyagevoyageTakWykrywany automatycznie
MistralmistralTakWykrywany automatycznie
OllamaollamaNieLokalny, trzeba ustawić jawnie
LocallocalNieModel GGUF, pobranie ~0.6 GB

Jak działa wyszukiwanie

OpenClaw uruchamia równolegle dwie ścieżki wyszukiwania i scala wyniki:
  • Wyszukiwanie wektorowe znajduje notatki o podobnym znaczeniu („gateway host” pasuje do „maszyna, na której działa OpenClaw”).
  • Wyszukiwanie słów kluczowych BM25 znajduje dokładne dopasowania (identyfikatory, ciągi błędów, klucze konfiguracji).
Jeśli dostępna jest tylko jedna ścieżka (brak embeddingów albo brak FTS), druga nie jest używana.

Poprawianie jakości wyszukiwania

Dwie opcjonalne funkcje pomagają, gdy masz dużą historię notatek:

Zanikanie czasowe

Stare notatki stopniowo tracą wagę w rankingu, dzięki czemu najpierw pojawiają się nowsze informacje. Przy domyślnym okresie półtrwania wynoszącym 30 dni notatka z zeszłego miesiąca uzyskuje 50% swojej oryginalnej wagi. Zawsze aktualne pliki, takie jak MEMORY.md, nigdy nie podlegają zanikaniu.
Włącz zanikanie czasowe, jeśli Twój agent ma miesiące codziennych notatek, a nieaktualne informacje ciągle wyprzedzają nowszy kontekst.

MMR (różnorodność)

Ogranicza nadmiarowe wyniki. Jeśli pięć notatek wspomina tę samą konfigurację routera, MMR zapewnia, że najlepsze wyniki obejmują różne tematy zamiast się powtarzać.
Włącz MMR, jeśli memory_search ciągle zwraca niemal identyczne fragmenty z różnych dziennych notatek.

Włącz oba

{
  agents: {
    defaults: {
      memorySearch: {
        query: {
          hybrid: {
            mmr: { enabled: true },
            temporalDecay: { enabled: true },
          },
        },
      },
    },
  },
}

Pamięć multimodalna

Dzięki Gemini Embedding 2 możesz indeksować obrazy i pliki audio razem z Markdown. Zapytania wyszukiwania pozostają tekstowe, ale dopasowują się do treści wizualnych i dźwiękowych. Zobacz dokumentację konfiguracji pamięci, aby poznać konfigurację.

Wyszukiwanie pamięci sesji

Opcjonalnie możesz indeksować transkrypty sesji, aby memory_search mogło przywoływać wcześniejsze rozmowy. Ta funkcja jest opcjonalna przez memorySearch.experimental.sessionMemory. Szczegóły znajdziesz w dokumentacji konfiguracji.

Rozwiązywanie problemów

Brak wyników? Uruchom openclaw memory status, aby sprawdzić indeks. Jeśli jest pusty, uruchom openclaw memory index --force. Tylko dopasowania słów kluczowych? Twój dostawca embeddingów może nie być skonfigurowany. Sprawdź openclaw memory status --deep. Nie można znaleźć tekstu CJK? Odbuduj indeks FTS za pomocą openclaw memory index --force.

Dalsza lektura