أوامر Bash في TypeScript؟ (فكرة عبقرية)

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00إحدى أبسط الطرق لجعل وكلاء الذكاء الاصطناعي الخاصين بك أكثر قوة هي ببساطة منحهم
00:00:03الوصول إلى bash، لكن ذلك قد يكون معقدًا بعض الشيء. فأنت بحاجة إلى صدفة (shell) حقيقية، ونظام ملفات،
00:00:09وخوادم وحاويات، وبشكل عام الكثير من البنية التحتية، أو على الأقل كان هذا هو الحال سابقًا.
00:00:13لكن ماذا لو أخبرتك أن هناك طريقة أبسط؟ يمكنك في الواقع استخدام تنفيذ typescript
00:00:18لـ bash. أعلم أن هذا قد يبدو جنونيًا بعض الشيء، لكن صدقني هذا أمر رائع للغاية
00:00:22ويمكنه حتى توفير المال لك. دعني أريك كيف.
00:00:30هذه حزمة جديدة تسمى justbash ويمكنك أن ترى في ملف التوضيح (readme) أنها تقول “بيئة
00:00:34bash محاكاة مع نظام ملفات افتراضي في الذاكرة مكتوب بلغة typescript. تم تصميم
00:00:38هذا لوكلاء الذكاء الاصطناعي الذين يحتاجون إلى بيئة bash آمنة ومعزولة.”
00:00:42ولكن قبل أن أريك كيف يمكنك ربط هذا بوكلاء الذكاء الاصطناعي لمنحهم
00:00:45المزيد من القدرات، أريد فقط أن أريك بعض الأكواد البسيطة جدًا ليكون لديك سياق
00:00:48حول كيفية عمل ذلك. هنا أقوم ببدء بيئة bash جديدة من حزمة justbash
00:00:53وداخلها يمكننا تشغيل أوامر bash الخاصة بنا. نحن نستخدم env.exec وهنا ببساطة
00:00:57أقوم بتشغيل أمر bash وهو echo hello وأطلب حفظ ذلك في ملف يسمى
00:01:01greeting.txt. ثم في السطر التالي أقوم بتشغيل exec مرة أخرى في نفس البيئة قائلًا
00:01:06أنني أريد الآن قراءة ملف greeting.txt هذا. ويمكنك أن ترى أنه يمكننا فعليًا تسجيل
00:01:10المخرجات القياسية للنتيجة التي نحصل عليها هناك، ورمز الخروج وأيضًا متغيرات
00:01:14البيئة، وعندما أقوم بتشغيل هذا يمكنك أن ترى أنه نجح في كتابة هذا الملف وأيضًا
00:01:18قراءته. نحصل على رمز خروج صفر ثم متغيرات البيئة في صدفة
00:01:22bash المحاكاة الخاصة بنا. لكن الشيء المهم الذي يجب تذكره هنا هو كما قلت، هذه مجرد
00:01:26صدفة bash محاكاة، إنها حرفيًا نسخة من أوامر bash تلك مكتوبة بلغة typescript.
00:01:30لذا فهي ليست متصلة فعليًا بأي صدفة حقيقية، إنها ببساطة تحول الأمر الذي
00:01:34نعطيه إياه هنا إلى typescript وتشغله. لذا فإن هذا الملف المسمى greeting.txt
00:01:39غير موجود في أي نظام ملفات حقيقي، بل هو في الواقع نظام ملفات افتراضي في الذاكرة بالرغم من
00:01:44وجود خيارات إذا كنت ترغب في ربط نظام ملفات حقيقي. لذا فإن الطريقة البسيطة للتفكير فيما
00:01:47تفعله هي أنها تأخذ ببساطة أمر bash الذي نكتبه داخل وظيفة exec
00:01:51وتحوله إلى وظيفة javascript ثم تقوم بتشغيلها، مما يعني أنها لا
00:01:55تحتاج إلى صدفة حقيقية ويمكننا رؤية ذلك في قاعدة الأكواد هنا. عندما أضع echo داخل
00:01:59exec فهي في الواقع تشغل وظيفة javascript هذه، ويمكننا أن نرى أن لديها ببساطة منطقًا
00:02:03لتحليل الأعلام التي يمتلكها أمر echo في bash وتحويلها إلى javascript
00:02:08ثم ببساطة طباعة مخرجات أي شيء نضعه بعد echo ويمكنك أن ترى
00:02:11بالأسفل هنا أنها ترجع ببساطة كائنًا يحتوي على المخرجات القياسية مع المخرجات في
00:02:15javascript والخطأ القياسي وأيضًا رمز الخروج. وإذا كنت تعتقد أنها لا تستطيع
00:02:19ربما التعامل مع جميع أساسيات bash، يمكنك في الواقع رؤية قائمة هنا بجميع
00:02:23الأوامر المدعومة وهي تحتوي حقًا على الكثير منها، مثل cat وcopy وawk و
00:02:27base64، ولديها أوامر متقدمة لمعالجة البيانات مثل jq وpython 3 وsqlite ويمكنك حتى
00:02:33تشغيل طلبات الشبكة أيضًا باستخدام curl. يمكنك في الواقع إعداد قائمة بيضاء بحيث تكون
00:02:36آمنة حقًا، وهناك أيضًا ميزات الصدفة هنا؛ فهي تحتوي على الأنابيب (pipes) وإعادة التوجيه وتسلسل
00:02:41الأوامر، إنها تمنحك حقًا كل ما توفره صدفة bash الأساسية. لذا يمكنك أن ترى
00:02:45أن الحزمة رائعة حقًا ولديها الكثير من الوظائف ولكنك ربما لا تزال
00:02:48تتساءل لماذا قد ترغب فعليًا في تنفيذ bash بلغة typescript وكيف يمكن أن يساعد ذلك وكلاءك
00:02:53ويوفر لك المال. حسنًا، للإجابة على ذلك دعني أريك إحدى حالات استخدامها مع
00:02:57تطبيق دردشة بسيط جدًا. الآن لنفترض أنني أردت في تطبيق الدردشة هذا التحدث عن ملف json هذا، وهو
00:03:02ملف json يحتوي على الكثير من السجلات، ولنقل أنني أردت أن أطلب من الذكاء الاصطناعي استرجاع
00:03:06معلومات معينة داخل هذا الملف أو ربما إجراء بعض التحليلات على بعض هذه الحقول، يمكنك
00:03:11أن ترى أنه ملف ضخم للغاية. إحدى أبسط الطرق ولكنها بالتأكيد خاطئة للقيام
00:03:15بذلك هي أن تأخذ محتويات الملف بأكمله وتضعها داخل المطالبة (prompt)، يمكنك
00:03:19أن ترى هنا أنني أستخدم ai sdk وأستخدم أيضًا gpt 5.2. إذا قمنا بتشغيل هذا الوكيل
00:03:24وطلبنا منه جلب سجل معين، يمكنك أن ترى أن المساعد سيرد ويمكنني
00:03:28تأكيد أن هذا صحيح لأن هذه النماذج الأكبر جيدة جدًا في استرجاع القيم من سياقها
00:03:33الكبير ولكن المشكلة هي أن هذا استخدم 133,000 توكن (token) وسيبدأ أيضًا
00:03:39في الانهيار إذا سألته بعض الأسئلة الأكثر تقدمًا، ربما تريد إجراء بعض التلاعب بالبيانات
00:03:43أو سؤاله عن بيانات ضمن نطاقات معينة. كما قلت، من الواضح أن هذه هي الطريقة
00:03:48الخاطئة للقيام بالأمور، لذا فإن الطريقة التالية التي ربما حاولت تجربتها من قبل هي طريقة RAG
00:03:51أو حتى منح الوكيل بيئة معزولة (sandbox) حتى يتمكن من تشغيل أوامر bash والتلاعب
00:03:56بالبيانات بهذه الطريقة، لكن المشكلة في هذه الأساليب هي أنك ستحتاج إلى الكثير من البنية التحتية.
00:04:00بدلاً من ذلك، دعونا نحاكي هذا باستخدام just bash. للقيام بذلك مع ai sdk يمكنك في الواقع
00:04:05استخدام حزمة bash tool المبنية فوق just bash وما يسمح لنا
00:04:09هذا بفعله هو أنه في نقطة نهاية api الخاصة بنا للدردشة يمكننا إنشاء أداة bash جديدة
00:04:13وتمرير أي ملفات نريدها أن تكون في بيئة bash المحاكاة الخاصة بنا، ففي حالتي
00:04:17أقوم بتمرير ملف json هذا الذي كان لدينا سابقًا، الملف الكبير جدًا، ثم أقوم أيضًا
00:04:21بإعداد الوجهة التي ستذهب إليها هذه الملفات؛ حيث ستذهب إلى مجلد workspace محاكى.
00:04:26بعد ذلك، كل ما نحتاج إلى فعله في البث (stream) الذي لدينا من ai sdk هو تمريره
00:04:31عبر أداة bash التي لدينا، وهي bashTool.bash، وقد قمت أيضًا بتمرير بعض
00:04:34تعليمات الوكيل التي يمكنك العثور عليها في مجلد node modules، وهي مجرد تعليمات
00:04:39وفرتها الحزمة لمساعدة وكيل الذكاء الاصطناعي الخاص بك على فهم كيفية استخدام أداة
00:04:42bash. الآن مع هذا الإعداد البسيط للغاية، إذا سألنا المساعد نفس السؤال بالضبط
00:04:46لجلب معلومة من ملف json هذا، فبدلاً من استخدام سياقه الخاص
00:04:50والحاجة إلى البحث كمن يبحث عن إبرة في كومة قش، يمكنك أن ترى أنه يذهب في الواقع
00:04:54ويشغل بعض أوامر bash، ولكن مرة أخرى هذا يتم في بيئة typescript المحاكاة الخاصة بنا.
00:04:58في هذه الحالة، حاول تشغيل أمر jq ولكن يبدو أنه واجه خطأ، لذا في
00:05:02الخطوة التالية قام بتشغيل أمر head bash حتى يتمكن من رؤية الشكل الفعلي لهذا الملف
00:05:06وبهذه الطريقة حصل على التنسيق الصحيح لأمر jq وأعطانا إجابتنا. لذا نعم، رغم أننا
00:05:10حصلنا على نفس الإجابة بالضبط وربما استغرق الأمر وقتًا أطول قليلاً، إلا أن المفتاح هنا
00:05:15هو أنه يمكنك أن ترى فعليًا أنه استغرق 6000 توكن إدخال بينما الطريقة الأخرى استغرقت
00:05:19133,000. هذه ببساطة طريقة أفضل بكثير للتعامل مع السياق الطويل،
00:05:24وهذه ليست ميزتها الوحيدة، فهي تصبح أقوى بكثير عندما تبدأ في
00:05:28طرح أسئلة أعمق حول بياناتك. على سبيل المثال، إذا سألته كم عدد السجلات بين
00:05:331000 و2500 التي تحتوي على metadata.active true، يمكنك أن ترى
00:05:37أنه يمكنه ببساطة الذهاب وتشغيل أمر bash والحصول على الإجابة فورًا. إذا جربت
00:05:41هذا بالفعل في النسخة الأخرى، أولاً سيستهلك الكثير من السياق وثانيًا ربما
00:05:45سيعطيك إجابة خاطئة بناءً على التخمين. هذا سيكون أدق بكثير لأنك
00:05:49ببساطة تقول للوكيل: مرحبًا، لديك وصول كامل إلى صدفة bash بالرغم من
00:05:53أنه تقنيًا لا يملك ذلك. إنها حقًا إضافة مجانية بسيطة يمكنك تقديمها
00:05:57لوكلاءك لجعلهم أقوى دون الحاجة إلى بنية تحتية إضافية، وهذا
00:06:01ما أحبه حقًا فيها. آمل أن أكون قد عرضت حالة استخدام واحدة فقط، لكن
00:06:05صدقني هناك الكثير غيرها؛ فكما رأينا سابقًا يمكنك تشغيل أوامر python وsql وcurl
00:06:10أساسية هنا، وإذا أردت يمكنك فعليًا ربط هذا بنظام ملفات حقيقي.
00:06:14أخبرني برأيك في just bash في التعليقات أدناه، وأثناء وجودك هناك اشترك
00:06:18وكالعادة، أراك في الفيديو القادم.

