Masalahnya
"Apakah masalah ini sudah pernah dicatat?" dulu hanya bisa dijawab dengan membuka tujuh daftar satu per satu. Manusia malas melakukannya, jadi bug yang sama dilaporkan tiga kali. Agent melakukannya dan menghabiskan konteks untuk memuat data yang 99%-nya tidak relevan.
Satu kueri
Dari agent lewat MCP:
oprex_search { q: "pendaftaran email sudah terpakai" }
Lewat REST:
curl -H "Authorization: Bearer oprex_pk_xxxxx" \
"https://oprex.id/api/v1/search?q=pendaftaran+email+sudah+terpakai"
Hasilnya satu daftar ter-ranking dari tujuh jenis sekaligus: issue, tiket, requirement, spesifikasi, test case, milestone, note. Tiap baris berisi jenis, rujukan yang bisa dibaca (BUG-12, REQ-8), judul, cuplikan, dan project-nya. Untuk isi penuh, ambil satu yang Anda mau dengan tool get-nya.
Filter
| Parameter | Contoh | Efek |
|---|---|---|
kinds | bug,requirement | Hanya jenis yang disebut |
projectId | prj_abc123 | Hanya satu project |
limit | 50 | Maksimum hasil (default 20, maks 100) |
Jenis yang tersedia: bug, ticket, requirement, specification, test_case, milestone, note.
Kenapa ia menemukan yang kotak pencarian biasa tidak
Dua hal.
Pertama, ini pencarian full-text, bukan pencocokan potongan kata. Kata dinormalkan ke akarnya, di bawah stemmer Indonesia dan Inggris sekaligus — karena tulisan teknis kita campuran. Jadi mencari *mendaftar* juga menemukan catatan yang hanya pernah menulis *pendaftaran* atau *daftar*. Pencocokan potongan kata tidak menemukan satu pun dari itu.
Kedua, term-nya di-OR lalu di-ranking. Pertanyaan sungguhan jarang punya semua katanya di satu catatan. Kalau semuanya diwajibkan ada, hasilnya nol; di sini yang cocok paling banyak naik ke atas dan Anda tetap dapat jawaban.
Yang TIDAK ikut dicari
Memory — baik dokumen maupun fakta — sengaja tidak ada di sini. Aturan aksesnya per-pengguna (fakta personal milik satu orang; fakta project lewat keanggotaan), dan menuliskan ulang aturan itu di dua tempat adalah cara paling mahal untuk akhirnya membocorkan sesuatu. Pakai oprex_recall_memory untuk fakta dan oprex_list_memories untuk dokumen.
Juga tidak ikut: note yang sudah diarsip dan test case yang sudah tidak aktif. Keduanya memang dimaksudkan hilang dari daftar.
Untuk agent: pakai ini lebih dulu
Kalau pertanyaannya "apakah ini sudah ada di suatu tempat", oprex_search adalah panggilan pertama — bukan tujuh list. Satu panggilan mengembalikan cuplikan, bukan muatan penuh, jadi konteksnya terpakai untuk berpikir bukan untuk memuat data.