Стратегія тегування пам'яті
Як тегувати спогади для ефективного пошуку та фільтрації — система тегування, що масштабується.
Стратегія тегування пам'яті
Теги — це секрет масштабованого отримання спогадів. Цей посібник показує, як тегувати спогади, щоб потрібні поверталися у потрібний момент.
Чому теги важливі
Без тегів ви маєте плаский повнотекстовий пошук. Із тегами ви маєте структуровану навігацію:
# Without tags: search everything
GET /memory/search?q=docker
# With tags: filter by project + technology
GET /memory/search?q=deployment&tag=synapse&tag=dockerТеги дають змогу:
- Швидко фільтрувати —
GET /memory/by-tag?tag=production - Обмежувати пошук —
?q=auth&tag=project-x - Групувати — знайти всі спогади типу «mistake» для проєкту
- Перехресно посилатися — спогади зі спільними тегами пов'язані
Схема тегування
Теги проєктів
Використовуйте назви проєктів як теги:
synapse, synapse-mcp, synapse-chat, synapse-sdkТеги технологій
Використовуйте назви технологій:
docker, kubernetes, postgres, fastify, react, typescriptТеги тем
Використовуйте тематичні категорії:
deployment, ci-cd, auth, database, frontend, backend, securityТеги статусу
Використовуйте індикатори стану:
active, completed, blocked, deprecatedТеги типу
Використовуйте індикатори типу:
decision, mistake, pattern, reference, todoПравила тегування
Правило 1: 2–5 тегів на спогад
Замало тегів = слабка виявляємість. Забагато = шум.
// 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"] }Правило 2: нижній регістр, через дефіс
✅ ci-cd, api-key, mind-key
❌ CI-CD, APIKey, MindKeyПравило 3: використовуйте послідовний словник
Установіть словник тегів і дотримуйтесь його:
# Project vocabulary
synapse, synapse-mcp, synapse-chat
# NOT: synapse_project, synapseProject, SYNAPSEПравило 4: тегуйте з наміром пошуку
Запитайте себе: «Як я шукатиму цей спогад?»
// 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Шаблони
Шаблон 1: проєкт + тема
{ "tags": ["synapse", "deployment"] }
{ "tags": ["synapse", "auth"] }
{ "tags": ["synapse-mcp", "tools"] }Пошук: ?tag=synapse (усі спогади проєкту Synapse)
Пошук: ?tag=synapse&q=deployment (спогади про розгортання в Synapse)
Шаблон 2: тип + домен
{ "tags": ["mistake", "deployment"] }
{ "tags": ["decision", "database"] }
{ "tags": ["pattern", "auth"] }Пошук: ?tag=mistake (усі помилки)
Пошук: ?tag=mistake&q=deployment (помилки розгортання)
Шаблон 3: ієрархічний
Для підпроєктів у межах проєкту:
{ "tags": ["synapse", "synapse-docs", "markdown"] }
{ "tags": ["synapse", "synapse-mcp", "mcp"] }
{ "tags": ["synapse", "synapse-admin", "ui"] }Пошук: ?tag=synapse (увесь Synapse)
Пошук: ?tag=synapse-docs (лише підпроєкт docs)
Шаблон 4: відстеження статусу
// Active project
{ "tags": ["synapse", "active"], "priority": "high" }
// Completed project
{ "tags": ["synapse-v1", "completed"], "priority": "low" }
// Blocked
{ "tags": ["synapse-v2", "blocked"], "priority": "high" }Типові випадки використання
Знайти всі рішення щодо проєкту
curl -H "Authorization: Bearer $KEY" \
".../memory/search?q=decision&tag=synapse"Знайти всі помилки в домені
curl -H "Authorization: Bearer $KEY" \
".../memory/search?q=mistake&tag=deployment"Знайти активну роботу
curl -H "Authorization: Bearer $KEY" \
".../memory/by-tag?tag=active"Знайти спогади про технологію
curl -H "Authorization: Bearer $KEY" \
".../memory/search?q=postgres+performance&tag=database"Супровід тегів
Періодичний перегляд
# 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)")Об'єднання тегів
Якщо у вас непослідовні теги (docker і Docker), об'єднайте їх:
# 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)))