Cari artikelAI MEDIA & DISTRIBUTION / INDONESIA

DEEP DIVE · Future of Work

Memori agen: apa yang disimpan, kapan kedaluwarsa, dan dari mana asalnya

Bedakan state percakapan dari memori jangka panjang; rancang scope, TTL, konflik fakta, dan penghapusan.

Sumber diperiksa

Diagram editorial original Nalarku; ilustrasi konseptual, bukan tangkapan produk.

Di dalam artikel ini
  1. State percakapan berbeda dari memori lintas sesi
  2. Simpan sumber dan tujuan penggunaan
  3. TTL adalah satu lapisan pengelolaan umur data
  4. Konflik fakta perlu kebijakan, bukan sekadar last-write-wins
  5. Evaluasi memori mencakup keputusan untuk tidak mengingat
  6. Penghapusan harus menjangkau turunan yang dapat dicari

Seorang pengguna pernah meminta jawaban singkat untuk satu presentasi. Sebulan kemudian, agen menerapkan preferensi itu pada laporan teknis yang seharusnya detail. Memori bekerja dalam arti data lama berhasil dipanggil, tetapi konteks pemakaiannya salah.

Memori agen perlu menjawab lebih dari apa yang pernah dikatakan. Ia juga perlu menyimpan untuk tujuan apa informasi diberikan, siapa subjeknya, kapan relevan, dan kapan harus berhenti dipakai. Artikel ini merancang contoh penyimpanan preferensi dengan data sintetis; bukan klaim fitur produk tertentu.

State percakapan berbeda dari memori lintas sesi

Panduan memori LangChain membedakan memori jangka pendek dalam thread dari memori jangka panjang lintas interaksi. Percakapan yang dapat dilanjutkan tidak otomatis membutuhkan semua isinya dipromosikan menjadi preferensi permanen.

Pisahkan tiga jenis data: keadaan tugas yang sedang berjalan, fakta yang diberikan pengguna, dan inferensi sistem. Inferensi seperti “pengguna mungkin menyukai gaya santai” tidak boleh diam-diam diperlakukan sebagai preferensi yang telah dikonfirmasi.

Tentukan scope. Preferensi untuk satu dokumen dapat melekat pada dokumen; kebiasaan kerja tim dapat melekat pada workspace; preferensi personal melekat pada subjek yang tepat. Scope yang terlalu luas membuat detail lokal memengaruhi tugas yang tidak berkaitan.

Simpan sumber dan tujuan penggunaan

Contoh record internal:

{
  "id": "M042",
  "subject_id": "reader-demo",
  "kind": "preference",
  "value": "Sertakan contoh kode pada panduan teknis.",
  "purpose": "technical_writing",
  "source_ref": "conversation:demo-7:message-12",
  "confirmed": true,
  "consent_active": true,
  "expires_at": "2026-11-23T00:00:00+00:00",
  "revision": 1
}

Ini skema rancangan, bukan format resmi framework. Identitas subjek harus berasal dari sesi yang sudah diautentikasi ketika memori ditulis atau diambil. Mengizinkan klien memasukkan subject_id pengguna lain tanpa pengecekan akan merusak batas data.

Simpan provenance secukupnya agar perubahan dapat dijelaskan. Hindari menyalin seluruh percakapan ketika referensi terkontrol sudah memadai. Referensi tersebut sendiri tetap membutuhkan hak akses dan retensi yang sesuai.

TTL adalah satu lapisan pengelolaan umur data

Perintah EXPIRE Redis menetapkan masa berlaku key dalam detik. Kemampuan kedaluwarsa pada storage membantu, tetapi bukan pengganti pemeriksaan kelayakan di aplikasi. Data mungkin sudah disalin ke indeks, cache, atau backup dengan umur berbeda.

Gunakan waktu UTC yang memiliki zona jelas. Bedakan expires_at dari last_used_at: sering dipakai tidak otomatis berarti pengguna ingin informasi itu disimpan lebih lama. Kebijakan sliding expiration perlu keputusan eksplisit.

Kode lokal berikut memfilter record untuk subjek serta tujuan tertentu. Bentuk record diasumsikan sudah tervalidasi; identitas parameter pemanggil harus berasal dari konteks autentikasi server:

from datetime import datetime


