Active Memory adalah sub-agen memori pemblokir opsional yang dimiliki Plugin dan berjalan sebelum balasan utama untuk sesi percakapan yang memenuhi syarat. Fitur ini ada karena kebanyakan sistem memori mampu, tetapi reaktif. Sistem tersebut bergantung pada agen utama untuk memutuskan kapan mencari memori, atau pada pengguna untuk mengatakan hal-hal seperti “ingat ini” atau “cari memori.” Pada saat itu, momen ketika memori seharusnya membuat balasan terasa alami sudah terlewat. Active Memory memberi sistem satu kesempatan terbatas untuk memunculkan memori yang relevan sebelum balasan utama dibuat.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Mulai cepat
Tempelkan ini keopenclaw.json untuk penyiapan bawaan yang aman — Plugin aktif, dicakup ke
agen main, hanya sesi pesan langsung, mewarisi model sesi
jika tersedia:
plugins.entries.active-memory.enabled: truemengaktifkan Pluginconfig.agents: ["main"]hanya mengikutsertakan agenmainke Active Memoryconfig.allowedChatTypes: ["direct"]mencakupnya ke sesi pesan langsung (ikutsertakan grup/saluran secara eksplisit)config.model(opsional) menetapkan model recall khusus; jika tidak diatur, mewarisi model sesi saat iniconfig.modelFallbackhanya digunakan ketika tidak ada model eksplisit atau turunan yang terselesaikanconfig.promptStyle: "balanced"adalah bawaan untuk moderecent- Active Memory tetap hanya berjalan untuk sesi chat persisten interaktif yang memenuhi syarat
Rekomendasi kecepatan
Penyiapan paling sederhana adalah membiarkanconfig.model tidak diatur dan membiarkan Active Memory menggunakan
model yang sama dengan yang sudah Anda gunakan untuk balasan normal. Itu adalah bawaan paling aman
karena mengikuti penyedia, autentikasi, dan preferensi model Anda yang sudah ada.
Jika Anda ingin Active Memory terasa lebih cepat, gunakan model inferensi khusus
alih-alih meminjam model chat utama. Kualitas recall penting, tetapi latensi
lebih penting daripada pada jalur jawaban utama, dan permukaan alat Active Memory
sempit (hanya memanggil alat recall memori yang tersedia).
Opsi model cepat yang baik:
cerebras/gpt-oss-120buntuk model recall khusus berlatensi rendahgoogle/gemini-3-flashsebagai fallback berlatensi rendah tanpa mengubah model chat utama Anda- model sesi normal Anda, dengan membiarkan
config.modeltidak diatur
Penyiapan Cerebras
Tambahkan penyedia Cerebras dan arahkan Active Memory ke penyedia tersebut:chat/completions untuk
model yang dipilih — visibilitas /v1/models saja tidak menjaminnya.
Cara melihatnya
Active Memory menyisipkan prefiks prompt tidak tepercaya yang tersembunyi untuk model. Fitur ini tidak menampilkan tag mentah<active_memory_plugin>...</active_memory_plugin> dalam
balasan normal yang terlihat oleh klien.
Toggle sesi
Gunakan perintah Plugin ketika Anda ingin menjeda atau melanjutkan Active Memory untuk sesi chat saat ini tanpa mengedit konfigurasi:plugins.entries.active-memory.enabled, penargetan agen, atau konfigurasi global
lainnya.
Jika Anda ingin perintah menulis konfigurasi dan menjeda atau melanjutkan Active Memory untuk
semua sesi, gunakan bentuk global eksplisit:
plugins.entries.active-memory.config.enabled. Ini membiarkan
plugins.entries.active-memory.enabled tetap aktif agar perintah tetap tersedia untuk
mengaktifkan kembali Active Memory nanti.
Jika Anda ingin melihat apa yang dilakukan Active Memory dalam sesi langsung, aktifkan
toggle sesi yang sesuai dengan keluaran yang Anda inginkan:
- baris status Active Memory seperti
Active Memory: status=ok elapsed=842ms query=recent summary=34 charssaat/verbose on - ringkasan debug yang mudah dibaca seperti
Active Memory Debug: Lemon pepper wings with blue cheese.saat/trace on
/trace raw, blok Model Input (User Role) yang dilacak akan
menampilkan prefiks Active Memory tersembunyi sebagai:
Kapan berjalan
Active Memory menggunakan dua gate:- Ikut serta konfigurasi
Plugin harus diaktifkan, dan id agen saat ini harus muncul di
plugins.entries.active-memory.config.agents. - Kelayakan runtime ketat Meskipun diaktifkan dan ditargetkan, Active Memory hanya berjalan untuk sesi chat persisten interaktif yang memenuhi syarat.
Jenis sesi
config.allowedChatTypes mengontrol jenis percakapan mana yang boleh menjalankan Active
Memory sama sekali.
Bawaannya adalah:
config.allowedChatIds dan
config.deniedChatIds setelah memilih jenis sesi yang diizinkan.
allowedChatIds adalah allowlist eksplisit berisi id percakapan yang terselesaikan. Ketika
tidak kosong, Active Memory hanya berjalan ketika id percakapan sesi ada dalam
daftar tersebut. Ini mempersempit semua jenis chat yang diizinkan sekaligus, termasuk pesan langsung.
Jika Anda menginginkan semua pesan langsung plus hanya grup tertentu, sertakan
id peer langsung dalam allowedChatIds atau tetap fokuskan allowedChatTypes pada
rollout grup/saluran yang sedang Anda uji.
deniedChatIds adalah denylist eksplisit. Ini selalu menang atas
allowedChatTypes dan allowedChatIds, sehingga percakapan yang cocok dilewati
meskipun jenis sesinya sebenarnya diizinkan.
Id berasal dari kunci sesi saluran persisten: misalnya Feishu
chat_id / open_id, id chat Telegram, atau id saluran Slack. Pencocokan
tidak peka huruf besar/kecil. Jika allowedChatIds tidak kosong dan OpenClaw tidak dapat menyelesaikan
id percakapan untuk sesi tersebut, Active Memory melewati giliran itu alih-alih
menebak.
Contoh:
Tempat berjalan
Active Memory adalah fitur pengayaan percakapan, bukan fitur inferensi seluruh platform.| Permukaan | Menjalankan Active Memory? |
|---|---|
| UI kontrol / sesi persisten chat web | Ya, jika Plugin diaktifkan dan agen ditargetkan |
| Sesi saluran interaktif lain pada jalur chat persisten yang sama | Ya, jika Plugin diaktifkan dan agen ditargetkan |
| Run sekali jalan tanpa antarmuka | Tidak |
| Run Heartbeat/latar belakang | Tidak |
Jalur internal generik agent-command | Tidak |
| Eksekusi sub-agen/pembantu internal | Tidak |
Mengapa menggunakannya
Gunakan Active Memory ketika:- sesi bersifat persisten dan menghadap pengguna
- agen memiliki memori jangka panjang bermakna untuk dicari
- kontinuitas dan personalisasi lebih penting daripada determinisme prompt mentah
- preferensi stabil
- kebiasaan berulang
- konteks pengguna jangka panjang yang seharusnya muncul secara alami
- otomatisasi
- worker internal
- tugas API sekali jalan
- tempat di mana personalisasi tersembunyi akan terasa mengejutkan
Cara kerjanya
Bentuk runtime adalah: Sub-agen memori pemblokir hanya dapat menggunakan alat recall memori yang dikonfigurasi. Secara bawaan yaitu:memory_searchmemory_get
plugins.slots.memory adalah memory-lancedb, bawaannya adalah memory_recall
sebagai gantinya. Atur config.toolsAllow ketika penyedia memori lain mengekspos
kontrak alat recall yang berbeda.
Jika koneksinya lemah, sebaiknya mengembalikan NONE.
Mode kueri
config.queryMode mengontrol seberapa banyak percakapan yang dilihat sub-agen memori pemblokir.
Pilih mode terkecil yang tetap menjawab pertanyaan lanjutan dengan baik;
anggaran timeout sebaiknya bertambah seiring ukuran konteks (message < recent < full).
- message
- recent
- full
Hanya pesan pengguna terbaru yang dikirim.Gunakan ini ketika:
- Anda menginginkan perilaku tercepat
- Anda menginginkan bias terkuat ke recall preferensi stabil
- giliran lanjutan tidak membutuhkan konteks percakapan
3000 hingga 5000 md untuk config.timeoutMs.Gaya prompt
config.promptStyle mengontrol seberapa proaktif atau ketat sub-agen memori pemblokiran
saat memutuskan apakah akan mengembalikan memori.
Gaya yang tersedia:
balanced: default serbaguna untuk moderecentstrict: paling tidak proaktif; terbaik saat Anda menginginkan sangat sedikit kebocoran dari konteks sekitarcontextual: paling ramah kontinuitas; terbaik saat riwayat percakapan perlu lebih berpengaruhrecall-heavy: lebih bersedia memunculkan memori pada kecocokan yang lebih lunak tetapi tetap masuk akalprecision-heavy: secara agresif lebih memilihNONEkecuali kecocokannya jelaspreference-only: dioptimalkan untuk favorit, kebiasaan, rutinitas, selera, dan fakta pribadi yang berulang
config.promptStyle tidak diatur:
config.promptStyle secara eksplisit, penggantian itu yang berlaku.
Contoh:
Kebijakan fallback model
Jikaconfig.model tidak diatur, Active Memory mencoba menyelesaikan model dalam urutan ini:
config.modelFallback mengontrol langkah fallback yang dikonfigurasi.
Fallback kustom opsional:
config.modelFallbackPolicy dipertahankan hanya sebagai kolom kompatibilitas yang sudah usang
untuk konfigurasi lama. Kolom ini tidak lagi mengubah perilaku runtime.
Alat memori
Secara default, Active Memory mengizinkan sub-agen recall pemblokiran memanggilmemory_search dan memory_get. Ini sesuai dengan kontrak bawaan memory-core.
Saat plugins.slots.memory memilih memory-lancedb dan
config.toolsAllow tidak diatur, Active Memory mempertahankan perilaku LanceDB yang ada
dan menggunakan memory_recall sebagai gantinya.
Jika Anda menggunakan Plugin memori lain, atur config.toolsAllow ke nama alat persis
yang didaftarkan Plugin tersebut. Active Memory mencantumkan alat tersebut di prompt
recall dan meneruskan daftar yang sama ke sub-agen tertanam. Jika tidak ada alat
yang dikonfigurasi tersedia, atau sub-agen memori gagal, Active Memory
melewati recall untuk giliran tersebut dan balasan utama berlanjut tanpa konteks memori.
toolsAllow hanya menerima nama alat memori konkret. Wildcard, entri group:*,
dan alat agen inti seperti read, exec, message, dan
web_search diabaikan sebelum sub-agen memori tersembunyi dimulai.
Catatan perilaku default: Active Memory tidak lagi menyertakan memory_recall dalam
allowlist default memory-core. Penyiapan memory-lancedb yang ada tetap berfungsi
saat plugins.slots.memory diatur ke memory-lancedb. toolsAllow eksplisit
selalu menggantikan default otomatis.
memory-core bawaan
Penyiapan default tidak memerlukantoolsAllow eksplisit:
Memori LanceDB
Pluginmemory-lancedb bawaan mengekspos memory_recall. Memilih
slot memori sudah cukup bagi Active Memory untuk menggunakan alat recall tersebut:
Lossless Claw
Lossless Claw adalah Plugin mesin konteks dengan alat recall-nya sendiri. Instal dan konfigurasikan terlebih dahulu sebagai mesin konteks; lihat Mesin konteks. Lalu izinkan Active Memory menggunakan alat recall Lossless Claw:lcm_expand dalam toolsAllow untuk sub-agen Active Memory utama.
Lossless Claw menggunakannya sebagai alat ekspansi terdelegasi tingkat lebih rendah.
Escape hatch lanjutan
Opsi ini sengaja bukan bagian dari penyiapan yang direkomendasikan.config.thinking dapat menggantikan tingkat berpikir sub-agen memori pemblokiran:
config.promptAppend menambahkan instruksi operator tambahan setelah prompt Active
Memory default dan sebelum konteks percakapan:
promptAppend dengan toolsAllow kustom saat Plugin memori non-inti memerlukan
urutan alat khusus penyedia atau instruksi pembentukan kueri.
config.promptOverride menggantikan prompt Active Memory default. OpenClaw
tetap menambahkan konteks percakapan setelahnya:
NONE
atau konteks fakta pengguna yang ringkas untuk model utama.
Persistensi transkrip
Jalannya sub-agen memori pemblokiran Active Memory membuat transkripsession.jsonl
nyata selama panggilan sub-agen memori pemblokiran.
Secara default, transkrip tersebut bersifat sementara:
- ditulis ke direktori sementara
- hanya digunakan untuk proses sub-agen memori pemblokiran
- dihapus segera setelah proses selesai
config.transcriptDir.
Gunakan ini dengan hati-hati:
- transkrip sub-agen memori pemblokiran dapat menumpuk dengan cepat pada sesi yang sibuk
- mode kueri
fulldapat menduplikasi banyak konteks percakapan - transkrip ini berisi konteks prompt tersembunyi dan memori yang di-recall
Konfigurasi
Semua konfigurasi Active Memory berada di bawah:| Kunci | Tipe | Makna |
|---|---|---|
enabled | boolean | Mengaktifkan Plugin itu sendiri |
config.agents | string[] | Id agen yang boleh menggunakan active memory |
config.model | string | Ref model sub-agen memori pemblokir opsional; jika tidak disetel, active memory menggunakan model sesi saat ini |
config.allowedChatTypes | ("direct" | "group" | "channel")[] | Jenis sesi yang boleh menjalankan Active Memory; default-nya adalah sesi bergaya pesan langsung |
config.allowedChatIds | string[] | Allowlist opsional per percakapan yang diterapkan setelah allowedChatTypes; daftar yang tidak kosong gagal tertutup |
config.deniedChatIds | string[] | Denylist opsional per percakapan yang menimpa jenis sesi yang diizinkan dan id yang diizinkan |
config.queryMode | "message" | "recent" | "full" | Mengontrol seberapa banyak percakapan yang dilihat sub-agen memori pemblokir |
config.promptStyle | "balanced" | "strict" | "contextual" | "recall-heavy" | "precision-heavy" | "preference-only" | Mengontrol seberapa cepat atau ketat sub-agen memori pemblokir saat memutuskan apakah akan mengembalikan memori |
config.toolsAllow | string[] | Nama alat memori konkret yang boleh dipanggil sub-agen memori pemblokir; default-nya ["memory_search", "memory_get"], atau ["memory_recall"] saat plugins.slots.memory adalah memory-lancedb; wildcard, entri group:*, dan alat agen inti diabaikan |
config.thinking | "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | "max" | Override thinking lanjutan untuk sub-agen memori pemblokir; default off demi kecepatan |
config.promptOverride | string | Pengganti prompt penuh tingkat lanjut; tidak direkomendasikan untuk penggunaan normal |
config.promptAppend | string | Instruksi tambahan tingkat lanjut yang ditambahkan ke prompt default atau prompt yang dioverride |
config.timeoutMs | number | Timeout keras untuk sub-agen memori pemblokir, dibatasi pada 120000 ms |
config.setupGraceTimeoutMs | number | Anggaran setup tambahan tingkat lanjut sebelum timeout recall berakhir; default-nya 0 dan dibatasi pada 30000 ms. Lihat Grace cold-start untuk panduan peningkatan v2026.4.x |
config.maxSummaryChars | number | Jumlah karakter total maksimum yang diizinkan dalam ringkasan active-memory |
config.logging | boolean | Memancarkan log active memory saat tuning |
config.persistTranscripts | boolean | Menyimpan transkrip sub-agen memori pemblokir di disk alih-alih menghapus file sementara |
config.transcriptDir | string | Direktori transkrip sub-agen memori pemblokir relatif di bawah folder sesi agen |
| Kunci | Tipe | Makna |
|---|---|---|
config.maxSummaryChars | number | Jumlah karakter total maksimum yang diizinkan dalam ringkasan active-memory |
config.recentUserTurns | number | Giliran pengguna sebelumnya yang disertakan saat queryMode adalah recent |
config.recentAssistantTurns | number | Giliran asisten sebelumnya yang disertakan saat queryMode adalah recent |
config.recentUserChars | number | Karakter maksimum per giliran pengguna terbaru |
config.recentAssistantChars | number | Karakter maksimum per giliran asisten terbaru |
config.cacheTtlMs | number | Penggunaan ulang cache untuk kueri identik yang berulang (rentang: 1000-120000 ms; default: 15000) |
config.circuitBreakerMaxTimeouts | number | Lewati recall setelah timeout berturut-turut sebanyak ini untuk agen/model yang sama. Direset pada recall yang berhasil atau setelah cooldown berakhir (rentang: 1-20; default: 3). |
config.circuitBreakerCooldownMs | number | Berapa lama melewati recall setelah circuit breaker terpicu, dalam ms (rentang: 5000-600000; default: 60000). |
Setup yang direkomendasikan
Mulai denganrecent.
/verbose on untuk
baris status normal dan /trace on untuk ringkasan debug active-memory alih-alih
mencari perintah debug active-memory yang terpisah. Di kanal chat, baris
diagnostik tersebut dikirim setelah balasan utama asisten, bukan sebelumnya.
Lalu pindah ke:
messagejika Anda menginginkan latensi lebih rendahfulljika Anda memutuskan konteks tambahan sepadan dengan sub-agen memori pemblokir yang lebih lambat
Grace cold-start
Sebelum v2026.5.2, Plugin secara diam-diam memperpanjangtimeoutMs yang Anda
konfigurasikan dengan tambahan 30000 ms selama cold-start agar pemanasan model,
pemuatan indeks embedding, dan recall pertama dapat berbagi satu anggaran yang
lebih besar. v2026.5.2 memindahkan grace tersebut ke balik konfigurasi eksplisit
setupGraceTimeoutMs — timeoutMs yang Anda konfigurasikan kini menjadi
anggaran secara default, kecuali Anda ikut mengaktifkannya.
Jika Anda meningkatkan dari v2026.4.x dan Anda menyetel timeoutMs ke nilai yang
dituning untuk dunia grace implisit lama (starter timeoutMs: 15000 yang
direkomendasikan adalah salah satu contohnya), setel setupGraceTimeoutMs: 30000
untuk memperpanjang hook prompt-build dan anggaran watchdog luar kembali ke nilai
efektif sebelum v5.2:
setupGraceTimeoutMs, sehingga Plugin
tidak lagi secara diam-diam memperpanjang konfigurasi 15000 ms menjadi 45000 ms
di lane utama.”
Runner pengingatan tertanam menggunakan anggaran timeout efektif yang sama, sehingga
setupGraceTimeoutMs mencakup watchdog pembangun prompt luar dan proses
pengingatan blocking di dalamnya.
Untuk Gateway dengan sumber daya terbatas, saat latensi cold-start adalah trade-off yang sudah diketahui,
nilai yang lebih rendah (5000–15000 ms) juga berfungsi — trade-off-nya adalah peluang lebih tinggi
bahwa pengingatan pertama setelah Gateway dimulai ulang mengembalikan hasil kosong sementara pemanasan
selesai.
Debugging
Jika Active Memory tidak muncul di tempat yang Anda harapkan:- Konfirmasi Plugin diaktifkan di bawah
plugins.entries.active-memory.enabled. - Konfirmasi id agen saat ini tercantum dalam
config.agents. - Konfirmasi Anda menguji melalui sesi chat persisten interaktif.
- Aktifkan
config.logging: truedan pantau log Gateway. - Verifikasi pencarian memori itu sendiri berfungsi dengan
openclaw memory status --deep.
maxSummaryChars
- turunkan
queryMode - turunkan
timeoutMs - kurangi jumlah giliran terbaru
- kurangi batas karakter per giliran
Masalah umum
Active Memory berjalan di atas pipeline pengingatan Plugin memori yang dikonfigurasi, sehingga sebagian besar kejutan pengingatan adalah 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,
konfirmasi config.toolsAllow menamai alat yang benar-benar didaftarkan oleh Plugin tersebut.
Penyedia embedding berubah atau berhenti berfungsi
Penyedia embedding berubah atau berhenti berfungsi
Jika
memorySearch.provider tidak disetel, OpenClaw mendeteksi otomatis penyedia embedding pertama
yang tersedia. Kunci API baru, kuota habis, atau penyedia hosted yang
dibatasi rate limit dapat mengubah penyedia mana yang terselesaikan di antara
proses. Jika tidak ada penyedia yang terselesaikan, memory_search dapat menurun menjadi pengambilan
hanya leksikal; kegagalan runtime setelah penyedia sudah dipilih tidak
fallback secara otomatis.Sematkan penyedia (dan fallback opsional) secara eksplisit agar pemilihan
deterministik. Lihat Pencarian Memori untuk daftar lengkap
penyedia dan contoh penyematan.Pengingatan terasa lambat, kosong, atau tidak konsisten
Pengingatan terasa lambat, kosong, atau tidak konsisten
- Aktifkan
/trace onuntuk menampilkan ringkasan debug Active Memory milik Plugin dalam sesi. - Aktifkan
/verbose onuntuk juga melihat baris status🧩 Active Memory: ...setelah setiap balasan. - Pantau log Gateway untuk
active-memory: ... start|done,memory sync failed (search-bootstrap), atau galat embedding penyedia. - Jalankan
openclaw memory status --deepuntuk memeriksa backend pencarian memori dan kesehatan indeks. - Jika Anda menggunakan
ollama, konfirmasi model embedding sudah terinstal (ollama list).
Pengingatan pertama setelah Gateway dimulai ulang mengembalikan `status=timeout`
Pengingatan 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 pengingatan pertama berjalan, proses
dapat mencapai anggaran
timeoutMs yang dikonfigurasi dan mengembalikan status=timeout
dengan output kosong. Log Gateway menampilkan active-memory timeout after Nms
di sekitar balasan pertama yang memenuhi syarat setelah dimulai ulang.Lihat Grace cold-start di bawah Penyiapan yang disarankan untuk
nilai setupGraceTimeoutMs yang direkomendasikan.