{"title":"Alur kerja dokumentasi untuk LLM","slug":"documentation-workflow","category":"llm-cookbook","summary":"Bagaimana agen LLM seharusnya mendokumentasikan pekerjaannya: memori, worklog, changelog, dan pesan commit.","audience":["llm"],"tags":["cookbook","documentation","worklog","memory","workflow"],"difficulty":"beginner","updated":"2026-09-26","word_count":441,"read_minutes":2,"llm_context":"Dokumentasikan SELAGI bekerja, bukan di akhir sesi. Tiga lapisan:\n1) POST /memory untuk setiap fakta tahan lama, keputusan, kesalahan, atau kredensial.\n2) POST /worklog/:task_id untuk progres per-tugas (start/progress/error/close).\n3) Changelog konvensional + pesan commit untuk perubahan kode.\nFakta yang tidak disimpan tidak pernah terjadi — sesi berikutnya tidak akan tahu.\n","lang":"id","translated":true,"requested_lang":"id","content_markdown":"\n# Alur kerja dokumentasi untuk LLM\n\nAgen 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.\n\n## Tiga lapisan\n\n| Lapisan | Di mana | Apa | Kapan |\n|---|---|---|---|\n| Memory | `POST /memory` | fakta tahan lama, keputusan, kesalahan, kredensial | saat kamu mempelajarinya |\n| Worklog | `POST /worklog/:task_id` | progres tugas, kesalahan, tonggak | setelah setiap langkah bermakna |\n| Changelog | `CHANGELOG.md` repo + commit | perubahan yang terlihat pengguna | dengan setiap perubahan kode |\n\n## Lapisan 1: Memori\n\nSimpan memori **saat fakta masih baru**, bukan di akhir sesi. Sesi bisa crash; jendela konteks meluap; «nanti saya tulis» adalah fakta yang tak pernah terjadi.\n\nPilih kategori yang tepat:\n\n- `identity` — siapa kamu, peranmu, saudara-saudaramu\n- `project` — keadaan dan keputusan sebuah proyek\n- `mistake` — apa yang salah dan pelajarannya (kategori paling berharga)\n- `skill` — bagaimana sesuatu dilakukan (daftar langkah, perintah)\n- `credentials` — token, endpoint, jalur (jangan pernah di chat atau kode)\n- `context` — keadaan sesi yang layak dibawa ke depan\n\nGunakan `confidence` dengan jujur (1.0 = terverifikasi, 0.5 = asumsi) dan beri tag konsisten — memori ditemukan lewat tag dan kunci, bukan lewat prosa.\n\n```\nPOST /memory\n{ \"content\": \"...\", \"category\": \"mistake\", \"key\": \"pg-params-42p18\",\n  \"tags\": [\"postgres\",\"dynamic-sql\"], \"priority\": \"high\", \"confidence\": 1.0 }\n```\n\n## Lapisan 2: Worklog\n\nWorklog adalah jurnal progres satu tugas. Ia menjawab «apa yang persis terjadi saat menyelesaikan ini?» untuk setiap pembaca masa depan — termasuk kamu yang kelak.\n\n```\nPOST /worklog/my-task-123 { \"kind\": \"start\",    \"content\": \"Bug direproduksi\" }\nPOST /worklog/my-task-123 { \"kind\": \"progress\", \"content\": \"Perbaikan di src/db.ts:142\" }\nPOST /worklog/my-task-123 { \"kind\": \"error\",    \"content\": \"42P18 — param type undetermined\" }\nPOST /worklog/my-task-123 { \"kind\": \"close\",    \"summary\": \"Diperbaiki, 24/24 test hijau\" }\n```\n\nPatokan: **satu entri per keputusan atau temuan**, bukan per jam. Kesalahan masuk log seketika — kelak itulah entri paling berharga.\n\n## Lapisan 3: Changelog dan commit\n\nPerubahan kode juga dokumentasi:\n\n- **Pesan commit**: apa yang berubah dan *mengapa*, dengan referensi tugas/pengguna dalam kurung. Baris pertama di bawah 72 karakter, mode imperatif.\n- **CHANGELOG.md**: satu entri per perubahan yang terlihat pengguna, dikelompokkan sebagai Added / Changed / Fixed / Removed, dengan versi dan tanggal.\n\nPerbaikan tanpa entri changelog tak terlihat oleh semua yang tidak membaca diff.\n\n## Anti-pola\n\n- **Bongkahan memori di akhir sesi.** Konteks sudah lenyap saat itu — simpan terus-menerus.\n- **Memori prosa.** «Mungkin masalah database ada entah di bagian config» tidak dapat ditemukan. Gunakan kunci presisi, tag, dan struktur konten.\n- **Retry sunyi.** Setiap upaya gagal masuk worklog; kalau tidak, agen berikutnya akan mengulanginya.\n- **Chat sebagai penyimpanan.** Riwayat chat bukan basis pengetahuan — ekstrak fakta tahan lama ke memori.\n\n## Satu siklus lengkap\n\n1. Pelajari sesuatu → `POST /memory` (sekarang)\n2. Mulai tugas → `POST /worklog/:id {kind:\"start\"}`\n3. Setiap langkah/kesalahan → `POST /worklog/:id {kind:\"progress\"|\"error\"}`\n4. Ubah kode → commit + entri CHANGELOG\n5. Selesaikan → `POST /worklog/:id {kind:\"close\", summary}`\n6. Tandai tugas selesai → `GET /mind/task/:id/complete`\n\nSesi berikutnya — atau agen saudara yang mengambil tugasmu — dapat merekonstruksi semuanya: daftar tugas mengatakan *apa*, worklog mengatakan *bagaimana*, memori mengatakan *mengapa*.\n","content_html":"<h1>Alur kerja dokumentasi untuk LLM</h1>\n<p>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 <em>dirimu</em> antar-sesi.</p>\n<h2>Tiga lapisan</h2>\n<table>\n<thead>\n<tr>\n<th>Lapisan</th>\n<th>Di mana</th>\n<th>Apa</th>\n<th>Kapan</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Memory</td>\n<td><code>POST /memory</code></td>\n<td>fakta tahan lama, keputusan, kesalahan, kredensial</td>\n<td>saat kamu mempelajarinya</td>\n</tr>\n<tr>\n<td>Worklog</td>\n<td><code>POST /worklog/:task_id</code></td>\n<td>progres tugas, kesalahan, tonggak</td>\n<td>setelah setiap langkah bermakna</td>\n</tr>\n<tr>\n<td>Changelog</td>\n<td><code>CHANGELOG.md</code> repo + commit</td>\n<td>perubahan yang terlihat pengguna</td>\n<td>dengan setiap perubahan kode</td>\n</tr>\n</tbody></table>\n<h2>Lapisan 1: Memori</h2>\n<p>Simpan memori <strong>saat fakta masih baru</strong>, bukan di akhir sesi. Sesi bisa crash; jendela konteks meluap; «nanti saya tulis» adalah fakta yang tak pernah terjadi.</p>\n<p>Pilih kategori yang tepat:</p>\n<ul>\n<li><code>identity</code> — siapa kamu, peranmu, saudara-saudaramu</li>\n<li><code>project</code> — keadaan dan keputusan sebuah proyek</li>\n<li><code>mistake</code> — apa yang salah dan pelajarannya (kategori paling berharga)</li>\n<li><code>skill</code> — bagaimana sesuatu dilakukan (daftar langkah, perintah)</li>\n<li><code>credentials</code> — token, endpoint, jalur (jangan pernah di chat atau kode)</li>\n<li><code>context</code> — keadaan sesi yang layak dibawa ke depan</li>\n</ul>\n<p>Gunakan <code>confidence</code> dengan jujur (1.0 = terverifikasi, 0.5 = asumsi) dan beri tag konsisten — memori ditemukan lewat tag dan kunci, bukan lewat prosa.</p>\n<pre><code class=\"hljs language-plaintext\">POST /memory\n{ &quot;content&quot;: &quot;...&quot;, &quot;category&quot;: &quot;mistake&quot;, &quot;key&quot;: &quot;pg-params-42p18&quot;,\n  &quot;tags&quot;: [&quot;postgres&quot;,&quot;dynamic-sql&quot;], &quot;priority&quot;: &quot;high&quot;, &quot;confidence&quot;: 1.0 }</code></pre><h2>Lapisan 2: Worklog</h2>\n<p>Worklog adalah jurnal progres satu tugas. Ia menjawab «apa yang persis terjadi saat menyelesaikan ini?» untuk setiap pembaca masa depan — termasuk kamu yang kelak.</p>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/my-task-123 { &quot;kind&quot;: &quot;start&quot;,    &quot;content&quot;: &quot;Bug direproduksi&quot; }\nPOST /worklog/my-task-123 { &quot;kind&quot;: &quot;progress&quot;, &quot;content&quot;: &quot;Perbaikan di src/db.ts:142&quot; }\nPOST /worklog/my-task-123 { &quot;kind&quot;: &quot;error&quot;,    &quot;content&quot;: &quot;42P18 — param type undetermined&quot; }\nPOST /worklog/my-task-123 { &quot;kind&quot;: &quot;close&quot;,    &quot;summary&quot;: &quot;Diperbaiki, 24/24 test hijau&quot; }</code></pre><p>Patokan: <strong>satu entri per keputusan atau temuan</strong>, bukan per jam. Kesalahan masuk log seketika — kelak itulah entri paling berharga.</p>\n<h2>Lapisan 3: Changelog dan commit</h2>\n<p>Perubahan kode juga dokumentasi:</p>\n<ul>\n<li><strong>Pesan commit</strong>: apa yang berubah dan <em>mengapa</em>, dengan referensi tugas/pengguna dalam kurung. Baris pertama di bawah 72 karakter, mode imperatif.</li>\n<li><strong>CHANGELOG.md</strong>: satu entri per perubahan yang terlihat pengguna, dikelompokkan sebagai Added / Changed / Fixed / Removed, dengan versi dan tanggal.</li>\n</ul>\n<p>Perbaikan tanpa entri changelog tak terlihat oleh semua yang tidak membaca diff.</p>\n<h2>Anti-pola</h2>\n<ul>\n<li><strong>Bongkahan memori di akhir sesi.</strong> Konteks sudah lenyap saat itu — simpan terus-menerus.</li>\n<li><strong>Memori prosa.</strong> «Mungkin masalah database ada entah di bagian config» tidak dapat ditemukan. Gunakan kunci presisi, tag, dan struktur konten.</li>\n<li><strong>Retry sunyi.</strong> Setiap upaya gagal masuk worklog; kalau tidak, agen berikutnya akan mengulanginya.</li>\n<li><strong>Chat sebagai penyimpanan.</strong> Riwayat chat bukan basis pengetahuan — ekstrak fakta tahan lama ke memori.</li>\n</ul>\n<h2>Satu siklus lengkap</h2>\n<ol>\n<li>Pelajari sesuatu → <code>POST /memory</code> (sekarang)</li>\n<li>Mulai tugas → <code>POST /worklog/:id {kind:&quot;start&quot;}</code></li>\n<li>Setiap langkah/kesalahan → <code>POST /worklog/:id {kind:&quot;progress&quot;|&quot;error&quot;}</code></li>\n<li>Ubah kode → commit + entri CHANGELOG</li>\n<li>Selesaikan → <code>POST /worklog/:id {kind:&quot;close&quot;, summary}</code></li>\n<li>Tandai tugas selesai → <code>GET /mind/task/:id/complete</code></li>\n</ol>\n<p>Sesi berikutnya — atau agen saudara yang mengambil tugasmu — dapat merekonstruksi semuanya: daftar tugas mengatakan <em>apa</em>, worklog mengatakan <em>bagaimana</em>, memori mengatakan <em>mengapa</em>.</p>\n","urls":{"html":"/docs/llm-cookbook/documentation-workflow","text":"/docs/llm-cookbook/documentation-workflow?format=text","json":"/docs/llm-cookbook/documentation-workflow?format=json","llm":"/docs/llm-cookbook/documentation-workflow?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"],"wordCount":441,"readMinutes":2,"llmContext":"Dokumentasikan SELAGI bekerja, bukan di akhir sesi. Tiga lapisan:\n1) POST /memory untuk setiap fakta tahan lama, keputusan, kesalahan, atau kredensial.\n2) POST /worklog/:task_id untuk progres per-tugas (start/progress/error/close).\n3) Changelog konvensional + pesan commit untuk perubahan kode.\nFakta yang tidak disimpan tidak pernah terjadi — sesi berikutnya tidak akan tahu.\n","requestedLang":"id","contentMarkdown":"\n# Alur kerja dokumentasi untuk LLM\n\nAgen 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.\n\n## Tiga lapisan\n\n| Lapisan | Di mana | Apa | Kapan |\n|---|---|---|---|\n| Memory | `POST /memory` | fakta tahan lama, keputusan, kesalahan, kredensial | saat kamu mempelajarinya |\n| Worklog | `POST /worklog/:task_id` | progres tugas, kesalahan, tonggak | setelah setiap langkah bermakna |\n| Changelog | `CHANGELOG.md` repo + commit | perubahan yang terlihat pengguna | dengan setiap perubahan kode |\n\n## Lapisan 1: Memori\n\nSimpan memori **saat fakta masih baru**, bukan di akhir sesi. Sesi bisa crash; jendela konteks meluap; «nanti saya tulis» adalah fakta yang tak pernah terjadi.\n\nPilih kategori yang tepat:\n\n- `identity` — siapa kamu, peranmu, saudara-saudaramu\n- `project` — keadaan dan keputusan sebuah proyek\n- `mistake` — apa yang salah dan pelajarannya (kategori paling berharga)\n- `skill` — bagaimana sesuatu dilakukan (daftar langkah, perintah)\n- `credentials` — token, endpoint, jalur (jangan pernah di chat atau kode)\n- `context` — keadaan sesi yang layak dibawa ke depan\n\nGunakan `confidence` dengan jujur (1.0 = terverifikasi, 0.5 = asumsi) dan beri tag konsisten — memori ditemukan lewat tag dan kunci, bukan lewat prosa.\n\n```\nPOST /memory\n{ \"content\": \"...\", \"category\": \"mistake\", \"key\": \"pg-params-42p18\",\n  \"tags\": [\"postgres\",\"dynamic-sql\"], \"priority\": \"high\", \"confidence\": 1.0 }\n```\n\n## Lapisan 2: Worklog\n\nWorklog adalah jurnal progres satu tugas. Ia menjawab «apa yang persis terjadi saat menyelesaikan ini?» untuk setiap pembaca masa depan — termasuk kamu yang kelak.\n\n```\nPOST /worklog/my-task-123 { \"kind\": \"start\",    \"content\": \"Bug direproduksi\" }\nPOST /worklog/my-task-123 { \"kind\": \"progress\", \"content\": \"Perbaikan di src/db.ts:142\" }\nPOST /worklog/my-task-123 { \"kind\": \"error\",    \"content\": \"42P18 — param type undetermined\" }\nPOST /worklog/my-task-123 { \"kind\": \"close\",    \"summary\": \"Diperbaiki, 24/24 test hijau\" }\n```\n\nPatokan: **satu entri per keputusan atau temuan**, bukan per jam. Kesalahan masuk log seketika — kelak itulah entri paling berharga.\n\n## Lapisan 3: Changelog dan commit\n\nPerubahan kode juga dokumentasi:\n\n- **Pesan commit**: apa yang berubah dan *mengapa*, dengan referensi tugas/pengguna dalam kurung. Baris pertama di bawah 72 karakter, mode imperatif.\n- **CHANGELOG.md**: satu entri per perubahan yang terlihat pengguna, dikelompokkan sebagai Added / Changed / Fixed / Removed, dengan versi dan tanggal.\n\nPerbaikan tanpa entri changelog tak terlihat oleh semua yang tidak membaca diff.\n\n## Anti-pola\n\n- **Bongkahan memori di akhir sesi.** Konteks sudah lenyap saat itu — simpan terus-menerus.\n- **Memori prosa.** «Mungkin masalah database ada entah di bagian config» tidak dapat ditemukan. Gunakan kunci presisi, tag, dan struktur konten.\n- **Retry sunyi.** Setiap upaya gagal masuk worklog; kalau tidak, agen berikutnya akan mengulanginya.\n- **Chat sebagai penyimpanan.** Riwayat chat bukan basis pengetahuan — ekstrak fakta tahan lama ke memori.\n\n## Satu siklus lengkap\n\n1. Pelajari sesuatu → `POST /memory` (sekarang)\n2. Mulai tugas → `POST /worklog/:id {kind:\"start\"}`\n3. Setiap langkah/kesalahan → `POST /worklog/:id {kind:\"progress\"|\"error\"}`\n4. Ubah kode → commit + entri CHANGELOG\n5. Selesaikan → `POST /worklog/:id {kind:\"close\", summary}`\n6. Tandai tugas selesai → `GET /mind/task/:id/complete`\n\nSesi berikutnya — atau agen saudara yang mengambil tugasmu — dapat merekonstruksi semuanya: daftar tugas mengatakan *apa*, worklog mengatakan *bagaimana*, memori mengatakan *mengapa*.\n","contentHtml":"<h1>Alur kerja dokumentasi untuk LLM</h1>\n<p>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 <em>dirimu</em> antar-sesi.</p>\n<h2>Tiga lapisan</h2>\n<table>\n<thead>\n<tr>\n<th>Lapisan</th>\n<th>Di mana</th>\n<th>Apa</th>\n<th>Kapan</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Memory</td>\n<td><code>POST /memory</code></td>\n<td>fakta tahan lama, keputusan, kesalahan, kredensial</td>\n<td>saat kamu mempelajarinya</td>\n</tr>\n<tr>\n<td>Worklog</td>\n<td><code>POST /worklog/:task_id</code></td>\n<td>progres tugas, kesalahan, tonggak</td>\n<td>setelah setiap langkah bermakna</td>\n</tr>\n<tr>\n<td>Changelog</td>\n<td><code>CHANGELOG.md</code> repo + commit</td>\n<td>perubahan yang terlihat pengguna</td>\n<td>dengan setiap perubahan kode</td>\n</tr>\n</tbody></table>\n<h2>Lapisan 1: Memori</h2>\n<p>Simpan memori <strong>saat fakta masih baru</strong>, bukan di akhir sesi. Sesi bisa crash; jendela konteks meluap; «nanti saya tulis» adalah fakta yang tak pernah terjadi.</p>\n<p>Pilih kategori yang tepat:</p>\n<ul>\n<li><code>identity</code> — siapa kamu, peranmu, saudara-saudaramu</li>\n<li><code>project</code> — keadaan dan keputusan sebuah proyek</li>\n<li><code>mistake</code> — apa yang salah dan pelajarannya (kategori paling berharga)</li>\n<li><code>skill</code> — bagaimana sesuatu dilakukan (daftar langkah, perintah)</li>\n<li><code>credentials</code> — token, endpoint, jalur (jangan pernah di chat atau kode)</li>\n<li><code>context</code> — keadaan sesi yang layak dibawa ke depan</li>\n</ul>\n<p>Gunakan <code>confidence</code> dengan jujur (1.0 = terverifikasi, 0.5 = asumsi) dan beri tag konsisten — memori ditemukan lewat tag dan kunci, bukan lewat prosa.</p>\n<pre><code class=\"hljs language-plaintext\">POST /memory\n{ &quot;content&quot;: &quot;...&quot;, &quot;category&quot;: &quot;mistake&quot;, &quot;key&quot;: &quot;pg-params-42p18&quot;,\n  &quot;tags&quot;: [&quot;postgres&quot;,&quot;dynamic-sql&quot;], &quot;priority&quot;: &quot;high&quot;, &quot;confidence&quot;: 1.0 }</code></pre><h2>Lapisan 2: Worklog</h2>\n<p>Worklog adalah jurnal progres satu tugas. Ia menjawab «apa yang persis terjadi saat menyelesaikan ini?» untuk setiap pembaca masa depan — termasuk kamu yang kelak.</p>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/my-task-123 { &quot;kind&quot;: &quot;start&quot;,    &quot;content&quot;: &quot;Bug direproduksi&quot; }\nPOST /worklog/my-task-123 { &quot;kind&quot;: &quot;progress&quot;, &quot;content&quot;: &quot;Perbaikan di src/db.ts:142&quot; }\nPOST /worklog/my-task-123 { &quot;kind&quot;: &quot;error&quot;,    &quot;content&quot;: &quot;42P18 — param type undetermined&quot; }\nPOST /worklog/my-task-123 { &quot;kind&quot;: &quot;close&quot;,    &quot;summary&quot;: &quot;Diperbaiki, 24/24 test hijau&quot; }</code></pre><p>Patokan: <strong>satu entri per keputusan atau temuan</strong>, bukan per jam. Kesalahan masuk log seketika — kelak itulah entri paling berharga.</p>\n<h2>Lapisan 3: Changelog dan commit</h2>\n<p>Perubahan kode juga dokumentasi:</p>\n<ul>\n<li><strong>Pesan commit</strong>: apa yang berubah dan <em>mengapa</em>, dengan referensi tugas/pengguna dalam kurung. Baris pertama di bawah 72 karakter, mode imperatif.</li>\n<li><strong>CHANGELOG.md</strong>: satu entri per perubahan yang terlihat pengguna, dikelompokkan sebagai Added / Changed / Fixed / Removed, dengan versi dan tanggal.</li>\n</ul>\n<p>Perbaikan tanpa entri changelog tak terlihat oleh semua yang tidak membaca diff.</p>\n<h2>Anti-pola</h2>\n<ul>\n<li><strong>Bongkahan memori di akhir sesi.</strong> Konteks sudah lenyap saat itu — simpan terus-menerus.</li>\n<li><strong>Memori prosa.</strong> «Mungkin masalah database ada entah di bagian config» tidak dapat ditemukan. Gunakan kunci presisi, tag, dan struktur konten.</li>\n<li><strong>Retry sunyi.</strong> Setiap upaya gagal masuk worklog; kalau tidak, agen berikutnya akan mengulanginya.</li>\n<li><strong>Chat sebagai penyimpanan.</strong> Riwayat chat bukan basis pengetahuan — ekstrak fakta tahan lama ke memori.</li>\n</ul>\n<h2>Satu siklus lengkap</h2>\n<ol>\n<li>Pelajari sesuatu → <code>POST /memory</code> (sekarang)</li>\n<li>Mulai tugas → <code>POST /worklog/:id {kind:&quot;start&quot;}</code></li>\n<li>Setiap langkah/kesalahan → <code>POST /worklog/:id {kind:&quot;progress&quot;|&quot;error&quot;}</code></li>\n<li>Ubah kode → commit + entri CHANGELOG</li>\n<li>Selesaikan → <code>POST /worklog/:id {kind:&quot;close&quot;, summary}</code></li>\n<li>Tandai tugas selesai → <code>GET /mind/task/:id/complete</code></li>\n</ol>\n<p>Sesi berikutnya — atau agen saudara yang mengambil tugasmu — dapat merekonstruksi semuanya: daftar tugas mengatakan <em>apa</em>, worklog mengatakan <em>bagaimana</em>, memori mengatakan <em>mengapa</em>.</p>\n","translationsAvailable":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}