Langsung ke konten utama

Referensi konfigurasi memori

Halaman ini mencantumkan setiap opsi konfigurasi untuk pencarian memori OpenClaw. Untuk gambaran umum konseptual, lihat: Semua pengaturan pencarian memori berada di bawah agents.defaults.memorySearch dalam openclaw.json kecuali dinyatakan lain.

Pemilihan penyedia

KunciTipeDefaultDeskripsi
providerstringterdeteksi otomatisID adaptor embedding: openai, gemini, voyage, mistral, ollama, local
modelstringdefault penyediaNama model embedding
fallbackstring"none"ID adaptor fallback saat yang utama gagal
enabledbooleantrueMengaktifkan atau menonaktifkan pencarian memori

Urutan deteksi otomatis

Saat provider tidak disetel, OpenClaw memilih yang pertama tersedia:
  1. local — jika memorySearch.local.modelPath dikonfigurasi dan file tersebut ada.
  2. openai — jika kunci OpenAI dapat diresolusikan.
  3. gemini — jika kunci Gemini dapat diresolusikan.
  4. voyage — jika kunci Voyage dapat diresolusikan.
  5. mistral — jika kunci Mistral dapat diresolusikan.
ollama didukung tetapi tidak terdeteksi otomatis (setel secara eksplisit).

Resolusi API key

Embedding jarak jauh memerlukan API key. OpenClaw meresolusikannya dari: profil auth, models.providers.*.apiKey, atau variabel lingkungan.
PenyediaVariabel lingkunganKunci konfigurasi
OpenAIOPENAI_API_KEYmodels.providers.openai.apiKey
GeminiGEMINI_API_KEYmodels.providers.google.apiKey
VoyageVOYAGE_API_KEYmodels.providers.voyage.apiKey
MistralMISTRAL_API_KEYmodels.providers.mistral.apiKey
OllamaOLLAMA_API_KEY (placeholder)
OAuth Codex hanya mencakup chat/completions dan tidak memenuhi permintaan embedding.

Konfigurasi endpoint jarak jauh

Untuk endpoint kompatibel OpenAI kustom atau mengganti default penyedia:
KunciTipeDeskripsi
remote.baseUrlstringURL dasar API kustom
remote.apiKeystringMenimpa API key
remote.headersobjectHeader HTTP tambahan (digabungkan dengan default penyedia)
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai",
        model: "text-embedding-3-small",
        remote: {
          baseUrl: "https://api.example.com/v1/",
          apiKey: "YOUR_KEY",
        },
      },
    },
  },
}

Konfigurasi khusus Gemini

KunciTipeDefaultDeskripsi
modelstringgemini-embedding-001Juga mendukung gemini-embedding-2-preview
outputDimensionalitynumber3072Untuk Embedding 2: 768, 1536, atau 3072
Mengubah model atau outputDimensionality memicu pengindeksan ulang penuh otomatis.

Konfigurasi embedding lokal

KunciTipeDefaultDeskripsi
local.modelPathstringdiunduh otomatisJalur ke file model GGUF
local.modelCacheDirstringdefault node-llama-cppDirektori cache untuk model yang diunduh
Model default: embeddinggemma-300m-qat-Q8_0.gguf (~0.6 GB, diunduh otomatis). Memerlukan build native: pnpm approve-builds lalu pnpm rebuild node-llama-cpp.

Konfigurasi pencarian hybrid

Semua di bawah memorySearch.query.hybrid:
KunciTipeDefaultDeskripsi
enabledbooleantrueAktifkan pencarian hybrid BM25 + vektor
vectorWeightnumber0.7Bobot untuk skor vektor (0-1)
textWeightnumber0.3Bobot untuk skor BM25 (0-1)
candidateMultipliernumber4Pengali ukuran kumpulan kandidat

MMR (keragaman)

KunciTipeDefaultDeskripsi
mmr.enabledbooleanfalseAktifkan peringkat ulang MMR
mmr.lambdanumber0.70 = keragaman maksimal, 1 = relevansi maksimal

Peluruhan temporal (kekinian)

KunciTipeDefaultDeskripsi
temporalDecay.enabledbooleanfalseAktifkan peningkatan kekinian
temporalDecay.halfLifeDaysnumber30Skor menjadi setengah setiap N hari
File evergreen (MEMORY.md, file tanpa tanggal di memory/) tidak pernah mengalami peluruhan.

