الانتقال إلى المحتوى
الأدلة

تشغيل exec في الخلفية وأداة process في OpenClaw

كيف ينتقل الأمر إلى الخلفية بعد مهلة التحويل، وسجل الجلسات بحدود مخرجاته ومدد بقائه، وبيئات العمال التي تتجاوز عمر الدور، وإجراءات process التسعة من poll إلى paste

مدة القراءة: ⁨7⁩ د

العمل طويل الأمد هو ما يجعل أداة shell إما مفيدة وإما عبئًا. وجواب OpenClaw هو نقل الأمر إلى الخلفية، وإعادة معرف جلسة، ومنح الوكيل أداة منفصلة لاستطلاع حالته وتغذيته بالإدخال وإنهائه. والتفاصيل الجديرة بالمعرفة هي تلك التي تحدد ما إذا كانت المخرجات ستبقى، وما إذا كانت العملية ستبقى، وما الذي ينبغي للوكيل فعله بدل الانتظار عبر sleep.

النقل إلى الخلفية والاحتفاظ بالمخرجات

  • التشغيل في الواجهة الأمامية يعيد المخرجات المحتفظ بها مباشرة ويفصح عندما تكون مخرجات سابقة قد تجاوزت السقف الإجمالي؛ وعندما ينقل الأمر إلى الخلفية، صراحة أو بتجاوز مهلة التحويل، تعيد الأداة الحالة running ومعرف جلسة ومقطعًا قصيرًا من آخر المخرجات، وتظل عمليات التشغيل في الخلفية ترث مهلة exec المهيأة ما لم يمرر الاستدعاء مهلته الخاصة.
  • إعادة معرف جلسة لا توقف مهلة العملية: لتشغيل خدمة دائمة على gateway أو في بيئة معزولة، انقل الأمر إلى الخلفية مع تعطيل المهلة وأوقفه لاحقًا بالإجراء kill، مع بقاء حدود دورة حياة المضيف والعامل سارية.
  • تبقى المخرجات في الذاكرة حتى السقف الإجمالي لكل جلسة إلى أن تُستطلع الجلسة أو تمسح؛ وتنتهي صلاحية الجلسات المكتملة بعد مدة تحسب من لحظة الاكتمال، إذ يلتقط كل exec إعداد الاحتفاظ الخاص بوكيله لحظة قبوله، ويحتفظ السجل بما لا يزيد على 50 جلسة مكتملة ومليوني حرف، فيطرد الأقدم أولًا بينما تحتفظ أحدث جلسة مكتملة بمخرجاتها الإجمالية ضمن السقف.
  • توجد هذه الضوابط كمفاتيح إعداد لا كمتغيرات بيئة: مهلة التحويل إلى الخلفية عشر ثوان افتراضيًا، ومهلة كل استدعاء 1800 ثانية، ومدة التنظيف 30 دقيقة، وإشعار الخروج مفعل افتراضيًا ويضيف إلى الطابور حدث نظام مع طلب heartbeat، ويمكن لإعداد إضافي أيضًا أن يرسل إشعارًا لعمليات التشغيل الناجحة التي لم تنتج أي مخرجات.
الاستطلاع مخصص للاستعلام عن الحالة عند الطلب، لا لجدولة حلقات الانتظار. وإذا كان ينبغي أن يحدث العمل لاحقًا، فاستخدم cron.

العمال والتنظيف وأداة process

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

الإجراءات التسعة

  • يعرض الإجراء list الجلسات الجارية والمكتملة مع اسم مشتق، ويسحب poll المخرجات الجديدة ويبلغ عن حالة الخروج، ويقرأ log المخرجات المجمعة مع تقسيم إلى صفحات حسب الأسطر وتلميحات لاستعادة الإدخال، ولا تصنف هذه الإجراءات الثلاثة جلسة على أنها تنتظر إدخالًا إلا عندما يظل stdin قابلًا للكتابة وتكون الجلسة خاملة لمدة تتجاوز الحد.
  • يرسل write إلى stdin مع علامة نهاية اختيارية، ويرسل send-keys رموز مفاتيح صريحة أو بايتات إلى جلسة مدعومة بطرفية، ويرسل submit محرف الإرجاع، ويرسل paste نصًا حرفيًا مغلفًا افتراضيًا بوضع bracketed paste؛ وينهي kill جلسة جارية، ويزيل clear جلسة مكتملة، وينفذ remove أيهما ينطبق.
  • لا تدرج وتحفظ إلا الجلسات المنقولة إلى الخلفية، وذلك في الذاكرة وليس على القرص أبدًا، لذا تضيع عند إعادة التشغيل؛ ونطاق الأداة محصور في كل وكيل فلا ترى إلا جلسات ذلك الوكيل، والجلسة الخلفية الحية تمنع التعليق التعاوني وإعادة تشغيل gateway الآمنة إلى أن يتأكد الخروج، ومهلة الاستطلاع التي تتجاوز 30 ثانية تقيد عند هذا الحد.

تبدأ أداة exec في OpenClaw هذه الجلسات، ويعرضها سجل مهام OpenClaw في الخلفية أثناء تشغيلها.

ما الذي تفعله بدل الانتظار

الوثائق صريحة بشأن هذا النمط الخاطئ: لا تحاك التذكيرات أو المتابعات المؤجلة بحلقات sleep أو بالاستطلاع المتكرر. للعمل الذي يبدأ الآن، ابدأه مرة واحدة واعتمد على الإيقاظ التلقائي عند الاكتمال حين يكون مفعلًا ويصدر الأمر مخرجات أو يفشل، ثم استخدم أداة process للسجلات أو الحالة أو الإدخال أو التدخل. أما العمل الذي ينبغي أن يحدث لاحقًا أو وفق جدول، فالمجدول هو الواجهة الصحيحة له. وقراءة السجل قبل استعادة أمر تفاعلي هي العادة الأخرى الجديرة بالحفاظ عليها، لأن النص الكامل للجلسة وحالة stdin وتلميح انتظار الإدخال لا تظهر معًا إلا هناك. يتناول دليل الأتمتة في OpenClaw المجدول، ويبين شرح العزل في OpenClaw المكان الذي تعمل فيه هذه الأوامر فعليًا.

على Diali

على Diali، يعمل المساعد في بيئة تشغيل خاصة به مع حالة محفوظة على وحدة تخزين دائمة، لذا ينتمي الأمر الخلفي إلى بيئة تشغيل ذلك العميل وحده؛ وتتوفر لقطات يومية واستعادة بنقرة واحدة عبر إضافة «النسخ الاحتياطية» (مضمنة في Max). تصف صفحة OpenClaw المستضاف على Diali المساعد المستضاف، وتصف صفحة الأمان في Diali الحدود المحيطة بما يمكنه تشغيله.

  • بعد مهلة التحويل، يعيد الأمر معرف جلسة لا سيلًا من المخرجات.
  • في الذاكرة فقط: الجلسات تضيع عند إعادة التشغيل، ولها سقف وتنتهي صلاحيتها.
  • الإيقاظ عند الاكتمال أفضل من الاستطلاع؛ والمجدول أفضل من الانتظار.
ابدأ الآن

كفاك قراءة، ابنِ وكيلك الخاص

جهز وكيلًا، واختر قناة، واجعله يعمل داخل التطبيق المفتوح لديك دائمًا.