Lanjut ke konten
Samkarsa Logbook

v1.5.0 — Plan Arsitektur Basemind: Context Budget, Persistent Memory, LLM Router & Predictive Engine untuk Vibes Chat

Rancangan implementasi konsep Basemind (context-map, selective grounding, per-repo memory, agent intelligence) ke Vibes Chat Blonjo dalam 3 fase: Quick Win → Core Architecture → Intelligence Layer.

4mnt baca

Berdasarkan analisis kodebase nyata (vibeCopilot.ts, VibesChat.tsx, sajen-api), ditemukan bahwa Vibes Chat sudah mengimplementasikan ~60% konsep Basemind secara tidak sengaja (Multi-Agent Router, SQL Grounding, Vector RAG, Web Search, Multi-turn). Namun gap utama ada pada efisiensi konteks dan kecerdasan data.

Referensi: Basemind GitHub — “Answer from structure and search, not from burning context window on grep and file reads”


sequenceDiagram autonumber actor User as Pengguna (Browser) participant UI as blonjo-ui (React) participant Backend as sajen-api (FastAPI Backend) participant DB as PostgreSQL (DB & vibes_memory) participant MCP as mcp-server (AI Engine) participant Gemini as LLM Provider (Gemini API) User->>UI: Ketik pertanyaan UI->>Backend: POST /api/v1/insights/chat Backend->>MCP: Call handleVibeCopilot(query, tenant_id, history) rect rgb(240, 248, 255) note over MCP: 1. Intent Router (intentClassifier.ts) note over MCP: 2. Context Budget & Selective Grounding MCP->>DB: Query Aggregates + Semantic Memory (vibes_memory) DB-->>MCP: Return Data MCP->>Gemini: Prompt Ringkas & Terarah Gemini-->>MCP: Raw Output note over MCP: 3. Response Validator & Auto-Repair JSON note over MCP: 4. Auto-Save Insight baru ke vibes_memory end MCP-->>Backend: Clean Response + Sources + Chart JSON + Chips Backend->>DB: Simpan Chat History Backend-->>UI: Response JSON UI->>User: Render Visual SVG Chart / Graph / Laporan Resmi

File Aksi Fase
mcp-server/src/tools/vibeCopilot.ts EDIT — Context Budget + Schema Map + Memory integration 1, 2
mcp-server/src/tools/intentClassifier.ts BUAT BARU — LLM-first Gemini router 2
mcp-server/src/tools/dataGraph.ts BUAT BARU — Data relationship graph bisnis 3
mcp-server/src/tools/predictiveEngine.ts BUAT BARU — Forecasting & analytics internal 3
mcp-server/src/services/memoryService.ts BUAT BARU — Persistent memory CRUD + vector search 2
mcp-server/src/index.ts EDIT — Daftarkan 2 tool baru 3
sajen/migrations/versions/XXXX_add_vibes_memory.py BUAT BARU — Alembic migration tabel vibes_memory 2
blonjo/src/pages/insights/VibesChat.tsx EDIT — Suggestion chips parser + chart JSON validator 1

Tambah fungsi validateAndSanitizeResponse() — validasi setiap blok ```chart:* ``` sebelum dikirim ke UI. Jika JSON invalid → replace dengan fallback text. Mencegah crash JSON.parse di InteractiveVisualChart.

Tambah AGENT_DATA_BUDGET map — CONVERSATIONAL_PARTNER dan APP_GUIDE tidak query DB sama sekali. Estimasi penghematan: ~8.000 token per “selamat pagi”. Override flag needsFinancials / needsItems berdasarkan budget agen.

Parse blok <!-- SUGGESTIONS --> dari jawaban AI → render sebagai chip yang bisa diklik untuk langsung dikirim sebagai pertanyaan berikutnya. UX lebih conversational.

Deploy Fase 1: ./deploy.sh mcp-server + ./deploy.sh blonjo-ui


