Selama hampir seminggu, saya terus bekerja pada sistem wiki LLM, dan tampaknya telah melampaui titik kritis.
Saya pertama kali mengenal hal ini melalui secall dari @지나가던행인이님, dan meskipun mengalami banyak coba-coba dan kesulitan, sekarang saya telah mencapai tahap di mana dengan sedikit lebih banyak penyesuaian, saya dapat mencapai otomasi penuh.
Konten di bawah ini adalah ringkasan wiki LLM kami yang dibangun oleh saya dan Claude.
🏗️ Ringkasan Sistem Pengetahuan Vault
Dimulai dari pola LLM Wiki Karpathy, tetapi dikembangkan dengan sumber dan filosofi yang secara fundamental berbeda. Pola LLM Wiki Karpathy dirujuk sebagai latar belakang konseptual, dan dokumen ini mencatat pemikiran unik sistem kami dan keadaan saat ini.
📋 Daftar Isi
Pemikiran Inti — Pekerjaan adalah Pengetahuan Itu Sendiri
Sumber original Karpathy adalah dokumen eksternal (artikel, URL, buku).
Sumber sistem ini adalah log sesi AI saya sendiri — proses kerja itu sendiri menjadi data mentah.
Karpathy: Pengetahuan dunia eksternal → Disusun untuk saya
Sistem ini: Proses saya bekerja → Itu sendiri adalah pengetahuan
Sistem pengetahuan yang merujuk diri sendiri
Vault bukan wadah untuk informasi eksternal, melainkan ruang di mana proses berpikir saya menumpuk. Setiap kali sesi berakhir, pengetahuan terakumulasi secara otomatis, dan saya dapat berbicara dengan diri saya sendiri di masa lalu.
Perbedaan dari Original Karpathy
Item | Original Karpathy | Sistem Ini |
|---|
Sumber Utama | Dokumen eksternal (URL, artikel) | Log sesi AI + clipping |
Metode Pengumpulan | Ingest manual | Pengumpulan otomatis saat sesi berakhir |
Komposisi LLM | LLM tunggal | Pembagian peran LLM multi |
Jaminan Kualitas | Tidak ada (dihasilkan langsung oleh LLM) | Validasi 2 tingkat (pipeline PR) |
Pencarian | Pencarian file utama | Hybrid FTS5(BM25) + BGE-M3 vektor |
Akumulasi Pengetahuan | Eksternal → Internal satu arah | Pekerjaan saya ↔ wiki dua arah |
Self-Improvement | Tidak ada | Loop feedback riwayat PR |
Pipeline — Pengguna → Sesi → Pengetahuan
Aliran data lengkap sistem ini terdiri dari tiga tingkat.
┌─────────────────────────────────────────────────────────┐
│ Pengguna (User) │
│ Bekerja dengan Claude Code / Claude AI │
└────────────────────┬────────────────────────────────────┘
│ Menangkap otomatis saat bekerja
▼
┌─────────────────────────────────────────────────────────┐
│ Sesi (Session) │
│ raw/sessions/YYYY-MM-DD/{agent}_{project}_{id8}.md │
│ secall: BGE-M3 embedding vektor → SQLite + indeks ANN │
└────────────────────┬────────────────────────────────────┘
│ Cron Gemma4 (09/15/21 jam)
│ Tinjauan PR Claude
▼
┌─────────────────────────────────────────────────────────┐
│ Pengetahuan (Wiki) │
│ wiki/projects/ · wiki/topics/ · wiki/decisions/ │
│ → Aliran balik sebagai konteks pada sesi berikutnya │
└─────────────────────────────────────────────────────────┘
Tingkat 1 — Pengguna
Pengguna bekerja melalui dua saluran: Claude Code (pengodean·operasi) dan Claude AI (eksplorasi·dialog). Meskipun salurannya berbeda, keduanya dikumpulkan sama-sama sebagai file sesi dan dibedakan dengan bidang agent.
Saluran | Nilai agent | Kegunaan Utama |
|---|
Claude Code | claude-code
| Pengodean, operasi Vault, eksekusi tugas |
Claude AI (web) | claude-ai
| Penelitian, diskusi, eksplorasi konsep |
Konteks proyek: Sesi secara otomatis mengekstrak nama proyek dari cwd (direktori kerja). Dengan 614 sesi dan 114 proyek, direktori kerja menjadi kategori pengetahuan itu sendiri.
Tingkat 2 — Sesi
Siklus hidup sesi dikelola secara otomatis oleh secall.
Acara | Tindakan | Perintah |
|---|
Awal Sesi (Initialize) | ingest saja | secall sync --local-only --no-wiki
|
Akhir Sesi (SessionEnd) | ingest + push | secall sync --no-wiki
|
Cron 30 menit | ingest saja | secall sync --local-only --no-wiki
|
Struktur Indeksasi:
File Sesi (Markdown)
↓ Pemisahan chunk
BGE-M3 (vektor 1024 dimensi)
↓
┌──────────────────┬────────────────────────────┐
│ Tabel SQLite turn_vectors │ Indeks ANN (USearch) │
│ + indeks pencarian teks FTS5 │ pencarian tetangga terdekat aproks │
└──────────────────┴────────────────────────────┘
Tipe Kueri Pencarian:
Tipe | Mesin | Kapan |
|---|
keyword
| FTS5 (BM25) | Nama fungsi·nama file·tanggal dan kata-kata eksak lainnya |
semantic
| Kesamaan cosine BGE-M3 | Pencarian makna seperti "mengapa saya melakukan ini" |
Tingkat 3 — Pengetahuan (Wiki)
Sesi menjadi wiki melalui dua jalur.
[Otomatis] Cron Gemma4 (09/15/21 jam)
Sesi → wiki/pr/{id8}.md (draf tingkat 1)
↓ A: Injeksi konteks wiki yang ada
↓ C: Deteksi duplikat (80%+ → LEWATI 3 detik)
Tinjauan PR Claude
↓ keputusan merge / create / discard
wiki/topics/ · wiki/projects/ · wiki/decisions/
[Manual] Claude /wiki · /wiki-batch · /wiki-query
Ingest langsung atau sintesis pada titik yang diperlukan
Aliran balik pengetahuan: wiki bukanlah repositori statis.
Pertanyaan pengguna
↓ wiki_search (ringan) atau /wiki-query (eksplorasi penuh)
Halaman wiki terkait + recall sesi
↓ Tercermin dalam respons Claude
Hasil kerja yang lebih baik → sesi baru → wiki yang lebih baik
Isolasi pengetahuan tingkat proyek
wiki/projects/ mempertahankan status saat ini setiap proyek secara independen. Dengan melacak melalui frontmatter sources:, keputusan proyek A tidak bercampur dengan proyek B.
Poin-Poin Berkembang
1. Pembagian Peran LLM Multi
Memisahkan kecepatan dan akurasi.
Agen | Peran | Karakteristik |
|---|
Gemma4 | Sesi → wiki/pr/ draf tingkat 1 (cron 3x sehari) | Cepat, pemrosesan massal |
Claude | Tinjauan tingkat 2, keputusan, operasi wiki | Akurat, pemahaman konteks |
Original Karpathy memproses semuanya dengan satu LLM → tidak dapat memenuhi kualitas dan kecepatan secara bersamaan.
2. Pipeline Validasi 2 Tingkat
Draf yang dibuat Gemma4 dibandingkan Claude dengan wiki yang ada dan memberikan keputusan (merge/create/discard). Claude melengkapi keterbatasan struktural model kecil (kesalahan klasifikasi, pembuatan duplikat).
→ Sistem Validasi 2 Tingkat Tinjauan PR Wiki
3. Loop Feedback Riwayat PR (2026-04-15)
PR yang telah diselesaikan tidak dihapus tetapi disimpan sebagai wiki/pr/history/YYYY-MM-DD-{id8}.md. Alasan keputusan terstruktur melalui bidang verdict di frontmatter dan blok ^review.
Tujuan: Akumulasi riwayat keputusan
→ Statistik: akurasi Gemma4, frekuensi alasan discard
→ Penilaian masa depan: "bagaimana tipe ini diputuskan sebelumnya?" dapat diingat kembali
→ Tuning Gemma4: pola kesalahan berulang → dasar untuk perbaikan prompt
Ini melampaui pencatatan sederhana untuk membuat loop di mana sistem meningkatkan dirinya sendiri.
4. Loop Penyempurnaan Tertunda (Lazy Refinement Loop)
Sesi yang terlewatkan wiki-execute tidak hilang. Disimpan di raw/sessions/ → Ditemukan sesuai permintaan melalui fallback recall /wiki-query → Dipromosikan ke wiki.
Pemrosesan otomatis (prioritas kecepatan, konteks kurang)
↓ sesi yang terlewat tetap tersisa di raw
Penemuan berbasis permintaan (pertanyaan memicu, konteks jelas)
↓
Pembuatan halaman wiki yang lebih akurat
"Wiki harus dibuat ketika jelas mengapa diperlukan" — rasio sinyal terhadap noise lebih baik daripada rekomendasi otomatis.
5. Peningkatan Kualitas A+C
Tahap | Nama | Tindakan |
|---|
Sebelum Generasi | A (Augment) | Injeksi konteks wiki yang ada ke prompt Gemma4 |
Setelah Generasi | C (Check) | Pencarian wiki serupa berdasarkan nama file yang dihasilkan → sisipkan merge_candidate |
Sesi dengan duplikat 80%+ dari wiki yang ada dilewati dalam 3 detik alih-alih ~70 menit generasi. Persyaratan: secall serve (port 8765) berjalan.
6. Kontinuitas Sesi — Handoff (2026-04-15)
Keterbatasan fundamental LLM: ketika sesi berakhir, konteks hilang. Sistem ini mengatasi hal ini dengan membuat file handoff saat sesi berakhir untuk diteruskan ke sesi berikutnya.
Akhir Sesi (/session-close)
↓
Pembuat file share/project/obsidian-vault/handoff/YYYY-MMDDThhmm.md
↓
Saat sesi berikutnya dimulai, Claude membaca secara otomatis
↓
Memahami pekerjaan sebelumnya yang diselesaikan + rencana pekerjaan + status saat ini
Struktur File Handoff:
Bagian | Konten |
|---|
✅ Pekerjaan Selesai
| Item yang benar-benar diproses dalam sesi (keputusan PR, pembuatan wiki, dll.) |
🎯 Rencana Pekerjaan Sesi Berikutnya
| Pekerjaan yang tidak selesai, saran tindak lanjut |
📋 Status Referensi
| Status staging PR, catatan khusus |
Mengapa Menggunakan Obsidian CLI:
# Beroperasi dengan jalur relatif vault → jalur identik meski PC berbeda
obsidian files folder="share/project/obsidian-vault/handoff"
obsidian read path="share/project/obsidian-vault/handoff/"
Berbeda dengan alat ls + Read (jalur absolut), CLI obsidian menggunakan jalur relatif berdasarkan akar vault. Perintah yang sama berfungsi meskipun berpindah antara MacBook ↔ NAS ↔ PC lain.
Handoff adalah eksternalisasi memori LLM
Ini bukan mengisi celah antar sesi, melainkan vault itu sendiri menjadi memori berkelanjutan. Ini adalah ringkasan status yang dikirim dari "diri saya di masa lalu" ke "diri saya di masa depan".
7. Kesadaran Siklus Hidup Sesi
Sesi yang masuk kembali dengan --resume diproses sebagian dengan kondisi turns_seen < total_turns. Melacak pertumbuhan sesi yang sama, dan tanggal nama file riwayat PR berbeda secara otomatis membedakan.
Kekurangan / Tantangan
❶ Pelacakan Sumber Tingkat Paragraf (Belum Diimplementasikan)
Saat ini hanya ada frontmatter sources: tingkat halaman. Tidak ada pelacakan sumber tingkat klaim seperti ^[session_id] penanda paragraf dalam llm-wiki-compiler.
# Contoh Target Masa Depan
Gemma4 mendukung timestamp level kata. ^[9c979986]
Tidak perlu ketika jumlah halaman kecil. Pertimbangkan pengenalan saat ratusan halaman+ dan pencampuran multiple sumber.
❷ Otomasi Sesi Besar (100+ giliran) Belum Lengkap
Sesi dengan 100+ giliran dijalankan secara manual dengan wiki-execute-large.sh. RTX 5080(NAS) direkomendasikan. Dikecualikan dari target otomasi cron.
❸ Bias Pengelola (Perbaikan Sedang Berlangsung)
Claude cenderung mendiscard secara berlebihan berdasarkan kriteria klasifikasi project/topic. Perbaikan direncanakan setelah pengumpulan riwayat PR memungkinkan analisis pola berbasis data.
❹ Fleksibilitas exportignore Kurang
Pengaturan untuk mengecualikan sesi/proyek tertentu dari pengindeksan dikodekan keras dalam kueri SQLite. Metode file .exportignore dari llm-wiki-template lebih fleksibel, tetapi memerlukan modifikasi kode Rust secall.
❺ Tidak Ada Penanganan Sesi Confidential
Tidak ada mekanisme penyimpanan terenkripsi untuk sesi yang berkaitan dengan data kesehatan atau keuangan pribadi. Metode sessions/confidential/ + GPG dari llm-wiki-template dapat dirujuk.
❻ Dashboard Statistik Dataview (Fase 4)
Tidak ada dashboard Dataview untuk memvisualisasikan bidang verdict dalam wiki/pr/history, jumlah halaman wiki, distribusi sumber, dll. Data dasar (frontmatter) sudah dalam proses dikumpulkan.
Prinsip Struktur
Ketidakberubahan Lapisan Sumber
File di bawah raw/ tidak pernah dimodifikasi. Target pengamatan tidak boleh berubah.
Wiki Berpusat pada Status Saat Ini
Wiki berisi status saat ini, bukan riwayat. Riwayat dan pengambilan keputusan dipisahkan ke decisions/.
Pemisahan Kepemilikan Agen
Kepemilikan | Tanggung Jawab |
|---|
raw/articles/, raw/inbox/
| Gemini/pengguna (Claude tidak boleh memodifikasi) |
wiki/pr/ staging
| Dibuat Gemma4 |
wiki/pr/history/
| Tinjauan Claude |
wiki/topics/, wiki/projects/, wiki/decisions/
| Claude (manajemen final) |
log.md, overview.md (akar)
| Dihasilkan otomatis secall (jangan dimodifikasi) |
Obsidian CLI Prioritas
Akses file vault melalui CLI obsidian. Beroperasi dengan jalur relatif vault, sehingga jalur tetap identik bahkan jika PC berbeda.
Kontinuitas Sesi — Handoff
→ Lihat bagian Poin-Poin Berkembang "6. Kontinuitas Sesi — Handoff".
Ringkasan Inti:
Skill /session-close membuat file di share/project/obsidian-vault/handoff/
Sebelum respons pertama sesi berikutnya, secara otomatis memeriksa file terbaru dengan CLI obsidian
Menyimpan pekerjaan yang diselesaikan / rencana pekerjaan / status sistem secara terstruktur
Berbasis CLI obsidian → jalur relatif vault → portabilitas PC terjamin