Key Takeaway

تعد حزمة Justbash أداة ثورية تمنح وكلاء الذكاء الاصطناعي قدرات Bash كاملة ومحاكاة برمجياً، مما يقلل التكاليف ويزيد الدقة دون الحاجة لخوادم أو حاويات حقيقية.

Highlights

تقديم حزمة Justbash كحل مبتكر لمحاكاة بيئة Bash باستخدام لغة TypeScript بالكامل دون الحاجة لبنية تحتية معقدة.

تعتمد الحزمة على نظام ملفات افتراضي في الذاكرة (In-memory file system) مما يوفر بيئة آمنة ومعزولة لوكلاء الذكاء الاصطناعي.

القدرة على تشغيل أوامر متقدمة مثل jq و curl و Python 3 و SQLite داخل البيئة المحاكاة بكفاءة عالية.

توفير هائل في استهلاك التوكنات (Tokens) بنسبة تصل إلى 95% عند التعامل مع الملفات الضخمة مقارنة بتمرير البيانات مباشرة في المطالبة.

سهولة الدمج مع أدوات الذكاء الاصطناعي مثل AI SDK لمنح الوكلاء قدرات تحليلية ودقة أكبر في استرجاع المعلومات.

دعم ميزات الصدفة (Shell) الأساسية مثل الأنابيب (Pipes) وإعادة التوجيه وتسلسل الأوامر لضمان تجربة مستخدم متكاملة.

