{"title":"بناء وكيل LLM دائم","slug":"persistent-llm-agent","category":"guides","summary":"دليل خطوة بخطوة لبناء وكيل LLM يتذكر عبر الجلسات باستخدام Synapse.","audience":["human","llm"],"tags":["guide","agent","persistence","architecture"],"difficulty":"intermediate","updated":"2026-06-27","word_count":199,"read_minutes":1,"lang":"ar","translated":true,"requested_lang":"ar","content_markdown":"\n# نظرة عامة\n\nيأخذك هذا الدليل خلال بناء وكيل LLM يحفظ السياق عبر\nالجلسات باستخدام Synapse. بنهايته، سيكون وكيلك:\n\n- يستدعي السياق السابق عند بدء الجلسة\n- يخزّن التعلمات الجديدة عندما تحدث\n- يتتبع المهام متعددة الخطوات عبر الجلسات\n- يتواصل مع البشر عبر الدردشة غير المتزامنة\n\n## البنية\n\n```text\n┌──────────────┐   recall/store   ┌──────────┐\n│  LLM Agent   │ ◀──────────────▶ │ Synapse  │\n│ (your code)  │                  │   API    │\n└──────────────┘                  └──────────┘\n       │\n       │ poll/reply\n       ▼\n┌──────────────┐\n│    Human     │ (browser or chat UI)\n└──────────────┘\n```\n\n## الخطوة 1: إعداد Mind Key\n\n```bash\n# سجّل واحصل على JWT\nJWT=$(curl -s -X POST https://synapse.schaefer.zone/register \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"email\":\"agent@example.com\",\"password\":\"secret\"}' | jq -r .jwt)\n\n# أنشئ عقلًا واحصل على Mind Key\nMIND_KEY=$(curl -s -X POST https://synapse.schaefer.zone/minds \\\n  -H \"Authorization: Bearer $JWT\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\":\"persistent-agent\",\"description\":\"My persistent agent\"}' | jq -r .mind_key)\n\necho \"Save this: $MIND_KEY\"\n```\n\n## الخطوة 2: بروتوكول بدء الجلسة\n\nفي بداية كل جلسة، استدعِ جميع الذكريات:\n\n```python\nimport os\nimport requests\n\nMIND_KEY = os.environ[\"SYNAPSE_MIND_KEY\"]\nURL = \"https://synapse.schaefer.zone\"\n\ndef session_start():\n    \"\"\"Call this at the start of every session.\"\"\"\n    # 1. استدعِ جميع الذكريات\n    r = requests.get(\n        f\"{URL}/memory/recall\",\n        headers={\"Authorization\": f\"Bearer {MIND_KEY}\"}\n    )\n    memories = r.text  # ملخص نصي عادي\n    \n    # 2. تحقق من رسائل الدردشة غير المقروءة\n    r = requests.get(\n        f\"{URL}/chat/poll\",\n        headers={\"Authorization\": f\"Bearer {MIND_KEY}\"}\n    )\n    messages = r.json().get(\"messages\", [])\n    \n    # 3. تحقق من المهام قيد التقدم\n    r = requests.get(\n        f\"{URL}/mind/tasks?status=in_progress\",\n        headers={\"Authorization\": f\"Bearer {MIND_KEY}\"}\n    )\n    tasks = r.json().get(\"tasks\", [])\n    \n    return {\n        \"memories\": memories,\n        \"unread_messages\": messages,\n        \"active_tasks\": tasks,\n    }\n\ncontext = session_start()\n# ابنِ system prompt بهذا السياق\n```\n\n## الخطوة 3: تخزين التعلمات الجديدة\n\nكلما تعلّم الوكيل شيئًا يستحق التذكر:\n\n```python\ndef remember(category, key, content, tags=None, priority=\"normal\"):\n    \"\"\"Store a memory.\"\"\"\n    requests.post(\n        f\"{URL}/memory\",\n        headers={\n            \"Authorization\": f\"Bearer {MIND_KEY}\",\n            \"Content-Type\": \"application/json\",\n        },\n        json={\n            \"category\": category,\n            \"key\": key,\n            \"content\": content,\n            \"tags\": tags or [],\n            \"priority\": priority,\n        }\n    )\n\n# أمثلة\nremember(\"identity\", \"user_name\", \"User is Michael Schäfer\", \n         tags=[\"person\"], priority=\"critical\")\nremember(\"preference\", \"communication_style\", \n         \"User prefers concise technical responses\",\n         tags=[\"communication\"])\nremember(\"project\", \"current_project\", \n         \"Building Synapse v1.6.0 with docs system\",\n         tags=[\"synapse\", \"docs\"], priority=\"high\")\nremember(\"mistake\", \"npm_version_bump\", \n         \"Always bump package.json version after changes\",\n         tags=[\"npm\", \"ci\"], priority=\"high\")\n```\n\n## الخطوة 4: إدارة المهام\n\nتتبع العمل متعدد الخطوات عبر الجلسات:\n\n```python\ndef create_task(title, description=\"\", priority=\"normal\"):\n    r = requests.post(\n        f\"{URL}/mind/task\",\n        headers={\"Authorization\": f\"Bearer {MIND_KEY}\",\n                 \"Content-Type\": \"application/json\"},\n        json={\"title\": title, \"description\": description, \"priority\": priority}\n    )\n    return r.json()[\"id\"]\n\ndef update_task(task_id, status=None, description=None):\n    payload = {}\n    if status: payload[\"status\"] = status\n    if description: payload[\"description\"] = description\n    requests.put(\n        f\"{URL}/mind/task/{task_id}\",\n        headers={\"Authorization\": f\"Bearer {MIND_KEY}\",\n                 \"Content-Type\": \"application/json\"},\n        json=payload\n    )\n\n# سير عمل متعدد الجلسات\ntask_id = create_task(\"Deploy v1.6.0\", \"Push docs system to production\", \"high\")\nupdate_task(task_id, status=\"in_progress\")\n# ... عمل عبر عدة جلسات ...\nupdate_task(task_id, status=\"done\")\n```\n\n## الخطوة 5: دردشة غير متزامنة مع البشر\n\nاستطلع للرسائل بين استدعاءات الأدوات:\n\n```python\nimport time\n\ndef poll_messages():\n    r = requests.get(\n        f\"{URL}/chat/poll\",\n        headers={\"Authorization\": f\"Bearer {MIND_KEY}\"}\n    )\n    return r.json().get(\"messages\", [])\n\ndef reply(content):\n    requests.post(\n        f\"{URL}/chat/reply\",\n        headers={\"Authorization\": f\"Bearer {MIND_KEY}\",\n                 \"Content-Type\": \"application/json\"},\n        json={\"content\": content}\n    )\n\n# الحلقة الرئيسية\nwhile working:\n    # استطلع لرسائل الإنسان\n    for msg in poll_messages():\n        print(f\"Human: {msg['content']}\")\n        reply(f\"Got it: {msg['content']}. Working on it.\")\n    \n    # نفّذ وحدة عمل واحدة\n    do_work()\n    \n    time.sleep(30)  # لا تستطلع بشكل متكرر جدًا\n```\n\n## الخطوة 6: بروتوكول نهاية الجلسة\n\nعند نهاية الجلسة، خزّن السياق النهائي:\n\n```python\ndef session_end():\n    \"\"\"Call this before terminating the session.\"\"\"\n    # خزّن ما أنجزناه\n    remember(\"context\", \"last_session_summary\",\n             f\"Session ended at {time.now()}. Accomplished: ...\",\n             tags=[\"session\"], priority=\"normal\")\n    \n    # حدّث حالات المهام\n    for task in get_active_tasks():\n        if task_in_progress(task):\n            update_task(task[\"id\"], description=f\"In progress: {current_step}\")\n\nsession_end()\n```\n\n## النمط الكامل\n\n```python\nclass PersistentAgent:\n    def __init__(self):\n        self.mind_key = os.environ[\"SYNAPSE_MIND_KEY\"]\n        self.url = \"https://synapse.schaefer.zone\"\n    \n    def run(self):\n        # 1. استدعِ السياق\n        context = self.session_start()\n        \n        # 2. عالج الرسائل غير المقروءة\n        for msg in context[\"unread_messages\"]:\n            self.handle_message(msg)\n        \n        # 3. استأنف المهام النشطة\n        for task in context[\"active_tasks\"]:\n            self.continue_task(task)\n        \n        # 4. نفّذ عملًا جديدًا\n        self.do_work()\n        \n        # 5. احفظ الحالة\n        self.session_end()\n```\n\n## أفضل الممارسات\n\n> [!TIP]\n>\n> - **استدعِ أولًا دائمًا** — لا تبدأ العمل دون تحميل السياق\n> - **خزّن استباقيًا** — لا تنتظر حتى نهاية الجلسة\n> - **استخدم مفاتيح ذات معنى** — `user_name`، `project_status`، لا `mem_001`\n> - **وسم كل شيء** — الوسوم تُمكّن البحث والتصفية\n> - **عيّن أولويات واقعية** — ليس كل شيء `critical`\n\n## الخطوات التالية\n\n- [كتاب طبخ LLM](/docs/llm-cookbook/session-start-pattern) — أنماط عملية\n- [أفضل ممارسات الذاكرة](/docs/guides/memory-best-practices)\n- [تنسيق الوكلاء المتعددين](/docs/guides/multi-agent-coordination)\n","content_html":"<h1>نظرة عامة</h1>\n<p>يأخذك هذا الدليل خلال بناء وكيل LLM يحفظ السياق عبر\nالجلسات باستخدام Synapse. بنهايته، سيكون وكيلك:</p>\n<ul>\n<li>يستدعي السياق السابق عند بدء الجلسة</li>\n<li>يخزّن التعلمات الجديدة عندما تحدث</li>\n<li>يتتبع المهام متعددة الخطوات عبر الجلسات</li>\n<li>يتواصل مع البشر عبر الدردشة غير المتزامنة</li>\n</ul>\n<h2>البنية</h2>\n<pre><code class=\"hljs language-text\">┌──────────────┐   recall/store   ┌──────────┐\n│  LLM Agent   │ ◀──────────────▶ │ Synapse  │\n│ (your code)  │                  │   API    │\n└──────────────┘                  └──────────┘\n       │\n       │ poll/reply\n       ▼\n┌──────────────┐\n│    Human     │ (browser or chat UI)\n└──────────────┘</code></pre><h2>الخطوة 1: إعداد Mind Key</h2>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># سجّل واحصل على JWT</span>\nJWT=$(curl -s -X POST https://synapse.schaefer.zone/register \\\n  -H <span class=\"hljs-string\">&quot;Content-Type: application/json&quot;</span> \\\n  -d <span class=\"hljs-string\">&#x27;{&quot;email&quot;:&quot;agent@example.com&quot;,&quot;password&quot;:&quot;secret&quot;}&#x27;</span> | jq -r .jwt)\n\n<span class=\"hljs-comment\"># أنشئ عقلًا واحصل على Mind Key</span>\nMIND_KEY=$(curl -s -X POST https://synapse.schaefer.zone/minds \\\n  -H <span class=\"hljs-string\">&quot;Authorization: Bearer <span class=\"hljs-variable\">$JWT</span>&quot;</span> \\\n  -H <span class=\"hljs-string\">&quot;Content-Type: application/json&quot;</span> \\\n  -d <span class=\"hljs-string\">&#x27;{&quot;name&quot;:&quot;persistent-agent&quot;,&quot;description&quot;:&quot;My persistent agent&quot;}&#x27;</span> | jq -r .mind_key)\n\n<span class=\"hljs-built_in\">echo</span> <span class=\"hljs-string\">&quot;Save this: <span class=\"hljs-variable\">$MIND_KEY</span>&quot;</span></code></pre><h2>الخطوة 2: بروتوكول بدء الجلسة</h2>\n<p>في بداية كل جلسة، استدعِ جميع الذكريات:</p>\n<pre><code class=\"hljs language-python\"><span class=\"hljs-keyword\">import</span> os\n<span class=\"hljs-keyword\">import</span> requests\n\nMIND_KEY = os.environ[<span class=\"hljs-string\">&quot;SYNAPSE_MIND_KEY&quot;</span>]\nURL = <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone&quot;</span>\n\n<span class=\"hljs-keyword\">def</span> <span class=\"hljs-title function_\">session_start</span>():\n    <span class=\"hljs-string\">&quot;&quot;&quot;Call this at the start of every session.&quot;&quot;&quot;</span>\n    <span class=\"hljs-comment\"># 1. استدعِ جميع الذكريات</span>\n    r = requests.get(\n        <span class=\"hljs-string\">f&quot;<span class=\"hljs-subst\">{URL}</span>/memory/recall&quot;</span>,\n        headers={<span class=\"hljs-string\">&quot;Authorization&quot;</span>: <span class=\"hljs-string\">f&quot;Bearer <span class=\"hljs-subst\">{MIND_KEY}</span>&quot;</span>}\n    )\n    memories = r.text  <span class=\"hljs-comment\"># ملخص نصي عادي</span>\n    \n    <span class=\"hljs-comment\"># 2. تحقق من رسائل الدردشة غير المقروءة</span>\n    r = requests.get(\n        <span class=\"hljs-string\">f&quot;<span class=\"hljs-subst\">{URL}</span>/chat/poll&quot;</span>,\n        headers={<span class=\"hljs-string\">&quot;Authorization&quot;</span>: <span class=\"hljs-string\">f&quot;Bearer <span class=\"hljs-subst\">{MIND_KEY}</span>&quot;</span>}\n    )\n    messages = r.json().get(<span class=\"hljs-string\">&quot;messages&quot;</span>, [])\n    \n    <span class=\"hljs-comment\"># 3. تحقق من المهام قيد التقدم</span>\n    r = requests.get(\n        <span class=\"hljs-string\">f&quot;<span class=\"hljs-subst\">{URL}</span>/mind/tasks?status=in_progress&quot;</span>,\n        headers={<span class=\"hljs-string\">&quot;Authorization&quot;</span>: <span class=\"hljs-string\">f&quot;Bearer <span class=\"hljs-subst\">{MIND_KEY}</span>&quot;</span>}\n    )\n    tasks = r.json().get(<span class=\"hljs-string\">&quot;tasks&quot;</span>, [])\n    \n    <span class=\"hljs-keyword\">return</span> {\n        <span class=\"hljs-string\">&quot;memories&quot;</span>: memories,\n        <span class=\"hljs-string\">&quot;unread_messages&quot;</span>: messages,\n        <span class=\"hljs-string\">&quot;active_tasks&quot;</span>: tasks,\n    }\n\ncontext = session_start()\n<span class=\"hljs-comment\"># ابنِ system prompt بهذا السياق</span></code></pre><h2>الخطوة 3: تخزين التعلمات الجديدة</h2>\n<p>كلما تعلّم الوكيل شيئًا يستحق التذكر:</p>\n<pre><code class=\"hljs language-python\"><span class=\"hljs-keyword\">def</span> <span class=\"hljs-title function_\">remember</span>(<span class=\"hljs-params\">category, key, content, tags=<span class=\"hljs-literal\">None</span>, priority=<span class=\"hljs-string\">&quot;normal&quot;</span></span>):\n    <span class=\"hljs-string\">&quot;&quot;&quot;Store a memory.&quot;&quot;&quot;</span>\n    requests.post(\n        <span class=\"hljs-string\">f&quot;<span class=\"hljs-subst\">{URL}</span>/memory&quot;</span>,\n        headers={\n            <span class=\"hljs-string\">&quot;Authorization&quot;</span>: <span class=\"hljs-string\">f&quot;Bearer <span class=\"hljs-subst\">{MIND_KEY}</span>&quot;</span>,\n            <span class=\"hljs-string\">&quot;Content-Type&quot;</span>: <span class=\"hljs-string\">&quot;application/json&quot;</span>,\n        },\n        json={\n            <span class=\"hljs-string\">&quot;category&quot;</span>: category,\n            <span class=\"hljs-string\">&quot;key&quot;</span>: key,\n            <span class=\"hljs-string\">&quot;content&quot;</span>: content,\n            <span class=\"hljs-string\">&quot;tags&quot;</span>: tags <span class=\"hljs-keyword\">or</span> [],\n            <span class=\"hljs-string\">&quot;priority&quot;</span>: priority,\n        }\n    )\n\n<span class=\"hljs-comment\"># أمثلة</span>\nremember(<span class=\"hljs-string\">&quot;identity&quot;</span>, <span class=\"hljs-string\">&quot;user_name&quot;</span>, <span class=\"hljs-string\">&quot;User is Michael Schäfer&quot;</span>, \n         tags=[<span class=\"hljs-string\">&quot;person&quot;</span>], priority=<span class=\"hljs-string\">&quot;critical&quot;</span>)\nremember(<span class=\"hljs-string\">&quot;preference&quot;</span>, <span class=\"hljs-string\">&quot;communication_style&quot;</span>, \n         <span class=\"hljs-string\">&quot;User prefers concise technical responses&quot;</span>,\n         tags=[<span class=\"hljs-string\">&quot;communication&quot;</span>])\nremember(<span class=\"hljs-string\">&quot;project&quot;</span>, <span class=\"hljs-string\">&quot;current_project&quot;</span>, \n         <span class=\"hljs-string\">&quot;Building Synapse v1.6.0 with docs system&quot;</span>,\n         tags=[<span class=\"hljs-string\">&quot;synapse&quot;</span>, <span class=\"hljs-string\">&quot;docs&quot;</span>], priority=<span class=\"hljs-string\">&quot;high&quot;</span>)\nremember(<span class=\"hljs-string\">&quot;mistake&quot;</span>, <span class=\"hljs-string\">&quot;npm_version_bump&quot;</span>, \n         <span class=\"hljs-string\">&quot;Always bump package.json version after changes&quot;</span>,\n         tags=[<span class=\"hljs-string\">&quot;npm&quot;</span>, <span class=\"hljs-string\">&quot;ci&quot;</span>], priority=<span class=\"hljs-string\">&quot;high&quot;</span>)</code></pre><h2>الخطوة 4: إدارة المهام</h2>\n<p>تتبع العمل متعدد الخطوات عبر الجلسات:</p>\n<pre><code class=\"hljs language-python\"><span class=\"hljs-keyword\">def</span> <span class=\"hljs-title function_\">create_task</span>(<span class=\"hljs-params\">title, description=<span class=\"hljs-string\">&quot;&quot;</span>, priority=<span class=\"hljs-string\">&quot;normal&quot;</span></span>):\n    r = requests.post(\n        <span class=\"hljs-string\">f&quot;<span class=\"hljs-subst\">{URL}</span>/mind/task&quot;</span>,\n        headers={<span class=\"hljs-string\">&quot;Authorization&quot;</span>: <span class=\"hljs-string\">f&quot;Bearer <span class=\"hljs-subst\">{MIND_KEY}</span>&quot;</span>,\n                 <span class=\"hljs-string\">&quot;Content-Type&quot;</span>: <span class=\"hljs-string\">&quot;application/json&quot;</span>},\n        json={<span class=\"hljs-string\">&quot;title&quot;</span>: title, <span class=\"hljs-string\">&quot;description&quot;</span>: description, <span class=\"hljs-string\">&quot;priority&quot;</span>: priority}\n    )\n    <span class=\"hljs-keyword\">return</span> r.json()[<span class=\"hljs-string\">&quot;id&quot;</span>]\n\n<span class=\"hljs-keyword\">def</span> <span class=\"hljs-title function_\">update_task</span>(<span class=\"hljs-params\">task_id, status=<span class=\"hljs-literal\">None</span>, description=<span class=\"hljs-literal\">None</span></span>):\n    payload = {}\n    <span class=\"hljs-keyword\">if</span> status: payload[<span class=\"hljs-string\">&quot;status&quot;</span>] = status\n    <span class=\"hljs-keyword\">if</span> description: payload[<span class=\"hljs-string\">&quot;description&quot;</span>] = description\n    requests.put(\n        <span class=\"hljs-string\">f&quot;<span class=\"hljs-subst\">{URL}</span>/mind/task/<span class=\"hljs-subst\">{task_id}</span>&quot;</span>,\n        headers={<span class=\"hljs-string\">&quot;Authorization&quot;</span>: <span class=\"hljs-string\">f&quot;Bearer <span class=\"hljs-subst\">{MIND_KEY}</span>&quot;</span>,\n                 <span class=\"hljs-string\">&quot;Content-Type&quot;</span>: <span class=\"hljs-string\">&quot;application/json&quot;</span>},\n        json=payload\n    )\n\n<span class=\"hljs-comment\"># سير عمل متعدد الجلسات</span>\ntask_id = create_task(<span class=\"hljs-string\">&quot;Deploy v1.6.0&quot;</span>, <span class=\"hljs-string\">&quot;Push docs system to production&quot;</span>, <span class=\"hljs-string\">&quot;high&quot;</span>)\nupdate_task(task_id, status=<span class=\"hljs-string\">&quot;in_progress&quot;</span>)\n<span class=\"hljs-comment\"># ... عمل عبر عدة جلسات ...</span>\nupdate_task(task_id, status=<span class=\"hljs-string\">&quot;done&quot;</span>)</code></pre><h2>الخطوة 5: دردشة غير متزامنة مع البشر</h2>\n<p>استطلع للرسائل بين استدعاءات الأدوات:</p>\n<pre><code class=\"hljs language-python\"><span class=\"hljs-keyword\">import</span> time\n\n<span class=\"hljs-keyword\">def</span> <span class=\"hljs-title function_\">poll_messages</span>():\n    r = requests.get(\n        <span class=\"hljs-string\">f&quot;<span class=\"hljs-subst\">{URL}</span>/chat/poll&quot;</span>,\n        headers={<span class=\"hljs-string\">&quot;Authorization&quot;</span>: <span class=\"hljs-string\">f&quot;Bearer <span class=\"hljs-subst\">{MIND_KEY}</span>&quot;</span>}\n    )\n    <span class=\"hljs-keyword\">return</span> r.json().get(<span class=\"hljs-string\">&quot;messages&quot;</span>, [])\n\n<span class=\"hljs-keyword\">def</span> <span class=\"hljs-title function_\">reply</span>(<span class=\"hljs-params\">content</span>):\n    requests.post(\n        <span class=\"hljs-string\">f&quot;<span class=\"hljs-subst\">{URL}</span>/chat/reply&quot;</span>,\n        headers={<span class=\"hljs-string\">&quot;Authorization&quot;</span>: <span class=\"hljs-string\">f&quot;Bearer <span class=\"hljs-subst\">{MIND_KEY}</span>&quot;</span>,\n                 <span class=\"hljs-string\">&quot;Content-Type&quot;</span>: <span class=\"hljs-string\">&quot;application/json&quot;</span>},\n        json={<span class=\"hljs-string\">&quot;content&quot;</span>: content}\n    )\n\n<span class=\"hljs-comment\"># الحلقة الرئيسية</span>\n<span class=\"hljs-keyword\">while</span> working:\n    <span class=\"hljs-comment\"># استطلع لرسائل الإنسان</span>\n    <span class=\"hljs-keyword\">for</span> msg <span class=\"hljs-keyword\">in</span> poll_messages():\n        <span class=\"hljs-built_in\">print</span>(<span class=\"hljs-string\">f&quot;Human: <span class=\"hljs-subst\">{msg[<span class=\"hljs-string\">&#x27;content&#x27;</span>]}</span>&quot;</span>)\n        reply(<span class=\"hljs-string\">f&quot;Got it: <span class=\"hljs-subst\">{msg[<span class=\"hljs-string\">&#x27;content&#x27;</span>]}</span>. Working on it.&quot;</span>)\n    \n    <span class=\"hljs-comment\"># نفّذ وحدة عمل واحدة</span>\n    do_work()\n    \n    time.sleep(<span class=\"hljs-number\">30</span>)  <span class=\"hljs-comment\"># لا تستطلع بشكل متكرر جدًا</span></code></pre><h2>الخطوة 6: بروتوكول نهاية الجلسة</h2>\n<p>عند نهاية الجلسة، خزّن السياق النهائي:</p>\n<pre><code class=\"hljs language-python\"><span class=\"hljs-keyword\">def</span> <span class=\"hljs-title function_\">session_end</span>():\n    <span class=\"hljs-string\">&quot;&quot;&quot;Call this before terminating the session.&quot;&quot;&quot;</span>\n    <span class=\"hljs-comment\"># خزّن ما أنجزناه</span>\n    remember(<span class=\"hljs-string\">&quot;context&quot;</span>, <span class=\"hljs-string\">&quot;last_session_summary&quot;</span>,\n             <span class=\"hljs-string\">f&quot;Session ended at <span class=\"hljs-subst\">{time.now()}</span>. Accomplished: ...&quot;</span>,\n             tags=[<span class=\"hljs-string\">&quot;session&quot;</span>], priority=<span class=\"hljs-string\">&quot;normal&quot;</span>)\n    \n    <span class=\"hljs-comment\"># حدّث حالات المهام</span>\n    <span class=\"hljs-keyword\">for</span> task <span class=\"hljs-keyword\">in</span> get_active_tasks():\n        <span class=\"hljs-keyword\">if</span> task_in_progress(task):\n            update_task(task[<span class=\"hljs-string\">&quot;id&quot;</span>], description=<span class=\"hljs-string\">f&quot;In progress: <span class=\"hljs-subst\">{current_step}</span>&quot;</span>)\n\nsession_end()</code></pre><h2>النمط الكامل</h2>\n<pre><code class=\"hljs language-python\"><span class=\"hljs-keyword\">class</span> <span class=\"hljs-title class_\">PersistentAgent</span>:\n    <span class=\"hljs-keyword\">def</span> <span class=\"hljs-title function_\">__init__</span>(<span class=\"hljs-params\">self</span>):\n        <span class=\"hljs-variable language_\">self</span>.mind_key = os.environ[<span class=\"hljs-string\">&quot;SYNAPSE_MIND_KEY&quot;</span>]\n        <span class=\"hljs-variable language_\">self</span>.url = <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone&quot;</span>\n    \n    <span class=\"hljs-keyword\">def</span> <span class=\"hljs-title function_\">run</span>(<span class=\"hljs-params\">self</span>):\n        <span class=\"hljs-comment\"># 1. استدعِ السياق</span>\n        context = <span class=\"hljs-variable language_\">self</span>.session_start()\n        \n        <span class=\"hljs-comment\"># 2. عالج الرسائل غير المقروءة</span>\n        <span class=\"hljs-keyword\">for</span> msg <span class=\"hljs-keyword\">in</span> context[<span class=\"hljs-string\">&quot;unread_messages&quot;</span>]:\n            <span class=\"hljs-variable language_\">self</span>.handle_message(msg)\n        \n        <span class=\"hljs-comment\"># 3. استأنف المهام النشطة</span>\n        <span class=\"hljs-keyword\">for</span> task <span class=\"hljs-keyword\">in</span> context[<span class=\"hljs-string\">&quot;active_tasks&quot;</span>]:\n            <span class=\"hljs-variable language_\">self</span>.continue_task(task)\n        \n        <span class=\"hljs-comment\"># 4. نفّذ عملًا جديدًا</span>\n        <span class=\"hljs-variable language_\">self</span>.do_work()\n        \n        <span class=\"hljs-comment\"># 5. احفظ الحالة</span>\n        <span class=\"hljs-variable language_\">self</span>.session_end()</code></pre><h2>أفضل الممارسات</h2>\n<div class=\"callout callout-ok\"></div><h2>الخطوات التالية</h2>\n<ul>\n<li><a href=\"/docs/llm-cookbook/session-start-pattern\">كتاب طبخ LLM</a> — أنماط عملية</li>\n<li><a href=\"/docs/guides/memory-best-practices\">أفضل ممارسات الذاكرة</a></li>\n<li><a href=\"/docs/guides/multi-agent-coordination\">تنسيق الوكلاء المتعددين</a></li>\n</ul>\n","urls":{"html":"/docs/guides/persistent-llm-agent","text":"/docs/guides/persistent-llm-agent?format=text","json":"/docs/guides/persistent-llm-agent?format=json","llm":"/docs/guides/persistent-llm-agent?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}