Skip to content

Codebase Memory

Ringkasan

Codebase Memory adalah lapisan code-intelligence proyek untuk agen AI. Didukung oleh codebase-memory-mcp — mesin code intelligence cepat untuk agen AI coding, didistribusikan sebagai satu binary statis MCP server.

Ia membangun knowledge graph persisten dari repositori dan mengeksposnya lewat query berbasis graf. Daripada grep setiap file, agen dan developer bisa mencari dengan bahasa natural, menelusuri dependensi, dan mendapatkan ringkasan arsitektur — semuanya didukung graf terindeks dari fungsi, kelas, route, dan relasinya.

Graf disimpan per proyek dengan nama proyek (mis. sutomo). Graf tidak terikat ke branch; ini snapshot dari working tree saat di-indeks. Re-index setelah perubahan signifikan agar graf mencerminkan kode terbaru.

GitHub: github.com/DeusData/codebase-memory-mcp


Fitur

  • Graph indexing — membangun knowledge graph dari fungsi, kelas, interface, method, enum, route, channel, dan relasinya (CALLS, USAGE, IMPORTS, WRITES, INHERITS, THROWS, ...).
  • Pencarian kode berbasis graf — menemukan kecocokan, mendeduplikasi ke fungsi yang memuatnya, dan mengurutkan berdasarkan kepentingan struktural.
  • Pencarian bahasa natural — ranking BM25 dengan boosting struktural, pemecahan camelCase, dan jembatan vektor semantik.
  • Penelusuran dependensi — mengikuti caller/callee, alur data, dan panggilan HTTP/async lintas service.
  • Ringkasan arsitektur — cluster (Leiden community detection), layer, boundary, hotspot, dan route.
  • Analisis hotspot — query Cypher atas properti kompleksitas dan kedalaman loop untuk menemukan loop N+1, rekursi, dan alokasi dalam loop.
  • Cross-project intelligence — mencocokkan route/channel lintas proyek (CROSS_HTTP_CALLS, CROSS_ASYNC_CALLS).
  • Persistence — artefak terkompresi opsional (.codebase-memory/graph.db.zst) untuk bootstrap tim.

Mengindeks Repositori

Untuk mengindeks (atau re-index) working tree saat ini ke proyek, jalankan tool index_repository dengan path ke repositori ini:

index_repository
  repo_path: <absolute-path-ke-repo-ini>
  name: sutomo
  persistence: true
  • name adalah identitas proyek untuk semua query selanjutnya. Jaga tetap stabil (mis. sutomo) agar graf yang sama dipakai ulang.
  • persistence: true menulis artefak terkompresi (.codebase-memory/graph.db.zst) agar rekan bisa bootstrap darinya tanpa re-index.
  • mode: full mengekstrak file, similarity, dan semantic edges (paling lambat tapi paling kaya). fast melewati similarity demi kecepatan.

Proyek adalah satu graf lintas branch; node Branch hanya mencatat branch terakhir untuk provenance.


Query ke Graf

Semua query memakai project yang sama (mis. sutomo).

Pencarian kode

search_code
  pattern: "Article::search"
  project: sutomo

Menemukan kecocokan, mendeduplikasi ke fungsi yang memuatnya, dan mengurutkan berdasarkan kepentingan struktural (definisi dulu). Gunakan mode: full untuk source atau mode: files untuk path file saja.

Pencarian bahasa natural

search_graph
  query: "menerbitkan artikel"
  project: sutomo

Diurutkan dengan BM25 plus boosting struktural (fungsi, method, route). Mendukung pemecahan camelCase, dan semantic_query menjembatani kosakata (mis. menemukan publish saat kamu cari send).

Menelusuri dependensi

trace_path
  function_name: "roundup"
  project: sutomo
  direction: both
  depth: 3

Mengikuti edge CALLS untuk menampilkan caller/callee. mode: data_flow menambahkan propagasi nilai; mode: cross_service mengikuti route HTTP/async ke service lain.

Ringkasan arsitektur

get_architecture
  project: sutomo
  aspects: ["overview"]

Mengembalikan cluster (modul de-facto lewat community detection), layer, boundary, hotspot, dan route — berguna memahami seam sebelum perubahan besar.

Query graf kustom (Cypher)

query_graph
  query: "MATCH (f:Function) WHERE f.transitive_loop_depth >= 3 RETURN f.qualified_name"
  project: sutomo

Berguna untuk analisis hotspot (loop N+1, rekursi, alokasi dalam loop).


Menyegarkan Indeks

Karena graf adalah snapshot, segarkan setelah perubahan berarti:

  1. Pastikan working tree dalam kondisi yang ingin diindeks.
  2. Jalankan index_repository lagi dengan name dan repo_path yang sama.
  3. Konfirmasi file terbaru ada dengan mencarinya.

Node Branch mungkin tertinggal dari branch yang sebenarnya di-checkout; itu hanya metadata dan tidak mempengaruhi kebenaran query.


File Penting

FileTujuan
.codebase-memory/graph.db.zstArtefak graf terkompresi yang dipersist (saat persistence: true)
graphify-out/Output ekspor graf opsional