Timeline

مقدمة وتحديات البنية التحتية التقليدية

يبدأ المتحدث بتوضيح مدى أهمية منح وكلاء الذكاء الاصطناعي الوصول إلى أوامر Bash لزيادة قوتهم وفعاليتهم في تنفيذ المهام. يشرح الصعوبات التقليدية المتمثلة في الحاجة إلى أنظمة ملفات حقيقية، خوادم، وحاويات برمجية معقدة تتطلب بنية تحتية ضخمة. يقدم المتحدث فكرة مبتكرة تعتمد على تنفيذ أوامر Bash مباشرة من خلال لغة TypeScript لتجاوز هذه التعقيدات. يهدف هذا الجزء إلى إثارة اهتمام المطورين بحل أبسط وأقل تكلفة مما كان متاحاً سابقاً. يؤكد الفيديو أن هذا التوجه لا يبدو جنونياً فحسب، بل هو حل عملي يوفر الكثير من المال والجهد.

استكشاف Justbash وآلية العمل البرمجية

يستعرض المتحدث حزمة برمجية جديدة تسمى Justbash، وهي عبارة عن بيئة Bash محاكاة بنظام ملفات افتراضي مكتوب بلغة TypeScript. يقوم بشرح كود برمجى بسيط يوضح كيفية بدء البيئة وتشغيل أوامر مثل echo لحفظ النصوص وقراءتها من ملفات افتراضية. يوضح أن هذه الملفات لا توجد في القرص الصلب بل في الذاكرة، حيث يتم تحويل أوامر Bash إلى وظائف JavaScript فورية. يشرح المتحدث أن النظام يعيد كائنات تحتوي على المخرجات القياسية (stdout) ورموز الخروج (exit code) لضمان الدقة. تساعد هذه المحاكاة في توفير بيئة معزولة تماماً وآمنة لتنفيذ الأكواد دون المساس بالنظام الحقيقي.

