00:00:00حسناً، تدّعي Multicore أنها الأداة التي يمكنها تحويل عملائك إلى زملاء عمل حقيقيين،
00:00:05بحيث يمكن إعداد Claude Code وOpenCode وCodex CLI وHermes وغيرها باستخدام
00:00:11مطالبات النظام الخاصة بها ومهاراتها الخاصة وتعيين مهام لها مع تحديثات الحالة، ويمكنها تنبيهك
00:00:16إذا احتاجت إلى مساعدتك، وجدولة المهام المتكررة، ويمكنك التحدث مباشرة إلى عميلك.
00:00:21لكن هل تستحق هذه النسخة مفتوحة المصدر من إجراءات Claude والعملاء المدارين وقتك حقاً؟
00:00:27اضغط على اشتراك ودعنا نكتشف ذلك.
00:00:32الآن، الطريقة المقصودة لاستخدام Multicore هي تثبيتها على جهاز عملك، الذي يحتوي بشكل مثالي
00:00:37على عميل برمجة يعمل عبر الطرفية مثل Claude Code أو OpenCode، ثم توصيله بـ
00:00:42واجهة مستخدم سحابية لـ Multicore.
00:00:44لكننا لن نفعل ذلك، سنتبع مسار الاستضافة الذاتية بالكامل.
00:00:48لذا سنقوم بتثبيت Multicore على خادم افتراضي خاص (VPS)، وسأشرح السبب لاحقاً.
00:00:52في الواقع، عادةً ما أتخطى مرحلة الإعداد بأكملها، ولكن بالنسبة للاستضافة الذاتية مع Multicore، هناك
00:00:58بضعة أشياء كان عليّ اكتشافها لم تكن موجودة في الوثائق.
00:01:01لذا سنستعرض ذلك أولاً قبل المرور ببعض الأمثلة حول كيفية استخدامه.
00:01:05لقد قمت بالفعل بإعداد Multicore على خادم Hetzner VPS جديد عن طريق تشغيل هذا الأمر، وسيؤدي ذلك
00:01:10إلى استخدام Docker لتثبيت Multicore.
00:01:12لذا تأكد من تثبيت Docker على خادمك الافتراضي.
00:01:15وعند تشغيل كل شيء، سيكون لديك ثلاث حاويات تشغل واجهة Multicore الخلفية،
00:01:19والتي أعتقد أنها مكتوبة بلغة Go، وواجهة Multicore الأمامية، وهي TypeScript وNext.js،
00:01:24وقاعدة بيانات Postgres المستخدمة لتخزين معلومات الجلسة.
00:01:27بعد ذلك، ستحتاج إلى تشغيل أمر إعداد الاستضافة الذاتية لـ Multicore.
00:01:30لكن واجهتني بعض المشاكل في ذلك.
00:01:31لذا إذا قمنا بتشغيل أمر الاستضافة الذاتية، وإذا قمت بإعادة تعيين إعداداتي الحالية
00:01:35ومساحة عملي، سترى أنه يطلب مني المصادقة عبر هذا الرابط، الذي سينقلك
00:01:39إلى هذه الشاشة.
00:01:40وإذا أضفت عنوان بريدك الإلكتروني وضغطت على متابعة، فسيتعين عليك إدخال رمز إعادة الإرسال.
00:01:45لقد واجهت الكثير من المتاعب مع هذا القسم.
00:01:48لذا أوصيك بتجنب عملية إعادة الإرسال هذه تماماً من خلال الدخول إلى
00:01:53دليل خادم multicore.، وفتح ملف env، وتأكد من ضبط بيئة التطبيق على
00:01:58التطوير (development)، وتأكد أيضاً من أن قيمة مفتاح Resend API فارغة.
00:02:02سيجعل هذا الرمز بهذه القيمة.
00:02:04بمجرد القيام بذلك، ابق داخل هذا الدليل وقم بتشغيل هذا الأمر لإعادة تشغيل الحاويات
00:02:09باستخدام ملف متغيرات البيئة المحدث.
00:02:11وبعد القيام بذلك، يجب أن تكون قادراً على تسجيل الدخول باستخدام ستة أرقام ثمانية.
00:02:15الآن لم ننتهِ تماماً بعد.
00:02:17من هنا، اذهب إلى بيئات التشغيل (runtimes)، ويمكنك أن ترى أن لدي بيئتي تشغيل مختلفتين مثبتتين،
00:02:21لكن يجب ألا يكون لديك أي شيء لأنه لم يتم إعداده بعد.
00:02:24إذا قمت بتشغيل حالة برنامج Multicore Daemon، يمكنك أن ترى الآن أن حالتي قيد التشغيل وتستخدم هذه
00:02:28العملاء مع مساحة عمل واحدة، لكن يجب أن يظهر لديك خطأ.
00:02:32وهذا لأنك تحتاج أولاً إلى تثبيت أداة برمجة عبر الطرفية على خادمك الافتراضي.
00:02:36لذا فقد قمت بتثبيت Claude Code وOpen Code.
00:02:39ومن أجل توصيل بيئة التشغيل تلك بمثبت Multicore الخاص بك، سيتعين عليك الانتقال إلى الإعدادات،
00:02:44ورموز API، ثم إنشاء رمز API جديد، ثم تشغيل أمر تسجيل الدخول لـ Multicore مع علم الرمز
00:02:50ولصق رمزك هنا.
00:02:52بعد ذلك، إذا كان لديك برنامج Multicore Daemon يعمل، فأوقفه قبل البدء به مرة أخرى.
00:02:56يتحقق برنامج Daemon في Multicore من ملفات تنفيذ الـ harness المثبتة، ويستعلم عن المهام من Multicore
00:03:01لتقديمها للعملاء ويقوم بإنشاء عملاء متعددين باستخدام أشجار العمل (work trees) من أجل إنجاز هذه المهام.
00:03:07تم.
00:03:08لذا بمجرد القيام بذلك، يجب أن يظهر برنامج Daemon الآن بيئات التشغيل المتاحة لديك.
00:03:11وجمال توصيله بهذه الطريقة هو أنه يمكنك إضافة أجهزة متعددة إلى
00:03:15مثبت Multicore الخاص بك.
00:03:16لذا إذا كان لديك خوادم افتراضية متعددة، يمكنك تثبيت Multicore على جميعها وتوصيلها
00:03:20بواجهة مستخدم واحدة باستخدام رموز API المختلفة الخاصة بك.
00:03:23حسناً، بعد الانتهاء من الإعداد، دعنا نستعرض بعض المهام البسيطة مع Multicore.
00:03:28ولن أستعرض الإمكانات الكاملة.
00:03:30لذا فإن وجود عملاء متعددين مع مشاريع متعددة وإضافة مهام متعددة، أريد فقط أن أوضح
00:03:35لك ميزات فردية حتى تتمكن من تخيل مدى قوة Multicore، إذا كانت هذه هي الطريقة
00:03:39التي تود العمل بها.
00:03:40قبل أن تتمكن من القيام بأي شيء باستخدام Multicore، سيتعين عليك إنشاء عميل.
00:03:43وقد قمت بالفعل بإنشاء واحد هنا يسمى Medibot، ولكن يمكنك إنشاء واحد بالنقر فوق زر الجمع هذا
00:03:48واتباع التعليمات.
00:03:50إذن هذا الروبوت الطبي مشابه أو لديه مطالبة نظام مشابهة لتلك التي قمت بإنشائها في فيديو
00:03:56العملاء المدارين من Claude الذي يحصل ببساطة على معلوماتي الطبية من مستودع GitHub خاص، و
00:04:02يمكنني التحدث معه عبر Slack.
00:04:04الآن لأن لدي المزيد من الحرية مع Multicore بمعنى أن لدي خادمي الافتراضي الخاص
00:04:08ويمكنني إدارة ذلك مباشرة، بدلاً من جعل هذا العميل يستنسخ ذلك المستودع من
00:04:12GitHub، فقد قمت بالمضي قدماً واستنسخته بنفسي في هذا الدليل.
00:04:16الآن بالإضافة إلى مطالبات النظام، يمكنك إعطاء عميلك مهارات مخصصة.
00:04:19لاحظ أن العميل سيتمكن من الوصول إلى المهارات التي قمت بتثبيتها على واجهة سطر الأوامر (CLI) الخاصة بك، ولكن يمكنك
00:04:24إضافة مهارات مباشرة في واجهة المستخدم إذا كنت تريد ذلك هنا، وهو ما قمت به كمهارة اختبار، ولكن
00:04:29لن أقوم بإضافتها إلى العميل.
00:04:30هناك أيضاً بيئات وكذلك وسائط مخصصة.
00:04:33نظراً لأن العملاء يستخدمون أداة CLI، في هذه الحالة، سيستخدم open code run، يمكنني
00:04:37إضافة أعلام مخصصة إذا كنت أريد أن يستخدم هذا العميل نموذجاً معيناً فقط وهكذا.
00:04:42ولكن افتراضياً، سيستخدم العميل النموذج الموجود لديك في CLI.
00:04:46لذا إذا قمت بتشغيل open code الآن، يمكنك أن ترى أنه يستخدم نموذج big pickle من OpenCodeZen.
00:04:50الآن يمكنني إنشاء مهمة أو قضية بالنقر هنا، وسأطلق على هذه القضية اسم سؤال طبي
00:04:54مع مطالبة "هل يمكنك التحقق من معلوماتي الطبية وإخباري إذا كان بإمكاني
00:04:59تناول الكالاماري".
00:05:00الآن إذا كنت قد استخدمت أي أداة لتتبع القضايا من قبل، فسيظهر هذا مألوفاً جداً.
00:05:04يمكنك تحديد الأولويات، وتعيين الأشخاص، وإضافة تواريخ الاستحقاق، وما إلى ذلك.
00:05:08ولكنني أوصيك بشدة بإنشاء القضية دائماً قبل تعيين شخص ما لأن
00:05:13بمجرد تعيين روبوت لهذه القضية، يبدأ العمل عليها على الفور.
00:05:17للتأكد من أنك مرتاح لكل ما كتبته، تحقق جيداً.
00:05:21وبمجرد الانتهاء، قم بتعيينها لروبوت.
00:05:23لذا سأقوم بتعيينها لـ Medibot وإنشاء القضية.
00:05:26ومن هناك، سيبدأ الروبوت العمل عليها.
00:05:28يمكنني تتبع الأمر داخل القضايا هنا.
00:05:30وإذا نقرنا على القضية، يمكننا أن نرى أن Medibot يعمل على الفور.
00:05:34الآن بينما يتم ذلك، سأنقر على الطيار الآلي (autopilot).
00:05:36وهذه هي النسخة مفتوحة المصدر من إجراءات Claude.
00:05:39يمكننا النقر على البدء من الصفر ويمكننا تحديد عميل ويمكننا ضبط عدد المرات التي
00:05:44نريد فيها تشغيل هذه المهمة.
00:05:45الآن على عكس إجراءات Claude، لا يوجد خيار لمشغلات API أو مشغلات أحداث GitHub.
00:05:51ربما سيأتي ذلك في المستقبل.
00:05:53ولكني سأعطي هذا مطالبة مشابهة لفيديو إجراءات Claude لجلب أحدث
00:05:57قضايا هذه النشرات الإخبارية الثلاث عبر RSS.
00:06:00وبمجرد الحصول على هذه القضايا، اعثر على أفضل 10 مقالات يمكن استخدامها في فيديو YouTube.
00:06:05سيحدث هذا يومياً في الساعة 9 صباحاً بتوقيت لندن.
00:06:08ومن الناحية المثالية، ستحتاج إلى عميل متخصص في البحث يجيد اختيار مواضيع لـ YouTube.
00:06:14ولكن في الوقت الحالي سنلتزم بـ Medibot وسنضغط على إنشاء.
00:06:17ثم يمكننا النقر على هذا الطيار الآلي والنقر على تشغيل الآن فقط لرؤيته أثناء العمل.
00:06:21سيؤدي ذلك إلى إنشاء قضية جديدة في قائمة المهام (todo).
00:06:23وسنتركه يعمل لبضع دقائق ونعود للتحقق من قضيتنا الأخرى، التي
00:06:28تم نقلها الآن إلى "قيد المراجعة" (in review) بواسطة العميل.
00:06:30لذا هنا، يقول إنه بناءً على سجلاتي الطبية، لدي حساسية من المحار، وهو أمر صحيح و
00:06:35يجب ألا أتناول الكالاماري، ثم يقدم المزيد من المعلومات هنا حول حساسيتي.
00:06:40ويمكننا أيضاً النقر هنا لرؤية ما فعله العميل بالضبط.
00:06:43لذا يمكننا توسيع سجل التنفيذ ورؤية أنه قام ببعض استدعاءات أدوات Bash.
00:06:48في الواقع، الكثير من استدعاءات أدوات Bash للبحث عن دليل المعلومات الطبية وتركه يبحث في
00:06:53كامل دليل المنزل قبل العثور عليه والتحقق من معلوماتي الطبية لإعطاء العميل
00:06:59المعلومات الصحيحة.
00:07:00رائع.
00:07:01ومن هنا، يمكنني حتى الرد، شكراً على المعلومات.
00:07:04لماذا وضعت هذا في "قيد المراجعة" بدلاً من نقله إلى "تم"؟
00:07:07لذا سنترك ذلك للعميل.
00:07:09وإذا كنت لا تريد تتبع ما يقوله العميل يدوياً، يمكنك أيضاً الحصول على
00:07:12إشعارات من العميل.
00:07:14لذا هنا هو الرد من العميل الطبي.
00:07:16وقد حصلت أيضاً على تحديث من الطيار الآلي الخاص بنا.
00:07:19إليك واحد تم تشغيله تلقائياً منذ ساعة، ولكن هذا هو الذي قمنا بتشغيله للتو وقد
00:07:22انتهى للتو.
00:07:23لذا يمكننا أن نرى هنا أن هذه هي المطالبة التي أعطيتها له، وقد قام بتنفيذ المطالبة و
00:07:27يعطيني رداً.
00:07:28لذا إليك أفضل 10 اختيارات مع barn، وtemporal API، وهكذا.
00:07:33الآن المثير للاهتمام هنا هو أن العميل لن ينقل قضية بمجرد أن تصبح في "قيد المراجعة" مرة أخرى
00:07:37إلى "قيد التقدم" (in progress) و"قائمة المهام" (to do)، يمكنك أنت كإنسان القيام بذلك تلقائياً بالطبع.
00:07:41لذا يمكنني نقل هذا إلى "قيد التقدم" أو نقله إلى "محظور" إذا أردت ذلك.
00:07:45ولكن على الرغم من أنني سألت العميل الطبي سؤالاً، إلا أنه لم يعد إلى "قيد التقدم"
00:07:49أثناء إجابته على السؤال.
00:07:51إنه يبقى فقط في "قيد المراجعة" لذا أحتاج للنقر عليه لمعرفة متى ينتهي ويمكننا أن نرى
00:07:55لماذا نقله إلى "قيد المراجعة" منذ أن أصبحت خطوة سير العمل القياسية بدلاً من نقله
00:08:00إلى "تم".
00:08:01لذا فهو ينتظر مني، الإنسان، نقله إلى "تم"، وهو أمر منطقي نوعاً ما.
00:08:05من هنا يمكنني الاستمرار في التحدث إلى العميل، وترك رد، وترك تعليقات، وإرفاق
00:08:09ملفات ورموز تعبيرية، أو إذا كنت أريد فقط طرح سؤال عابر دون المرور بـ
00:08:14عملية تتبع القضايا بأكملها، يمكنني النقر هنا والتحدث إلى عميلي مباشرة.
00:08:18الآن لأكون صادقاً، لست من أكبر المعجبين بالتواصل مع العملاء عن طريق تعيين
00:08:22مهام ومشاهدتها تتقدم عبر لوحة Kanban.
00:08:25لهذا السبب لم أجرب مشاريع مثل Paperclip أو Vibe Kanban.
00:08:29أنا لا أهتم حقاً بالأولويات أو تواريخ الاستحقاق، أميل للعمل على مشروع واحد أو ربما مشروعين
00:08:34في كل مرة مع العملاء وأحب أن يكون لدي المزيد من الحوار مع عملائي، وأرى بالفعل
00:08:39ما يفعلونه، والأدوات التي يستخدمونها والمشكلات التي يواجهونها حتى أتمكن من المساعدة في تصحيح الأخطاء معهم.
00:08:45ولكن هذا لا يعني أنني لا أحب فكرة Malteka، في الواقع أحب ميزة المهام المجدولة
00:08:50وأحب حقيقة أنه يمكنك استضافتها ذاتياً بالكامل وأعتقد أيضاً أنها أداة صلبة جداً
00:08:55تعد أرخص بكثير إذا كنت تستخدم نموذجاً مختلفاً بدلاً من استخدام بعض العملاء المدارين
00:08:59من Claude أو إجراءات Claude.
00:09:02ولكني سأقول إنها تقنية إلى حد ما في عملية إعدادها، يجب أن تعرف نوعاً ما
00:09:06ما تفعله، خاصة إذا كنت تريد الحفاظ على الأشياء آمنة وهذه هي ميزة
00:09:11العملاء المدارين أو الإجراءات التي تهتم بكل هذه الأشياء من أجلك من خلال استضافة الأشياء
00:09:16على البنية التحتية لـ Topics وحقيقة أنه يمكنك استخدام الموصلات للتواصل مع
00:09:20عميلك تجعل الأمور أسهل قليلاً لأنه إذا كنت تريد القيام بنفس الشيء في Malteka،
00:09:24حسناً يمكنك استخدام الموقع المستجيب على هاتفك ولكن سيتعين عليك وضع الأشياء يدوياً
00:09:29معاً إذا كنت تريد استخدام Slack أو Telegram أو Discord.
00:09:33وهذا هو السبب في أنني اخترت مسار الاستضافة الذاتية فقط بسبب الأمان، إذا كان هناك شيء
00:09:37متصل بالإنترنت فمن المؤكد أنه قابل للاختراق، أعني أنه يمكنك استخدام Malteka بالكامل
00:09:41محلياً، لذا قم بتثبيتها على جهازك المحلي وقم بتشغيل واجهة المستخدم محلياً بحيث لا تكون متصلة
00:09:46بالإنترنت، ولكن إذا كنت تريد توصيلها بالإنترنت فأنا أوصي باتباع
00:09:50مسار الاستضافة الذاتية باستخدام Tailscale بحيث لا يكون خادمك مكشوفاً تماماً والتأكد من أنك
00:09:55محدث دائماً بأحدث الإصدارات.