Sessions and memory

Manajemen sesi

OpenClaw mengatur percakapan ke dalam sesi. Setiap pesan dirutekan ke sesi berdasarkan asalnya -- DM, obrolan grup, tugas Cron, dan sebagainya.

Cara pesan dirutekan

Sumber Perilaku
Pesan langsung Sesi bersama secara default
Obrolan grup Terisolasi per grup
Ruang/saluran Terisolasi per ruang
Tugas Cron Sesi baru per eksekusi
Webhook Terisolasi per hook

Isolasi DM

Secara default, semua DM berbagi satu sesi untuk kesinambungan. Ini cocok untuk pengaturan pengguna tunggal.

Perbaikannya:

json5
{  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.

Menambatkan saluran tertaut

Perintah dock memungkinkan pengguna memindahkan rute balasan sesi obrolan langsung saat ini ke saluran tertaut lain tanpa memulai sesi baru. Lihat Penambatan saluran untuk contoh, konfigurasi, dan pemecahan masalah.

Verifikasi pengaturan Anda dengan openclaw security audit.

Siklus hidup sesi

Sesi digunakan kembali sampai kedaluwarsa:

  • Reset harian (default) -- sesi baru pada pukul 4:00 pagi waktu lokal di host Gateway. Kesegaran harian didasarkan pada waktu sessionId saat ini dimulai, bukan pada penulisan metadata berikutnya.
  • Reset idle (opsional) -- sesi baru setelah periode tidak aktif. Atur session.reset.idleMinutes. Kesegaran idle didasarkan pada interaksi nyata pengguna/saluran terakhir, sehingga peristiwa sistem Heartbeat, Cron, dan exec tidak membuat sesi tetap hidup.
  • Reset manual -- ketik /new atau /reset dalam obrolan. /new <model> juga mengganti model.

Ketika reset harian dan idle sama-sama dikonfigurasi, yang kedaluwarsa lebih dulu yang berlaku. Giliran Heartbeat, Cron, exec, dan peristiwa sistem lain dapat menulis metadata sesi, tetapi penulisan tersebut tidak memperpanjang kesegaran reset harian atau idle. Ketika reset menggulung sesi, pemberitahuan peristiwa sistem yang mengantre untuk sesi lama dibuang agar pembaruan latar belakang yang usang tidak ditambahkan di awal prompt pertama dalam sesi baru.

Sesi dengan sesi CLI aktif milik penyedia tidak dipotong oleh default harian implisit. Gunakan /reset atau konfigurasikan session.reset secara eksplisit ketika sesi tersebut harus kedaluwarsa berdasarkan timer.

Tempat state berada

Semua state 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 yang terpisah:

  • sessionStartedAt: waktu sessionId saat ini dimulai; reset harian menggunakan ini.
  • lastInteractionAt: interaksi pengguna/saluran terakhir yang memperpanjang masa idle.
  • updatedAt: mutasi baris penyimpanan terakhir; berguna untuk daftar dan pemangkasan, tetapi tidak otoritatif untuk kesegaran reset harian/idle.

Baris lama tanpa sessionStartedAt diselesaikan dari header sesi JSONL transkrip jika tersedia. Jika baris lama juga tidak memiliki lastInteractionAt, kesegaran idle menggunakan waktu mulai sesi tersebut sebagai fallback, bukan penulisan pembukuan berikutnya.

Pemeliharaan sesi

OpenClaw secara otomatis membatasi penyimpanan sesi seiring waktu. Secara default, OpenClaw berjalan dalam mode enforce dan menerapkan pembersihan selama pemeliharaan. Atur session.maintenance.mode ke "warn" untuk melaporkan apa yang akan dibersihkan tanpa mengubah penyimpanan/file:

json5
{  session: {    maintenance: {      mode: "enforce",      pruneAfter: "30d",      maxEntries: 500,    },  },}

Untuk batas maxEntries berukuran produksi, penulisan runtime Gateway menggunakan buffer high-water kecil dan membersihkan kembali ke batas yang dikonfigurasi secara batch. Pembacaan penyimpanan sesi tidak memangkas atau membatasi entri selama startup Gateway. Ini menghindari pembersihan penyimpanan penuh pada setiap startup atau sesi Cron terisolasi. openclaw sessions cleanup --enforce segera menerapkan batas tersebut.

Sesi probe eksekusi model Gateway berumur pendek secara default. Baris yang cocok dengan kunci eksplisit ketat seperti agent:*:explicit:model-run-<uuid> menggunakan retensi tetap 24h, tetapi pembersihan dibatasi oleh tekanan: pembersihan hanya menghapus baris probe usang ketika tekanan pemeliharaan/batas entri sesi tercapai. Ketika pembersihan eksekusi model berjalan, pembersihan ini berjalan sebelum cutoff umur entri usang yang lebih luas dan batas entri. Sesi langsung normal, grup, thread, Cron, hook, Heartbeat, ACP, dan sub-agen tidak mewarisi retensi 24 jam ini.

Pemeliharaan mempertahankan penunjuk percakapan eksternal yang tahan lama, termasuk sesi grup dan sesi obrolan cakupan thread, sambil tetap memungkinkan entri sintetis Cron, hook, Heartbeat, ACP, dan sub-agen menua dan dihapus.

Jika sebelumnya Anda menggunakan isolasi pesan langsung lalu mengembalikan session.dmScope ke main, pratinjau baris DM lama berbasis peer dengan openclaw sessions cleanup --dry-run --fix-dm-scope. Menerapkan flag yang sama memensiunkan baris direct-DM lama tersebut dan menyimpan transkripnya sebagai arsip terhapus.

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>).
  • /status dalam obrolan -- penggunaan konteks, model, dan toggle.
  • /context list -- apa yang ada dalam prompt sistem.

Bacaan lanjutan

Terkait

Was this useful?
On this page

On this page