Tabel PostgreSQL baru dengan kolom: tenant_id, memory_type (short_term | long_term | preference | insight), content, embedding (pgvector 768d), importance_score, created_at. Memory bersifat permanent (tanpa TTL), dengan importance_score sebagai mekanisme prune di masa depan. Index ivfflat untuk vector cosine similarity.

Service baru di mcp-server/src/services/. Fungsi retrieveMemory() — semantic vector search ke vibes_memory per tenant. Fungsi saveMemory() — simpan insight penting setelah setiap percakapan selesai (ekstraksi otomatis oleh AI).

  • Alur: Regex dulu (0ms, gratis) → jika confidence < 0.85 → panggil Gemini Flash untuk klasifikasi
  • Model: Gemini (sesuai keputusan user)
  • Output wajib JSON: {"agent": "NAMA_AGEN", "confidence": 0.0-1.0, "needs_web": false}
  • Agen baru: Tambah PREDICTIVE_ANALYST sebagai agen ke-9 (khusus forecasting data internal, berbeda dari MARKET_RESEARCHER yang pakai web)

Refactor blok data fetching (baris 347-419) dari dump 60 raw rows menjadi agregat terstruktur (6 angka ringkasan + top 5 produk). Detail on-demand via targeted query jika AI perlu. Estimasi penghematan: dari ~8.000-12.000 token → ~1.500-3.000 token per query.

Deploy Fase 2: ./deploy.sh sajen → jalankan migration di VPS → ./deploy.sh mcp-server


Forecasting berbasis data historis internal (bukan web search):

  • Stock Depletion Forecast — “Produk X habis dalam ~N hari” (rata-rata penjualan 30 hari)
  • Revenue Forecast — “Prediksi omset bulan depan” (linear regression tren 3 bulan)
  • Cash Flow Projection — “Saldo kas akhir bulan jika pola sama”
  • Seasonal Pattern — “Hari mana penjualan biasanya naik/turun”

Analisa relasi bisnis — siapa beli apa dari mana, pola tersembunyi:

  • Supplier → Produk → Revenue chain (output Mermaid)
  • Market Basket Analysis sederhana (produk yang sering dibeli bersamaan)
  • Churn Supplier (supplier yang frekuensi transaksinya menurun)
  • Hidden Bottleneck (produk sering habis tapi jarang di-restock)

Daftarkan predict_business dan data_graph sebagai MCP tools. Update classifyIntent() untuk mengenali intent ke PREDICTIVE_ANALYST.

Deploy Fase 3: ./deploy.sh mcp-server


AI dapat mendeteksi bug dari error log VPS, menganalisa pola, dan menghasilkan diff/patch teks yang ditampilkan di Vibes Chat untuk review manual sebelum deploy. Tidak otomatis ke production. Tool: diagnose_app.


Metrik Sekarang Target
Token per query rata-rata ~8.000–12.000 ~1.500–3.000
Waktu respons 3–8 detik 1–3 detik
Biaya API per 1.000 query ~Rp 15.000 ~Rp 3.000
Akurasi intent router (estimasi) ~75% ~92%
Konteks hilang setelah refresh Ya Tidak (persistent memory)
Chart crash malformed JSON Mungkin Tidak (validator)

  • Tambah validateAndSanitizeResponse() di vibeCopilot.ts
  • Tambah AGENT_DATA_BUDGET + guard di vibeCopilot.ts
  • Tambah suggestion chips parser di VibesChat.tsx
  • Deploy mcp-server + blonjo-ui

  • Generate Alembic migration vibes_memory (permanent)
  • Buat memoryService.ts
  • Buat intentClassifier.ts (LLM Gemini router)
  • Refactor data fetching → schema map aggregat
  • Integrasi memory ke handleVibeCopilot()
  • Deploy sajen → migration VPS → mcp-server

  • Buat predictiveEngine.ts
  • Buat dataGraph.ts
  • Register ke index.ts
  • Tambah agen PREDICTIVE_ANALYST
  • Deploy mcp-server