Langsung ke konten utama

Referensi konfigurasi memori

Halaman ini mencantumkan setiap opsi konfigurasi untuk pencarian memori OpenClaw. Untuk gambaran konseptual, lihat: Semua pengaturan pencarian memori berada di bawah agents.defaults.memorySearch di openclaw.json kecuali jika dinyatakan lain. Jika Anda mencari tombol fitur active memory dan config sub-agen, itu berada di bawah plugins.entries.active-memory, bukan memorySearch. Active memory menggunakan model dua gerbang:
  1. plugin harus diaktifkan dan menargetkan id agen saat ini
  2. permintaan harus berupa sesi chat persisten interaktif yang memenuhi syarat
Lihat Active Memory untuk model aktivasi, config milik plugin, persistensi transkrip, dan pola peluncuran yang aman.

Pemilihan penyedia

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

Urutan deteksi otomatis

Saat provider tidak ditetapkan, OpenClaw memilih yang pertama tersedia:
  1. local — jika memorySearch.local.modelPath dikonfigurasi dan file tersebut ada.
  2. github-copilot — jika token GitHub Copilot dapat di-resolve (variabel lingkungan atau profil auth).
  3. openai — jika kunci OpenAI dapat di-resolve.
  4. gemini — jika kunci Gemini dapat di-resolve.
  5. voyage — jika kunci Voyage dapat di-resolve.
  6. mistral — jika kunci Mistral dapat di-resolve.
  7. bedrock — jika rantai kredensial AWS SDK berhasil di-resolve (peran instance, access key, profil, SSO, identitas web, atau config bersama).
ollama didukung tetapi tidak dideteksi otomatis (tetapkan secara eksplisit).

Resolusi kunci API

Embedding jarak jauh memerlukan kunci API. Bedrock menggunakan rantai kredensial default AWS SDK sebagai gantinya (peran instance, SSO, access key).
ProviderEnv varConfig key
Bedrockrantai kredensial AWSTidak memerlukan kunci API
GeminiGEMINI_API_KEYmodels.providers.google.apiKey
GitHub CopilotCOPILOT_GITHUB_TOKEN, GH_TOKEN, GITHUB_TOKENProfil auth melalui login perangkat
MistralMISTRAL_API_KEYmodels.providers.mistral.apiKey
OllamaOLLAMA_API_KEY (placeholder)
OpenAIOPENAI_API_KEYmodels.providers.openai.apiKey
VoyageVOYAGE_API_KEYmodels.providers.voyage.apiKey
OAuth Codex hanya mencakup chat/completions dan tidak memenuhi permintaan embedding.

Config endpoint jarak jauh

Untuk endpoint kompatibel OpenAI kustom atau menimpa default penyedia:
KeyTypeDescription
remote.baseUrlstringURL dasar API kustom
remote.apiKeystringTimpa kunci API
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",
        },
      },
    },
  },
}

Config khusus Gemini

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

Config embedding Bedrock

Bedrock menggunakan rantai kredensial default AWS SDK — tidak memerlukan kunci API. Jika OpenClaw berjalan di EC2 dengan peran instance yang mendukung Bedrock, cukup tetapkan penyedia dan model:
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "bedrock",
        model: "amazon.titan-embed-text-v2:0",
      },
    },
  },
}
KeyTypeDefaultDescription
modelstringamazon.titan-embed-text-v2:0ID model embedding Bedrock apa pun
outputDimensionalitynumberdefault modelUntuk Titan V2: 256, 512, atau 1024

Model yang didukung

Model berikut didukung (dengan deteksi keluarga dan default dimensi):
Model IDProviderDefault DimsConfigurable Dims
amazon.titan-embed-text-v2:0Amazon1024256, 512, 1024
amazon.titan-embed-text-v1Amazon1536
amazon.titan-embed-g1-text-02Amazon1536
amazon.titan-embed-image-v1Amazon1024
amazon.nova-2-multimodal-embeddings-v1:0Amazon1024256, 384, 1024, 3072
cohere.embed-english-v3Cohere1024
cohere.embed-multilingual-v3Cohere1024
cohere.embed-v4:0Cohere1536256-1536
twelvelabs.marengo-embed-3-0-v1:0TwelveLabs512
twelvelabs.marengo-embed-2-7-v1:0TwelveLabs1024
Varian dengan sufiks throughput (misalnya, amazon.titan-embed-text-v1:2:8k) mewarisi config model dasarnya.

