# Sesi & Memori ## Sesi ### Cara Kerja Sesi Setiap percakapan dengan agen terjadi dalam sebuah **sesi**. Sesi diidentifikasi oleh kunci yang menyandikan konteks, agen mana, saluran mana, obrolan mana. Sesi mempertahankan transkrip lengkap (JSONL hanya-tambah) dari semua pesan, panggilan alat, dan hasil. Transkrip inilah yang memberi agen konteks tentang percakapan yang sedang berlangsung. ### Kunci Sesi Sesi diarahkan secara otomatis berdasarkan konteks: | Pola | Arti | |---------|---------| | `agent:main:main` | Percakapan langsung utama | | `agent:::group:` | Obrolan grup di saluran tertentu | | `agent:::channel:` | Percakapan saluran/ruang | | `cron:` | Eksekusi pekerjaan terjadwal | | `hook:` | Eksekusi yang dipicu webhook | ### Siklus Hidup Sesi - **Reset harian**, Sesi secara otomatis direset pada waktu yang dapat dikonfigurasi (default pukul 4 pagi lokal). Ini membuat konteks percakapan segar setiap hari sambil mempertahankan riwayat. - **Kedaluwarsa idle**, Sesi yang tidak aktif selama periode yang dapat dikonfigurasi dapat direset otomatis. - **Reset manual**, Mulai segar kapan saja dengan perintah `/new` atau `/reset`. ### Pelacakan Token Sesi melacak penggunaan token kumulatif (input, output, baca cache, tulis cache) untuk pemantauan biaya dan manajemen jendela konteks. --- ## Kompaksi ### Apa Itu Kompaksi? Ketika percakapan mendekati batas jendela konteks model, Neotask **mengompaknya**, merangkum pesan lama menjadi ikhtisar yang dipadatkan dan memulai sesi baru dengan ringkasan tersebut ditambah pesan terbaru. ### Cara Kerjanya 1. **Deteksi**, Pantau penggunaan konteks (pemicu default: 80% dari jendela konteks) 2. **Perangkuman**, Pesan lama dirangkum menjadi entri kompaksi 3. **Sesi baru**, Sesi segar dimulai dengan ringkasan yang diinjeksikan di bagian atas 4. **Pelestarian**, Transkrip lama disimpan untuk riwayat tetapi tidak lagi dimuat ke dalam konteks ### Konfigurasi - **Aktif/nonaktif**, Aktifkan/nonaktifkan kompaksi otomatis - **Ambang batas**, Persentase jendela konteks yang memicu kompaksi (default 80%) - **Pesan minimum**, Jangan mengompak jika ada lebih sedikit dari N pesan ### Kompaksi Manual Anda dapat memicu kompaksi secara manual kapan saja dengan perintah `/compact`. Ini berguna ketika Anda ingin mereset konteks tanpa kehilangan informasi penting. --- ## Memori ### Memori Agen Setiap agen memiliki sistem memori untuk mempertahankan informasi penting lintas sesi: - **MEMORY.md**, File markdown di workspace agen tempat fakta penting, preferensi, dan konteks disimpan - **Direktori memori**, File tambahan di `memory/` untuk pengetahuan terstruktur ### Pencarian Vektor Neotask mendukung pencarian kesamaan vektor atas memori agen: 1. **Pengindeksan**, File memori diindeks menggunakan embedding 2. **Pencarian**, Agen melakukan kueri memori dengan bahasa alami ("Apa yang dikatakan pengguna tentang preferensi API mereka?") 3. **Pemanggilan**, Memori yang relevan dikembalikan berurutan berdasarkan kesamaan ### Plugin Memori (LanceDB) Plugin memori LanceDB menyediakan penyimpanan vektor lanjutan: - Basis data vektor persisten - Ukuran chunk dan tumpang tindih yang dapat dikonfigurasi - Pencarian kesamaan yang efisien - Pengindeksan ulang otomatis ketika file memori berubah ### Pemanggilan Otomatis Saat memulai sesi, memori yang relevan dapat dipanggil secara otomatis dan diinjeksikan ke dalam konteks agen. Ini memberi agen kesinambungan lintas sesi tanpa memuat seluruh riwayat percakapan. --- ## Persistensi Sesi Semua data sesi disimpan secara lokal: - **Metadata sesi**, `sessions.json` melacak sesi aktif, aktivitas terakhir, jumlah token, dan konfigurasi - **Transkrip**, Transkrip sesi individual disimpan sebagai file `.jsonl` - **Pemulihan**, Sesi bertahan dari restart Gateway tanpa kehilangan data ### Pembersihan - Sesi yang tidak diakses selama periode yang dapat dikonfigurasi (default 30 hari) memenuhi syarat untuk pembersihan - Manajemen sesi manual tersedia melalui UI atau API - Transkrip yang dikompak diarsipkan tetapi dapat ditinjau