التكوين والعمليات
أداة التنفيذ وعمليات الخلفية
تقوم OpenClaw بتشغيل أوامر shell من خلال أداة exec وتحتفظ بالمهام طويلة الأمد في الذاكرة. تدير أداة process جلسات الخلفية تلك.
أداة exec
المعاملات الرئيسية:
command(مطلوب)yieldMs(الافتراضي 10000): التحويل إلى الخلفية تلقائياً بعد هذا التأخيرbackground(منطقي): الانتقال إلى الخلفية فوراًtimeout(بالثواني، الافتراضي 1800): إنهاء العملية بعد هذه المهلة الزمنيةelevated(منطقي): التشغيل على المضيف إذا كان الوضع المرفوع مفعلاً/مسموحاً- هل تحتاج إلى TTY حقيقي؟ عيّن
pty: true. workdir,env
السلوك:
- تعيد عمليات التشغيل في المقدمة المخرجات مباشرة.
- عند الانتقال إلى الخلفية (صريح أو بسبب المهلة الزمنية)، تعيد الأداة
status: "running"+sessionIdوذيلاً قصيراً من المخرجات. - يتم الاحتفاظ بالمخرجات في الذاكرة حتى يتم استطلاع الجلسة أو مسحها.
- إذا كانت أداة
processغير مسموح بها، تعملexecبشكل متزامن وتتجاهلyieldMs/background. - تتلقى أوامر exec المنشأة
OPENCLAW_SHELL=execلقواعد shell/profile الواعية بالسياق.
جسر العمليات الفرعية
عند إنشاء عمليات فرعية طويلة الأمد خارج أدوات exec/process (على سبيل المثال، إعادة تشغيل CLI أو مساعدي البوابة)، قم بإرفاق مساعد جسر العملية الفرعية بحيث يتم تمرير إشارات الإنهاء وفصل المستمعين عند الخروج/الخطأ. يتجنب هذا عمليات يتيمة على 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): قم بإدراج حدث نظام + طلب نبضة قلب عندما يخرج exec في الخلفية.tools.exec.notifyOnExitEmptySuccess(الافتراضي false): عندما تكون true، قم أيضاً بإدراج أحداث اكتمال لعمليات التشغيل في الخلفية الناجحة التي لم تنتج أي مخرجات.
أداة process
الإجراءات:
list: الجلسات الجارية + المنتهيةpoll: استنزاف المخرجات الجديدة لجلسة (تقر أيضاً بحالة الخروج)log: قراءة المخرجات المجمعة (تدعمoffset+limit)write: إرسال stdin (data، اختياريeof)kill: إنهاء جلسة خلفيةclear: إزالة جلسة منتهية من الذاكرةremove: إنهاء إذا كانت جارية، وإلا مسحها إذا كانت منتهية
ملاحظات:
- فقط الجلسات التي تم تحويلها إلى الخلفية مدرجة/مستمرة في الذاكرة.
- تضيع الجلسات عند إعادة تشغيل العملية (لا يوجد استمرارية على القرص).
- يتم حفظ سجلات الجلسات في سجل المحادثة فقط إذا قمت بتشغيل
process poll/logوتم تسجيل نتيجة الأداة. processمحددة النطاق لكل وكيل؛ فهي ترى فقط الجلسات التي بدأها ذلك الوكيل.- تتضمن
process listnameمشتقاً (فعل الأمر + الهدف) للمسح السريع. - تستخدم
process logoffset/limitقائم على الأسطر. - عند حذف كل من
offsetوlimit، تعيد آخر 200 سطر وتتضمن تلميحاً للترقيم. - عند توفير
offsetوحذفlimit، تعيد منoffsetإلى النهاية (غير محدودة بـ 200).
أمثلة
تشغيل مهمة طويلة والاستطلاع لاحقاً:
{ "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000 }
{ "tool": "process", "action": "poll", "sessionId": "<id>" }
بدء فوري في الخلفية:
{ "tool": "exec", "command": "npm run build", "background": true }
إرسال stdin:
{ "tool": "process", "action": "write", "sessionId": "<id>", "data": "y\n" }