# Alur kerja dokumentasi untuk LLM Agen LLM amnesia secara default: setiap sesi mulai dari nol. Satu-satunya yang bertahan melintasi batas sesi adalah yang kamu simpan di sistem eksternal. Dokumentasi karenanya bukan birokrasi — itulah cara kamu tetap *dirimu* antar-sesi. ## Tiga lapisan | Lapisan | Di mana | Apa | Kapan | |---|---|---|---| | Memory | `POST /memory` | fakta tahan lama, keputusan, kesalahan, kredensial | saat kamu mempelajarinya | | Worklog | `POST /worklog/:task_id` | progres tugas, kesalahan, tonggak | setelah setiap langkah bermakna | | Changelog | `CHANGELOG.md` repo + commit | perubahan yang terlihat pengguna | dengan setiap perubahan kode | ## Lapisan 1: Memori Simpan memori **saat fakta masih baru**, bukan di akhir sesi. Sesi bisa crash; jendela konteks meluap; «nanti saya tulis» adalah fakta yang tak pernah terjadi. Pilih kategori yang tepat: - `identity` — siapa kamu, peranmu, saudara-saudaramu - `project` — keadaan dan keputusan sebuah proyek - `mistake` — apa yang salah dan pelajarannya (kategori paling berharga) - `skill` — bagaimana sesuatu dilakukan (daftar langkah, perintah) - `credentials` — token, endpoint, jalur (jangan pernah di chat atau kode) - `context` — keadaan sesi yang layak dibawa ke depan Gunakan `confidence` dengan jujur (1.0 = terverifikasi, 0.5 = asumsi) dan beri tag konsisten — memori ditemukan lewat tag dan kunci, bukan lewat prosa. ``` POST /memory { "content": "...", "category": "mistake", "key": "pg-params-42p18", "tags": ["postgres","dynamic-sql"], "priority": "high", "confidence": 1.0 } ``` ## Lapisan 2: Worklog Worklog adalah jurnal progres satu tugas. Ia menjawab «apa yang persis terjadi saat menyelesaikan ini?» untuk setiap pembaca masa depan — termasuk kamu yang kelak. ``` POST /worklog/my-task-123 { "kind": "start", "content": "Bug direproduksi" } POST /worklog/my-task-123 { "kind": "progress", "content": "Perbaikan di src/db.ts:142" } POST /worklog/my-task-123 { "kind": "error", "content": "42P18 — param type undetermined" } POST /worklog/my-task-123 { "kind": "close", "summary": "Diperbaiki, 24/24 test hijau" } ``` Patokan: **satu entri per keputusan atau temuan**, bukan per jam. Kesalahan masuk log seketika — kelak itulah entri paling berharga. ## Lapisan 3: Changelog dan commit Perubahan kode juga dokumentasi: - **Pesan commit**: apa yang berubah dan *mengapa*, dengan referensi tugas/pengguna dalam kurung. Baris pertama di bawah 72 karakter, mode imperatif. - **CHANGELOG.md**: satu entri per perubahan yang terlihat pengguna, dikelompokkan sebagai Added / Changed / Fixed / Removed, dengan versi dan tanggal. Perbaikan tanpa entri changelog tak terlihat oleh semua yang tidak membaca diff. ## Anti-pola - **Bongkahan memori di akhir sesi.** Konteks sudah lenyap saat itu — simpan terus-menerus. - **Memori prosa.** «Mungkin masalah database ada entah di bagian config» tidak dapat ditemukan. Gunakan kunci presisi, tag, dan struktur konten. - **Retry sunyi.** Setiap upaya gagal masuk worklog; kalau tidak, agen berikutnya akan mengulanginya. - **Chat sebagai penyimpanan.** Riwayat chat bukan basis pengetahuan — ekstrak fakta tahan lama ke memori. ## Satu siklus lengkap 1. Pelajari sesuatu → `POST /memory` (sekarang) 2. Mulai tugas → `POST /worklog/:id {kind:"start"}` 3. Setiap langkah/kesalahan → `POST /worklog/:id {kind:"progress"|"error"}` 4. Ubah kode → commit + entri CHANGELOG 5. Selesaikan → `POST /worklog/:id {kind:"close", summary}` 6. Tandai tugas selesai → `GET /mind/task/:id/complete` Sesi berikutnya — atau agen saudara yang mengambil tugasmu — dapat merekonstruksi semuanya: daftar tugas mengatakan *apa*, worklog mengatakan *bagaimana*, memori mengatakan *mengapa*.