ChatForge: مساعد ذكاء اصطناعي محلي يعتمد على وحدة معالجة الشبكات العصبية لزر Copilot
- تاريخ النشر
- 2 أكتوبر 2026
- تاريخ التحديث
- 3 أكتوبر 2026
- بقلم
- جاكوب لويد — كُتب بمساعدة الذكاء الاصطناعي بعد إنجاز المشروع
- مدة القراءة
- قراءة 2 دقيقة
بعبارة مبسطة: تحتوي أجهزة اللابتوب الجديدة من إنتل على شريحة ذكاء اصطناعي خاصة (NPU) تظل في الغالب غير مستخدمة، بالإضافة إلى مفتاح “كوبيلوت” الذي يفتح مساعد مايكروسوفت. برنامج ChatForge مجاني ويُسند إلى ذلك المفتاح وظيفة مختلفة: فهو يفتح نافذة دردشة صغيرة تستجيب بناءً على نموذج ذكاء اصطناعي يعمل على اللابتوب نفسه، دون الحاجة إلى حساب أو رسوم شهرية، كما يمكنه البحث عن معلومات مباشرة مثل الطقس والأخبار. أما بالنسبة للأسئلة الأكثر تعقيدًا، فيمكن لنفس النافذة أن تستعين بخدمة ذكاء اصطناعي أكبر حجمًا.
لقد جاء جهاز اللابتوب الخاص بي مزودًا بمفتاح AI مخصص وشريحة AI مخصصة، ولكن منذ شرائه لم يتفاعلا أبدًا: فالمفتاح يفتح تطبيق Microsoft Copilot في السحابة، بينما تظل شريحة NPU خاملة دون أن تقوم بأي عمل. هذا الأمر أزعجني أكثر مما ينبغي. لذا قمت الآن ببرمجة المفتاح ليفتح تطبيق ChatForge، وهو المساعد الخاص بي. يعمل هذا التطبيق بنموذج Qwen ذي 1.5 مليار معلمة على شريحة NPU، بمعدل 42–51 رمزًا في الثانية. لا يوجد حساب، ولا اشتراك، ولا تكاليف على أساس عدد الرموز المستخدمة، كما أن جميع المحادثات تبقى داخل الجهاز فقط. عندما تكون الأسئلة كبيرة جدًا بالنسبة لهذا النموذج الصغير، يمكنني استخدام خادم GPU الخاص بي أو أي نموذج سحابي عبر نقرة واحدة ضمن نفس النافذة الصغيرة.
هذه المقالة هي جولة تعريفية: ما الذي يفعله التطبيق، وكيف يكون التعامل مع شريحة NPU فعليًا (بما في ذلك تجربة نموذج تم تجميعه بنجاح ثم بدأ يتحدث بلغة غير مفهومة)، بالإضافة إلى الحيل التي تسمح لنموذج بهذا الحجم الصغير بتقديم إجابات واقعية بدلًا من التصرفات التقليدية للنماذج الصغيرة.
خلاصة المقال
- ما هو: مساعد مجاني تحت رخصة MIT يعمل في منطقة الإشعارات لنظام ويندوز 11. الضغط على
Ctrl+Alt+C(أو مفتاح Copilot بعد إعادة برمجته باستخدام PowerToys) يفتح نافذة بحجم 420 × 620 في الزاوية السفلية اليمنى؛ الضغط على مفتاح Escape يغلقها. المصدر: github.com/LaserLloyd/ChatForge. - النموذج المحلي:
Qwen2.5-1.5B-Instruct(نسخة INT4، حجم التحميل 0.94 جيجابايت) يتم تشغيله عبر خادم OpenVINO Model Server على شريحة NPU من إنتل “AI Boost”. يستغرق التجميع الأول للنموذج على الشريحة حوالي 45 ثانية؛ بعد ذلك يتم تحميله من ذاكرة التخزين المؤقت في 3 ثوانٍ فقط، ويقوم بفك تشفير الرموز بمعدل 42–51 رمزًا/ثانية. يُغلق النموذج نفسه تلقائيًا بعد 10 دقائق من الخمول. - النماذج الأكبر، نفس القائمة: StudioForge (خادم GPU الخاص بك)، بالإضافة إلى MiniMax وOpenAI وDeepSeek وأي عنوان URL متوافق مع OpenAI. تُخزن مفاتيح الوصول في مدير بيانات الاعتماد الخاص بويندوز، ولا يتم حفظها أبدًا في أي ملف إعدادات.
- تسع أدوات: البحث في الويب والأخبار، جلب صفحات الإنترنت، معرفة الطقس، ويكيبيديا، أسعار الصرف، التاريخ والوقت، آلة حاسبة — بالإضافة إلى
create_documentالتي تحفظ الملفات التي يكتبها النموذج بصيغة Word أو Excel أو PowerPoint. يمكن إرفاق ما يصل إلى 10 ملفات مع كل رسالة وطرح أسئلة حولها. - ما ليس كذلك: ليس برنامجًا ذكيًا مستقلًا. لا تقوم أي أداة بتشغيل برامج أو تغيير إعدادات؛ الأداة الوحيدة التي تكتب شيئًا يمكنها فقط إنشاء ملف جديد في مجلدها الخاص.
ما الذي ستحصل عليه في النهاية
كل ما تحتاجه هو سؤال واحد: اضغط على المفتاح، اكتب سؤالك، اقرأ الإجابة، ثم اضغط على Escape. كل إجابة تشير إلى النموذج الذي كتبها ومعدل سرعة الاستجابة، لذا تعرف دائمًا ما إذا كانت الإجابة من النموذج المحلي المجاني أم من نموذج مدفوع. عندما يتطلب السؤال بيانات مباشرة، تظهر أداة صغيرة توضح ما تم البحث عنه؛ وعند طلب تقرير من نموذج أكبر، يأتي الرد مع بطاقة وثيقة تحتوي على زري Open وShow in folder.



