عميل ذكاء اصطناعي ضيّق التخصص في مواجهة الأداة الشاملة: كيف خفّضنا زمن استجابة الإجابة من 17 إلى 7.7 ثانية
استبدال ملف أدوات شامل بإضافة مُتخصّصة ضيّقة، مع تعطيل فحوصات البيئة وخطوة تفكير زائدة، ضغط البادئة النظامية من 15,266 إلى 1,424 رمزاً (أي بمعامل 10.7) وسرّع الإجابة من 17 إلى 7.7 ثانية. جميع الحسابات التي يميل فيها نموذج اللغة إلى الخطأ أو الانقياد لإقناع المستخدم — سلاسل أيام التعلّم، منح نقاط الخبرة، جدول تقييم الدرجات، وشرعية حركات الشطرنج — تُنقل إلى إضافة بايثون حتمية (deterministic) فوق قاعدة SQLite. استقرار تقدّم المستخدم يتطلّب تطبيعاً صريحاً لمعرّف الجلسة، وإلا فإن تدوير المفتاح الخدمي عند إعادة تشغيل البوّابة يُصفّر سجل الطالب بصمت.

- انخفاض زمن استجابة الإجابة: تراجع الوسيط من ~17 ثانية (13.3–20.6 ثانية) إلى 7.7 ثانية (7.25–7.93 ثانية)
- ضغط بادئة الإدخال: من 15,266 إلى 1,424 رمزاً لكل طلب (توفير بمعامل 10.7 دون تغيير منطق العمل)
- حجم النواة الحتمية: 766 سطراً من إضافة بايثون للتحفيز (gamification) فوق SQLite و342 سطراً من مُدقّق التدوين
- السقف العملي لملف الشخصية: نحو 20,000 بايت لملف `SOUL.md` دون أن يفقد النموذج انتباهه لمنتصف التعليمات
أول إغراء عند بناء عميل ذكاء اصطناعي هو منحه الوصول إلى كل شيء دفعة واحدة: الطرفية (terminal)، المتصفح، البحث على الويب، الملفات، وخوادم MCP. جاء الرادع عبر مدرّب شطرنج للأطفال، تمّ تشغيله عبر نقطة نهاية محلية `/v1/chat/completions`. كان الطفل يحرّك قطعة على رقعة الشطرنج، فيصل تعليق المدرّب بعد 17 ثانية — عندما يكون اللاعب الصغير قد نفّذ نقلتين إضافيتين بالفعل.
كشف التحليل أن نحو 14,000 رمز من إجمالي 15,266 رمزاً من بادئة الإدخال كانت تشغلها مخططات JSON للأدوات التي لم تُستدعَ ولا مرة واحدة خلال مباراة الشطرنج، بالإضافة إلى جمع تلقائي لمعلومات نظام التشغيل عند بدء التشغيل. والأهم من ذلك، أن العميل المزوَّد بصلاحية `execute_code` كان يبدأ، عند أدنى صعوبة، بكتابة وتشغيل سكريبتات داخل بيئة معزولة (sandbox)، محوّلاً نقلة واحدة إلى عشرين استدعاءً لواجهة برمجية (API).
كيف تضغط ثلاثة أسطر في الإعدادات الموجّه (prompt) بمعامل 10.7 وتُزيل
زمن التأخير؟
لتحويل العامل الشامل المتأمّل إلى خدمة سريعة، لم يكن لازماً إعادة كتابة كود الإضافة. قيّدنا ثلاثة معاملات في إعدادات بيئة التشغيل (runtime):
1. تركنا لمنصة `api_server` مجموعة أدوات واحدة فقط خاصة بالمجال (`[chess]`)، مع إزالة أدوات الملفات والصدفة (shell). 2. عطّلنا `environment_probe`، الذي كان يستعلم عن المضيف (host) عند كل بدء تشغيل ويُدرج لقطة عن البيئة في الموجّه النظامي. 3. ضبطنا `reasoning_effort: none` — فبما أن الحقائق التكتيكية محسوبة مسبقاً بواسطة محرك Stockfish، لا يحتاج النموذج إلى بناء سلسلة تفكير قبل الإجابة، بل مهمته هي الإعلان الحيّ عن الحكم الجاهز.
في القياسات الضابطة بذاكرة تخزين مؤقت (cache) مُسخَّنة، انتقل زمن الاستجابة من `13.3 / 17.3 / 20.6 ثانية` إلى `7.25 / 7.74 / 7.93 ثانية` (الوسيط 7.7 ثانية)، كما انخفض استهلاك رموز الإدخال بمعامل 10.7 — من 15,266 إلى 1,424. تقليص مجموعة الأدوات يوفّر الرموز ويحمي النظام من التصرّف الحر في الطرفية، أما تعطيل خطوة التفكير الزائدة فهو مصدر المكسب الأساسي بالثواني. تفصيل مهم: ملفات أدوات المراسلة والمُجدوِل (`cron`) تُحدَّد بشكل منفصل — فإذا نسي أحد إدراج الإضافة في قسم `cron`، فإن الرسالة الصباحية ستبدأ بصمت في البحث عن البيانات عبر قراءة الملفات.
كيف نقسم الشخصية إلى طبقتين وننقل حساب سلاسل الأيام إلى SQLite؟
تُصمَّم شخصية العميل الضيّق التخصص على مستويين: كتلة محفّزة قصيرة في `config.yaml` (من 10 إلى 15 سطراً) تحدّد التوجيه (`tutor_state` في بداية المحادثة، و`tutor_record_lesson` بعد التمرين)، أما قواعد النغمة والمنهج التربوي فتعيش في ملف `SOUL.md`. السقف العملي لهذا الملف هو نحو 20,000 بايت (6.7–19.9 كيلوبايت في روبوتاتي): إذا تضخّم أكثر من ذلك، يفقد النموذج القواعد الموجودة في المنتصف.
يُحسن نموذج اللغة تمثيل المشاعر، لكنه لا يُحسن حساب التواريخ ونقاط الخبرة والدرجات وفق جداول التقييم. في المدرّس اللغوي، تُنقَل كل حسابات التحفيز (10 مستويات من 0 إلى 8000 نقطة خبرة، وعتبات سلاسل من 3 إلى 365 يوماً، و15 شارة وكريستالات) إلى إضافة بايثون من 766 سطراً فوق SQLite:
```python if last_date == today: streak = max(1, prev_streak) elif last_date == yesterday or not last_date: streak = (prev_streak + 1) if last_date == yesterday else 1 else: gap_days = (parse_date(today) - parse_date(last_date)).days if freezes > 0 and gap_days == 2: freezes -= 1 streak = prev_streak + 1 events.append({"type": "freeze_used", "msg": "Заморозка спасла серию дней!"}) else: if prev_streak > 1: events.append({"type": "streak_reset", "old": prev_streak}) streak = 1 ```
تُرجع الأداة مصفوفة `events`، وحقل `description` في مخطط JSON للدالة نفسها يحتوي على توجيه صريح: تهنئة الطالب بحماسة عاطفية على كل حدث من `events`، وعدم ابتكار أي شيء من عنده بخصوص الرصيد. وبالمثل، في محاكي مفاوضات الشراء، يتحقق جدول تقييم من 4 وحدات على مقياس من 40 نقطة من مؤشرات دلالية (المخاطر، تدقيق الحقائق، التفاوض) بواسطة الكود، حتى لا يتمكّن المشارك من «إقناع» الشبكة العصبية برفع الدرجة.
لماذا كان التقدّم يُصفَّر بصمت بعد إعادة التشغيل، وكيف نُصلح المنظومة البرمجية؟
في الإصدارات الأولى، كان المحرك يُمرّر إلى معالج الأداة معاملاً `task_id` يساوي معرّف الجلسة الحالية، وكنت أستخدمه كمفتاح أساسي للطالب. وعند الضغط على `/new` أو إعادة تشغيل الحاوية (container)، كان يُولَّد `task_id` جديد، فيرى المستخدم صفحة فارغة عوضاً عن 30 يوماً من التعلّم. تم حل المشكلة بواسطة مُحلّل مفاتيح ثنائي المستوى، يستخرج بتعبير نمطي (regex) معرّف الحساب الدائم من `telegram:dm:<user_id>` أو يتحقّق منه مقابل `sessions.json`، مما يضمن مفتاحاً مستقراً بصيغة `tg:<id>`.
لتجنّب إعادة بناء صورة (image) بحجم غيغابايت لأجل كل مكتبة جديدة، يقوم النشر (deployment) بتثبيت الحزم عبر `pip install --target` في وحدة التخزين `data/pylibs`، ويطبّق `chown -R` لمستخدم غير جذري (non-root)، وينظّف مجلدات `__pycache__`. وفي المواضع التي لم تكن فيها طبقة النقل الأساسية تحتوي على لوحة المفاتيح السفلية أو كانت تبتلع أمر `/start`، تتولّى تصحيحات ذاتية الإصلاح من `bootstrap.sh` عند بدء التشغيل التحقق من المراسي (anchors) في كود المحوّل، وإدراج الكتلة المفقودة، والتحقق من الملف عبر `py_compile`.
هذا النمط — «الإضافة الحتمية تحسب، والنموذج الضيّق يمثّل الدور» — مدمج في أساس [Nomad AI](https://nomadnet.ai) وبيئة السحابة [agent.nomadnet.ai](https://agent.nomadnet.ai). وتتوفّر مختبرات لبناء عملاء من هذا النوع في [Hamidun Academy](https://academy.hamidun.com) (72 ساعة تجربة مجانية)، كما نستعرض الإضافات الجاهزة وأكثر من 370 مهارة في [Vibe Club](https://hamidun.com/club).
- 28 أكتوبر 2026Anthropic تكشف كيف تبني Claude بواسطة Claude: الدماغ منفصل عن الأيدي
- 28 أكتوبر 2026Bayer تطلق محركًا متعدد الوكلاء على AgentCore: 80% من الأسئلة دون مهندسين
- 28 أكتوبر 2026Liquid AI تطلق LFM2.5-24B-A2B: وكيل ذكي بمعاملات نشطة لا تتجاوز 2B
- 28 أكتوبر 2026NVIDIA تطلق Nemotron 3.5 Super VL بحجم 120B ونماذج Bolt للوكلاء المحليين
أسئلة وأجوبة حول الخبر
كيف تضغط ثلاثة أسطر في الإعدادات الموجّه (prompt) بمعامل 10.7 وتُزيل زمن التأخير؟
لتحويل العامل الشامل المتأمّل إلى خدمة سريعة، لم يكن لازماً إعادة كتابة كود الإضافة. قيّدنا ثلاثة معاملات في إعدادات بيئة التشغيل (runtime): 1. تركنا لمنصة `api_server` مجموعة أدوات واحدة فقط خاصة بالمجال (`[chess]`)، مع إزالة أدوات الملفات والصدفة (shell). 2. عطّلنا `environment_probe`، الذي كان يستعلم عن المضيف (host) عند كل بدء تشغيل ويُدرج لقطة عن البيئة في الموجّه النظامي. 3. ضبطنا `reasoning_effort: none` — فبما أن الحقائق التكتيكية محسوبة مسبقاً بواسطة محرك Stockfish، لا يحتاج النموذج إلى بناء سلسلة تفكير قبل الإجابة، بل مهمته هي الإعلان الحيّ عن الحكم الجاهز. في الق
كيف نقسم الشخصية إلى طبقتين وننقل حساب سلاسل الأيام إلى SQLite؟
تُصمَّم شخصية العميل الضيّق التخصص على مستويين: كتلة محفّزة قصيرة في `config.yaml` (من 10 إلى 15 سطراً) تحدّد التوجيه (`tutor_state` في بداية المحادثة، و`tutor_record_lesson` بعد التمرين)، أما قواعد النغمة والمنهج التربوي فتعيش في ملف `SOUL.md`. السقف العملي لهذا الملف هو نحو 20,000 بايت (6.7–19.9 كيلوبايت في روبوتاتي): إذا تضخّم أكثر من ذلك، يفقد النموذج القواعد الموجودة في المنتصف. يُحسن نموذج اللغة تمثيل المشاعر، لكنه لا يُحسن حساب التواريخ ونقاط الخبرة والدرجات وفق جداول التقييم. في المدرّس اللغوي، تُنقَل كل حسابات التحفيز (10 مستويات من 0 إلى 8000 نقطة خبرة، وعتبات سلا
لماذا كان التقدّم يُصفَّر بصمت بعد إعادة التشغيل، وكيف نُصلح المنظومة البرمجية؟
في الإصدارات الأولى، كان المحرك يُمرّر إلى معالج الأداة معاملاً `task_id` يساوي معرّف الجلسة الحالية، وكنت أستخدمه كمفتاح أساسي للطالب. وعند الضغط على `/new` أو إعادة تشغيل الحاوية (container)، كان يُولَّد `task_id` جديد، فيرى المستخدم صفحة فارغة عوضاً عن 30 يوماً من التعلّم. تم حل المشكلة بواسطة مُحلّل مفاتيح ثنائي المستوى، يستخرج بتعبير نمطي (regex) معرّف الحساب الدائم من `telegram:dm:<user_id>` أو يتحقّق منه مقابل `sessions.json`، مما يضمن مفتاحاً مستقراً بصيغة `tg:<id>`. لتجنّب إعادة بناء صورة (image) بحجم غيغابايت لأجل كل مكتبة جديدة، يقوم النشر (deployment) بتثبيت الح
Test Frontier LLMs & Autonomous Agents in One Workspace
Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.
أهم ما في عالم الذكاء الاصطناعي — مرة كل أسبوع
سبع قصص مهمة فعلاً هذا الأسبوع، مختارة بعناية. بلا ضجيج ولا بيانات صحفية.
تم! تحقق من بريدك للتأكيد.