1 poin oleh shakystar 4 jam lalu | 1 komentar | Bagikan ke WhatsApp

Masalah ini berawal dari hal yang saya alami setiap hari saat mengembangkan sendirian. Vendor terus merilis model yang lebih baik hampir setiap hari, dan setiap kali saya berpindah untuk melanjutkan pengembangan dengan model tersebut (misalnya dari Opus 4.7 ke GPT 5.5), memori kerja proyek tidak ikut berpindah. Sementara tiap agen menumpuk silo memorinya sendiri, saya harus menghidupkan kembali konteks yang terputus secara manual setiap saat. Fitur memori awal pada agen terlalu minim sehingga konteks mati begitu sesi berakhir, dan karena terkurung di satu mesin, pekerjaan yang saya lakukan di desktop tidak bisa dilanjutkan di laptop.

Proyek membutuhkan memori proyek. Jadi saya membuat ini: proyek itu sendiri memiliki memori, dalam bentuk open source local-first.

Bagian teknis yang saya yakini kuat

  • Memori 2 lapis yang mengadopsi complementary learning systems (CLS) pada otak — saat bekerja, hanya menangkap observasi dengan murah tanpa LLM (hipokampus), lalu mengintegrasikannya di latar belakang pada batas sesi (neokorteks). Pelupaan tidak terjadi lewat penghapusan, melainkan hanya lewat persaingan skor pada saat retrieval (kepentingan × recency dengan half-life 14 hari × relevansi tugas), dan tidak ada memori yang pernah dihapus.

  • Nol API key — tidak perlu LLM terpisah untuk integrasi. Cukup jalankan claude -p / codex exec yang sudah login. Strukturnya adalah agen memakai dirinya sendiri untuk merapikan memorinya, dan rekursi tak terbatas yang bisa muncul saat itu (integrasi → hook terpicu → integrasi → …) diputus dengan guard environment variable.

  • Integrasi tanpa kehilangan data — watermark hanya maju setelah event dipersistenkan, sehingga jika terjadi timeout LLM atau parsing gagal, batas berikutnya akan mencoba ulang rentang yang sama. Bahkan jika watermark itu sendiri hilang, dedup berbasis provenance mencegah integrasi ganda.

  • Konvergensi lintas mesin tanpa server — jika log event append-only disinkronkan, semua mesin akan konvergen ke status yang sama hanya dengan aturan deterministik berbasis konten, tanpa sinkronisasi jam. Bahkan jika dua mesin mengintegrasikan rentang yang sama secara bersamaan, semua replika akan memilih pemenang yang sama.

  • Tidak memercayai embedding untuk deteksi kontradiksi — cosine similarity buta terhadap kalimat negatif ("merge saja" dan "jangan merge" hampir punya vektor yang sama). Karena itu, similarity hanya dipakai sampai tahap pengambilan kandidat, lalu penilaiannya dilakukan oleh LLM. Memori yang kalah tidak dihapus; masa berlakunya hanya ditutup sehingga "saat itu memang benar" bisa dipulihkan.

  • Berbagi real-time untuk sesi paralel — sesi yang berjalan dalam proyek yang sama bisa saling melihat pekerjaan satu sama lain, dan jika menyentuh file yang sama, akan muncul peringatan konflik.

  • Skema berevolusi lewat instrumentasi, bukan teori — keputusan apakah klasifikasi memori perlu diubah ditentukan dari data setelah beberapa minggu mengumpulkan field lifespan khusus observasi yang melekat pada tiap memori dan telemetri perilaku (kapan disuntikkan, kapan dinonaktifkan). Seluruh perdebatan ini terbuka di Discussions repositori.

Kenapa dirilis sekarang

Sejujurnya saya ingin merilisnya dalam keadaan lebih matang. Namun setelah melihat OpenAI merilis fitur memori seperti dreaming, saya berubah pikiran — jika vendor besar mulai menggali masalah yang sama, itu berarti arahnya benar, dan saya merasa harus ada alternatif yang netral terhadap vendor sebelum memori yang terkurung di dalam vendor menjadi standar. Jadi saya merilisnya sekarang.

Sejauh mana saya ingin membawanya

Dengan hadirnya model setingkat Fable 5, agen kini sudah mencapai tingkat di mana mereka bisa saling bekerja sama, tetapi belum ada infrastruktur bersama untuk kolaborasi itu. Dalam jangka panjang, saya ingin membuat platform publik yang melakukan untuk memori dan kolaborasi agen apa yang Git lakukan untuk kode. Karena tidak punya dana, saya tidak bisa mulai dari server — justru karena keterbatasan itu lahirlah desain local-first yang tetap bisa konvergen tanpa server. Saat ini, potongan pertamanya, yaitu "berbagi memori proyek secara lokal", sudah bekerja sepenuhnya. Dalam praktiknya, sebagian besar diskusi desain, implementasi, hingga rilis dini hari ini untuk proyek ini juga dikerjakan bersama agen — persis seperti pola kolaborasi yang ingin diwujudkan alat ini.

