Sessions and memory

Mesin memori bawaan

Mesin bawaan adalah backend memori default. Mesin ini menyimpan indeks memori Anda dalam basis data SQLite per agen dan tidak memerlukan dependensi tambahan untuk mulai digunakan.

Yang disediakan

  • Pencarian kata kunci melalui pengindeksan teks lengkap FTS5 (skor BM25).
  • Pencarian vektor melalui embedding dari penyedia mana pun yang didukung.
  • Pencarian hibrida yang menggabungkan keduanya untuk hasil terbaik.
  • Dukungan CJK melalui tokenisasi trigram untuk bahasa Tionghoa, Jepang, dan Korea.
  • Akselerasi sqlite-vec untuk kueri vektor dalam basis data (opsional).

Memulai

Jika Anda memiliki kunci API untuk OpenAI, Gemini, Voyage, Mistral, atau DeepInfra, mesin bawaan akan mendeteksinya secara otomatis dan mengaktifkan pencarian vektor. Tidak perlu konfigurasi.

Untuk menetapkan penyedia secara eksplisit:

{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai",
      },
    },
  },
}

Tanpa penyedia embedding, hanya pencarian kata kunci yang tersedia.

Untuk memaksa penyedia embedding lokal bawaan, instal paket runtime opsional node-llama-cpp di samping OpenClaw, lalu arahkan local.modelPath ke file GGUF:

{
  agents: {
    defaults: {
      memorySearch: {
        provider: "local",
        fallback: "none",
        local: {
          modelPath: "~/.node-llama-cpp/models/embeddinggemma-300m-qat-Q8_0.gguf",
        },
      },
    },
  },
}

Penyedia embedding yang didukung

Penyedia ID Terdeteksi otomatis Catatan
OpenAI openai Ya Bawaan: text-embedding-3-small
Gemini gemini Ya Mendukung multimodal (gambar + audio)
Voyage voyage Ya
Mistral mistral Ya
DeepInfra deepinfra Ya Bawaan: BAAI/bge-m3
Ollama ollama Tidak Lokal, tetapkan secara eksplisit
Lokal local Ya (pertama) Runtime node-llama-cpp opsional

Deteksi otomatis memilih penyedia pertama yang kunci API-nya dapat di-resolve, dalam urutan yang ditampilkan. Tetapkan memorySearch.provider untuk menimpa.

Cara kerja pengindeksan

OpenClaw mengindeks MEMORY.md dan memory/*.md menjadi potongan (~400 token dengan overlap 80 token) dan menyimpannya dalam basis data SQLite per agen.

  • Lokasi indeks: ~/.openclaw/memory/<agentId>.sqlite
  • Pemeliharaan penyimpanan: Sidecar WAL SQLite dibatasi dengan checkpoint berkala dan saat shutdown.
  • Pemantauan file: perubahan pada file memori memicu pengindeksan ulang dengan debounce (1,5 dtk).
  • Pengindeksan ulang otomatis: saat penyedia embedding, model, atau konfigurasi pemotongan berubah, seluruh indeks akan dibangun ulang secara otomatis.
  • Pengindeksan ulang sesuai permintaan: openclaw memory index --force

Kapan digunakan

Mesin bawaan adalah pilihan yang tepat bagi sebagian besar pengguna:

  • Berfungsi langsung tanpa dependensi tambahan.
  • Menangani pencarian kata kunci dan vektor dengan baik.
  • Mendukung semua penyedia embedding.
  • Pencarian hibrida menggabungkan yang terbaik dari kedua pendekatan retrieval.

Pertimbangkan beralih ke QMD jika Anda memerlukan reranking, ekspansi kueri, atau ingin mengindeks direktori di luar workspace.

Pertimbangkan Honcho jika Anda menginginkan memori lintas sesi dengan pemodelan pengguna otomatis.

Pemecahan masalah

Pencarian memori dinonaktifkan? Periksa openclaw memory status. Jika tidak ada penyedia yang terdeteksi, tetapkan salah satu secara eksplisit atau tambahkan kunci API.

Penyedia lokal tidak terdeteksi? Pastikan path lokal ada dan jalankan:

openclaw memory status --deep --agent main
openclaw memory index --force --agent main

Baik perintah CLI mandiri maupun Gateway menggunakan id penyedia local yang sama. Jika penyedia ditetapkan ke auto, embedding lokal hanya dipertimbangkan terlebih dahulu ketika memorySearch.local.modelPath menunjuk ke file lokal yang ada.

Hasil kedaluwarsa? Jalankan openclaw memory index --force untuk membangun ulang. Watcher mungkin melewatkan perubahan dalam kasus tepi yang jarang terjadi.

sqlite-vec tidak dimuat? OpenClaw otomatis fallback ke kemiripan kosinus dalam proses. openclaw memory status --deep melaporkan penyimpanan vektor lokal terpisah dari penyedia embedding, sehingga Vector store: unavailable mengarah ke pemuatan sqlite-vec sementara Embeddings: unavailable mengarah ke kesiapan penyedia/auth atau model. Periksa log untuk kesalahan pemuatan spesifik.

Konfigurasi

Untuk penyiapan penyedia embedding, penyetelan pencarian hibrida (bobot, MMR, peluruhan temporal), pengindeksan batch, memori multimodal, sqlite-vec, path tambahan, dan semua kenop konfigurasi lainnya, lihat referensi konfigurasi Memori.

Terkait