# Taggningsstrategi för minne Taggar är hemligheten bakom skalbar minnesåtkomst. Den här guiden visar hur man taggar minnen så att rätt minnen kommer tillbaka vid rätt tidpunkt. ## Varför taggar spelar roll Utan taggar har ni platt fulltextssökning. Med taggar har ni strukturerad navigation: ```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 ``` Taggar möjliggör: - **Snabb filtrering** — `GET /memory/by-tag?tag=production` - **Avgränsad sökning** — `?q=auth&tag=project-x` - **Gruppering** — hitta alla "misstag"-minnen för ett projekt - **Korsreferens** — minnen som delar taggar är relaterade ## Taggningsschema ### Projekttaggar Använd projektnamn som taggar: ``` synapse, synapse-mcp, synapse-chat, synapse-sdk ``` ### Teknologitaggar Använd teknologinamn: ``` docker, kubernetes, postgres, fastify, react, typescript ``` ### Ämnestaggar Använd ämneskategorier: ``` deployment, ci-cd, auth, database, frontend, backend, security ``` ### Statustaggar Använd statusindikatorer: ``` active, completed, blocked, deprecated ``` ### Typetaggar Använd typindikatorer: ``` decision, mistake, pattern, reference, todo ``` ## Taggningsregler ### Regel 1: 2–5 taggar per minne För få taggar = dålig upptäckbarhet. För många = brus. ```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"] } ``` ### Regel 2: Gemener, bindestreck ``` ✅ ci-cd, api-key, mind-key ❌ CI-CD, APIKey, MindKey ``` ### Regel 3: Använd konsekvent vokabulär Etablera en taggvokabulär och håll er till den: ``` # Project vocabulary synapse, synapse-mcp, synapse-chat # NOT: synapse_project, synapseProject, SYNAPSE ``` ### Regel 4: Tagga med sökintention Fråga: "Hur kommer jag att söka efter detta minne?" ```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 ``` ## Mönster ### Mönster 1: Projekt + ämne ```json { "tags": ["synapse", "deployment"] } { "tags": ["synapse", "auth"] } { "tags": ["synapse-mcp", "tools"] } ``` Sök: `?tag=synapse` (alla Synapse-projektminnen) Sök: `?tag=synapse&q=deployment` (driftsättningsminnen i Synapse) ### Mönster 2: Typ + domän ```json { "tags": ["mistake", "deployment"] } { "tags": ["decision", "database"] } { "tags": ["pattern", "auth"] } ``` Sök: `?tag=mistake` (alla misstag) Sök: `?tag=mistake&q=deployment` (driftsättningsmisstag) ### Mönster 3: Hierarkisk För delprojekt inom ett projekt: ```json { "tags": ["synapse", "synapse-docs", "markdown"] } { "tags": ["synapse", "synapse-mcp", "mcp"] } { "tags": ["synapse", "synapse-admin", "ui"] } ``` Sök: `?tag=synapse` (hela Synapse) Sök: `?tag=synapse-docs` (bara docs-delprojekt) ### Mönster 4: Statusspårning ```json // Active project { "tags": ["synapse", "active"], "priority": "high" } // Completed project { "tags": ["synapse-v1", "completed"], "priority": "low" } // Blocked { "tags": ["synapse-v2", "blocked"], "priority": "high" } ``` ## Vanliga användningsområden ### Hitta alla beslut om ett projekt ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/search?q=decision&tag=synapse" ``` ### Hitta alla misstag i en domän ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/search?q=mistake&tag=deployment" ``` ### Hitta aktivt arbete ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/by-tag?tag=active" ``` ### Hitta minnen om en teknologi ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/search?q=postgres+performance&tag=database" ``` ## Taggunderhåll ### Periodisk granskning ```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)") ``` ### Slå ihop taggar Om ni har inkonsekventa taggar (`docker` och `Docker`), slå ihop dem: ```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))) ``` ## Bästa praxis > [!TIP] > - **Etablera vokabulär tidigt** — konsekventa taggar från dag 1 > - **Tagga för sökintention** — hur kommer ni att hitta detta senare? > - **2–5 taggar är sweet spot** — för få eller för många är dåligt > - **Gemener + bindestreck** — `ci-cd` inte `CI/CD` > - **Granska periodvis** — slå ihop dubbletter, ta bort oanvända ## Nästa steg - [Minnesbästa praxis](/docs/guides/memory-best-practices) - [FTS5-sökning](/docs/concepts/fts5-search) - [Uppgiftsdrivet arbetsflöde](/docs/llm-cookbook/task-driven-workflow)