Skip to main content
ينفّذ OpenClaw أوامر الصدفة عبر أداة exec ويحتفظ بالمهام طويلة التشغيل في الذاكرة. تدير أداة process تلك الجلسات التي تعمل في الخلفية.

أداة exec

المعلمات: السلوك:
  • تعيد عمليات التشغيل في الواجهة الأمامية المخرجات مباشرةً.
  • عند نقل التشغيل إلى الخلفية (صراحةً أو بسبب انقضاء مهلة yieldMs)، تعيد الأداة status: "running" مع sessionId ونهاية قصيرة من المخرجات.
  • ترث عمليات التشغيل في الخلفية وعمليات yieldMs القيمة tools.exec.timeoutSec ما لم يمرّر الاستدعاء قيمة timeout صريحة.
  • تبقى المخرجات في الذاكرة حتى يتم استطلاع الجلسة أو مسحها.
  • إذا كانت أداة process غير مسموح بها، تعمل exec بشكل متزامن وتتجاهل yieldMs وbackground.
  • تتلقى أوامر exec المنشأة المتغير OPENCLAW_SHELL=exec لتمكين قواعد الصدفة/ملف التعريف المدركة للسياق.
  • للعمل طويل التشغيل الذي يبدأ الآن: ابدأه مرة واحدة واعتمد على إيقاظ الإكمال التلقائي (عند تمكينه) بمجرد أن يصدر الأمر مخرجات أو يفشل.
  • إذا لم يكن إيقاظ الإكمال التلقائي متاحًا، أو كنت تحتاج إلى تأكيد نجاح صامت لأمر ينتهي بنجاح دون مخرجات، فاستطلع باستخدام process.
  • لا تحاكِ التذكيرات أو المتابعات المؤجلة باستخدام حلقات sleep أو الاستطلاع المتكرر — استخدم Cron للعمل المستقبلي.

تجاوزات متغيرات البيئة

الإعداد (مفضّل على تجاوزات متغيرات البيئة)

ربط العمليات الفرعية

عند إنشاء عمليات فرعية طويلة التشغيل خارج أداتي exec/process (إعادة تشغيل CLI، ومساعدات Gateway)، أرفق مساعد جسر العمليات الفرعية لكي يعيد توجيه إشارات الإنهاء ويفصل المستمعين عند الخروج/الخطأ. يمنع ذلك بقاء عمليات يتيمة على systemd ويحافظ على اتساق الإيقاف عبر المنصات.

أداة process

الإجراءات: ملاحظات:
  • لا تُدرج أو تُحفظ إلا الجلسات التي تعمل في الخلفية — في الذاكرة فقط، وليس على القرص. تُفقد الجلسات عند إعادة تشغيل العملية.
  • تمنع جلسة خلفية نشطة التعليق التعاوني للمضيف وإعادة التشغيل الآمنة لـ Gateway حتى يؤكد مالك العملية خروجها الفعلي.
  • يمكن لـ process remove إخفاء جلسة قيد التشغيل فورًا بعد طلب إنهائها؛ يظل التعليق وإعادة التشغيل محظورين حتى تأكيد الخروج.
  • لا تُحفظ سجلات الجلسة في سجل المحادثة إلا إذا شغّلت process poll/log وسُجلت نتيجة الأداة.
  • يقتصر نطاق process على كل وكيل؛ ولا يرى إلا الجلسات التي بدأها ذلك الوكيل.
  • استخدم poll/log لمعرفة الحالة أو السجلات أو تأكيد الإكمال عندما لا يكون إيقاظ الإكمال التلقائي متاحًا.
  • استخدم log قبل استعادة جلسة CLI تفاعلية، لكي يظهر النص الحالي وحالة stdin وتلميح انتظار الإدخال معًا.
  • استخدم write/send-keys/submit/paste/kill عندما تحتاج إلى إدخال أو تدخل.
  • يتضمن process list قيمة name مشتقة (فعل الأمر مع الهدف) للمراجعة السريعة.
  • لا تعرض process list وpoll وlog القيمة waitingForInput إلا عندما لا يزال للجلسة stdin قابلًا للكتابة وقد ظلت خاملة مدة تتجاوز عتبة انتظار الإدخال (القيمة الافتراضية 15000 مللي ثانية، OPENCLAW_PROCESS_INPUT_WAIT_IDLE_MS).
  • يستخدم process log قيمتي offset/limit المستندتين إلى الأسطر. عند حذف كلتيهما، يعيد آخر 200 سطر مع تلميح للتنقل بين الصفحات. عند تعيين offset دون limit، يعيد المحتوى من offset إلى النهاية (دون حد أقصى قدره 200).
  • تنتظر قيمة timeout في poll حتى ذلك العدد من المللي ثواني قبل العودة؛ وتُحصر القيم التي تتجاوز 30000 عند 30000.
  • الاستطلاع مخصص لمعرفة الحالة عند الطلب، وليس لجدولة حلقات الانتظار. إذا كان ينبغي تنفيذ العمل لاحقًا، فاستخدم Cron.

أمثلة

شغّل مهمة طويلة واستطلعها لاحقًا:
افحص جلسة تفاعلية قبل إرسال الإدخال:
ابدأ فورًا في الخلفية:
أرسل stdin:
أرسل مفاتيح PTY:
أرسل السطر الحالي:
الصق نصًا حرفيًا:

ذو صلة