Autentikasi

Auth Bedrock menggunakan urutan resolusi kredensial AWS SDK standar:
  1. Variabel lingkungan (AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY)
  2. Cache token SSO
  3. Kredensial token identitas web
  4. File kredensial dan config bersama
  5. Kredensial metadata ECS atau EC2
Region di-resolve dari AWS_REGION, AWS_DEFAULT_REGION, baseUrl penyedia amazon-bedrock, atau default ke us-east-1.

Izin IAM

Peran atau pengguna IAM memerlukan:
{
  "Effect": "Allow",
  "Action": "bedrock:InvokeModel",
  "Resource": "*"
}
Untuk hak istimewa minimum, batasi InvokeModel ke model tertentu:
arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0

Config embedding lokal

KeyTypeDefaultDescription
local.modelPathstringdiunduh otomatisPath 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.

Config pencarian hibrida

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

MMR (keberagaman)

KeyTypeDefaultDescription
mmr.enabledbooleanfalseAktifkan pemeringkatan ulang MMR
mmr.lambdanumber0.70 = keberagaman maksimum, 1 = relevansi maksimum

Peluruhan temporal (keterkinian)

KeyTypeDefaultDescription
temporalDecay.enabledbooleanfalseAktifkan peningkatan skor keterkinian
temporalDecay.halfLifeDaysnumber30Skor berkurang setengah setiap N hari
File evergreen (MEMORY.md, file tanpa tanggal di memory/) tidak pernah dikenai 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 },
          },
        },
      },
    },
  },
}

Path memori tambahan

KeyTypeDescription
extraPathsstring[]Direktori atau file tambahan untuk diindeks
{
  agents: {
    defaults: {
      memorySearch: {
        extraPaths: ["../team-docs", "/srv/shared-notes"],
      },
    },
  },
}
Path 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 dengan cakupan 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 path mengarah ke luar workspace saat ini. Jika path hasil resolve yang sama muncul baik di memory.qmd.paths maupun memorySearch.qmd.extraCollections, QMD mempertahankan entri pertama dan melewati duplikat tersebut.

Memori multimodal (Gemini)

Indeks gambar dan audio bersama Markdown menggunakan Gemini Embedding 2:
KeyTypeDefaultDescription
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 khusus 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

KeyTypeDefaultDescription
cache.enabledbooleanfalseCache embedding chunk di SQLite
cache.maxEntriesnumber50000Embedding yang di-cache maksimum
Mencegah embedding ulang pada teks yang tidak berubah selama pengindeksan ulang atau pembaruan transkrip.

Pengindeksan batch

KeyTypeDefaultDescription
remote.batch.enabledbooleanfalseAktifkan API embedding batch
remote.batch.concurrencynumber2Job batch paralel
remote.batch.waitbooleantrueTunggu penyelesaian batch
remote.batch.pollIntervalMsnumberInterval polling
remote.batch.timeoutMinutesnumberBatas waktu 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:
KeyTypeDefaultDescription
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. Hasilnya bisa sedikit tidak mutakhir. Log sesi berada di disk, jadi perlakukan akses filesystem sebagai batas kepercayaan.

Akselerasi vektor SQLite (sqlite-vec)

KeyTypeDefaultDescription
store.vector.enabledbooleantrueGunakan sqlite-vec untuk kueri vektor
store.vector.extensionPathstringbundledTimpa path sqlite-vec
Saat sqlite-vec tidak tersedia, OpenClaw secara otomatis beralih ke similaritas cosine dalam proses.

Penyimpanan indeks

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

