السبت، 30 مايو 2026

مساعد وكيل محلي بالكامل على أردوينو أونو كيو

 اكتب برنامجًا لأردوينو. يقوم البرنامج بتجميعه وبرمجة وحدة التحكم الدقيقة. يعمل محليًا بالكامل. لا حاجة إلى سحابة. لا حاجة إلى مفاتيح واجهة برمجة التطبيقات. لا حاجة إلى اشتراكات


المواد المستخدمة في هذا المشروع

مكونات الأجهزة

أردوينو أونو كيو

القصة

كل عرض توضيحي لـ "الذكاء الاصطناعي على الأجهزة" شاهدته من قبل يعتمد على نموذج لغة. يتواصل المستخدم مع اللوحة عبر طرفية أو تطبيق تيليجرام، وتقوم اللوحة باستدعاء واجهة برمجة تطبيقات (API) لتفعيل نموذج سحابي. يُغيّر QClaw هذا الترتيب. يستضيف Arduino Uno Q نموذج اللغة، ويُشغّل حلقة الوكيل، ويُدير سلسلة أدوات التجميع، ويُبرمج وحدة التحكم الدقيقة الخاصة به.

عبر مصفوفة LED، ويفعل ذلك. من البداية إلى النهاية. على اللوحة. حتى بدون اتصال بالإنترنت.

يحتوي QClaw على سطح تحكم ثماني الأدوات، وموجه مسبق بخمس عشرة مهارة، ومسار فلاش OpenOCD مباشر يُمكّن عمليات التحميل التلقائي من التنفيذ الفعلي. يتيح لك وقت التشغيل ثنائي المسار اختيار السرعة أو التحكم الكامل في الأجهزة على نفس الطراز.

لماذا تُعد Uno Q اللوحة المناسبة لهذا الغرض؟

Arduino Uno Q عبارة عن جهاز سيليكون مقسم. يبدو من الخارج كجهاز Arduino كلاسيكي، ولكنه في الواقع لوحتان مدمجتان.


تتشارك وحدة المعالجة المركزية (MPU) ووحدة التحكم الدقيقة (MCU) نفس لوحة الدوائر المطبوعة (PCB). تستطيع وحدة المعالجة المركزية إبقاء وحدة التحكم الدقيقة في وضع إعادة الضبط وإعادة برمجة ذاكرتها مباشرةً عبر منافذ الإدخال/الإخراج العامة (GPIO) الموصولة ببرنامج SWD باستخدام برنامج التشغيل `linuxgpiod`. لا حاجة لكابل USB بينهما، ولا مسبار، ولا جهاز إضافي. هذه هي عبقرية QClaw.

تتولى حلقة التحكم إدارة دورة حياة البرنامج بالكامل عبر بنية السيليكون المزدوجة للوحة Arduino Uno Q، حيث تتولى وحدة المعالجة المركزية تشغيل الحلقة، بينما تقوم وحدة التحكم الدقيقة بتنفيذ البرنامج الثابت الناتج. هكذا يقوم QClaw بإنشاء البرنامج وتجميعه وبرمجته ومراقبته.


تُجمّع أداة `arduino` باستخدام الأمر `arduino-cli compile --fqbn arduino:zephyr:unoq --export-binaries`، ثم تستخرج الملف الناتج `.elf-zsk.bin`، وتمرره عبر OpenOCD باستخدام جسر GPIO SWD. يستدعي QClaw برنامج OpenOCD مباشرةً على العنوان الصحيح، وينفذ MUC البرنامج. لا حاجة إلى SSH، ولا بيانات اعتماد شبكة، ولا نفق OCD عن بُعد. فقط اتصال مباشر بين MPU وMCU، على نفس اللوحة. يتم تحميل الملف الثنائي على القرص في أقل من ثانية.


كما أن 4 جيجابايت من ذاكرة الوصول العشوائي (RAM) كافية تمامًا لاستضافة نموذج Qwen3.5 0.8B Q4_0 مع نافذة سياق 8 كيلوبايت، مُقفلة، مع ذاكرة تخزين مؤقتة q8_0 KV. يشغل QClaw حوالي 1.3 جيجابايت على Uno Q. يعمل فك التشفير بسرعة 8 رموز مميزة تقريبًا في الثانية. بطيء مقارنةً بمعالج رسومات سطح المكتب، لكنه سريع بما يكفي لتجميع برنامج صغير وتحميله قبل أن تنتهي من احتساء قهوتك.


كيفية استخدام QClaw


يأتي QClaw بنسختين تشغيليتين مبنيتين على نفس خادم llama، ونفس ملف `SOUL.md`، ونفس مُوجِّه ما قبل التوجيه ذي الـ 23 قاعدة. يختلفان في كيفية تغليف استدعاء LLM.


المسار الوكيل (`make qclaw-agentic`): تعمل بوابة qclaw Go كواجهة أمام النموذج. تشغل هذه البوابة مُهايئات القنوات (الطرفية، SSH، Telegram)، وحلقة الوكيل متعددة التكرارات، ومُوجِّه ما قبل التوجيه، ومُوزِّع الأدوات الثمانية. هذا هو الإعداد الافتراضي للإنتاج. وهو المسار الوحيد القادر على تجميع برنامج صغير وتحميله.

المسار المباشر (`make qclaw-direct`): واجهة سطر أوامر Python بسيطة تُرسل طلبات POST مباشرةً إلى `llama-server` بعد تشغيل نفس قواعد مُوجِّه ما قبل التوجيه في Python. لا توجد حلقة، ولا أدوات، ولا Telegram. انخفاض زمن الاستجابة بنسبة 33% تقريبًا عند استخدام موجهات البيانات الواقعية فقط مع الحفاظ على دقة البيانات، وذلك لعدم وجود مخطط أدوات في الموجه وعدم الحاجة إلى تكرار العملية.