المحادثات والصور ومواقع الخوادم المذكورة في لقطات الشاشة هي بيانات تجريبية؛ أما واجهة المستخدم فهي حقيقية، تم عرضها عبر متصفح Edge (المحرك وراء WebView2) على نموذج تطوير المشروع.
كيفية الحصول عليه
كل ما تحتاجه موجود في مستودع واحد برخصة MIT: github.com/LaserLloyd/ChatForge، الذي يتضمن أيضًا ملاحظات التشغيل التي تحتوي على جميع قياسات أداء شريحة NPU المذكورة في هذه المقالة. تفضل تنزيله كملف مضغوط؟ يوجد رابط التنزيل في نهاية هذه الصفحة، كما يمكنك الحصول عليه من صفحة التنزيلات على الموقع.
كيف يعمل النظام بأكمله
عملية Python واحدة تتحكم في كل شيء: أيقونة منطقة الإشعارات، مفتاح الاختصار العالمي، نافذة المحادثة والإعدادات (باستخدام pywebview مع WebView2)، بالإضافة إلى نواة asyncio التي تدير تدفق الإجابات وتشغيل الأدوات. خادم النماذج هو عملية فرعية يسيطر عليها تمامًا — يبدأ عند فتح النافذة مع اختيار النموذج المحلي، ويُقتل مع البرنامج عبر كائن مهام ويندوز، لذا لا يمكن لأي تعطل أن يترك النموذج يعمل في ذاكرة الوصول العشوائي.
لم يتم كتابة الكثير من هذا النظام من الصفر، وأعتبر ذلك مدعاة للفخر: فمراقب العمليات، ومحمل التنزيلات، وأيقونة منطقة الإشعارات ونظام التسجيل جاءت جميعها من StudioForge؛ بينما واجهة المحادثة ومحرك تنسيق Markdown أتيا من DisPatch، أما عميل التدفق فهو من أداة القياس الخاصة بي. كل هذه المكونات كانت قد صمدت بالفعل أمام استخدام يومي لعدة أشهر، وكل وحدة تم تكييفها تشير إلى ذلك في بدايتها. هذا الاستخدام المتكرر هو ما جعل الفارق الزمني بين أول إرسال للكود والإصدار 0.1.0 يومين فقط (من مساء 30 سبتمبر 2026 حتى 2 أكتوبر 2026)، حيث قام وكيل ذكاء اصطناعي بجمع كل شيء وفق خطة مكتوبة تتألف من حوالي 1000 سطر.
طريقة التثبيت
يوجد دليل كامل في docs/SETUP.md؛ أما النسخة المختصرة فهي ثلاث أوامر PowerShell وتحميل نموذج واحد:
git clone https://github.com/LaserLloyd/ChatForge.git
cd ChatForge
py -3.12 -m uv sync --extra dev
py -3.12 -m uv run chatforge runtime install # خادم OpenVINO Model Server 2026.4.0، حجم التحميل 139 ميجابايت، مع تحقق من تجزئة SHA-256
py -3.12 -m uv run chatforge doctor # جدول يوضح النتائج: مرور/تحذير/فشل لكل من: بايثون، WebView2، شريحة NPU، خادم OVMS، مدير بيانات الاعتماد، مساحة القرص...
بعد ذلك قم بتشغيله (launchers\ChatForge.bat)، ثم اذهب إلى Settings > Models، ابحث عن Qwen واضغط على Download بجانب الخيار المُعلَّم بـ Recommended — وهو OpenVINO/Qwen2.5-1.5B-Instruct-int4-ov بحجم 0.94 جيجابايت. أول تشغيل يفعّل خاصية البدء تلقائيًا عند تسجيل الدخول (مهمة مجدولة لكل مستخدم — لا يتطلب أي شيء صلاحيات مدير النظام) كما يسجل مفتاح الاختصار. في المرة الأولى يتم تجميع النموذج على شريحة NPU، وهو ما يستغرق حوالي 45 ثانية؛ تظهر عداد تنازلي في رأس النافذة لكي لا تشعر بأن البرنامج متوقف. بعد ذلك يتم تحميله من ذاكرة التخزين المؤقت في 3 ثوانٍ فقط.
مشكلة مفتاح Copilot
هذا هو الجزء الذي لا أحد يخبرك به عند شراء اللابتوب: زر Copilot ليس زرًا يمكن ربطه بأي وظيفة. فهو يرسل تركيبة المفاتيح Win+Shift+F23، وويندوز يقوم بتسجيل هذه التركيبة لنفسه، أما قائمة الإعدادات الرسمية فتقدم فقط التطبيقات الموقعة والمُعدة مسبقًا. برنامجك الخاص لا يظهر في هذه القائمة.
الحل العملي هو استخدام أداة PowerToys ووظيفة مدير لوحة المفاتيح فيها: قم بإعادة توجيه الاختصار Win (Left) + Shift (Left) + F23 إلى Ctrl+Alt+C (الاختصار المستخدم في ChatForge)، ثم قم بتفعيل خيار Run at startup في PowerToys. بهذه الطريقة، يفتح هذا الزر مساعدك الذكي بدلًا من أي شيء آخر. وإذا حدث أن فتح هذا الزر بحث ويندوز أو Copilot مرة أخرى، فهذا يعني أن PowerToys لا يعمل؛ وهذه هي المشكلة الوحيدة المحتملة، وهي تظهر كأول خطوة في قائمة استكشاف الأخطاء وإصلاحها.
جعل نموذج بحجم 1.5 مليار بارامتر مفيدًا
نموذج بحجم 1.5 مليار بارامتر وقادر على معالجة 4096 رمزًا في المرة الواحدة يشبه سمكة ذهبية تمتلك بطاقة مكتبة! التصميم الهندسي في ChatForge يعمل مع هذه القيود بدلًا من تجاهلها:
- قائمة أدوات محدودة: يوجد تسعة أدوات، لكن النموذج المحلي يتلقى خمسة فقط (البحث، جلب الصفحات، الطقس، التاريخ/الوقت، الآلة الحاسبة). النماذج الصغيرة تتشتت بسبب قوائم الأدوات الطويلة؛ لذا فإن تقليص القائمة يحافظ على نظافة استدعاءات الأدوات.
- البحث أولًا: عند طرح سؤال يتطلب بيانات مباشرة ("الطقس"، "أحدث الأسعار")، يتم تشغيل الأداة الملائمة قبل أي تفكير من النموذج، فيجيب بناءً على النتائج بدلًا من التخمين. لا يُجرى استدعاء إضافي للنموذج؛ فقط مطابقة بسيطة للأنماط.
- التعامل مع الرفض: النماذج الصغيرة تميل إلى الرد بـ "لا أستطيع الوصول إلى بيانات لحظية" حتى وإن كانت الأداة متاحة. أي رد يرفض الطلب أو يتعهد بالبحث دون تنفيذه فعليًا يتم التجاهل؛ المحرك يقوم بالبحث بنفسه ثم يطلب من النموذج الإجابة مجددًا. تظهر رسالة "جاري البحث…" أثناء هذه العملية، لذا لا ترى الرد الأولي غير المفيد.
- لا تلخيص: عندما يتجاوز الحوار سعة النموذج، يتم إهمال أقدم الأجزاء من المحادثة؛ ويظهر خط فاصل في الواجهة يوضح بداية وجهة نظر النموذج. لا يتم تغيير أي شيء دون علمك، ولا يتطلب ذلك استدعاء إضافي للنموذج؛ كما يُخبر النموذج أن الأجزاء القديمة قد حُذفت ليتجنب الاختلاق.
- حماية ضد الحلقات اللانهائية وميزانية الاستخدام: لا يمكن للنموذج إجراء أكثر من 6 استدعاءات لأدوات خلال رسالة واحدة، كما يُمنع تكرار نفس الاستدعاء؛ فالنموذج بحجم 1.5 مليار بارامتر قد يستمر في طلب الطقس إلى الأبد لو سمحت له.
- شبكة أمان: إذا فشل تحميل النموذج على وحدة NPU أو تعطل، يمكن إعادة توجيه الرسالة إلى مزود آخر تختاره.
لا يتطلب أي من هذه الميزات وحدة NPU؛ فنفس المحرك يعمل مع النماذج الكبيرة أيضًا. لكنها ما تجعل النموذج المحلي المجاني قادرًا على الإجابة بدقة على سؤال مثل "هل سيمطر في نهاية الأسبوع؟" وبأقصى سرعة ممكنة، بدلًا من الرفض المهذب.
النموذج الذي تجمع بسلاسة لكن أجاب بشكل خاطئ
كانت الخطة استخدام Qwen3-4B كنموذج محلي؛ نموذج أكبر وأحدث، واختيار منطقي. لكن ملف docs/RUNTIME-NES.md يوضح أن Qwen3-4B-int4-ov يتجمع بسلاسة على وحدة NPU، لكنه ينتج نتائج خاطئة مع برنامج OVMS 2026.4 — بينما تلك الملفات نفسها تعطي إجابات صحيحة عند تشغيلها على المعالج العادي بسرعة 24 رمزًا في الثانية. الخلل خاص بوحدة NPU؛ جميع الإعدادات التجريبية فشلت، والإصدارات المختزلة الأخرى التي قد تنجح لا تدعم استدعاء الأدوات ضمن OVMS 2026.4. على وحدة NPU، التجميع الناجح لا يعني شيئًا؛ يجب فحص النتائج قبل الوثوق بها.
النموذج الذي تم استخدامه فعليًا، وفقًا لقياسات على معالج Core Ultra 5 226V (Lunar Lake):
| Qwen2.5-1.5B-Instruct INT4 على وحدة NPU | القياسات |
|---|---|
| التجميع الأول | 44.5 ثانية |
| التحميل من ذاكرة التخزين المؤقت | 2.7–3.2 ثانية |
| سرعة فك التشفير | 42–51 رمزًا في الثانية |
| الوقت حتى ظهور أول رمز (للرسائل القصيرة) | 0.5–0.8 ثانية |
| حجم ذاكرة التخزين المؤقت على القرص | 306 ميغابايت |
| سعة النافذة اللغوية | 4096 رمزًا |
ملاحظة هامة من نفس الملف: برنامج OVMS يدعم خيار BEST_PERF الذي يرفع سرعة فك التشفير بنسبة 10% تقريبًا (48.3 رمزًا/ثانية) مقابل زيادة في وقت التجميع إلى 135 ثانية — ثلاثة أضعاف الوقت الافتراضي. ChatForge لا يستخدم هذا الخيار، وأعتقد أن ذلك صائب؛ فالوقت البالغ 45 ثانية للمرة الأولى يقع على حافة ما يمكن للمستخدم العادي تحمله قبل أن يظن أن البرنامج معطوب.
إرفاق الملفات وإنتاج الوثائق
يمكن إرفاق حتى 10 ملفات لكل رسالة (عبر أيقونة الدبوس، السحب أو اللصق؛ كل ملف بحد أقصى 20 ميغابايت): كود ونصوص، ملفات CSV وJSON وHTML، ملفات Word وExcel وPowerPoint وOpenDocument وRTF، رسائل إلكترونية، ملفات PDF، وحتى الملفات القديمة من نوع .doc. أما الملفات القديمة من نوع .xls/.ppt فتُحوَّل عبر برنامج Microsoft Office إن وُجد. الصور تخضع لفحص، وتُصحح اتجاهها، وتُقلص إلى 1568 بكسل مع إزالة جميع البيانات الوصفية؛ لا يبقى أي أثر للكاميرا أو نظام تحديد المواقع أو التوقيت قبل تخزينها أو إرسالها؛ والنماذج التي لا تدعم الصور تحصل على النص المستخرج عبر برنامج OCR في ويندوز.
في الاتجاه المعاكس، تتيح أداة create_document للنموذج أن ينتج ملفات: يتم إنشاء ملفات .docx و.xlsx و.pptx من نص Markdown باستخدام مكتبة Python القياسية فقط، دون الحاجة لبرنامج Office. تُحفظ هذه الملفات في مجلد Documents\ChatForge؛ وإذا كان اسم الملف مكررًا، يُضاف رقم إليه ليصبح report (2).docx بدلًا من الكتابة فوقه. تظهر بعد ذلك بطاقة في الواجهة تحتوي على خياري Open وShow in folder. النموذج المحلي الصغير لا يُمنح هذه الأداة؛ فطلب من نموذج صغير أن يكتب تقريرًا ربع سنوي هو مسؤوليتك أنت.
ما ليس عليه ChatForge
ChatForge ليس برنامجًا ذا قدرات وكيلية؛ والحدود بينهما هي بنيوية وليست مجرد وعود في النص التوجيهي. ثمانية من أصل تسعة أدوات هي عبارة عن استعلامات للقراءة فقط؛ والأداة التاسعة تضيف ملفًا جديدًا لمجلدها دون أي تعديل على الملفات القائمة؛ لا أداة تقوم بتشغيل برنامج أو تعديل إعدادات أو قراءة ملف لم ترفقه أنت. أداة fetch_url تحظر العناوين الخاصة والمحلية (بما في ذلك DNS rebinding)، والآلة الحاسبة تعمل عبر قائمة بيضاء من التعبيرات دون أي وظيفة eval. مفاتيح API تُخزن في مدير بيانات ويندوز وتُشفر تلقائيًا؛ كما أن خادم النموذج يتوقف مع إغلاق البرنامج. لا يتم الاحتفاظ بأرشيف لكل محادثاتك؛ أسوأ ما يمكن أن يحدث هو إعطاء إجابة خاطئة وإنشاء ملف جديد في مجلد، وهو بالضبط المستوى المقبول من المخاطرة لمساعد ذكي.
نقاط حذر
- استخدام
pythonفقط على ويندوز يؤدي إلى تشغيل برنامج Microsoft Store. استخدم دائمًاpy -3.12 -m uv run …أو البرامج التشغيلية في مجلدlaunchers\. هذا الخطأ قد يحدث قبل أي شيء آخر. - زر Copilot لا يمكن ربطه بأي وظيفة. هو
Win+Shift+F23وتسيطر عليه ويندوز؛ الحل الوحيد هو إعادة التوجيه عبر PowerToys كما ذكرنا سابقًا. - لا تفترض أن التجميع يعني عمل النموذج بشكل صحيح. فقد رأينا أن Qwen3-4B يتجمع لكنه يُنتج نتائج خاطئة على وحدة NPU؛ لذا يُصنف في قائمة Avoid، والأنواع غير المعروفة تحصل على تصنيف Untested.
- تحديثات التعريفات أو وضع السكون قد تفسد ذاكرة التخزين المؤقت للتجميع. اذهب إلى إعدادات > النماذج واختر Clear cache ثم Load. يمكنك في هذه الأثناء الاعتماد على مزود احتياطي للإجابة.
- النموذج الصغير يفقد كفاءته في المحادثات الطويلة — يتوقف عن استدعاء الأدوات، يكرر نفسه، ويجيب بشكل سيئ. هذا طبيعي لأنه نموذج بحجم 1.5 مليار بارامتر يفقد السياق؛ الحل هو مسح المحادثة أو التبديل إلى نموذج أكبر.
- الملفات القديمة من نوع
.xls/.pptتتطلب تثبيت برنامج Office (التحويل يتم سرًا على نسخة مؤقتة). بدونه، احفظها أولًا كـ.xlsx/.pptx. الصور بصيغة HEIC تحتاج إلى حزمةpillow-heifالاختيارية أو تحويلها إلى JPEG. - ملاحظة الترخيص عند إعادة التوزيع: البرنامج نفسه مرخص بموجب MIT، لكن مكتبة
pystrayالمستخدمة مرخصة بموجب LGPL-3.0 وهي مستوردة دون تعديل أثناء التشغيل. لا مشكلة في الاستخدام العادي؛ لكن إن قمت بتوزيع نسخة مجمعة تحتوي عليها، فإنك تتحمل مسؤولية إعادة الربط وفق شروط LGPL.
خلاصة تجربتي
مرور يومين فقط من أول كود مكتوب حتى إصدار v0.1.0 الذي أستخدمه الآن يوضح أن سرعة التطوير تعتمد على إعادة استخدام مكونات مجربة وليس على السرعة المطلقة. فالواجهة الرئيسية، واجهة الدردشة، وبرنامج البث كلها مستنسخة من مشاريع أخرى نشطة لديّ. وحدة NPU كانت الجزء السهل؛ أما العمل الحقيقي فكان جعل نموذج بحجم 1.5 مليار بارامتر مفيدًا (عبر تقليص الأدوات، البحث المسبق، التعامل مع الرفض) وتحديد حدوده: لا قدرات وكيلية ولا أرشيف للمحادثات، ولا شيء يذهب للسحابة إلا بطلب منك. البرنامج جديد ومخصص لويندوز فقط؛ رقم الإصدار 0.1.0 يعكس حقيقة أنه لا يزال في مراحل التطوير، لكن مجموعة الاختبارات الكبيرة (1520 اختبارًا بيثون و114 اختبارًا جافاسكريبت) هي ما أعطتني الثقة للاستمرار: كلها نجحت على ويندوز ولينكس في بيئة CI.
الإصدارات
وفقًا لمستودع الكود الموصوف في هذا المقال (تم التحقق منه بتاريخ 2026-10-02):
$ git log -1 --format='%h %ci'
2edd2d4 2026-10-02 18:04:38 +0900 # ChatForge v0.1.0
$ uv run pytest -q
1520 passed, 6 skipped, 6 deselected in 50.65s # على لينكس، Python 3.13.14
$ npm run -s test:js
tests 114 / pass 114 / fail 0 # Node v24.18.0
أما الأداء على ويندوز: برنامج OpenVINO Model Server 2026.4.0 (python_on)، والنموذج المستخدم هو OpenVINO/Qwen2.5-1.5B-Instruct-int4-ov، مع قياسات على معالج Intel Core Ultra 5 226V. الأرقام المتعلقة بوحدة NPU مأخوذة من ملف docs/RUNTIME-NOTES.md الذي يسجل أيضًا فشل إعدادات Qwen3-4B.
مرتبط: StudioForge: خادم LLM يعمل على وحدات GPU فقط · DisPatch: دردشة ذكية يمكن استضافتها محليًا · نظرة أولى على DeepSeek Harness (dsh) · تشغيل DeepSeek محليًا: دليل من 4 خطوات · ما هي التكاليف الفعلية لاستخدام وكلاء الذكاء الاصطناعي؟
التنزيلات
مجاني للاستخدام الشخصي. إذا وفّر لك عصرًا كاملًا من الوقت، فزر القهوة قريب منك.