Contoh lengkap

{
  agents: {
    defaults: {
      memorySearch: {
        query: {
          hybrid: {
            vectorWeight: 0.7,
            textWeight: 0.3,
            mmr: { enabled: true, lambda: 0.7 },
            temporalDecay: { enabled: true, halfLifeDays: 30 },
          },
        },
      },
    },
  },
}

Jalur memori tambahan

KunciTipeDeskripsi
extraPathsstring[]Direktori atau file tambahan untuk diindeks
{
  agents: {
    defaults: {
      memorySearch: {
        extraPaths: ["../team-docs", "/srv/shared-notes"],
      },
    },
  },
}
Jalur dapat berupa absolut atau relatif terhadap workspace. Direktori dipindai secara rekursif untuk file .md. Penanganan symlink bergantung pada backend aktif: mesin bawaan mengabaikan symlink, sedangkan QMD mengikuti perilaku pemindai QMD yang mendasarinya. Untuk pencarian transkrip lintas agen yang dicakup agen, gunakan agents.list[].memorySearch.qmd.extraCollections alih-alih memory.qmd.paths. Koleksi tambahan tersebut mengikuti bentuk { path, name, pattern? } yang sama, tetapi digabungkan per agen dan dapat mempertahankan nama bersama yang eksplisit saat jalurnya mengarah ke luar workspace saat ini. Jika jalur yang sama setelah diresolusikan muncul di memory.qmd.paths dan memorySearch.qmd.extraCollections, QMD mempertahankan entri pertama dan melewati duplikatnya.

Memori multimodal (Gemini)

Indeks gambar dan audio bersama Markdown menggunakan Gemini Embedding 2:
KunciTipeDefaultDeskripsi
multimodal.enabledbooleanfalseAktifkan pengindeksan multimodal
multimodal.modalitiesstring[]["image"], ["audio"], atau ["all"]
multimodal.maxFileBytesnumber10000000Ukuran file maksimum untuk pengindeksan
Hanya berlaku untuk file di extraPaths. Root memori default tetap hanya Markdown. Memerlukan gemini-embedding-2-preview. fallback harus "none". Format yang didukung: .jpg, .jpeg, .png, .webp, .gif, .heic, .heif (gambar); .mp3, .wav, .ogg, .opus, .m4a, .aac, .flac (audio).

Cache embedding

KunciTipeDefaultDeskripsi
cache.enabledbooleanfalseCache embedding potongan di SQLite
cache.maxEntriesnumber50000Maksimum embedding dalam cache
Mencegah embedding ulang untuk teks yang tidak berubah selama pengindeksan ulang atau pembaruan transkrip.

Pengindeksan batch

KunciTipeDefaultDeskripsi
remote.batch.enabledbooleanfalseAktifkan API embedding batch
remote.batch.concurrencynumber2Pekerjaan batch paralel
remote.batch.waitbooleantrueTunggu penyelesaian batch
remote.batch.pollIntervalMsnumberInterval polling
remote.batch.timeoutMinutesnumberWaktu habis batch
Tersedia untuk openai, gemini, dan voyage. Batch OpenAI biasanya paling cepat dan paling murah untuk backfill besar.

Pencarian memori sesi (eksperimental)

Indeks transkrip sesi dan tampilkan melalui memory_search:
KunciTipeDefaultDeskripsi
experimental.sessionMemorybooleanfalseAktifkan pengindeksan sesi
sourcesstring[]["memory"]Tambahkan "sessions" untuk menyertakan transkrip
sync.sessions.deltaBytesnumber100000Ambang byte untuk pengindeksan ulang
sync.sessions.deltaMessagesnumber50Ambang pesan untuk pengindeksan ulang
Pengindeksan sesi bersifat opt-in dan berjalan secara asinkron. Hasil dapat sedikit tidak mutakhir. Log sesi berada di disk, jadi perlakukan akses filesystem sebagai batas kepercayaan.

Akselerasi vektor SQLite (sqlite-vec)

KunciTipeDefaultDeskripsi
store.vector.enabledbooleantrueGunakan sqlite-vec untuk kueri vektor
store.vector.extensionPathstringbundledTimpa jalur sqlite-vec
Saat sqlite-vec tidak tersedia, OpenClaw otomatis beralih ke cosine similarity dalam proses.

Penyimpanan indeks