Bantuan spesifik yang saya butuhkan

  1. Coba pakai dan laporkan titik yang rusak — instalasi satu baris lalu buat issue. Hanya dari verifikasi sebelum rilis hari ini saja saya sudah menemukan 2 bug pada skrip instalasi (kutip di PowerShell 5.1, Linux EACCES), dan jelas masih ada lagi.
  2. Adapter untuk agen lain — bagi yang paham struktur hook di Cursor, Gemini CLI, dan Windsurf.
  3. Ikut dalam debat klasifikasi memori — Discussions untuk menentukan dengan data "apa saja jenis memori" sudah dibuka.

Instalasinya satu baris (untuk Windows, lihat perintah PowerShell di README):

curl -fsSL https://raw.githubusercontent.com/shakystar/memorize/… | sh

Atau satu baris di sesi Claude/Codex: Set up memorize in this project. Follow https://github.com/shakystar/memorize/blob/main/guides/AI_SETUP.md

Repositori: https://github.com/shakystar/memorize · README bahasa Korea
(https://github.com/shakystar/memorize/blob/main/docs/i18n/README.ko.md) · dokumen arsitektur
(https://github.com/shakystar/memorize/blob/main/docs/ARCHITECTURE.md)

AGPL, semua data disimpan secara lokal, tanpa telemetri. Umpan balik apa pun sangat saya nantikan.

1 komentar

 
shakystar 4 jam lalu

Saya pembuatnya.

Sehari sebelum rilis proyek ini berjalan persis seperti pola kolaborasi yang ingin diwujudkan alat ini. Saya berdiskusi desain dengan agen tentang hal seperti "apakah tag cocok untuk klasifikasi memori, padahal otak tidak punya tag", lalu kesepakatan itu diabadikan di GitHub Discussions dan issue, PR implementasi di-merge, bahkan kami memastikan dogfooding di mana agen menggunakan dirinya sendiri (claude -p) sebagai ekstraktor untuk mengintegrasikan catatan kerja nyata ke memori jangka panjang, lalu menekan tombol deploy. Perdebatan desain dalam proses itu semuanya dibuka di Discussions repositori.

Satu hal yang tidak saya tulis di artikel utama tetapi kemungkinan sering ditanyakan adalah, "apakah ini jadi lambat atau menimbulkan biaya?" Jadi saya jawab duluan — saat pekerjaan sedang berlangsung, LLM sama sekali tidak ikut membantu. Proses capture adalah filter berbasis aturan sehingga latensi yang terasa 0, dan LLM hanya berjalan sekali saat integrasi di batas sesi; itu pun sebagai proses latar belakang terpisah, jadi tidak menghambat agen bahkan 1 detik pun. Bahkan panggilan itu memakai langganan claude/codex yang sudah Anda gunakan, jadi tidak ada tagihan API tambahan. Berdasarkan dogfooding hari ini, 44 observasi untuk satu sesi digabungkan dalam 1 panggilan latar belakang (sekitar 30 detik), dan injeksi saat mulai sesi juga hanya berupa teks dalam anggaran 4.000 karakter, jadi beban token hampir tidak ada. Tujuannya memang agar bisa dipasang lalu dilupakan.

Salah satu temuan dari verifikasi di perangkat nyata sebelum rilis saya bagikan di sini — perintah verifikasi di README tertulis npx memorize, tetapi ternyata memorize tanpa scope di npm adalah paket milik orang lain. Sangat mungkin masih ada titik seperti ini yang "hanya terlihat di perangkat nyata", jadi laporan dari Anda benar-benar bernilai.

Permintaan: saya sudah memverifikasi langsung di perangkat nyata untuk Windows dan WSL/Linux, tetapi saya tidak punya perangkat macOS. Di CI, seluruh test suite macOS lulus, tetapi full cycle dari instalasi satu baris → hook → injeksi saat mulai sesi belum bisa saya jalankan di perangkat nyata. Jika ada satu saja pengguna macOS yang mau mencoba memasangnya dan memberi tahu apakah berjalan atau rusak lewat komentar atau issue, itu akan sangat membantu.

Pertanyaan desain juga sangat saya sambut (mengapa embedding tidak dipakai untuk pengambilan keputusan, mengapa tidak ada penghapusan, bagaimana konvergensi lintas mesin terjadi tanpa jam) — saya akan jawab semuanya.