Mengingat lintas percakapan
Untuk agen pribadi atau yang sepenuhnya tepercaya, aktifkan pengingatan terbatas dari percakapan pribadi lainnya dengan satu pengaturan per agen:session.dmScope global harus tidak ditetapkan atau "main", dan tidak ada pengikatan yang boleh mengganti session.dmScope. Isolasi DM apa pun yang dikonfigurasi akan menonaktifkannya secara default. true atau false yang eksplisit selalu diprioritaskan. Saat diaktifkan, OpenClaw mengindeks transkrip sesi agen tersebut dan menjalankan tahap pengambilan Active Memory sebelum balasan pribadi yang memenuhi syarat. Tahap ini dapat membaca kutipan transkrip yang relevan dari percakapan pribadi lain milik agen yang sama. Percakapan yang sedang dijawab tidak disertakan.
Batas privasinya tetap:
- percakapan langsung pribadi dan percakapan UI eksplisit yang persisten dapat saling mengingat
- grup dan saluran bukan sumber maupun tujuan pengingatan
- transkrip agen lain tidak pernah memenuhi syarat
- transkrip yang tidak diketahui atau diarsipkan tanpa metadata percakapan yang memadai akan ditolak
tools.sessions.visibility, atau memberikan akses alat sessions_* yang lebih luas. Memori ruang kerja bersama (MEMORY.md dan memory/*.md) mempertahankan perilakunya saat ini.
Active Memory harus tetap diaktifkan. Pengambilan menambahkan langkah pemblokiran terbatas pada balasan yang memenuhi syarat; batas waktu, pencarian yang tidak tersedia, dan hasil kosong semuanya melanjutkan balasan tanpa konteks transkrip yang diingat. Penyedia memori bawaan OpenClaw mendukung jalur pengingatan transkrip terlindungi ini dengan backend bawaan maupun QMD. Penyedia memori lain mempertahankan perilaku pengingatannya sendiri, tetapi tidak secara otomatis menerima otorisasi transkrip pribadi. openclaw doctor melaporkan penyedia yang tidak didukung atau alat memory_search yang tidak tersedia.
Mulai cepat Active Memory tingkat lanjut
Tempelkan keopenclaw.json untuk default aman tingkat lanjut: plugin aktif, dibatasi ke main, hanya sesi pesan langsung, dan model diwarisi dari sesi.
plugins.entries.* (termasuk active-memory.config) berada dalam kategori konfigurasi tanpa mulai ulang: Gateway memuat ulang runtime plugin secara otomatis dan tidak diperlukan mulai ulang manual. Jika tetap ingin memaksakan mulai ulang penuh, jalankan:
plugins.entries.active-memory.enabled: truemengaktifkan pluginconfig.agents: ["main"]hanya mengikutsertakan agenmainconfig.allowedChatTypes: ["direct"]membatasinya ke sesi pesan langsung (ikutsertakan grup/saluran secara eksplisit)config.model(opsional) menetapkan model pengingatan khusus; jika tidak ditetapkan, model sesi saat ini akan diwarisiconfig.modelFallbackhanya digunakan ketika tidak ada model eksplisit atau warisan yang dapat ditentukanconfig.fastModesecara opsional mengganti mode cepat untuk pengingatan tanpa mengubah agen utamaconfig.promptStyle: "balanced"adalah default untuk moderecent- Active Memory tetap hanya berjalan untuk sesi obrolan interaktif persisten yang memenuhi syarat (lihat Kapan fitur ini berjalan)
Cara kerjanya
Subagen pemblokiran hanya dapat memanggil alat pengingatan memori yang dikonfigurasi (lihat Alat memori). Jika hubungan antara kueri dan memori yang tersedia lemah, subagen mengembalikanNONE dan balasan utama dilanjutkan tanpa konteks tambahan.
Active Memory adalah fitur pengayaan percakapan, bukan fitur inferensi di seluruh platform:
Gunakan fitur ini ketika sesi bersifat persisten dan berhadapan dengan pengguna, agen memiliki memori jangka panjang bermakna untuk dicari, serta kesinambungan/personalisasi lebih penting daripada determinisme prompt mentah: preferensi tetap, kebiasaan berulang, dan konteks jangka panjang yang seharusnya muncul secara alami. Fitur ini tidak cocok untuk otomatisasi, pekerja internal, tugas API sekali jalan, atau di tempat mana pun personalisasi tersembunyi akan terasa mengejutkan.
Kapan fitur ini berjalan
Active Memory memiliki dua jalur aktivasi:- Mengingat lintas percakapan secara otomatis menargetkan agen yang pengaturan efektif
memorySearch.rememberAcrossConversations-nya diaktifkan, tetapi hanya untuk percakapan langsung pribadi atau percakapan UI eksplisit yang persisten. - Active Memory tingkat lanjut menargetkan ID agen yang tercantum dalam
plugins.entries.active-memory.config.agentsdan menerapkan kontrol jenis obrolan serta ID obrolan milik plugin.
/active-memory off pada cakupan sesi menjeda kedua jalur untuk percakapan tersebut. Jika ada kondisi yang tidak terpenuhi, Active Memory tidak berjalan untuk giliran tersebut, dan balasan utama tidak terpengaruh.
Jenis sesi
config.allowedChatTypes mengontrol jenis percakapan yang dapat menjalankan jalur Active Memory tingkat lanjut. Pengaturan ini tidak dapat memperluas Mengingat lintas percakapan: pengaturan produk tersebut tetap hanya untuk percakapan pribadi meskipun Active Memory tingkat lanjut diizinkan dalam grup atau saluran. Default:
direct, group, channel, explicit (sesi bergaya portal dengan ID sesi buram, misalnya agent:main:explicit:portal-123).
Sesi pesan langsung berjalan secara default; sesi grup, saluran, dan eksplisit harus diikutsertakan:
config.allowedChatIds dan config.deniedChatIds:
allowedChatIdsadalah daftar izin ID percakapan yang telah ditentukan. Jika tidak kosong, Active Memory hanya berjalan untuk sesi yang ID percakapannya ada dalam daftar — ini mempersempit setiap jenis obrolan yang diizinkan sekaligus, termasuk pesan langsung. Untuk mempertahankan semua pesan langsung sembari mempersempit hanya grup, tambahkan juga ID rekan langsung keallowedChatIds, atau pertahankanallowedChatTypesagar dibatasi ke peluncuran grup/saluran yang sedang diuji.deniedChatIdsadalah daftar penolakan yang selalu diprioritaskan daripadaallowedChatTypesdanallowedChatIds.
chat_id/open_id, ID obrolan Telegram, ID saluran Slack). Pencocokan tidak peka huruf besar-kecil. Jika allowedChatIds tidak kosong dan OpenClaw tidak dapat menentukan ID percakapan untuk sesi tersebut, Active Memory melewati giliran alih-alih menebak.
Tombol sesi
Jeda atau lanjutkan Active Memory untuk sesi obrolan saat ini tanpa mengedit konfigurasi:plugins.entries.active-memory.config.enabled, pengaturan memorySearch.rememberAcrossConversations milik agen, atau konfigurasi global lainnya.
Untuk menjeda/melanjutkan semua sesi, gunakan bentuk global (memerlukan pemilik atau operator.admin):
plugins.entries.active-memory.config.enabled, tetapi membiarkan plugins.entries.active-memory.enabled tetap aktif sehingga perintah tetap tersedia untuk mengaktifkan kembali Active Memory nanti.
Cara melihatnya
Secara default, Active Memory menyisipkan prefiks prompt tidak tepercaya yang tersembunyi dan tidak ditampilkan dalam balasan normal. Aktifkan tombol sesi yang sesuai dengan keluaran yang diinginkan:/verbose onmenambahkan baris status:🧩 Active Memory: status=ok elapsed=842ms query=recent summary=34 chars/trace onmenambahkan ringkasan debug:🔎 Active Memory Debug: Lemon pepper wings with blue cheese.
/trace raw, blok Model Input (User Role) yang dilacak menampilkan prefiks tersembunyi mentah:
Mode kueri
config.queryMode mengontrol seberapa banyak percakapan yang dilihat oleh subagen pemblokiran. Pilih mode terkecil yang masih dapat menjawab tindak lanjut dengan baik; tingkatkan timeoutMs seiring bertambahnya ukuran konteks, dari message ke recent hingga full.
- message
- recent
- penuh
Hanya pesan pengguna terbaru yang dikirim.Gunakan ketika menginginkan perilaku tercepat, kecenderungan terkuat untuk mengingat preferensi tetap, dan giliran tindak lanjut tidak memerlukan konteks percakapan. Mulai sekitar
3000-5000 md untuk config.timeoutMs.Gaya prompt
config.promptStyle mengontrol seberapa proaktif atau ketat subagen dalam
mengembalikan memori:
Pemetaan default ketika
config.promptStyle tidak ditetapkan:
config.promptStyle yang ditetapkan secara eksplisit selalu menggantikan pemetaan tersebut.
Kebijakan fallback model
Jikaconfig.model tidak ditetapkan, Active Memory menentukan model dengan urutan berikut:
config.modelFallbackPolicy adalah bidang kompatibilitas usang yang dipertahankan untuk
konfigurasi lama; bidang ini tidak lagi mengubah perilaku runtime — modelFallback
sepenuhnya merupakan pilihan terakhir dalam rantai di atas, bukan failover runtime yang
mengganti dengan model lain ketika model yang telah ditentukan mengalami galat.
Rekomendasi kecepatan
Membiarkanconfig.model tidak ditetapkan (mewarisi model sesi) adalah
default paling aman: pengaturan ini mengikuti preferensi penyedia, autentikasi, dan model yang sudah ada. Untuk
latensi yang lebih rendah, gunakan model cepat khusus — kualitas pengingatan penting,
tetapi latensi lebih penting di sini daripada pada jalur jawaban utama, dan permukaan
alatnya sempit (hanya alat pengingatan memori).
Pilihan model cepat yang baik:
cerebras/gpt-oss-120b, model pengingatan khusus berlatensi rendahgoogle/gemini-3-flash, fallback berlatensi rendah tanpa mengubah model percakapan utama- model sesi normal, dengan membiarkan
config.modeltidak ditetapkan
Penyiapan Cerebras
chat/completions untuk
model yang dipilih — visibilitas /v1/models saja tidak menjaminnya.
Alat memori
config.toolsAllow menetapkan nama alat konkret yang dapat
dipanggil oleh subagen pemblokir untuk Active Memory tingkat lanjut. Default bergantung pada penyedia memori saat ini:
Jika tidak ada alat yang dikonfigurasi tersedia, atau eksekusi subagen gagal,
Active Memory melewati pengingatan untuk giliran tersebut dan balasan utama berlanjut
tanpa konteks memori. Untuk alat pengingatan khusus, keluaran alat yang tidak kosong dan
terlihat oleh model dianggap sebagai bukti pengingatan, kecuali bidang hasil terstruktur
secara eksplisit melaporkan hasil kosong atau kegagalan.
toolsAllow hanya menerima nama alat memori konkret: wildcard, entri group:*,
dan alat agen inti (read, exec, message, web_search, dan
sejenisnya) disaring secara diam-diam sebelum subagen tersembunyi dimulai.
Memori bawaan
Tidak diperlukantoolsAllow eksplisit:
Memori LanceDB
Setelah menginstal dan mengonfigurasi LanceDB, Active Memory secara otomatis menggunakanmemory_recall; tidak diperlukan toolsAllow eksplisit:
memorySearch.rememberAcrossConversations tidak mengekspos transkrip sesi privat
melalui memory_recall. Gunakan pengingatan otomatis LanceDB atau konfigurasi tingkat lanjut
di atas ketika LanceDB menjadi penyedia memori aktif.
Lossless Claw
Lossless Claw adalah plugin mesin konteks eksternal (openclaw plugins install @martian-engineering/lossless-claw) dengan alat pengingatannya sendiri. Siapkan terlebih dahulu sebagai
mesin konteks; lihat Mesin konteks. Kemudian
arahkan Active Memory ke alat-alatnya:
lcm_expand ke toolsAllow di sini; Lossless Claw menggunakannya sebagai
alat tingkat lebih rendah untuk ekspansi yang didelegasikan, bukan untuk subagen
Active Memory tingkat atas. Lossless Claw mengubah penyusunan konteks tanpa
mengganti penyedia memori saat ini. Pertahankan memory_search dalam toolsAllow
ketika juga menggunakan rememberAcrossConversations; daftar alat khusus LCM tetap
valid untuk Active Memory tingkat lanjut, tetapi menonaktifkan jalur pengingatan
transkrip produk.
Opsi lanjutan
Bukan bagian dari penyiapan yang direkomendasikan.config.thinking menggantikan tingkat pemikiran subagen (default "off",
karena Active Memory berjalan dalam jalur balasan dan waktu pemikiran tambahan secara langsung
menambah latensi yang terlihat oleh pengguna):
config.fastMode menggantikan mode cepat hanya untuk subagen memori pemblokir.
Gunakan true, false, atau "auto"; biarkan tidak ditetapkan untuk mewarisi default
agen, sesi, dan model normal. "auto" menggunakan batas fastAutoOnSeconds
yang dikonfigurasi untuk model pengingatan:
config.promptAppend menambahkan instruksi operator setelah prompt default
dan sebelum konteks percakapan — pasangkan dengan toolsAllow khusus ketika
plugin memori non-inti memerlukan urutan alat atau pembentukan kueri tertentu:
config.promptOverride sepenuhnya menggantikan prompt default (konteks
percakapan tetap ditambahkan setelahnya). Tidak direkomendasikan kecuali sengaja
menguji kontrak pengingatan yang berbeda — prompt default disetel untuk mengembalikan
NONE atau konteks fakta pengguna yang ringkas untuk model utama:
Persistensi transkrip
Eksekusi subagen pemblokir membuat transkripsession.jsonl yang nyata selama
pemanggilan. Secara default, transkrip tersebut ditulis ke direktori sementara dan langsung dihapus
setelah eksekusi selesai.
Untuk menyimpan transkrip tersebut di disk guna penelusuran galat:
config.transcriptDir. Gunakan ini
dengan hati-hati: transkrip dapat terakumulasi dengan cepat pada sesi yang sibuk, mode kueri full
menduplikasi banyak konteks percakapan, dan transkrip ini berisi
konteks prompt tersembunyi serta memori yang diingat.
Konfigurasi
Seluruh konfigurasi Active Memory berada di bawahplugins.entries.active-memory.
Kolom penyetelan yang berguna:
Penyiapan yang disarankan
Mulai denganrecent:
/verbose on untuk baris status dan /trace on untuk ringkasan debug
selama penyetelan — keduanya dikirim sebagai tindak lanjut setelah balasan utama, bukan
sebelumnya. Kemudian beralihlah ke message untuk latensi lebih rendah, atau full jika konteks tambahan
sepadan dengan proses subagen yang lebih lambat.
Tenggang mulai dingin
Sebelum v2026.5.2, plugin secara diam-diam memperpanjangtimeoutMs dengan tambahan 30000
ms selama mulai dingin, sehingga pemanasan model, pemuatan indeks embedding, dan
pemanggilan kembali pertama dapat berbagi satu anggaran yang lebih besar. v2026.5.2 memindahkan tenggang tersebut ke balik
konfigurasi setupGraceTimeoutMs yang eksplisit: timeoutMs kini menjadi anggaran kerja
pemanggilan kembali secara default kecuali Anda memilih untuk mengaktifkannya. Hook pemblokir membungkus anggaran tersebut dalam
dua fase tetap: hingga 1500 ms untuk prapemeriksaan sesi/konfigurasi sebelum pemanggilan kembali
dimulai, lalu 1500 ms tetap yang terpisah untuk penyelesaian pembatalan dan pemulihan transkrip
setelah kerja pemanggilan kembali berhenti. Kedua alokasi tersebut tidak memperpanjang eksekusi model atau alat.
Jika Anda melakukan upgrade dari v2026.4.x dan menyesuaikan timeoutMs untuk dunia
grace implisit lama (timeoutMs: 15000 awal yang direkomendasikan adalah salah satu
contohnya), atur setupGraceTimeoutMs: 30000 untuk memulihkan anggaran efektif
pra-v5.2:
timeoutMs + setupGraceTimeoutMs + 3000 ms (anggaran
pekerjaan pemanggilan kembali yang dikonfigurasi, ditambah hingga 1500 ms untuk preflight, ditambah
alokasi tetap 1500 ms untuk penyelesaian pascapemanggilan kembali). Runner pemanggilan kembali tersemat menggunakan
anggaran batas waktu efektif yang sama, sehingga setupGraceTimeoutMs mencakup
watchdog penyusunan prompt luar dan proses pemanggilan kembali yang memblokir di bagian dalam.
Untuk gateway dengan sumber daya terbatas yang menerima latensi cold-start
sebagai konsekuensinya, nilai yang lebih rendah (5000-15000 ms) juga dapat digunakan — konsekuensinya adalah peluang
yang lebih tinggi bahwa pemanggilan kembali pertama setelah gateway dimulai ulang akan mengembalikan hasil kosong
sementara pemanasan selesai.
Debugging
Jika Active Memory tidak muncul di tempat yang Anda harapkan:- Pastikan plugin diaktifkan di bawah
plugins.entries.active-memory.enabled. - Untuk Remember lintas percakapan, pastikan pengaturan efektif
memorySearch.rememberAcrossConversationsagen diaktifkan, jalankanopenclaw doctoruntuk memverifikasi bahwa penyedia memori saat ini mendukung pemanggilan kembali transkrip terlindungi, dan pastikanconfig.toolsAllowmenyertakanmemory_searchjika dikonfigurasi secara eksplisit. Untuk Active Memory tingkat lanjut, pastikan ID agen tercantum dalamconfig.agents. - Pastikan Anda melakukan pengujian melalui percakapan persisten interaktif yang memenuhi syarat.
- Ingat bahwa grup dan saluran tidak pernah menggunakan pemanggilan kembali transkrip lintas percakapan.
- Aktifkan
config.logging: truedan pantau log gateway. - Verifikasi bahwa pencarian memori itu sendiri berfungsi dengan
openclaw status --deep.
maxSummaryChars. Jika Active Memory terlalu
lambat, turunkan queryMode, turunkan timeoutMs, atau kurangi jumlah giliran terbaru dan
batas karakter per giliran.
Masalah umum
Active Memory tingkat lanjut menggunakan pipeline pemanggilan kembali milik plugin memori yang dikonfigurasi, sehingga sebagian besar hasil pemanggilan kembali yang tidak terduga merupakan masalah penyedia embedding, bukan bug Active Memory. Jalur defaultmemory-core menggunakan memory_search dan
memory_get; slot memory-lancedb menggunakan memory_recall. Jika Anda menggunakan
plugin memori lain, pastikan config.toolsAllow menyebutkan alat yang benar-benar
didaftarkan oleh plugin tersebut. Remember lintas percakapan memiliki cakupan lebih sempit: penyedia memori
saat ini harus mendukung jalur pemanggilan kembali sesi privat/agen yang sama dan terlindungi
milik OpenClaw.
Penyedia embedding beralih atau berhenti berfungsi
Penyedia embedding beralih atau berhenti berfungsi
Jika
memorySearch.provider tidak diatur, OpenClaw menggunakan embedding OpenAI. Atur
memorySearch.provider secara eksplisit untuk embedding Bedrock, DeepInfra, Gemini, GitHub
Copilot, LM Studio, lokal, Mistral, Ollama, Voyage, atau yang kompatibel dengan OpenAI.
Jika penyedia yang dikonfigurasi tidak dapat berjalan, memory_search dapat
menurun menjadi pengambilan leksikal saja; kegagalan runtime setelah penyedia
dipilih tidak secara otomatis beralih ke fallback.Atur memorySearch.fallback opsional hanya jika Anda menginginkan satu fallback
yang disengaja. Lihat Pencarian Memori untuk daftar lengkap
penyedia dan contoh.Pemanggilan kembali terasa lambat, kosong, atau tidak konsisten
Pemanggilan kembali terasa lambat, kosong, atau tidak konsisten
- Aktifkan
/trace onuntuk menampilkan ringkasan debug Active Memory milik plugin dalam sesi. - Aktifkan
/verbose onagar juga melihat baris status🧩 Active Memory: ...setelah setiap balasan. - Pantau log gateway untuk
active-memory: ... start|done,memory sync failed (search-bootstrap), atau kesalahan embedding penyedia. - Jalankan
openclaw status --deepuntuk memeriksa backend pencarian memori dan kesehatan indeks. - Jika Anda menggunakan
ollama, pastikan model embedding telah diinstal (ollama list).
Pemanggilan kembali pertama setelah gateway dimulai ulang mengembalikan `status=timeout`
Pemanggilan kembali pertama setelah gateway dimulai ulang mengembalikan `status=timeout`
Pada v2026.5.2 dan yang lebih baru, jika penyiapan cold-start (pemanasan model + pemuatan
indeks embedding) belum selesai saat pemanggilan kembali pertama dijalankan, proses tersebut
dapat mencapai anggaran
timeoutMs yang dikonfigurasi dan mengembalikan status=timeout
dengan keluaran kosong. Log gateway menampilkan active-memory timeout after Nms
di sekitar balasan pertama yang memenuhi syarat setelah dimulai ulang.Lihat Grace cold-start di bagian Penyiapan yang direkomendasikan untuk
nilai setupGraceTimeoutMs yang direkomendasikan.