Sessions and memory
Manajemen sesi
OpenClaw mengatur percakapan ke dalam sesi. Setiap pesan dirutekan ke sesi berdasarkan asalnya -- DM, obrolan grup, pekerjaan cron, dll.
Cara pesan dirutekan
| Sumber | Perilaku |
|---|---|
| Pesan langsung | Sesi bersama secara default |
| Obrolan grup | Terisolasi per grup |
| Ruang/saluran | Terisolasi per ruang |
| Pekerjaan Cron | Sesi baru per eksekusi |
| Webhook | Terisolasi per hook |
Isolasi DM
Secara default, semua DM berbagi satu sesi untuk kesinambungan. Ini baik untuk penyiapan pengguna tunggal.
Perbaikannya:
{
session: {
dmScope: "per-channel-peer", // isolate by channel + sender
},
}
Opsi lain:
main(default) -- semua DM berbagi satu sesi.per-peer-- isolasi berdasarkan pengirim (lintas saluran).per-channel-peer-- isolasi berdasarkan saluran + pengirim (direkomendasikan).per-account-channel-peer-- isolasi berdasarkan akun + saluran + pengirim.
Dock saluran tertaut
Perintah dock memungkinkan pengguna memindahkan rute balasan sesi obrolan langsung saat ini ke saluran tertaut lain tanpa memulai sesi baru. Lihat Docking saluran untuk contoh, konfigurasi, dan pemecahan masalah.
Verifikasi penyiapan Anda dengan openclaw security audit.
Siklus hidup sesi
Sesi digunakan kembali sampai kedaluwarsa:
- Reset harian (default) -- sesi baru pada pukul 04.00 waktu lokal di host
Gateway. Kesegaran harian didasarkan pada kapan
sessionIdsaat ini dimulai, bukan pada penulisan metadata berikutnya. - Reset menganggur (opsional) -- sesi baru setelah periode tanpa aktivitas. Atur
session.reset.idleMinutes. Kesegaran menganggur didasarkan pada interaksi pengguna/saluran nyata terakhir, sehingga peristiwa sistem Heartbeat, Cron, dan exec tidak menjaga sesi tetap hidup. - Reset manual -- ketik
/newatau/resetdi obrolan./new <model>juga mengganti model.
Ketika reset harian dan menganggur sama-sama dikonfigurasi, yang kedaluwarsa lebih dulu yang berlaku. Giliran peristiwa sistem Heartbeat, Cron, exec, dan lainnya dapat menulis metadata sesi, tetapi penulisan tersebut tidak memperpanjang kesegaran reset harian atau menganggur. Ketika reset menggulung sesi, pemberitahuan peristiwa sistem yang diantrekan untuk sesi lama akan dibuang sehingga pembaruan latar belakang yang basi tidak ditambahkan di awal prompt pertama di sesi baru.
Sesi dengan sesi CLI aktif yang dimiliki penyedia tidak dipotong oleh default harian
implisit. Gunakan /reset atau konfigurasikan session.reset secara eksplisit ketika
sesi tersebut harus kedaluwarsa berdasarkan timer.
Tempat status berada
Semua status sesi dimiliki oleh Gateway. Klien UI meminta data sesi dari Gateway.
- Penyimpanan:
~/.openclaw/agents/<agentId>/sessions/sessions.json - Transkrip:
~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl
sessions.json menyimpan timestamp siklus hidup terpisah:
sessionStartedAt: kapansessionIdsaat ini dimulai; reset harian menggunakan ini.lastInteractionAt: interaksi pengguna/saluran terakhir yang memperpanjang masa hidup menganggur.updatedAt: mutasi baris penyimpanan terakhir; berguna untuk daftar dan pruning, tetapi tidak otoritatif untuk kesegaran reset harian/menganggur.
Baris lama tanpa sessionStartedAt diselesaikan dari header sesi JSONL transkrip
jika tersedia. Jika baris lama juga tidak memiliki lastInteractionAt,
kesegaran menganggur fallback ke waktu mulai sesi tersebut, bukan ke penulisan pembukuan
berikutnya.
Pemeliharaan sesi
OpenClaw secara otomatis membatasi penyimpanan sesi seiring waktu. Secara default, ini berjalan
dalam mode warn (melaporkan apa yang akan dibersihkan). Atur session.maintenance.mode
ke "enforce" untuk pembersihan otomatis:
{
session: {
maintenance: {
mode: "enforce",
pruneAfter: "30d",
maxEntries: 500,
},
},
}
Untuk batas maxEntries ukuran produksi, penulisan runtime Gateway menggunakan buffer high-water kecil dan membersihkan kembali ke batas yang dikonfigurasi dalam batch. Pembacaan penyimpanan sesi tidak melakukan pruning atau membatasi entri selama startup Gateway. Ini menghindari menjalankan pembersihan penyimpanan penuh pada setiap startup atau sesi Cron terisolasi. openclaw sessions cleanup --enforce menerapkan batas tersebut segera.
Pemeliharaan mempertahankan pointer percakapan eksternal yang tahan lama, termasuk sesi grup dan sesi obrolan berbasis thread, sambil tetap memungkinkan entri Cron sintetis, hook, Heartbeat, ACP, dan sub-agen menua dan keluar.
Jika sebelumnya Anda menggunakan isolasi pesan langsung dan kemudian mengembalikan
session.dmScope ke main, pratinjau baris DM lama berbasis peer-key dengan
openclaw sessions cleanup --dry-run --fix-dm-scope. Menerapkan flag yang sama
menghentikan baris direct-DM lama tersebut dan menyimpan transkripnya sebagai arsip
yang dihapus.
Pratinjau dengan openclaw sessions cleanup --dry-run.
Memeriksa sesi
openclaw status-- jalur penyimpanan sesi dan aktivitas terbaru.openclaw sessions --json-- semua sesi (filter dengan--active <minutes>)./statusdi obrolan -- penggunaan konteks, model, dan toggle./context list-- apa yang ada di prompt sistem.
Bacaan lebih lanjut
- Pruning Sesi -- memangkas hasil tool
- Compaction -- meringkas percakapan panjang
- Tool Sesi -- tool agen untuk kerja lintas sesi
- Pendalaman Manajemen Sesi -- skema penyimpanan, transkrip, kebijakan pengiriman, metadata asal, dan konfigurasi lanjutan
- Multi-Agen — perutean dan isolasi sesi lintas agen
- Tugas Latar Belakang — cara kerja terlepas membuat catatan tugas dengan referensi sesi
- Perutean Saluran — cara pesan masuk dirutekan ke sesi