بث مباشر 18.11 · الدفعة 318 نوفمبر، 19:00 بتوقيت موسكو — ورشة عملية مجانية لوكلاء الذكاء الاصطناعي · الدفعة 3 تبدأ 23.11ورشة 18 نوفمبر ←الدفعة 3 (23.11)
بنية تحتيةتحليل · على الرادارHabr AI→ المصدر

كيف تشغّل وكيل ذكاء اصطناعي داخل آلة افتراضية وتُبقي النموذج على GPU المضيف: مخطط باستخدام Strata

الوكيل المستقل الذي يملك وصولًا إلى الطرفية أشبه بمتدرّب يحمل صلاحيات المسؤول على نظامك الأساسي. يفصل صاحب المخطط بين النموذج والتنفيذ: يجري الاستدلال على المضيف عبر Strata، بينما يعمل VS Code مع إضافة Cline داخل آلة افتراضية بوضع NAT. يُمرَّر منفذ النموذج عبر netsh، وتذهب كل حركة المرور الخارجية للآلة الافتراضية إلى وكيل SOCKS عبر Proxifier. وإذا كان في الشيفرة الغريبة برنامج سارق بيانات (stealer)، فإنك تستعيد اللقطة (snapshot) خلال خمس ثوانٍ.

معالج بواسطة الذكاء الاصطناعي من Habr AI؛ بتحرير Hamidun News
كيف تشغّل وكيل ذكاء اصطناعي داخل آلة افتراضية وتُبقي النموذج على GPU المضيف: مخطط باستخدام Strata
المصدر: Habr AI. كولاج: Hamidun News.
استمع للمقال
بطاقة الحقائق والأرقام
المعيارالتفاصيل
المصدر الأصليHabr AI ↗
رئيس التحرير
حقيقة رئيسية #1تبقى بطاقة الرسوميات على المضيف ولا حاجة لتمريرها إلى الآلة الافتراضية
حقيقة رئيسية #2تُوضع قاعدة Proxifier الخاصة بالمنفذ 47831 فوق بقية القواعد بإجراء Direct
حقيقة رئيسية #3تُعطَّل المجلدات المشتركة والحافظة المشتركة في الآلة الافتراضية

الوكيل الذي يثبّت الحزم بنفسه ويشغّل السكربتات ويعدّل الملفات يوفّر ساعات من العمل. لكنك في الواقع تمنح متدرّبًا صلاحيات المسؤول على حاسوبك المحمول. هلوسة واحدة في سكربت التنظيف، أو أمر postinstall واحد في مستودع غير معروف، وستشعر بالعواقب على نظامك الأساسي.

الحل البديهي هو الآلة الافتراضية. المشكلة أن تمرير وحدة GPU إليها غالبًا غير ممكن، وأن النموذج المحلي بلا بطاقة رسوميات يعمل ببطء مؤلم. يقترح تحليل منشور على Habr الفصل بين «العقل» و«اليدين».

كيف يُبنى المخطط

هناك ثلاث دوائر.

المضيف مسؤول عن الاستدلال. يعمل عليه تطبيق سطح المكتب Strata الذي يشغّل واجهة API متوافقة مع OpenAI (المنفذ الافتراضي 47831). لا تصل الشيفرة الغريبة إلى هنا ولا تُشغَّل عليه.

الآلة الافتراضية بوضع NAT هي بيئة العزل (sandbox). فيها يُثبَّت VS Code وإضافة Cline، وهنا تُفك الأرشيفات وتُثبَّت الاعتماديات وتُشغَّل السكربتات المشبوهة. وإذا حدث خطأ ما، تُستعاد الآلة الافتراضية من اللقطة خلال نحو خمس ثوانٍ.

بوابة الشبكة تُجبر كل حركة مرور المحاكي (hypervisor) على المضيف على المرور عبر وكيل SOCKS بواسطة Proxifier. وإذا ظهرت في الشيفرة المدروسة بيانات تتبّع (telemetry) أو اتصال عكسي، فلن يخرج إلى الخارج إلا عنوان IP الخاص بالوكيل، لا عنوان الشبكة المنزلية.

مثال بسيط: تريد تحليل مستودع مجهول من GitHub بسرعة. تستنسخه داخل الآلة الافتراضية وتطلب من الوكيل بناء المشروع وتشغيل الاختبارات. يفكّر النموذج على بطاقة الرسوميات في المضيف، بينما يُنفَّذ كل شيء داخل بيئة العزل.

أين تتعطل الأمور

الأمر الأكثر إثارة هنا ليس الفكرة نفسها، بل فخّان في الشبكة.

الأول: خوادم النماذج المحلية (Strata وOllama وLM Studio) تستمع افتراضيًا إلى 127.0.0.1 فقط. ولا تُرى من الآلة الافتراضية حتى عبر البوابة 10.0.2.2. يحل المؤلف ذلك بأداة portproxy المدمجة في Windows. أمر واحد هو netsh interface portproxy يمرّر المنفذ، وقاعدة في جدار الحماية تفتحه. والتحقق بسيط: الأمر curl.exe 10.0.2.2:47831/v1/models من داخل الآلة الافتراضية يجب أن يعيد JSON بقائمة النماذج. ومنه يُؤخذ الحقل id الدقيق الذي ستحتاجه في Cline.

