أداة التنفيذ في الخلفية + أداة العمليات
يقوم OpenClaw بتشغيل أوامر الصدفة عبر أداةexec ويحتفظ بالمهام طويلة الأمد في الذاكرة. تدير أداة process جلسات الخلفية تلك.
أداة exec
المعلمات الأساسية:command(مطلوب)yieldMs(الافتراضي 10000): الانتقال التلقائي إلى الخلفية بعد هذا التأخيرbackground(قيمة منطقية): التشغيل في الخلفية فورًاtimeout(بالثواني، الافتراضي 1800): إنهاء العملية بعد انتهاء هذه المهلةelevated(قيمة منطقية): التشغيل على المضيف إذا كان وضع الامتيازات مُمكّنًا/مسموحًا- هل تحتاج إلى TTY حقيقي؟ اضبط
pty: true. تعيينpty: true. workdir،env
- عمليات التشغيل في الواجهة الأمامية تُعيد المخرجات مباشرةً.
- عند التشغيل في الخلفية (صراحةً أو بسبب المهلة)، تُعيد الأداة
status: "running"+sessionIdوذيلًا قصيرًا. - يتم الاحتفاظ بالمخرجات في الذاكرة حتى يتم استطلاع الجلسة أو مسحها.
- إذا كانت أداة
processغير مسموح بها، يعملexecبشكل متزامن ويتجاهلyieldMs/background.
سد عملية الأطفال
عند إنشاء عمليات فرعية طويلة الأمد خارج أدوات exec/process (على سبيل المثال، إعادة تشغيل CLI أو مساعدات Gateway)، أرفِق مساعد ربط العمليات الفرعية بحيث يتم تمرير إشارات الإنهاء وفصل المستمعين عند الخروج/الخطأ. يمنع ذلك العمليات اليتيمة على systemd ويحافظ على سلوك إيقاف تشغيل متسق عبر المنصات. تجاوزات البيئة:PI_BASH_YIELD_MS: العائد الافتراضي (مللي ثانية)PI_BASH_MAX_OUTPUT_CHARS: الحد الأقصى للمخرجات في الذاكرة (عدد الأحرف)OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS: الحد الأقصى للمخرجات المعلّقة stdout/stderr لكل دفق (عدد الأحرف)PI_BASH_JOB_TTL_MS: مدة الاحتفاظ بالجلسات المنتهية (مللي ثانية، محدودة بين 1 دقيقة و3 ساعات)
tools.exec.backgroundMs(الافتراضي 10000)tools.exec.timeoutSec(الافتراضي 1800)tools.exec.cleanupMs(الافتراضي 1800000)tools.exec.notifyOnExit(الافتراضي true): إدراج حدث نظام + طلب نبضة قلب عند انتهاء تنفيذ في الخلفية.tools.exec.notifyOnExitEmptySuccess(القيمة الافتراضية false): عند التفعيل، يتم أيضًا إدراج أحداث إكمال للتشغيلات الخلفية الناجحة التي لم تُنتج أي مخرجات.
أداة process
الإجراءات:list: الجلسات الجارية والمنتهيةpoll: تفريغ المخرجات الجديدة لجلسة ما (ويُبلّغ أيضًا عن حالة الخروج)log: قراءة المخرجات المُجمّعة (يدعمoffset+limit)write: إرسال stdin (data، وeofاختياري)kill: إنهاء جلسة في الخلفيةclear: إزالة جلسة منتهية من الذاكرةremove: الإنهاء إذا كانت قيد التشغيل، وإلا فالمسح إذا كانت منتهية
- يتم إدراج الجلسات التي تعمل في الخلفية فقط والاحتفاظ بها في الذاكرة.
- تُفقد الجلسات عند إعادة تشغيل العملية (لا يوجد حفظ على القرص).
- لا تُحفظ سجلات الجلسات في سجل الدردشة إلا إذا قمت بتشغيل
process poll/logوتم تسجيل نتيجة الأداة. processمُقيّد لكل وكيل؛ ولا يرى إلا الجلسات التي بدأها ذلك الوكيل.- يتضمن
process listقيمة مشتقة هيname(فعل الأمر + الهدف) لتسهيل الاستعراض السريع. - يستخدم
process logآليةoffset/limitالمعتمدة على الأسطر (احذفoffsetلجلب آخر N أسطر). - عند عدم تحديد كلٍ من
offsetوlimit، يتم إرجاع آخر 200 سطر مع تضمين تلميح للترقيم. - عند تحديد
offsetوعدم تحديدlimit، يتم الإرجاع منoffsetحتى النهاية (دون تقييد بـ 200).