# استراتيجية وسوم الذاكرة الوسوم سر استرجاع الذاكرة القابل للتوسع. يُظهر هذا الدليل كيف تُوسم الذكريات حتى تعود الصحيحة في الوقت المناسب. ## لماذا تهم الوسوم بدون الوسوم، لديك بحث نصي كامل مسطح. مع الوسوم، لديك تنقل منظم: ```bash # بدون وسوم: ابحث في كل شيء 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 وسوم لكل ذاكرة وسوم قليلة جدًا = قابلية اكتشاف ضعيفة. كثيرة جدًا = ضوضاء. ```json // جيد: 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: وسم بنية البحث اسأل: "كيف سأبحث عن هذه الذاكرة؟" ```json // تخزين قرار نشر { "content": "Decided to use Docker Swarm for Synapse deployment", "tags": ["synapse", "deployment", "docker", "swarm", "decision"] } // ستبحث غالبًا: ?q=docker+swarm أو ?tag=deployment ``` ## الأنماط ### النمط 1: مشروع + موضوع ```json { "tags": ["synapse", "deployment"] } { "tags": ["synapse", "auth"] } { "tags": ["synapse-mcp", "tools"] } ``` بحث: `?tag=synapse` (جميع ذكريات مشروع Synapse) بحث: `?tag=synapse&q=deployment` (ذكريات النشر في Synapse) ### النمط 2: نوع + مجال ```json { "tags": ["mistake", "deployment"] } { "tags": ["decision", "database"] } { "tags": ["pattern", "auth"] } ``` بحث: `?tag=mistake` (جميع الأخطاء) بحث: `?tag=mistake&q=deployment` (أخطاء النشر) ### النمط 3: هرمي لمشاريع فرعية ضمن مشروع: ```json { "tags": ["synapse", "synapse-docs", "markdown"] } { "tags": ["synapse", "synapse-mcp", "mcp"] } { "tags": ["synapse", "synapse-admin", "ui"] } ``` بحث: `?tag=synapse` (كل Synapse) بحث: `?tag=synapse-docs` (المشروع الفرعي docs فقط) ### النمط 4: تتبع الحالة ```json // مشروع نشط { "tags": ["synapse", "active"], "priority": "high" } // مشروع مكتمل { "tags": ["synapse-v1", "completed"], "priority": "low" } // محظور { "tags": ["synapse-v2", "blocked"], "priority": "high" } ``` ## حالات الاستخدام الشائعة ### إيجاد جميع القرارات حول مشروع ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/search?q=decision&tag=synapse" ``` ### إيجاد جميع الأخطاء في مجال ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/search?q=mistake&tag=deployment" ``` ### إيجاد العمل النشط ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/by-tag?tag=active" ``` ### إيجاد ذكريات حول تقنية ```bash curl -H "Authorization: Bearer $KEY" \ ".../memory/search?q=postgres+performance&tag=database" ``` ## صيانة الوسوم ### مراجعة دورية ```python # إيجاد الوسوم النادرة الاستخدام (مرشحات للتنظيف) 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`)، ادمجها: ```python # أوجد جميع الذكريات بالوسم "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))) ``` ## أفضل الممارسات > [!TIP] > - **أنشئ المفردات مبكرًا** — وسوم متسقة من اليوم الأول > - **وسم بنية البحث** — كيف ستجد هذا لاحقًا؟ > - **2-5 وسوم هي النقطة المثلى** — قليلة جدًا أو كثيرة جدًا سيئة > - **أحرف صغيرة + وصلات** — `ci-cd` لا `CI/CD` > - **راجع دوريًا** — ادمج المكررات، احذف غير المستخدمة ## الخطوات التالية - [أفضل ممارسات الذاكرة](/docs/guides/memory-best-practices) - [بحث FTS5](/docs/concepts/fts5-search) - [سير العمل المدفوع بالمهام](/docs/llm-cookbook/task-driven-workflow)