Config backend QMD

Tetapkan memory.backend = "qmd" untuk mengaktifkannya. Semua pengaturan QMD berada di bawah memory.qmd:
KeyTypeDefaultDescription
commandstringqmdPath executable QMD
searchModestringsearchPerintah pencarian: search, vsearch, query
includeDefaultMemorybooleantrueIndeks otomatis MEMORY.md + memory/**/*.md
paths[]arrayPath tambahan: { name, path, pattern? }
sessions.enabledbooleanfalseIndeks transkrip sesi
sessions.retentionDaysnumberRetensi transkrip
sessions.exportDirstringDirektori ekspor
OpenClaw mengutamakan koleksi QMD saat ini dan bentuk kueri MCP, tetapi tetap membuat rilis QMD yang lebih lama tetap berfungsi dengan beralih ke flag koleksi --mask lama dan nama tool MCP yang lebih lama bila diperlukan. Penggantian model QMD tetap berada di sisi QMD, bukan config OpenClaw. Jika Anda perlu menimpa model QMD secara global, tetapkan variabel lingkungan seperti QMD_EMBED_MODEL, QMD_RERANK_MODEL, dan QMD_GENERATE_MODEL di lingkungan runtime Gateway.

Jadwal pembaruan

KeyTypeDefaultDescription
update.intervalstring5mInterval penyegaran
update.debounceMsnumber15000Debounce perubahan file
update.onBootbooleantrueSegarkan saat startup
update.waitForBootSyncbooleanfalseBlokir startup sampai penyegaran selesai
update.embedIntervalstringIrama embedding terpisah
update.commandTimeoutMsnumberBatas waktu untuk perintah QMD
update.updateTimeoutMsnumberBatas waktu untuk operasi pembaruan QMD
update.embedTimeoutMsnumberBatas waktu untuk operasi embedding QMD

Batas

KeyTypeDefaultDescription
limits.maxResultsnumber6Hasil pencarian maksimum
limits.maxSnippetCharsnumberBatasi panjang cuplikan
limits.maxInjectedCharsnumberBatasi total karakter yang disuntikkan
limits.timeoutMsnumber4000Batas waktu pencarian

Cakupan

Mengontrol sesi mana yang dapat menerima hasil pencarian QMD. Skema yang sama seperti session.sendPolicy:
{
  memory: {
    qmd: {
      scope: {
        default: "deny",
        rules: [{ action: "allow", match: { chatType: "direct" } }],
      },
    },
  },
}
Default bawaan mengizinkan sesi direct dan channel, sambil tetap menolak grup. Default adalah khusus 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:
ValueBehavior
auto (default)Sertakan footer Source: <path#line> dalam cuplikan
onSelalu sertakan footer
offHilangkan footer (path tetap diteruskan ke agen secara internal)

Contoh lengkap QMD

{
  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

Dreaming dikonfigurasi di bawah plugins.entries.memory-core.config.dreaming, bukan di bawah agents.defaults.memorySearch. Dreaming berjalan sebagai satu sapuan terjadwal dan menggunakan fase internal light/deep/REM sebagai detail implementasi. Untuk perilaku konseptual dan slash command, lihat Dreaming.

Pengaturan pengguna

KeyTypeDefaultDescription
enabledbooleanfalseAktifkan atau nonaktifkan Dreaming sepenuhnya
frequencystring0 3 * * *Irama Cron opsional untuk keseluruhan sapuan Dreaming

Contoh

{
  plugins: {
    entries: {
      "memory-core": {
        config: {
          dreaming: {
            enabled: true,
            frequency: "0 3 * * *",
          },
        },
      },
    },
  },
}
Catatan:
  • Dreaming menulis status mesin ke memory/.dreams/.
  • Dreaming menulis output naratif yang dapat dibaca manusia ke DREAMS.md (atau dreams.md yang sudah ada).
  • Kebijakan dan ambang fase light/deep/REM adalah perilaku internal, bukan config yang ditujukan untuk pengguna.