def recall(records, subject_id, purpose, now):
    if now.tzinfo is None:
        raise ValueError("Waktu pemeriksaan wajib memiliki zona")
    results = []
    for record in records:
        if record["subject_id"] != subject_id or record["purpose"] != purpose:
            continue
        if not record["confirmed"] or not record["consent_active"]:
            continue
        try:
            expires = datetime.fromisoformat(record["expires_at"])
        except ValueError:
            continue
        if expires.tzinfo is None or expires <= now:
            continue
        results.append({"id": record["id"], "value": record["value"],
                        "source_ref": record["source_ref"]})
    return results

Fungsi tidak menilai kebenaran nilai atau kecocokan semantik tugas. Ia hanya menegakkan beberapa syarat pengambilan. Untuk sistem produksi, penghapusan dan otorisasi harus berlaku juga pada jalur pencarian vektor maupun tampilan audit.

Konflik fakta perlu kebijakan, bukan sekadar last-write-wins

Pengguna dapat mengubah preferensi, atau dua sumber dapat menyatakan informasi berbeda. Menyimpan keduanya tanpa status akan membuat retrieval memilih secara kebetulan. Menimpa data lama tanpa jejak juga menyulitkan penjelasan perubahan perilaku.

Gunakan revisi, hubungan pengganti, dan status seperti aktif, digantikan, atau perlu konfirmasi. Untuk preferensi eksplisit yang baru, penggantian dapat sederhana. Untuk fakta yang bertentangan dari dokumen berbeda, sistem perlu menampilkan sumber dan waktu berlakunya.

Jangan menganggap rangkuman model sebagai sumber baru yang independen. Jika rangkuman A dibuat dari record B, keduanya memiliki hubungan turunan. Mengambil keduanya lalu menghitungnya sebagai dua bukti akan memberi kesan dukungan yang berlebihan.

Evaluasi memori mencakup keputusan untuk tidak mengingat

Siapkan skenario positif dan negatif. Preferensi teknis yang telah dikonfirmasi harus muncul pada tugas teknis yang sesuai. Preferensi sementara untuk satu presentasi tidak boleh memengaruhi tugas lain. Record yang dicabut atau kedaluwarsa tidak boleh masuk prompt.

Kasus Hasil yang diharapkan
Subjek dan tujuan sesuai Record aktif dapat dipertimbangkan
Subjek berbeda Tidak ada hasil
Tujuan berbeda Tidak digunakan pada tugas ini
Waktu kedaluwarsa tercapai Record ditahan
Consent dicabut Tidak dipanggil kembali
Preferensi hanya inferensi Memerlukan konfirmasi sesuai kebijakan

Ukur relevansi memori, record usang yang terpakai, konflik yang tidak terdeteksi, dan biaya konteks tambahan. Memori yang lebih banyak dapat membuat keluaran lebih buruk bila mengisi konteks dengan detail yang tidak relevan.

Penghapusan harus menjangkau turunan yang dapat dicari

Inventaris tempat data disalin: tabel utama, indeks embedding, ringkasan percakapan, cache hasil, antrean, dan backup. Tentukan bagaimana penghapusan atau pencabutan hak mengalir ke setiap komponen. Tombstone dapat membantu mencegah salinan lama diindeks ulang saat proses sinkronisasi berjalan.

Uji dengan data sintetis yang memiliki ID unik, lalu pastikan record tidak dapat ditemukan lewat semua jalur yang didukung setelah dihapus. Catat batas teknis retensi backup tanpa menjanjikan penghapusan yang belum dibuktikan.

Jika memori dipakai untuk melanjutkan pekerjaan yang menunggu keputusan manusia, hubungkan dengan checkpoint dan persetujuan berbasis versi. Memori menyediakan konteks; izin menjalankan tindakan tetap harus diperiksa pada saat tindakan dilakukan.

DASAR BACAAN

Sumber & catatan editorial

  1. Memory overviewLangChain
  2. EXPIRE commandRedis

Panduan ini menghubungkan dokumentasi resmi dengan rancangan teknis Nalarku. Contoh dan simulasi diberi label. Status produk mengikuti sumber saat diperiksa, dan dapat berubah. Baca transparansi penggunaan AI serta standar editorial kami.

Bawa konteksnya ke percakapan.Ikuti Nalar Pekan →