استخدم المسار الوكيل عند الرغبة في تحميل رسم تخطيطي أو التقاط إطار. استخدم المسار المباشر عند الرغبة في معرفة أي دبابيس في لوحة Uno Q تدعم تعديل عرض النبضة (PWM).

أدخل أمرين فقط لتفعيل الجلسة.

git clone https://github.com/laurenvil/Uno-QClaw.git ~/ArduinoApps/QClaw
cd ~/ArduinoApps/QClaw
git submodule update --init --recursive

# Download the inference engine
cd yzma && make download-llama.cpp && cd ..

# Download the model (~490 MB for Q4_0)
mkdir -p ~/models
wget -O ~/models/Qwen_Qwen3.5-0.8B-Q4_0.gguf \
'https://huggingface.co/Qwen/Qwen3.5-0.8B-GGUF/resolve/main/Qwen3.5-0.8B-Q4_0.gguf'

# Build, install arduino-cli, configure (one time)
make qclaw-install

# Start a session — pick a path
make qclaw-agentic # full agent loop + 8 tools (compile/upload/camera/sysfs_led/network/i2cdetect)
make qclaw-direct # pre-router + direct API (fast Q&A, no tools)


يقوم الأمر `make qclaw-install` ببناء ملف Go التنفيذي، ونسخ موجه النظام وشجرة المهارات الخمس عشرة إلى `~/.qclaw/workspace/`، وتثبيت `arduino-cli` بالإضافة إلى نواة `arduino:zephyr`، وتشغيل معالج تفاعلي لإعداد بوابة Telegram الاختيارية.

بمجرد تشغيله، يتوفر لدى البرنامج ثماني أدوات ذات نطاق محدود:


`read_file` و`write_file` و`list_dir` للتنقل بين مساحات العمل

`arduino` للتجميع والبرمجة عبر OpenOCD

`camera` لالتقاط صور V4L2 أحادية الإطار عبر GStreamer

`sysfs_led` لمصابيح LED RGB الخاصة بوحدة المعالجة المركزية في `/sys/class/leds/*`

`network` لاسم المضيف والواجهات والبوابة الافتراضية، جميعها للقراءة فقط باستخدام مكتبة Go القياسية

`i2cdetect` لعرض ومسح ناقلات I²C في Linux باستخدام الخيارين `-y -r` فقط

لا يوجد أمر `exec` عام. لا يوجد موجه أوامر عام. تتحقق كل أداة من صحة وسائطها وفقًا لقائمة مسموح بها. يبلغ حجم مخطط الأدوات الإجمالي حوالي 3.4 ألف حرف، مما يترك مساحة كافية لموجه النظام في نافذة سياق بحجم 8 كيلوبايت.

الموجّه المسبق: مهارات، لا عشوائية

الموجّه المسبق هو الجزء الأساسي من QClaw الذي يُجري العمليات الحسابية المعقدة على نموذج بحجم 0.8 مليار. وهو ليس عشوائيًا، بل جدول مُسطّح يحتوي على 23 قاعدة تعبير نمطي للكلمات المفتاحية موزعة على 15 مهارة. عند إرسال رسالة، يقوم الموجّه المسبق بفحصها، والعثور على القواعد المطابقة، ثم يُضمّن ملف `SKILL.md` ذي الصلة، بالإضافة إلى الملفات المُشار إليها، مباشرةً في موجه النظام قبل استدعاء LLM.

لا يحتاج النموذج أبدًا إلى استدعاء `read_file` للحصول على محتوى المهارات الأساسي، فالمحتوى موجود بالفعل. عند حجم 0.8 مليار، يُكلّف استدعاء `read_file` دورة كاملة من LLM، أي ما يُقارب 10 إلى 20 دقيقة من التعبئة المسبقة وفك التشفير. يُلغي الموجّه المسبق هذه التكلفة تمامًا.

تشمل المهارات ما يلي:

أساسيات الرسم التخطيطي: الوميض، والتنفس، والزر، ومقياس الجهد، والمحرك المؤازر، والتجميع والتحميل، وناقل CAN، ومحول رقمي تناظري، ومضخم عملياتي.

مصفوفة LED بحجم 13x8 باستخدام قالب Arduino_LED_Matrix القياسي. مكونات Uno Q: جداول الدبابيس، وقواعد الجهد، والموصلات، والطاقة. سير عمل ثنائي الشريحة: Bridge RPC، وApp Lab، وBricks. إمكانيات جانب Linux: Wi-Fi، وBluetooth، والكاميرا، وOpenCV، والميكروفون، ومصابيح LED الخاصة بنظام sysfs. مستشعرات Modulino سهلة التوصيل والتشغيل. كل مهارة عبارة عن مجلد ضمن `workspace/skills/<name>/` يحتوي على ملف `SKILL.md` وملفات مرجعية اختيارية. إضافة مهارة جديدة تتم ببساطة عن طريق كتابة كود Markdown وإضافة قاعدة تعبير نمطي.

جرّبها بنفسك

المستودع: https://github.com/laurenvil/Uno-QClaw

نرحب بالمشاكل، والنسخ، وطلبات السحب على الرابط التالي: https://github.com/laurenvil/Uno-QClaw. إذا كان لديك لوحة أردوينو أونو كيو على مكتبك، يمكنك تشغيل مساعد ذكاء اصطناعي ذاتي الإضاءة عليها الليلة، مع فصل كابل الإيثرنت.

شفرة





















ليست هناك تعليقات:

إرسال تعليق