أداة Exec
قم بتشغيل أوامر shell في مساحة العمل. تدعم التنفيذ الأمامي + الخلفي عبر process.
المعاملات
command(مطلوب)workdir(افتراضي: cwd)env(تجاوزات key/value)yieldMs(افتراضي 10000): تلقائي في الخلفية بعد التأخيرbackground(bool): خلفية فورًاtimeout(ثواني، افتراضي 1800): إيقاف عند انتهاء الصلاحيةpty(bool): التشغيل في terminal وهمي عند توفره (CLIs تتطلب TTY، وكلاء الترميز، واجهات terminal)host(sandbox | gateway | node): أين يتم التنفيذsecurity(deny | allowlist | full): وضع الإنفاذ لـ gateway/nodeask(off | on-miss | always): مطالبات الموافقة لـ gateway/node
ملاحظات:
hostافتراضي إلىsandboxelevatedيتم تجاهله عندما يكون sandboxing متوقفًا (exec يعمل بالفعل على المضيف)- موافقات gateway/node يتم التحكم فيها بواسطة
~/.openclaw/exec-approvals.json nodeيتطلب node مقترنًا (تطبيق مرافق أو node host بدون رأس)
الإعدادات
{
tools: {
exec: {
notifyOnExit: true,
approvalRunningNoticeMs: 10000,
host: "sandbox",
security: "deny",
ask: "on-miss",
pathPrepend: ["~/bin", "/opt/oss/bin"],
safeBins: ["cat", "echo", "grep"],
},
},
}معالجة PATH
host=gateway: يدمج PATH الخاص بـ login-shell في بيئة exec. تجاوزاتenv.PATHمرفوضة للتنفيذ على المضيفhost=sandbox: يشغلsh -lcداخل الحاوية، لذا/etc/profileقد يعيد تعيين PATHhost=node: فقط تجاوزات env غير المحظورة التي تمررها يتم إرسالها إلى node
أمثلة
أمامي:
{ "tool": "exec", "command": "ls -la" }خلفي + poll:
{"tool":"exec","command":"npm run build","yieldMs":1000}
{"tool":"process","action":"poll","sessionId":"<id>"}إرسال مفاتيح (أسلوب tmux):
{"tool":"process","action":"send-keys","sessionId":"<id>","keys":["Enter"]}
{"tool":"process","action":"send-keys","sessionId":"<id>","keys":["C-c"]}
{"tool":"process","action":"send-keys","sessionId":"<id>","keys":["Up","Up","Enter"]}موافقات Exec
يمكن للوكلاء المعزولين طلب موافقة لكل طلب قبل تشغيل exec على gateway أو node host. انظر موافقات Exec للسياسة والقائمة المسموح بها وتدفق UI.
Allowlist + safe bins
إنفاذ Allowlist يطابق مسارات الملفات الثنائية المحلولة فقط (لا مطابقات basename). عندماsecurity=allowlist، يُسمح بأوامر shell تلقائيًا فقط إذا كان كل قطاع pipeline في allowlist أو safe bin.
apply_patch (تجريبي)
apply_patch هو أداة فرعية من exec للتعديلات المنظمة متعددة الملفات.
{
tools: {
exec: {
applyPatch: { enabled: true, allowModels: ["gpt-5.2"] },
},
},
}