# Strategi Penandaan Memori Tag adalah rahasia untuk pengambilan memori yang skalabel. Panduan ini menunjukkan cara menandai memori sehingga yang tepat kembali pada waktu yang tepat. ## Mengapa Tag Penting Tanpa tag, Anda memiliki pencarian teks penuh datar. Dengan tag, Anda memiliki navigasi terstruktur: ```bash # Without tags: search everything GET /memory/search?q=docker # With tags: filter by project + technology GET /memory/search?q=deployment&tag=synapse&tag=docker ``` Tag memungkinkan: - **Pemfilteran cepat** — `GET /memory/by-tag?tag=production` - **Pencarian tercakup** — `?q=auth&tag=project-x` - **Pengelompokan** — temukan semua memori "mistake" untuk sebuah proyek - **Referensi silang** — memori yang berbagi tag terkait ## Skema Penandaan ### Tag proyek Gunakan nama proyek sebagai tag: ``` synapse, synapse-mcp, synapse-chat, synapse-sdk ``` ### Tag teknologi Gunakan nama teknologi: ``` docker, kubernetes, postgres, fastify, react, typescript ``` ### Tag topik Gunakan kategori topik: ``` deployment, ci-cd, auth, database, frontend, backend, security ``` ### Tag status Gunakan indikator status: ``` active, completed, blocked, deprecated ``` ### Tag tipe Gunakan indikator tipe: ``` decision, mistake, pattern, reference, todo ``` ## Aturan Penandaan ### Aturan 1: 2-5 tag per memori Terlalu sedikit tag = discoverability buruk. Terlalu banyak = kebisingan. ```json // Good: 3 relevant tags { "tags": ["synapse", "deployment", "docker"] } // Bad: 1 tag (too narrow) { "tags": ["synapse"] } // Bad: 10 tags (noise) { "tags": ["synapse", "deployment", "docker", "vps1", "2026", "june", "ssh", "git", "main", "production"] } ``` ### Aturan 2: Huruf kecil, dipisahkan tanda hubung ``` ✅ ci-cd, api-key, mind-key ❌ CI-CD, APIKey, MindKey ``` ### Aturan 3: Gunakan kosakata yang konsisten Tetapkan kosakata penandaan dan patuhi: ``` # Project vocabulary synapse, synapse-mcp, synapse-chat # NOT: synapse_project, synapseProject, SYNAPSE ``` ### Aturan 4: Tandai dengan niat pencarian Tanyakan: "Bagaimana saya akan mencari memori ini?" ```json // Storing a deployment decision { "content": "Decided to use Docker Swarm for Synapse deployment", "tags": ["synapse", "deployment", "docker", "swarm", "decision"] } // You'll likely search: ?q=docker+swarm or ?tag=deployment ``` ## Pola ### Pola 1: Proyek + Topik ```json { "tags": ["synapse", "deployment"] } { "tags": ["synapse", "auth"] } { "tags": ["synapse-mcp", "tools"] } ``` Pencarian: `?tag=synapse` (semua memori proyek Synapse) Pencarian: `?tag=synapse&q=deployment` (memori deployment di Synapse) ### Pola 2: Tipe + Domain ```json { "tags": ["mistake", "deployment"] } { "tags": ["decision", "database"] } { "tags": ["pattern", "auth"] } ``` Pencarian: `?tag=mistake` (semua kesalahan) Pencarian: `?tag=mistake&q=deployment` (kesalahan deployment) ### Pola 3: Hierarkis Untuk sub-proyek dalam proyek: ```json { "tags": ["synapse", "synapse-docs", "markdown"] } { "tags": ["synapse", "synapse-mcp", "mcp"] } { "tags": ["synapse", "synapse-admin", "ui"] } ``` Pencarian: `?tag=synapse` (semua Synapse) Pencarian: `?tag=synapse-docs` (hanya sub-proyek docs) ### Pola 4: Pelacakan status ```json // Active project { "tags": ["synapse", "active"], "priority": "high" } // Completed project { "tags": ["synapse-v1", "completed"], "priority": "low" } // Blocked { "tags": ["synapse-v2", "blocked"], "priority": "high" } ``` ## Kasus Penggunaan Umum ### Temukan semua keputusan tentang sebuah proyek ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/search?q=decision&tag=synapse" ``` ### Temukan semua kesalahan dalam sebuah domain ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/search?q=mistake&tag=deployment" ``` ### Temukan pekerjaan aktif ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/by-tag?tag=active" ``` ### Temukan memori tentang sebuah teknologi ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/search?q=postgres+performance&tag=database" ``` ## Pemeliharaan Tag ### Tinjauan berkala ```python # Find rarely-used tags (candidates for cleanup) tags = requests.get(f"{URL}/memory/tags", headers={"Authorization": f"Bearer {KEY}"}).json() for tag, count in tags.items(): if count < 2: print(f"Rare tag: {tag} ({count} memories)") ``` ### Menggabungkan tag Jika Anda memiliki tag yang tidak konsisten (`docker` dan `Docker`), gabungkan: ```python # Find all memories with "Docker" tag mems = requests.get(f"{URL}/memory/by-tag?tag=Docker", headers={"Authorization": f"Bearer {KEY}"}).json() # Update each to use "docker" instead for mem in mems["results"]: tags = [t.lower() for t in mem["tags"]] update_memory(mem["id"], tags=list(set(tags))) ``` ## Praktik Terbaik > [!TIP] > - **Tetapkan kosakata sejak awal** — tag konsisten dari hari 1 > - **Tandai dengan niat pencarian** — bagaimana Anda akan menemukan ini nanti? > - **2-5 tag adalah titik manis** — terlalu sedikit atau terlalu banyak itu buruk > - **Huruf kecil + tanda hubung** — `ci-cd` bukan `CI/CD` > - **Tinjau secara berkala** — gabungkan duplikat, hapus yang tidak digunakan ## Langkah Berikutnya - [Praktik Terbaik Memori](/docs/guides/memory-best-practices) - [Pencarian FTS5](/docs/concepts/fts5-search) - [Alur Kerja Berbasis Tugas](/docs/llm-cookbook/task-driven-workflow)