الفخ الثاني غير بديهي. عندما تطرق الآلة الافتراضية العنوان 10.0.2.2، تتم معالجة الحزمة في النهاية بواسطة svchost.exe النظامي. يعترضها Proxifier ويحاول إرسالها إلى عنوان محلي عبر خادم SOCKS بعيد. فيتجمّد الاتصال. ويُعالَج ذلك بقاعدة استثناء: التطبيقات — Any (تحديدًا لأن الحركة تمر عبر svchost)، المضيفون — 10.0.2.2 و127.0.0.1 وlocalhost والشبكات الفرعية المحلية، المنفذ — 47831، الإجراء — Direct. يجب أن تقع القاعدة فوق القاعدة العامة الخاصة بالمحاكي. وبما أن المنفذ محدد بإحكام، يبقى باقي خروج الآلة الافتراضية إلى الإنترنت عبر الوكيل فقط.

إعدادات Cline كالتالي: المزوّد OpenAI Compatible، وعنوان Base URL هو 10.0.2.2:47831/v1، والمفتاح — أي كلمة غير فارغة، وModel ID — الاسم الوارد في رد الخادم. من المنطقي تعطيل النماذج المنفصلة لوضعي Plan وAct لتجنّب تكرار الإعدادات.

ما يجب مراعاته عمليًا

يقوم العزل على الانضباط. تُعطَّل في الآلة الافتراضية المجلدات المشتركة والحافظة ثنائية الاتجاه، وإلا فقدت بيئة العزل معناها. ولا يجوز تسجيل الدخول إلى الحسابات الشخصية ولا الاحتفاظ هناك بمفاتيح ورموز حقيقية: فخاصية Auto-approve في Cline تسمح للوكيل بكل ما هو متاح داخل الآلة.

هناك أيضًا نقطة ضعف لم يتناولها المقال. يستخدم أمر portproxy المعامل listenaddress=0.0.0.0، أي أن المنفذ يستمع على جميع واجهات المضيف، كما أن قاعدة جدار الحماية في المثال لا تقيّد المصدر. وإذا كنت على شبكة Wi-Fi مشتركة، فمن المنطقي تضييق القاعدة إلى الشبكة الفرعية للآلة الافتراضية عبر المعامل remoteip، أو ربط listenaddress بعنوان المحوّل الافتراضي. هذا استنتاجنا نحن، وليس توصية من المؤلف. إضافة إلى ذلك، لا توفر الآلة الافتراضية ضمانًا مطلقًا: الهروب من المحاكي نادر لكنه ممكن، كما سيتعيّن تحديث اللقطة الحديثة.

الخلاصة للمطوّر: لا تحتاج إلى وكيل «ذكي»، بل إلى وكيل في قفص. يمكن بناء المخطط في أمسية واحدة ببرمجيات مجانية، وهو مناسب لتدقيق الشيفرة الغريبة وتحليل الحزم المشبوهة وتجارب الوضع المستقل. يُستحسن تصدير ملف Proxifier الشخصي، وأخذ لقطة نظيفة فور التحقق من عنوان IP الخارجي.

القصة

أسئلة وأجوبة حول الخبر

ما أبرز التفاصيل حول كيف يُبنى المخطط؟

هناك ثلاث دوائر. المضيف مسؤول عن الاستدلال. يعمل عليه تطبيق سطح المكتب Strata الذي يشغّل واجهة API متوافقة مع OpenAI (المنفذ الافتراضي 47831). لا تصل الشيفرة الغريبة إلى هنا ولا تُشغَّل عليه. الآلة الافتراضية بوضع NAT هي بيئة العزل (sandbox). فيها يُثبَّت VS Code وإضافة Cline، وهنا تُفك الأرشيفات وتُثبَّت الاعتماديات وتُشغَّل السكربتات المشبوهة. وإذا حدث خطأ ما، تُستعاد الآلة الافتراضية من اللقطة خلال نحو خمس ثوانٍ.

ما أبرز التفاصيل حول أين تتعطل الأمور؟

الأمر الأكثر إثارة هنا ليس الفكرة نفسها، بل فخّان في الشبكة. الأول: خوادم النماذج المحلية (Strata وOllama وLM Studio) تستمع افتراضيًا إلى 127.0.0.1 فقط. ولا تُرى من الآلة الافتراضية حتى عبر البوابة 10.0.2.2. يحل المؤلف ذلك بأداة portproxy المدمجة في Windows. أمر واحد هو netsh interface portproxy يمرّر المنفذ، وقاعدة في جدار الحماية تفتحه. والتحقق بسيط: الأمر curl.exe 10.0.2.2:47831/v1/models من داخل الآلة الافتراضية يجب أن يعيد JSON بقائمة النماذج. ومنه يُؤخذ الحقل id الدقيق الذي ستحتاجه في Cline.

ما أبرز التفاصيل حول ما يجب مراعاته عمليًا؟

يقوم العزل على الانضباط. تُعطَّل في الآلة الافتراضية المجلدات المشتركة والحافظة ثنائية الاتجاه، وإلا فقدت بيئة العزل معناها. ولا يجوز تسجيل الدخول إلى الحسابات الشخصية ولا الاحتفاظ هناك بمفاتيح ورموز حقيقية: فخاصية Auto-approve في Cline تسمح للوكيل بكل ما هو متاح داخل الآلة. هناك أيضًا نقطة ضعف لم يتناولها المقال. يستخدم أمر portproxy المعامل listenaddress=0.0.0.0، أي أن المنفذ يستمع على جميع واجهات المضيف، كما أن قاعدة جدار الحماية في المثال لا تقيّد المصدر.

ZK
جمال حميدون — مدير المنتجات في Alpina Digital ومدير منتج AlpinaGPT. يبني منتجات الذكاء الاصطناعي منذ 2019. بدأ Hamidun News كمشروع شخصي ثم أصبح مُجمِّعًا إنتاجيًا بأكثر من 6000 قارئ.
✦ Unified AI Workspace · Nomad

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.

Try Nomad AI →Launch Nomad Agent
ما رأيك؟
جارٍ تحميل التعليقات…