KunciTipeDefaultDeskripsi
store.pathstring~/.openclaw/memory/{agentId}.sqliteLokasi indeks (mendukung token {agentId})
store.fts.tokenizerstringunicode61Tokenizer FTS5 (unicode61 atau trigram)

Konfigurasi backend QMD

Setel memory.backend = "qmd" untuk mengaktifkan. Semua pengaturan QMD berada di bawah memory.qmd:
KunciTipeDefaultDeskripsi
commandstringqmdJalur executable QMD
searchModestringsearchPerintah pencarian: search, vsearch, query
includeDefaultMemorybooleantrueIndeks otomatis MEMORY.md + memory/**/*.md
paths[]arrayJalur tambahan: { name, path, pattern? }
sessions.enabledbooleanfalseIndeks transkrip sesi
sessions.retentionDaysnumberRetensi transkrip
sessions.exportDirstringDirektori ekspor

Jadwal pembaruan

KunciTipeDefaultDeskripsi
update.intervalstring5mInterval penyegaran
update.debounceMsnumber15000Debounce perubahan file
update.onBootbooleantrueSegarkan saat startup
update.waitForBootSyncbooleanfalseBlokir startup sampai penyegaran selesai
update.embedIntervalstringCadence embedding terpisah
update.commandTimeoutMsnumberWaktu habis untuk perintah QMD
update.updateTimeoutMsnumberWaktu habis untuk operasi pembaruan QMD
update.embedTimeoutMsnumberWaktu habis untuk operasi embedding QMD

Batas

KunciTipeDefaultDeskripsi
limits.maxResultsnumber6Maksimum hasil pencarian
limits.maxSnippetCharsnumberBatasi panjang cuplikan
limits.maxInjectedCharsnumberBatasi total karakter yang disuntikkan
limits.timeoutMsnumber4000Waktu habis pencarian

Cakupan

Mengontrol sesi mana yang dapat menerima hasil pencarian QMD. Skemanya sama dengan session.sendPolicy:
{
  memory: {
    qmd: {
      scope: {
        default: "deny",
        rules: [{ action: "allow", match: { chatType: "direct" } }],
      },
    },
  },
}
Default-nya hanya DM. match.keyPrefix cocok dengan kunci sesi yang dinormalisasi; match.rawKeyPrefix cocok dengan kunci mentah termasuk agent:<id>:.

Sitasi

memory.citations berlaku untuk semua backend:
NilaiPerilaku
auto (default)Sertakan footer Source: <path#line> dalam cuplikan
onSelalu sertakan footer
offHilangkan footer (jalur tetap diteruskan ke agen secara internal)

Contoh QMD lengkap

{
  memory: {
    backend: "qmd",
    citations: "auto",
    qmd: {
      includeDefaultMemory: true,
      update: { interval: "5m", debounceMs: 15000 },
      limits: { maxResults: 6, timeoutMs: 4000 },
      scope: {
        default: "deny",
        rules: [{ action: "allow", match: { chatType: "direct" } }],
      },
      paths: [{ name: "docs", path: "~/notes", pattern: "**/*.md" }],
    },
  },
}

Dreaming (eksperimental)

Dreaming dikonfigurasi di bawah plugins.entries.memory-core.config.dreaming, bukan di bawah agents.defaults.memorySearch. Untuk detail konseptual dan perintah chat, lihat Dreaming.
KunciTipeDefaultDeskripsi
modestring"off"Preset: off, core, rem, atau deep
cronstringdefault presetMenimpa ekspresi cron untuk jadwal
timezonestringzona waktu penggunaZona waktu untuk evaluasi jadwal
limitnumberdefault presetMaksimum kandidat yang dipromosikan per siklus
minScorenumberdefault presetSkor berbobot minimum untuk promosi
minRecallCountnumberdefault presetAmbang minimum jumlah recall
minUniqueQueriesnumberdefault presetAmbang minimum jumlah kueri berbeda

Default preset

ModeCadenceminScoreminRecallCountminUniqueQueries
offDinonaktifkan
coreSetiap hari pukul 3 pagi0.7532
remSetiap 6 jam0.8543
deepSetiap 12 jam0.8033

Contoh

{
  plugins: {
    entries: {
      "memory-core": {
        config: {
          dreaming: {
            mode: "core",
            timezone: "America/New_York",
          },
        },
      },
    },
  },
}