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.