JARVIS
## الفكرة
مساعد واحد، ثلاثة أجهزة، وتكلفة صفرية. أردت ذكاءً اصطناعيًا خاصًا يعيش داخل تطبيق "تيليجرام" (Telegram)، يدير حاسوبي وهاتفي، يتحدث بلهجتي، ولا يتطلب أي رسوم شهرية. كان هذا القيد مقصودًا: **الاعتماد حصريًا على المستويات المجانية (Free Tiers)**؛ فوجود القيود يدفع نحو هندسة برمجية حقيقية، بينما يؤدي توفر المال إلى إخفاء المشكلات التقنية.
## ما تم بناؤه
- بوت على "تيليجرام" يعمل على مدار الساعة طوال أيام الأسبوع على خادم افتراضي خاص (VPS) مجاني (باستخدام Node.js و systemd).
- نظام توجيه ذكي متعدد النماذج: أكثر من 20 نموذج ذكاء اصطناعي خلف واجهة واحدة، مع آليات بديلة (fallbacks) تراعي حدود الاستخدام (quotas).
- تحكم عن بُعد في الحاسوب (وكيل "الأيدي" على جهاز الكمبيوتر)، مع نظام تنبيه واضح وصريح عند حدوث أي فشل.
- تحكم في نظام "أندرويد" عبر ملفات إعدادات يتم إنشاؤها تلقائيًا لبرنامج MacroDroid (اعتماد نهج "الإعدادات ككود" بدلاً من بناء الأوامر يدويًا).
- "عيون الهاتف": قراءة الإشعارات مع تصفية حسب الأهمية؛ حيث يظل النظام صامتًا افتراضيًا، ولا ينبه المستخدم إلا في حالات المكالمات، الرسائل، مستوى البطارية، أو التنبيهات الأمنية، بينما تُحفظ بقية الإشعارات ليتم الاطلاع عليها عند الطلب.
- تنبيهات استباقية تدعم الرد المباشر: يتحول أي تنبيه إلى سلسلة محادثات يمكن الرد عليها مباشرة عبر السحب (swipe-reply).
- ذاكرة دائمة (تتضمن ملفًا شخصيًا، حقائق مكتسبة، وملاحظات)، مهام مجدولة، إمكانية إرسال المستندات والصور، واجهة برمجة تطبيقات (HTTP API) محمية بنظام الرموز (tokens)، بالإضافة إلى تطبيق واجهة مستخدم مبني بإطار عمل Flutter.
## الصعوبات ← الحلول (جوهر العمل الفعلي)
**1. تعارض "تيليجرام" (Telegram 409 Conflict):** وجود نظامين لجلب البيانات (pollers) لنفس البوت يؤدي إلى تعطل كليهما.
← اعتماد مبدأ "المُجلب الوحيد" (Single-poller): تتولى خدمة واحدة (systemd service) عملية جلب البيانات، مع تسجيل حالة الملكية في سجل سحابي؛ مما يمنع أي عملية أخرى من تولي المهمة بشكل مزدوج.
**2. استنفاد حصص الاستخدام (Quotas) في النماذج المجانية في أسوأ الأوقات.**
← استخدام موجه (router) ذكي يمتلك قائمة بدائل مرتبة لأكثر من 20 نموذجًا؛ بحيث لا يتم إرسال مهام تتطلب استدعاء أدوات (tool-calls) إلى نماذج لا تدعم هذه الميزة. أصبح استنفاد الحصة مجرد حدث يتم التعامل معه عبر إعادة التوجيه، بدلاً من التسبب في تعطل النظام.
**3. مؤشر إعادة التوجيه المُضلل.** كان طلب "كل شيء منذ الطابع الزمني X" من المُرحِّل
يُعيد لا شيء - أو يُعيد ذاكرة التخزين المؤقت بأكملها - حسب الرغبة. وقد نتج عن ذلك عمليات إعادة تشغيل خاطئة و
تكرارات غامضة.
← تم إلغاء المؤشرات؛ مخزن معرفات المشاهدة الدائم يبقى بعد إعادة التشغيل، بالإضافة إلى نافذة لإزالة التكرارات
يتم تهيئة الحالة قبل النشر حتى لا تتم إعادة تشغيل أي شيء عند بدء التشغيل.
الدرس المستفاد: لا تعتمد على دلالات الحافة غير الموثقة لخدمة مجانية.
**4. حلقة الإشعارات ذاتية التغذية.** كان قارئ الهاتف يلتقط إشعاراته "المُفعَّلة"
ويُضخِّم نفسه في كل دورة.
← ثلاث طبقات: حماية نصية صارمة لرسائل الحلقة، وفلتر للأهمية، و
نموذج "الخادم الصامت" - التخزين المؤقت بصمت، وإرسال ما هو مهم فقط، وقراءة السجل عند الطلب.
**5. مُنشئ ملفات PDF عشوائي.** كان المُحرك القديم يُفسد سطرًا عربيًا عشوائيًا في كل عملية عرض
نفس المُدخلات، ثلاث مُخرجات مُختلفة (مُثبتة بصريًا).
← تم تجاوزه: يُنشئ متصفح Chrome الحديث الملفات المُشوهة، ثم يتم تصديرها كصور/ملفات PDF.
الدرس: تحقق من المُخرجات المُنشأة بصريًا؛ لا يُمكن الوثوق بالمُحركات القديمة في
تنسيق النصوص المُعقدة.
**6. مسار نشر مُعادي.** نظام Windows→SSH يتجاهل علامات الاقتباس والأقواس بصمت، و
نهايات أسطر CRLF تُفسد البرامج النصية.
← انقل البايتات، لا الأحرف: يتم شحن البرامج النصية والرسائل كملفات، ويتم توحيد تنسيق LF قبل
التحميل، ولا يتم تضمينها أبدًا في الأوامر.
**7. مُشكلة الثقة.** إجراءات الهاتف التي تتطلب شاشة مفتوحة، أو جهاز كمبيوتر محمول في وضع السكون،
يمكن تزييفها بصمت على أنها "مكتملة".
← سياسة الفشل الصادق: أبلغ عن السبب بالضبط، ولا تُختلق النجاح أبدًا. المُساعد الذي
يكذب مرة واحدة يخسر كل شيء.
## ما يثبته هذا المشروع
- Node.js للإنتاج: خدمات طويلة الأمد، systemd، بدائل بدون توقف
- تنسيق الذكاء الاصطناعي متعدد الموفرين مع مراعاة قيود التكلفة
- تكامل الأجهزة بشكل كامل (جسر Android، وكيل سطح المكتب، مرحلات الإشعارات)
- معايير أمنية صارمة: البيانات السرية في بيئة التشغيل فقط، HTTP محمي برمز مميز، سجلات منقحة
- المهارة الأندر: تحديد ما يجب بناؤه بناءً على الاستخدام الفعلي، والتطوير المستمر يوميًا
التقنيات المستخدمة: Node.js · Gemini + 20 نموذجًا احتياطيًا · واجهة برمجة تطبيقات Telegram Bot · Flutter · MacroDroid
config-as-code · مرحلات على نمط ntfy · systemd على خادم افتراضي خاص مجاني.
قمت ببناء "جارفيس": مساعد ذكاء اصطناعي خاص يعمل على مدار الساعة طوال أيام الأسبوع على خادم افتراضي خاص مجاني، مع التزام صارم بعدم استخدام أي خدمات مدفوعة.
يدير جارفيس حاسوبي المحمول وهاتفي عن بُعد، ويقرأ إشعارات الهاتف المُفلترة،
ويُوجّه الطلبات عبر أكثر من 20 نموذجًا من نماذج الذكاء الاصطناعي مع تجاوز تلقائي للحصص في حالة الفشل،
ويُبلغ عن حالات الفشل بصدق بدلًا من تزييف النجاح. يستخدم جارفيس Node.js وsystemd وواجهة برمجة تطبيقات Telegram،
وعميل Flutter، وجسر Android عبر إعدادات مُولّدة — وهو قيد الاستخدام اليومي منذ عام 2026.
لان المهارات المتبعه كثيره سأكتبها هنا
Node.js
JavaScript
Telegram Bot
Telegram API
Chatbot
Multi-Model Routing
AI Integration
Quota Failover
API Integration
Webhooks
Automation
Android Automation
MacroDroid
Notification Filtering
Linux
System Administration
systemd
VPS Administration
Free-Tier Optimization
Token Authentication
Log Redaction
Flutter
Mobile Client
Task Scheduling
Persistent Memory
Document Generation
Image Generation
Text-to-Speech Calls
Bilingual Chat (AR/EN)
Sudanese Arabic
Honest Failure Reporting
Self-Hosted
Node.js Runtime
Cloud Runtime Sync
Config-as-Code
Push Relay Polling
Seen-ID Deduplication
Content Dedup
Importance Filter
Threaded Replies
Remote Device Control
System Monitoring
Quota Tracking
Fallback Brain Routing
Runtime Model Router
Zero-Paid-Infrastructure
24/7 Operation
---