Skip to main content

استراتيجية وسوم الذاكرة

كيف تُوسم الذكريات للبحث والتصفية الفعالة — نظام الوسوم القابل للتوسع.


استراتيجية وسوم الذاكرة

الوسوم سر استرجاع الذاكرة القابل للتوسع. يُظهر هذا الدليل كيف تُوسم الذكريات حتى تعود الصحيحة في الوقت المناسب.

لماذا تهم الوسوم

بدون الوسوم، لديك بحث نصي كامل مسطح. مع الوسوم، لديك تنقل منظم:

# بدون وسوم: ابحث في كل شيء
GET /memory/search?q=docker

# مع الوسوم: صفِّ حسب المشروع + التقنية
GET /memory/search?q=deployment&tag=synapse&tag=docker

تُمكّن الوسوم:

  • تصفية سريعةGET /memory/by-tag?tag=production
  • بحث محدود?q=auth&tag=project-x
  • تجميع — أوجد جميع ذكريات "الأخطاء" لمشروع
  • إسناد متبادل — الذكريات التي تشارك الوسوم مرتبطة

مخطط الوسوم

وسوم المشروع

استخدم أسماء المشاريع كوسوم:

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 وسوم لكل ذاكرة

وسوم قليلة جدًا = قابلية اكتشاف ضعيفة. كثيرة جدًا = ضوضاء.

// جيد: 3 وسوم ذات صلة
{ "tags": ["synapse", "deployment", "docker"] }

// سيء: وسم واحد (ضيق جدًا)
{ "tags": ["synapse"] }

// سيء: 10 وسوم (ضوضاء)
{ "tags": ["synapse", "deployment", "docker", "vps1", "2026", "june", "ssh", "git", "main", "production"] }

القاعدة 2: أحرف صغيرة، بوصلات

✅ ci-cd, api-key, mind-key
❌ CI-CD, APIKey, MindKey

القاعدة 3: استخدم مفردات متسقة

أنشئ مفردات وسم والتزم بها:

# مفردات المشروع
synapse, synapse-mcp, synapse-chat

# لا: synapse_project, synapseProject, SYNAPSE

القاعدة 4: وسم بنية البحث

اسأل: "كيف سأبحث عن هذه الذاكرة؟"

// تخزين قرار نشر
{
  "content": "Decided to use Docker Swarm for Synapse deployment",
  "tags": ["synapse", "deployment", "docker", "swarm", "decision"]
}

// ستبحث غالبًا: ?q=docker+swarm أو ?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: تتبع الحالة

// مشروع نشط
{ "tags": ["synapse", "active"], "priority": "high" }

// مشروع مكتمل
{ "tags": ["synapse-v1", "completed"], "priority": "low" }

// محظور
{ "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"

صيانة الوسوم

مراجعة دورية

# إيجاد الوسوم النادرة الاستخدام (مرشحات للتنظيف)
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)، ادمجها:

# أوجد جميع الذكريات بالوسم "Docker"
mems = requests.get(f"{URL}/memory/by-tag?tag=Docker",
    headers={"Authorization": f"Bearer {KEY}"}).json()

# حدّث كل واحدة لاستخدام "docker" بدلًا من ذلك
for mem in mems["results"]:
    tags = [t.lower() for t in mem["tags"]]
    update_memory(mem["id"], tags=list(set(tags)))

أفضل الممارسات

الخطوات التالية