{"title":"أفضل ممارسات الذاكرة","slug":"memory-best-practices","category":"guides","summary":"كيف تُنظَّم الذكريات للاستدعاء الفعال — الفئات، المفاتيح، الوسوم، الأولويات.","audience":["human","llm"],"tags":["guide","memory","best-practices","patterns"],"difficulty":"intermediate","updated":"2026-06-27","word_count":603,"read_minutes":3,"lang":"ar","translated":true,"requested_lang":"ar","content_markdown":"\n# أفضل ممارسات الذاكرة\n\nكيف تُنظَّم الذكريات يحدد مدى فائدتها. يغطي هذا الدليل\nأنماط تصنيف ووسم وأولوية الذكريات حتى يستطيع الـ LLM\nاستدعاء المعلومة الصحيحة في الوقت المناسب.\n\n## الفئات: اختر الأكثر تحديدًا\n\n| الفئة | استخدم لـ | مثال |\n|----------|---------|---------|\n| `identity` | اسم المستخدم، الدور، معلومات الاتصال | `\"user_name\": \"Michael Schäfer\"` |\n| `preference` | الإعجابات، عدم الإعجابات، أسلوب العمل | `\"communication\": \"Prefers concise responses\"` |\n| `fact` | حقائق قابلة للتحقق | `\"office_location\": \"Berlin, Germany\"` |\n| `project` | حالة المشروع، القرارات | `\"project_synapse\": \"v1.5.0 deployed\"` |\n| `skill` | مهارات المستخدم | `\"skill_python\": \"Advanced, 10+ years\"` |\n| `mistake` | أخطاء سابقة يجب تجنبها | `\"mistake_npm_version\": \"Always bump version\"` |\n| `context` | سياق ذو صلة بالجلسة | `\"current_focus\": \"Working on docs system\"` |\n| `note` | ملاحظات متفرقة | `\"note_idea\": \"Try Redis for caching\"` |\n\n> [!TIP]\n> عند الشك، استخدم `fact` للمعلومات القابلة للتحقق و `note` لكل شيء آخر.\n> لا تفرط في التصنيف — أفضل أن يكون لديك `fact` واضح من `context` مربك.\n\n## المفاتيح: مُعرّفات ذات معنى\n\nالحقل `key` هو مُعرّف الذاكرة. استخدم مفاتيح ذات معنى وثابتة:\n\n**مفاتيح جيدة:**\n- `user_name`\n- `project_synapse_status`\n- `preference_communication_style`\n- `mistake_npm_version_bump`\n\n**مفاتيح سيئة:**\n- `mem_001` (ليس ذا معنى)\n- `temp` (ليس وصفيًا)\n- `2026-06-27-note` (التاريخ لا يساعد الاستدعاء)\n\n### اصطلاحات تسمية المفاتيح\n\n- `snake_case` (أحرف صغيرة مع شرطات سفلية)\n- بادئة بالفئة: `preference_*`، `project_*`، `mistake_*`\n- استخدم أسماء وصفية، لا أفعالًا\n- أبقِها أقل من 50 حرفًا\n\n## الوسوم: للبحث والتصفية\n\nتُمكّن الوسوم التصفية والبحث السريع. أضف 2-5 وسوم لكل ذاكرة:\n\n```json\n{\n  \"category\": \"project\",\n  \"key\": \"project_synapse_status\",\n  \"content\": \"Synapse v1.5.0 deployed. Next: v1.6.0 with docs system.\",\n  \"tags\": [\"synapse\", \"deployment\", \"status\", \"v1.5.0\"]\n}\n```\n\n### أنماط الوسوم\n\n- **أسماء المشاريع**: `synapse`، `synapse-mcp`، `synapse-chat`\n- **المواضيع**: `deployment`، `ci`، `database`، `auth`\n- **الحالة**: `active`، `completed`، `blocked`\n- **مؤشرات الأولوية**: `urgent`، `long-term`\n\n> [!NOTE]\n> الوسوم غير حساسة لحالة الأحرف. استخدم أحرفًا صغيرة للاتساق.\n\n## الأولويات: كن واقعيًا\n\n| الأولوية | استخدم لـ | % من الذكريات |\n|----------|---------|---------------|\n| `critical` | هوية المستخدم، المعلومات القانونية، القرارات غير القابلة للتراجع | ~5% |\n| `high` | المشاريع النشطة، التفضيلات المهمة | ~20% |\n| `normal` | معظم الحقائق، الملاحظات، السياق | ~65% |\n| `low` | عابرة، جيد معرفتها | ~10% |\n\n> [!WARNING]\n> لا تعلّم كل شيء `critical`. إذا كان كل شيء حرجًا، فلا شيء كذلك.\n> احجز `critical` للأشياء التي تسبب ضررًا حقيقيًا إذا نُسيت.\n\n## متى تخزّن ومتى لا تخزّن\n\n### خزّن دائمًا\n\n- هوية المستخدم (الاسم، البريد، الدور)\n- التفضيلات طويلة الأمد\n- قرارات المشروع والمبررات\n- الأخطاء السابقة والدروس المستفادة\n- الالتزامات المقطوعة للمستخدم\n\n### لا تخزّن\n\n- الحالة العابرة (استخدم المتغيرات بدلًا من ذلك)\n- سجل المحادثة الحرفي (نظام الدردشة يتولى هذا)\n- البيانات الحساسة (كلمات المرور، مفاتيح API)\n- الحقائق المشتقة بسهولة (التاريخ الحالي، محتويات الملفات)\n- السياق العابر (استخدم فئة `context` بأولوية منخفضة)\n\n## تحديث الذكريات\n\nاستدعِ `POST /memory` بنفس `category` + `key` يُحدّث الذاكرة الموجودة:\n\n```python\n# التخزين الأول\nstore(\"project\", \"project_synapse_status\", \"v1.4.0 deployed\", priority=\"high\")\n\n# لاحقًا: التحديث بنفس المفتاح\nstore(\"project\", \"project_synapse_status\", \"v1.5.0 deployed. CI green.\", priority=\"high\")\n```\n\n> [!TIP]\n> استخدم مفاتيح ثابتة حتى تُحدّث دون إنشاء مكررات. على الـ LLM\n> إعادة POST لنفس المفتاح مع تغير المعلومات، لا إنشاء ذكريات جديدة.\n\n## دورة حياة الذاكرة\n\n```\nCreate → Active → Stale → Archive → Delete\n```\n\n- **Create**: POST /memory بسياق كامل\n- **Active**: استدعِ كثيرًا، حدّث حسب الحاجة\n- **Stale**: ما زال ذا صلة لكن غير مستخدم بنشاط (أولوية أقل؟)\n- **Archive**: عيّن الأولوية إلى `low`، أبقِ للمرجع التاريخي\n- **Delete**: DELETE /memory/:id عندما لا يعود ذا صلة\n\n### تنظيف دوري\n\n```python\n# إيجاد الذكريات غير المُحدّثة منذ 90 يومًا\nold_memories = requests.get(\n    f\"{URL}/memory/search?q=*\",\n    headers={\"Authorization\": f\"Bearer {KEY}\"}\n)\n\nfor mem in old_memories[\"results\"]:\n    if is_stale(mem, days=90):\n        # إما حذف أو خفض الأولوية\n        if is_obsolete(mem):\n            delete_memory(mem[\"id\"])\n        else:\n            update_memory(mem[\"id\"], priority=\"low\")\n```\n\n## نمط: وراثة الذاكرة\n\nللسياق الهرمي (مشروع → مشروع فرعي → مهمة):\n\n```python\n# المشروع الأب\nstore(\"project\", \"project_synapse\", \"Main Synapse project\", \n      tags=[\"synapse\", \"parent\"], priority=\"high\")\n\n# مشروع فرعي (الوسوم تربط بالأب)\nstore(\"project\", \"project_synapse_docs\", \"Docs system for Synapse\",\n      tags=[\"synapse\", \"docs\", \"synapse-parent\"], priority=\"high\")\n\n# مهمة محددة (الوسوم تربط بالمشروع الفرعي)\nstore(\"project\", \"task_docs_loader\", \"Implement docs-loader.ts\",\n      tags=[\"synapse\", \"docs\", \"task\"], priority=\"normal\")\n```\n\nيستطيع الـ LLM حينها البحث `q=synapse+docs` لإيجاد جميع الذكريات ذات الصلة.\n\n## نمط: سجل القرارات\n\nخزّن القرارات مع المبررات حتى لا يعيد الـ LLM مناقشتها:\n\n```python\nstore(\"fact\", \"decision_postgres_over_sqlite\",\n      \"Chose PostgreSQL over SQLite for production. Reason: concurrent writes, \"\n      \"FTS5 native support, better backup story. Date: 2026-06-15. Decided by: Michael.\",\n      tags=[\"decision\", \"database\", \"postgres\", \"sqlite\"],\n      priority=\"high\")\n```\n\n## نمط: تجنب الأخطاء\n\nخزّن الأخطاء مع تعليمات تجنب محددة:\n\n```python\nstore(\"mistake\", \"mistake_forget_version_bump\",\n      \"Forgot to bump package.json version after changes. npm publish failed. \"\n      \"FIX: Always run `npm version patch` before pushing. \"\n      \"CI fails with 'version already exists' if you forget.\",\n      tags=[\"npm\", \"ci\", \"publish\", \"version\"],\n      priority=\"high\")\n```\n\n## أنماط مضادة يجب تجنبها\n\n> [!WARNING]\n> - **تخزين سجلات المحادثة** — نظام الدردشة يتولى هذا\n> - **تخزين الملفات الكاملة** — استخدم تخزين السكربتات أو تخزينًا خارجيًا\n> - **تخزين الحالة العابرة** — استخدم المتغيرات\n> - **تخزين الأسرار** — استخدم متغيرات البيئة\n> - **تكرار الذكريات** — استخدم مفاتيح ثابتة\n> - **الإفراط في الوسم** — 2-5 وسوم لكل ذاكرة مثالي\n> - **كل شيء حرج** — كن واقعيًا مع الأولويات\n\n## الخطوات التالية\n\n- [Memory API](/docs/api/memory)\n- [وكيل LLM الدائم](/docs/guides/persistent-llm-agent)\n- [استراتيجية وسوم الذاكرة](/docs/llm-cookbook/memory-tagging-strategy)\n","content_html":"<h1>أفضل ممارسات الذاكرة</h1>\n<p>كيف تُنظَّم الذكريات يحدد مدى فائدتها. يغطي هذا الدليل\nأنماط تصنيف ووسم وأولوية الذكريات حتى يستطيع الـ LLM\nاستدعاء المعلومة الصحيحة في الوقت المناسب.</p>\n<h2>الفئات: اختر الأكثر تحديدًا</h2>\n<table>\n<thead>\n<tr>\n<th>الفئة</th>\n<th>استخدم لـ</th>\n<th>مثال</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>identity</code></td>\n<td>اسم المستخدم، الدور، معلومات الاتصال</td>\n<td><code>&quot;user_name&quot;: &quot;Michael Schäfer&quot;</code></td>\n</tr>\n<tr>\n<td><code>preference</code></td>\n<td>الإعجابات، عدم الإعجابات، أسلوب العمل</td>\n<td><code>&quot;communication&quot;: &quot;Prefers concise responses&quot;</code></td>\n</tr>\n<tr>\n<td><code>fact</code></td>\n<td>حقائق قابلة للتحقق</td>\n<td><code>&quot;office_location&quot;: &quot;Berlin, Germany&quot;</code></td>\n</tr>\n<tr>\n<td><code>project</code></td>\n<td>حالة المشروع، القرارات</td>\n<td><code>&quot;project_synapse&quot;: &quot;v1.5.0 deployed&quot;</code></td>\n</tr>\n<tr>\n<td><code>skill</code></td>\n<td>مهارات المستخدم</td>\n<td><code>&quot;skill_python&quot;: &quot;Advanced, 10+ years&quot;</code></td>\n</tr>\n<tr>\n<td><code>mistake</code></td>\n<td>أخطاء سابقة يجب تجنبها</td>\n<td><code>&quot;mistake_npm_version&quot;: &quot;Always bump version&quot;</code></td>\n</tr>\n<tr>\n<td><code>context</code></td>\n<td>سياق ذو صلة بالجلسة</td>\n<td><code>&quot;current_focus&quot;: &quot;Working on docs system&quot;</code></td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>ملاحظات متفرقة</td>\n<td><code>&quot;note_idea&quot;: &quot;Try Redis for caching&quot;</code></td>\n</tr>\n</tbody></table>\n<div class=\"callout callout-ok\">عند الشك، استخدم `fact` للمعلومات القابلة للتحقق و `note` لكل شيء آخر.\nلا تفرط في التصنيف — أفضل أن يكون لديك `fact` واضح من `context` مربك.</div><h2>المفاتيح: مُعرّفات ذات معنى</h2>\n<p>الحقل <code>key</code> هو مُعرّف الذاكرة. استخدم مفاتيح ذات معنى وثابتة:</p>\n<p><strong>مفاتيح جيدة:</strong></p>\n<ul>\n<li><code>user_name</code></li>\n<li><code>project_synapse_status</code></li>\n<li><code>preference_communication_style</code></li>\n<li><code>mistake_npm_version_bump</code></li>\n</ul>\n<p><strong>مفاتيح سيئة:</strong></p>\n<ul>\n<li><code>mem_001</code> (ليس ذا معنى)</li>\n<li><code>temp</code> (ليس وصفيًا)</li>\n<li><code>2026-06-27-note</code> (التاريخ لا يساعد الاستدعاء)</li>\n</ul>\n<h3>اصطلاحات تسمية المفاتيح</h3>\n<ul>\n<li><code>snake_case</code> (أحرف صغيرة مع شرطات سفلية)</li>\n<li>بادئة بالفئة: <code>preference_*</code>، <code>project_*</code>، <code>mistake_*</code></li>\n<li>استخدم أسماء وصفية، لا أفعالًا</li>\n<li>أبقِها أقل من 50 حرفًا</li>\n</ul>\n<h2>الوسوم: للبحث والتصفية</h2>\n<p>تُمكّن الوسوم التصفية والبحث السريع. أضف 2-5 وسوم لكل ذاكرة:</p>\n<pre><code class=\"hljs language-json\"><span class=\"hljs-punctuation\">{</span>\n  <span class=\"hljs-attr\">&quot;category&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;project&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;key&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;project_synapse_status&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;content&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;Synapse v1.5.0 deployed. Next: v1.6.0 with docs system.&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;tags&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-punctuation\">[</span><span class=\"hljs-string\">&quot;synapse&quot;</span><span class=\"hljs-punctuation\">,</span> <span class=\"hljs-string\">&quot;deployment&quot;</span><span class=\"hljs-punctuation\">,</span> <span class=\"hljs-string\">&quot;status&quot;</span><span class=\"hljs-punctuation\">,</span> <span class=\"hljs-string\">&quot;v1.5.0&quot;</span><span class=\"hljs-punctuation\">]</span>\n<span class=\"hljs-punctuation\">}</span></code></pre><h3>أنماط الوسوم</h3>\n<ul>\n<li><strong>أسماء المشاريع</strong>: <code>synapse</code>، <code>synapse-mcp</code>، <code>synapse-chat</code></li>\n<li><strong>المواضيع</strong>: <code>deployment</code>، <code>ci</code>، <code>database</code>، <code>auth</code></li>\n<li><strong>الحالة</strong>: <code>active</code>، <code>completed</code>، <code>blocked</code></li>\n<li><strong>مؤشرات الأولوية</strong>: <code>urgent</code>، <code>long-term</code></li>\n</ul>\n<div class=\"callout callout-note\">الوسوم غير حساسة لحالة الأحرف. استخدم أحرفًا صغيرة للاتساق.</div><h2>الأولويات: كن واقعيًا</h2>\n<table>\n<thead>\n<tr>\n<th>الأولوية</th>\n<th>استخدم لـ</th>\n<th>% من الذكريات</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>critical</code></td>\n<td>هوية المستخدم، المعلومات القانونية، القرارات غير القابلة للتراجع</td>\n<td>~5%</td>\n</tr>\n<tr>\n<td><code>high</code></td>\n<td>المشاريع النشطة، التفضيلات المهمة</td>\n<td>~20%</td>\n</tr>\n<tr>\n<td><code>normal</code></td>\n<td>معظم الحقائق، الملاحظات، السياق</td>\n<td>~65%</td>\n</tr>\n<tr>\n<td><code>low</code></td>\n<td>عابرة، جيد معرفتها</td>\n<td>~10%</td>\n</tr>\n</tbody></table>\n<div class=\"callout callout-warn\">لا تعلّم كل شيء `critical`. إذا كان كل شيء حرجًا، فلا شيء كذلك.\nاحجز `critical` للأشياء التي تسبب ضررًا حقيقيًا إذا نُسيت.</div><h2>متى تخزّن ومتى لا تخزّن</h2>\n<h3>خزّن دائمًا</h3>\n<ul>\n<li>هوية المستخدم (الاسم، البريد، الدور)</li>\n<li>التفضيلات طويلة الأمد</li>\n<li>قرارات المشروع والمبررات</li>\n<li>الأخطاء السابقة والدروس المستفادة</li>\n<li>الالتزامات المقطوعة للمستخدم</li>\n</ul>\n<h3>لا تخزّن</h3>\n<ul>\n<li>الحالة العابرة (استخدم المتغيرات بدلًا من ذلك)</li>\n<li>سجل المحادثة الحرفي (نظام الدردشة يتولى هذا)</li>\n<li>البيانات الحساسة (كلمات المرور، مفاتيح API)</li>\n<li>الحقائق المشتقة بسهولة (التاريخ الحالي، محتويات الملفات)</li>\n<li>السياق العابر (استخدم فئة <code>context</code> بأولوية منخفضة)</li>\n</ul>\n<h2>تحديث الذكريات</h2>\n<p>استدعِ <code>POST /memory</code> بنفس <code>category</code> + <code>key</code> يُحدّث الذاكرة الموجودة:</p>\n<pre><code class=\"hljs language-python\"><span class=\"hljs-comment\"># التخزين الأول</span>\nstore(<span class=\"hljs-string\">&quot;project&quot;</span>, <span class=\"hljs-string\">&quot;project_synapse_status&quot;</span>, <span class=\"hljs-string\">&quot;v1.4.0 deployed&quot;</span>, priority=<span class=\"hljs-string\">&quot;high&quot;</span>)\n\n<span class=\"hljs-comment\"># لاحقًا: التحديث بنفس المفتاح</span>\nstore(<span class=\"hljs-string\">&quot;project&quot;</span>, <span class=\"hljs-string\">&quot;project_synapse_status&quot;</span>, <span class=\"hljs-string\">&quot;v1.5.0 deployed. CI green.&quot;</span>, priority=<span class=\"hljs-string\">&quot;high&quot;</span>)</code></pre><div class=\"callout callout-ok\">استخدم مفاتيح ثابتة حتى تُحدّث دون إنشاء مكررات. على الـ LLM\nإعادة POST لنفس المفتاح مع تغير المعلومات، لا إنشاء ذكريات جديدة.</div><h2>دورة حياة الذاكرة</h2>\n<pre><code class=\"hljs language-plaintext\">Create → Active → Stale → Archive → Delete</code></pre><ul>\n<li><strong>Create</strong>: POST /memory بسياق كامل</li>\n<li><strong>Active</strong>: استدعِ كثيرًا، حدّث حسب الحاجة</li>\n<li><strong>Stale</strong>: ما زال ذا صلة لكن غير مستخدم بنشاط (أولوية أقل؟)</li>\n<li><strong>Archive</strong>: عيّن الأولوية إلى <code>low</code>، أبقِ للمرجع التاريخي</li>\n<li><strong>Delete</strong>: DELETE /memory/:id عندما لا يعود ذا صلة</li>\n</ul>\n<h3>تنظيف دوري</h3>\n<pre><code class=\"hljs language-python\"><span class=\"hljs-comment\"># إيجاد الذكريات غير المُحدّثة منذ 90 يومًا</span>\nold_memories = requests.get(\n    <span class=\"hljs-string\">f&quot;<span class=\"hljs-subst\">{URL}</span>/memory/search?q=*&quot;</span>,\n    headers={<span class=\"hljs-string\">&quot;Authorization&quot;</span>: <span class=\"hljs-string\">f&quot;Bearer <span class=\"hljs-subst\">{KEY}</span>&quot;</span>}\n)\n\n<span class=\"hljs-keyword\">for</span> mem <span class=\"hljs-keyword\">in</span> old_memories[<span class=\"hljs-string\">&quot;results&quot;</span>]:\n    <span class=\"hljs-keyword\">if</span> is_stale(mem, days=<span class=\"hljs-number\">90</span>):\n        <span class=\"hljs-comment\"># إما حذف أو خفض الأولوية</span>\n        <span class=\"hljs-keyword\">if</span> is_obsolete(mem):\n            delete_memory(mem[<span class=\"hljs-string\">&quot;id&quot;</span>])\n        <span class=\"hljs-keyword\">else</span>:\n            update_memory(mem[<span class=\"hljs-string\">&quot;id&quot;</span>], priority=<span class=\"hljs-string\">&quot;low&quot;</span>)</code></pre><h2>نمط: وراثة الذاكرة</h2>\n<p>للسياق الهرمي (مشروع → مشروع فرعي → مهمة):</p>\n<pre><code class=\"hljs language-python\"><span class=\"hljs-comment\"># المشروع الأب</span>\nstore(<span class=\"hljs-string\">&quot;project&quot;</span>, <span class=\"hljs-string\">&quot;project_synapse&quot;</span>, <span class=\"hljs-string\">&quot;Main Synapse project&quot;</span>, \n      tags=[<span class=\"hljs-string\">&quot;synapse&quot;</span>, <span class=\"hljs-string\">&quot;parent&quot;</span>], priority=<span class=\"hljs-string\">&quot;high&quot;</span>)\n\n<span class=\"hljs-comment\"># مشروع فرعي (الوسوم تربط بالأب)</span>\nstore(<span class=\"hljs-string\">&quot;project&quot;</span>, <span class=\"hljs-string\">&quot;project_synapse_docs&quot;</span>, <span class=\"hljs-string\">&quot;Docs system for Synapse&quot;</span>,\n      tags=[<span class=\"hljs-string\">&quot;synapse&quot;</span>, <span class=\"hljs-string\">&quot;docs&quot;</span>, <span class=\"hljs-string\">&quot;synapse-parent&quot;</span>], priority=<span class=\"hljs-string\">&quot;high&quot;</span>)\n\n<span class=\"hljs-comment\"># مهمة محددة (الوسوم تربط بالمشروع الفرعي)</span>\nstore(<span class=\"hljs-string\">&quot;project&quot;</span>, <span class=\"hljs-string\">&quot;task_docs_loader&quot;</span>, <span class=\"hljs-string\">&quot;Implement docs-loader.ts&quot;</span>,\n      tags=[<span class=\"hljs-string\">&quot;synapse&quot;</span>, <span class=\"hljs-string\">&quot;docs&quot;</span>, <span class=\"hljs-string\">&quot;task&quot;</span>], priority=<span class=\"hljs-string\">&quot;normal&quot;</span>)</code></pre><p>يستطيع الـ LLM حينها البحث <code>q=synapse+docs</code> لإيجاد جميع الذكريات ذات الصلة.</p>\n<h2>نمط: سجل القرارات</h2>\n<p>خزّن القرارات مع المبررات حتى لا يعيد الـ LLM مناقشتها:</p>\n<pre><code class=\"hljs language-python\">store(<span class=\"hljs-string\">&quot;fact&quot;</span>, <span class=\"hljs-string\">&quot;decision_postgres_over_sqlite&quot;</span>,\n      <span class=\"hljs-string\">&quot;Chose PostgreSQL over SQLite for production. Reason: concurrent writes, &quot;</span>\n      <span class=\"hljs-string\">&quot;FTS5 native support, better backup story. Date: 2026-06-15. Decided by: Michael.&quot;</span>,\n      tags=[<span class=\"hljs-string\">&quot;decision&quot;</span>, <span class=\"hljs-string\">&quot;database&quot;</span>, <span class=\"hljs-string\">&quot;postgres&quot;</span>, <span class=\"hljs-string\">&quot;sqlite&quot;</span>],\n      priority=<span class=\"hljs-string\">&quot;high&quot;</span>)</code></pre><h2>نمط: تجنب الأخطاء</h2>\n<p>خزّن الأخطاء مع تعليمات تجنب محددة:</p>\n<pre><code class=\"hljs language-python\">store(<span class=\"hljs-string\">&quot;mistake&quot;</span>, <span class=\"hljs-string\">&quot;mistake_forget_version_bump&quot;</span>,\n      <span class=\"hljs-string\">&quot;Forgot to bump package.json version after changes. npm publish failed. &quot;</span>\n      <span class=\"hljs-string\">&quot;FIX: Always run `npm version patch` before pushing. &quot;</span>\n      <span class=\"hljs-string\">&quot;CI fails with &#x27;version already exists&#x27; if you forget.&quot;</span>,\n      tags=[<span class=\"hljs-string\">&quot;npm&quot;</span>, <span class=\"hljs-string\">&quot;ci&quot;</span>, <span class=\"hljs-string\">&quot;publish&quot;</span>, <span class=\"hljs-string\">&quot;version&quot;</span>],\n      priority=<span class=\"hljs-string\">&quot;high&quot;</span>)</code></pre><h2>أنماط مضادة يجب تجنبها</h2>\n<div class=\"callout callout-warn\"></div><h2>الخطوات التالية</h2>\n<ul>\n<li><a href=\"/docs/api/memory\">Memory API</a></li>\n<li><a href=\"/docs/guides/persistent-llm-agent\">وكيل LLM الدائم</a></li>\n<li><a href=\"/docs/llm-cookbook/memory-tagging-strategy\">استراتيجية وسوم الذاكرة</a></li>\n</ul>\n","urls":{"html":"/docs/guides/memory-best-practices","text":"/docs/guides/memory-best-practices?format=text","json":"/docs/guides/memory-best-practices?format=json","llm":"/docs/guides/memory-best-practices?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}