Plugins
Memori LanceDB
memory-lancedb adalah plugin memori bawaan yang menyimpan memori jangka panjang di
LanceDB dan menggunakan embedding untuk recall. Plugin ini dapat otomatis me-recall
memori yang relevan sebelum giliran model dan menangkap fakta penting setelah respons.
Gunakan saat Anda menginginkan basis data vektor lokal untuk memori, membutuhkan endpoint embedding yang kompatibel dengan OpenAI, atau ingin menyimpan basis data memori di luar penyimpanan memori bawaan default.
Mulai cepat
{
plugins: {
slots: {
memory: "memory-lancedb",
},
entries: {
"memory-lancedb": {
enabled: true,
config: {
embedding: {
provider: "openai",
model: "text-embedding-3-small",
},
autoRecall: true,
autoCapture: false,
},
},
},
},
}
Mulai ulang Gateway setelah mengubah konfigurasi plugin:
openclaw gateway restart
Lalu verifikasi bahwa plugin telah dimuat:
openclaw plugins list
Embedding yang didukung penyedia
memory-lancedb dapat menggunakan adapter penyedia embedding memori yang sama seperti
memory-core. Atur embedding.provider dan hilangkan embedding.apiKey untuk menggunakan
profil autentikasi terkonfigurasi milik penyedia, variabel lingkungan, atau
models.providers.<provider>.apiKey.
{
plugins: {
slots: {
memory: "memory-lancedb",
},
entries: {
"memory-lancedb": {
enabled: true,
config: {
embedding: {
provider: "openai",
model: "text-embedding-3-small",
},
autoRecall: true,
},
},
},
},
}
Jalur ini berfungsi dengan profil autentikasi penyedia yang mengekspos kredensial embedding. Misalnya, GitHub Copilot dapat digunakan ketika profil/paket Copilot mendukung embedding:
{
plugins: {
slots: {
memory: "memory-lancedb",
},
entries: {
"memory-lancedb": {
enabled: true,
config: {
embedding: {
provider: "github-copilot",
model: "text-embedding-3-small",
},
},
},
},
},
}
OpenAI Codex / ChatGPT OAuth (openai-codex) bukan kredensial embedding OpenAI Platform.
Untuk embedding OpenAI, gunakan profil autentikasi kunci API OpenAI,
OPENAI_API_KEY, atau models.providers.openai.apiKey. Pengguna yang hanya memakai OAuth dapat menggunakan
penyedia lain yang mendukung embedding seperti GitHub Copilot atau Ollama.
Embedding Ollama
Untuk embedding Ollama, utamakan penyedia embedding Ollama bawaan. Penyedia ini menggunakan
endpoint Ollama native /api/embed dan mengikuti aturan autentikasi/base URL yang sama seperti
penyedia Ollama yang didokumentasikan di Ollama.
{
plugins: {
slots: {
memory: "memory-lancedb",
},
entries: {
"memory-lancedb": {
enabled: true,
config: {
embedding: {
provider: "ollama",
baseUrl: "http://127.0.0.1:11434",
model: "mxbai-embed-large",
dimensions: 1024,
},
recallMaxChars: 400,
autoRecall: true,
autoCapture: false,
},
},
},
},
}
Atur dimensions untuk model embedding non-standar. OpenClaw mengetahui
dimensi untuk text-embedding-3-small dan text-embedding-3-large; model kustom
memerlukan nilai ini dalam konfigurasi agar LanceDB dapat membuat kolom vektor.
Untuk model embedding lokal kecil, turunkan recallMaxChars jika Anda melihat galat panjang
konteks dari server lokal.
Penyedia yang kompatibel dengan OpenAI
Beberapa penyedia embedding yang kompatibel dengan OpenAI menolak parameter encoding_format,
sementara yang lain mengabaikannya dan selalu mengembalikan vektor number[].
Karena itu, memory-lancedb menghilangkan encoding_format pada permintaan embedding dan
menerima respons array float maupun respons float32 berkode base64.
Jika Anda memiliki endpoint embedding mentah yang kompatibel dengan OpenAI yang tidak memiliki
adapter penyedia bawaan, hilangkan embedding.provider (atau biarkan sebagai openai) dan
atur embedding.apiKey plus embedding.baseUrl. Ini mempertahankan jalur klien langsung
yang kompatibel dengan OpenAI.
Atur embedding.dimensions untuk penyedia yang dimensi modelnya tidak tersedia secara bawaan.
Misalnya, ZhiPu embedding-3 menggunakan dimensi 2048:
{
plugins: {
entries: {
"memory-lancedb": {
enabled: true,
config: {
embedding: {
apiKey: "${ZHIPU_API_KEY}",
baseUrl: "https://open.bigmodel.cn/api/paas/v4",
model: "embedding-3",
dimensions: 2048,
},
},
},
},
},
}
Batas recall dan capture
memory-lancedb memiliki dua batas teks terpisah:
| Pengaturan | Default | Rentang | Berlaku untuk |
|---|---|---|---|
recallMaxChars |
1000 |
100-10000 | teks yang dikirim ke API embedding untuk recall |
captureMaxChars |
500 |
100-10000 | panjang pesan asisten yang layak untuk capture |
recallMaxChars mengontrol auto-recall, alat memory_recall, jalur kueri
memory_forget, dan openclaw ltm search. Auto-recall mengutamakan
pesan pengguna terbaru dari giliran tersebut dan hanya kembali ke prompt lengkap ketika tidak ada
pesan pengguna yang tersedia. Ini menjaga metadata channel dan blok prompt besar
agar tidak masuk ke permintaan embedding.
captureMaxChars mengontrol apakah sebuah respons cukup pendek untuk dipertimbangkan
bagi capture otomatis. Ini tidak membatasi embedding kueri recall.
Perintah
Saat memory-lancedb menjadi plugin memori aktif, plugin ini mendaftarkan namespace CLI ltm:
openclaw ltm list
openclaw ltm search "project preferences"
openclaw ltm stats
Plugin ini juga memperluas openclaw memory dengan subperintah query non-vektor
yang berjalan langsung terhadap tabel LanceDB:
openclaw memory query --cols id,text,createdAt --limit 20
openclaw memory query --filter "category = 'preference'" --order-by createdAt:desc
--cols <columns>: allowlist kolom yang dipisahkan koma (default keid,text,importance,category,createdAt).--filter <condition>: klausa WHERE bergaya SQL; dibatasi hingga 200 karakter dan dibatasi ke alfanumerik, operator perbandingan, tanda kutip, tanda kurung, dan sekumpulan kecil tanda baca aman.--limit <n>: bilangan bulat positif; default10.--order-by <column>:<asc|desc>: pengurutan dalam memori yang diterapkan setelah filter; kolom pengurutan otomatis disertakan dalam proyeksi.
Agen juga mendapatkan alat memori LanceDB dari plugin memori aktif:
memory_recalluntuk recall yang didukung LanceDBmemory_storeuntuk menyimpan fakta, preferensi, keputusan, dan entitas pentingmemory_forgetuntuk menghapus memori yang cocok
Penyimpanan
Secara default, data LanceDB berada di bawah ~/.openclaw/memory/lancedb. Ganti
path dengan dbPath:
{
plugins: {
entries: {
"memory-lancedb": {
enabled: true,
config: {
dbPath: "~/.openclaw/memory/lancedb",
embedding: {
apiKey: "${OPENAI_API_KEY}",
model: "text-embedding-3-small",
},
},
},
},
},
}
storageOptions menerima pasangan kunci/nilai string untuk backend penyimpanan LanceDB dan
mendukung ekspansi ${ENV_VAR}:
{
plugins: {
entries: {
"memory-lancedb": {
enabled: true,
config: {
dbPath: "s3://memory-bucket/openclaw",
storageOptions: {
access_key: "${AWS_ACCESS_KEY_ID}",
secret_key: "${AWS_SECRET_ACCESS_KEY}",
endpoint: "${AWS_ENDPOINT_URL}",
},
embedding: {
apiKey: "${OPENAI_API_KEY}",
model: "text-embedding-3-small",
},
},
},
},
},
}
Dependensi runtime
memory-lancedb bergantung pada paket native @lancedb/lancedb. OpenClaw yang dikemas
memperlakukan paket tersebut sebagai bagian dari paket plugin. Startup Gateway
tidak memperbaiki dependensi plugin; jika dependensi hilang, instal ulang atau
perbarui paket plugin dan mulai ulang Gateway.
Jika instalasi lama mencatat galat dist/package.json yang hilang atau
@lancedb/lancedb yang hilang selama pemuatan plugin, tingkatkan OpenClaw dan mulai ulang
Gateway.
Jika plugin mencatat bahwa LanceDB tidak tersedia pada darwin-x64, gunakan backend
memori default di mesin tersebut, pindahkan Gateway ke platform yang didukung, atau
nonaktifkan memory-lancedb.
Pemecahan masalah
Panjang input melebihi panjang konteks
Ini biasanya berarti model embedding menolak kueri recall:
memory-lancedb: recall failed: Error: 400 the input length exceeds the context length
Atur recallMaxChars yang lebih rendah, lalu mulai ulang Gateway:
{
plugins: {
entries: {
"memory-lancedb": {
config: {
recallMaxChars: 400,
},
},
},
},
}
Untuk Ollama, verifikasi juga bahwa server embedding dapat dijangkau dari host Gateway:
curl http://127.0.0.1:11434/v1/embeddings \
-H "Content-Type: application/json" \
-d '{"model":"mxbai-embed-large","input":"hello"}'
Model embedding tidak didukung
Tanpa dimensions, hanya dimensi embedding OpenAI bawaan yang diketahui.
Untuk model embedding lokal atau kustom, atur embedding.dimensions ke ukuran vektor
yang dilaporkan oleh model tersebut.
Plugin dimuat tetapi tidak ada memori yang muncul
Periksa bahwa plugins.slots.memory mengarah ke memory-lancedb, lalu jalankan:
openclaw ltm stats
openclaw ltm search "recent preference"
Jika autoCapture dinonaktifkan, plugin akan me-recall memori yang ada tetapi
tidak akan otomatis menyimpan yang baru. Gunakan alat memory_store atau aktifkan
autoCapture jika Anda menginginkan capture otomatis.