الأوامر المدعومة والميزات المتقدمة

ينتقل الفيديو لاستعراض القائمة الطويلة من الأوامر التي تدعمها الحزمة، والتي تتجاوز الأوامر البسيطة لتشمل أدوات قوية مثل cat و awk و jq. يشير المتحدث إلى وجود دعم لأدوات معالجة البيانات المتقدمة مثل Python 3 و SQLite وطلبات الشبكة عبر curl. يتميز النظام بدعم ميزات الصدفة المتقدمة مثل الأنابيب (Pipes) وإعادة توجيه المخرجات، مما يجعلها بيئة متكاملة. يوضح الفيديو إمكانية إعداد قائمة بيضاء للأوامر لضمان أعلى مستويات الأمان عند استخدامها مع الذكاء الاصطناعي. تظهر هذه القدرات أن الحزمة ليست مجرد لعبة بسيطة، بل أداة احترافية قادرة على التعامل مع مهام البيانات المعقدة.

تطبيق عملي: تحليل البيانات الضخمة وتوفير التكاليف

يقدم المتحدث مثالاً عملياً حياً باستخدام ملف JSON ضخم يحتوي على آلاف السجلات لاستخراج معلومات محددة. يقارن بين الطريقة الخاطئة التي تستهلك 133,000 توكن عبر وضع الملف بالكامل في المطالبة، والطريقة الذكية باستخدام Justbash. عند استخدام أداة Bash المحاكاة، انخفض استهلاك التوكنات إلى 6,000 توكن فقط، مما يمثل توفيراً هائلاً في التكاليف. يوضح الفيديو كيف قام الوكيل بتصحيح أخطائه تلقائياً، حيث جرب أمر jq وفشل ثم استخدم أمر head لفهم بنية الملف قبل النجاح. يثبت هذا المثال أن منح الوكيل أدوات برمجية يجعله أكثر ذكاءً وقدرة على حل المشكلات المعقدة بكفاءة.

الخاتمة وحالات الاستخدام المستقبلية

يختتم المتحدث الفيديو بالتأكيد على أن دقة الإجابات تزداد بشكل كبير عند استخدام أوامر Bash الحقيقية بدلاً من التخمين القائم على السياق. يطرح مثالاً إضافياً حول تصفية البيانات بناءً على شروط معينة، حيث نجح الوكيل في تقديم أرقام دقيقة بفضل قدرات المعالجة البرمجية. يشدد على أن هذه الإضافة تعتبر "مجانية" من حيث البنية التحتية لأنها تعمل بالكامل داخل الكود البرمجي للتطبيق. يشجع المطورين على تجربة Justbash وربطها بأنظمة ملفات حقيقية إذا دعت الحاجة لزيادة الفعالية. ينتهي المقطع بدعوة المشاهدين للمشاركة بآرائهم في التعليقات والاشتراك لمتابعة المزيد من الأفكار العبقرية في عالم البرمجة.

Community Posts

View all posts