Strategia di tagging della memoria
Come taggare le memorie per ricerca e filtraggio efficaci — il sistema di tagging che scala.
Strategia di tagging della memoria
I tag sono il segreto per il recupero di memoria scalabile. Questa guida mostra come taggare le memorie così quelle giuste tornano al momento giusto.
Perché i tag contano
Senza tag, ha ricerca full-text piatta. Con i tag, ha navigazione strutturata:
# Without tags: search everything
GET /memory/search?q=docker
# With tags: filter by project + technology
GET /memory/search?q=deployment&tag=synapse&tag=dockerI tag abilitano:
- Filtraggio veloce —
GET /memory/by-tag?tag=production - Ricerca con scope —
?q=auth&tag=project-x - Raggruppamento — trova tutte le memorie "mistake" per un progetto
- Cross-referencing — memorie con tag condivisi sono correlate
Schema di tagging
Tag di progetto
Usi nomi di progetto come tag:
synapse, synapse-mcp, synapse-chat, synapse-sdkTag di tecnologia
Usi nomi di tecnologia:
docker, kubernetes, postgres, fastify, react, typescriptTag di argomento
Usi categorie di argomento:
deployment, ci-cd, auth, database, frontend, backend, securityTag di stato
Usi indicatori di stato:
active, completed, blocked, deprecatedTag di tipo
Usi indicatori di tipo:
decision, mistake, pattern, reference, todoRegole di tagging
Regola 1: 2-5 tag per memoria
Troppo pochi tag = scarsa scopribilità. Troppi = rumore.
// 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"] }Regola 2: minuscolo, con trattini
✅ ci-cd, api-key, mind-key
❌ CI-CD, APIKey, MindKeyRegola 3: usi un vocabolario consistente
Stabilisca un vocabolario di tagging e lo mantenga:
# Project vocabulary
synapse, synapse-mcp, synapse-chat
# NOT: synapse_project, synapseProject, SYNAPSERegola 4: tagghi con intento di ricerca
Chieda: "Come cercherò questa memoria?"
// 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=deploymentModelli
Modello 1: progetto + argomento
{ "tags": ["synapse", "deployment"] }
{ "tags": ["synapse", "auth"] }
{ "tags": ["synapse-mcp", "tools"] }Ricerca: ?tag=synapse (tutte le memorie del progetto Synapse)
Ricerca: ?tag=synapse&q=deployment (memorie di deployment in Synapse)
Modello 2: tipo + dominio
{ "tags": ["mistake", "deployment"] }
{ "tags": ["decision", "database"] }
{ "tags": ["pattern", "auth"] }Ricerca: ?tag=mistake (tutti gli errori)
Ricerca: ?tag=mistake&q=deployment (errori di deployment)
Modello 3: gerarchico
Per sottoprogetti all'interno di un progetto:
{ "tags": ["synapse", "synapse-docs", "markdown"] }
{ "tags": ["synapse", "synapse-mcp", "mcp"] }
{ "tags": ["synapse", "synapse-admin", "ui"] }Ricerca: ?tag=synapse (tutto Synapse)
Ricerca: ?tag=synapse-docs (solo sottoprogetto docs)
Modello 4: tracciamento dello stato
// Active project
{ "tags": ["synapse", "active"], "priority": "high" }
// Completed project
{ "tags": ["synapse-v1", "completed"], "priority": "low" }
// Blocked
{ "tags": ["synapse-v2", "blocked"], "priority": "high" }Casi d'uso comuni
Trovi tutte le decisioni su un progetto
curl -H "Authorization: Bearer $KEY" \
".../memory/search?q=decision&tag=synapse"Trova tutti gli errori in un dominio
curl -H "Authorization: Bearer $KEY" \
".../memory/search?q=mistake&tag=deployment"Trova lavoro attivo
curl -H "Authorization: Bearer $KEY" \
".../memory/by-tag?tag=active"Trova memorie su una tecnologia
curl -H "Authorization: Bearer $KEY" \
".../memory/search?q=postgres+performance&tag=database"Manutenzione dei tag
Revisione periodica
# 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)")Unione di tag
Se ha tag inconsistenti (docker e Docker), li unisca:
# 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)))