أداة 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/node
  • ask (off | on-miss | always): مطالبات الموافقة لـ gateway/node

ملاحظات:

  • host افتراضي إلى sandbox
  • elevated يتم تجاهله عندما يكون 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 قد يعيد تعيين PATH
  • host=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"] },
    },
  },
}