Skills

إعدادات Skills

تقع معظم إعدادات Skills ضمن skills في ~/.openclaw/openclaw.json. أما مستوى الرؤية الخاص بكل وكيل فيقع ضمن agents.defaults.skills وagents.list[].skills.

json5
{  skills: {    allowBundled: ["gemini", "peekaboo"],    load: {      extraDirs: ["~/Projects/agent-scripts/skills"],      allowSymlinkTargets: ["~/Projects/manager/skills"],      watch: true,      watchDebounceMs: 250,    },    install: {      preferBrew: true,      nodeManager: "npm",      allowUploadedArchives: false,    },    workshop: {      autonomous: { enabled: false },      allowSymlinkTargetWrites: false,      approvalPolicy: "auto",      maxPending: 50,      maxSkillBytes: 40000,    },    entries: {      "image-lab": {        enabled: true,        apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" },        env: { GEMINI_API_KEY: "GEMINI_KEY_HERE" },      },      peekaboo: { enabled: true },      sag: { enabled: false },    },  },}

التحميل (skills.load)

skills.load.extraDirsstring[]

أدلة Skills إضافية لفحصها، بأدنى أولوية (أدنى من Skills المضمّنة وSkills الخاصة بالـ Plugin). تُوسّع المسارات مع دعم ~.

skills.load.allowSymlinkTargetsstring[]

أدلة أهداف فعلية موثوقة يُسمح لمجلدات Skills ذات الروابط الرمزية بأن تُحلّ إليها، حتى عندما يقع الرابط الرمزي خارج الجذر المضبوط. استخدم هذا لتخطيطات المستودعات الشقيقة المقصودة مثل <workspace>/skills/manager -> ~/Projects/manager/skills. اجعل هذه القائمة محدودة — ولا تُشر إلى جذور واسعة مثل ~ أو ~/Projects.

skills.load.watchbooleandefault: true

راقب مجلدات Skills وحدّث لقطة Skills عند تغيّر ملفات SKILL.md. يشمل ذلك الملفات المتداخلة ضمن جذور Skills المجمّعة.

skills.load.watchDebounceMsnumberdefault: 250

نافذة إزالة ارتداد أحداث مراقب Skills بالمللي ثانية.

التثبيت (skills.install)

skills.install.preferBrewbooleandefault: true

فضّل مثبّتات Homebrew عند توفر brew.

skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"

تفضيل مدير حزم Node لتثبيت Skills. يؤثر هذا فقط في عمليات تثبيت Skills — إذ تتطلب بيئة تشغيل CLI وGateway في OpenClaw استخدام Node لأن مخزن الحالة الأساسي يستخدم node:sqlite. تقبل openclaw setup --node-manager و openclaw onboard --node-manager القيم npm أو pnpm أو bun؛ اضبط "yarn" مباشرةً في الإعدادات لتثبيت Skills المدعوم من Yarn.

skills.install.allowUploadedArchivesbooleandefault: false

اسمح لعملاء Gateway الموثوقين من نوع operator.admin بتثبيت أرشيفات zip خاصة جرى تجهيزها عبر skills.upload.*. لا تحتاج عمليات تثبيت ClawHub العادية إلى هذا الإعداد.

سياسة تثبيت المشغّل (security.installPolicy)

استخدم security.installPolicy عندما يحتاج المشغّلون إلى أمر محلي موثوق للموافقة على تثبيت Skills والـ Plugins أو حظره وفق سياسة خاصة بالمضيف. تعمل السياسة بعد أن يجهّز OpenClaw المواد المصدرية وقبل متابعة التثبيت أو التحديث. وتنطبق على Skills من ClawHub، وSkills المرفوعة، وSkills من Git/المسار المحلي، ومثبّتات تبعيات Skills، ومصادر تثبيت/تحديث الـ Plugins.

json5
{  security: {    installPolicy: {      enabled: true,      // احذف targets لتغطية كل هدف مدعوم.      targets: ["skill", "plugin"],      exec: {        source: "exec",        command: "/usr/local/bin/openclaw-install-policy",        args: ["--json"],        timeoutMs: 10000,        noOutputTimeoutMs: 10000,        maxOutputBytes: 1048576,        passEnv: ["OPENCLAW_STATE_DIR", "PATH"],        env: { POLICY_MODE: "strict" },        trustedDirs: ["/usr/local/bin"],      },    },  },}
security.installPolicy.enabledbooleandefault: false

يفعّل سياسة التثبيت التي يملكها المشغّل. عند تفعيلها دون أمر exec صالح، تُرفض عمليات التثبيت افتراضيًا.

security.installPolicy.targets("skill" | "plugin")[]

مرشّح أهداف اختياري. عند حذفه، تنطبق السياسة على كل هدف مدعوم كي لا يُسمح بعمليات التثبيت الجديدة على نحو غير متوقع.

security.installPolicy.exec.commandstring

المسار المطلق لملف السياسة التنفيذي الموثوق. يشغّله OpenClaw من دون صدفة أوامر ويتحقق من المسار قبل استخدامه.

security.installPolicy.exec.argsstring[]

وسيطات ثابتة تُمرر بعد command.

security.installPolicy.exec.timeoutMsnumberdefault: 10000

أقصى مدة فعلية لقرار سياسة واحد.

security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMs

أقصى مدة من دون مخرجات على stdout أو stderr قبل أن ترفض السياسة العملية افتراضيًا.

security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576

أقصى عدد مقبول من البايتات المجمّعة من stdout وstderr من عملية السياسة.

security.installPolicy.exec.env"Record<string,
security.installPolicy.exec.passEnvstring[]

أسماء متغيرات البيئة المنسوخة من عملية OpenClaw إلى عملية السياسة. لا تُمرر سوى المتغيرات المذكورة بالاسم.

security.installPolicy.exec.trustedDirsstring[]

قائمة سماح اختيارية بالأدلة التي قد تحتوي على ملف السياسة التنفيذي.

security.installPolicy.exec.allowInsecurePathbooleandefault: false

يتجاوز فحوص ملكية مسار الأمر وأذوناته. استخدمه فقط عندما يكون المسار محميًا بآلية أخرى.

security.installPolicy.exec.allowSymlinkCommandbooleandefault: false

يسمح بأن يكون مسار الأمر المضبوط رابطًا رمزيًا. ويجب أن يظل الهدف المحلول مستوفيًا لفحوص المسار الأخرى. يجب أن تكون وسيطات نصوص المفسّر ملفات عادية مباشرة، لا روابط رمزية.

تستقبل السياسة كائن JSON واحدًا على stdin يحتوي على protocolVersion: 1، وopenclawVersion، وtargetType، وtargetName، وsourcePath، وsourcePathKind، وsource منظّمًا اختياريًا، وorigin منظّمًا، وrequest. ويجب أن تكتب كائن JSON واحدًا على stdout: { "protocolVersion": 1, "decision": "allow" } أو { "protocolVersion": 1, "decision": "block", "reason": "..." }. يؤدي الخروج برمز غير صفري، أو انتهاء المهلة، أو JSON غير صالح، أو غياب الحقول، أو إصدارات بروتوكول غير مدعومة إلى الرفض الافتراضي.

لا ينفّذ OpenClaw سياسة التثبيت أثناء بدء تشغيل Gateway العادي. تُرفض عمليات التثبيت والتحديث افتراضيًا عندما تكون السياسة مفعّلة لكنها غير متاحة. ينفّذ openclaw doctor تحققًا ثابتًا؛ بينما ينفّذ openclaw doctor --deep اختبار تثبيت اصطناعيًا على الأمر المضبوط.

تطبّق التحديثات المجمّعة السياسة على كل هدف على حدة: يؤدي حظر تحديث Skill أو Plugin إلى فشل ذلك الهدف من دون تعطيل السياسة أو تخطي الأهداف اللاحقة في الدُفعة.

مثال على stdin:

json
{  "protocolVersion": 1,  "openclawVersion": "2026.6.1",  "targetType": "skill",  "targetName": "weather",  "sourcePath": "/var/folders/.../openclaw-skill-clawhub/root",  "sourcePathKind": "directory",  "source": {    "kind": "clawhub",    "authority": "openclaw",    "mutable": false,    "network": true  },  "origin": {    "type": "clawhub",    "registry": "https://clawhub.openclaw.ai",    "slug": "weather",    "version": "1.0.0"  },  "request": {    "kind": "skill-install",    "mode": "install",    "requestedSpecifier": "clawhub:weather@1.0.0"  },  "skill": {    "installId": "clawhub"  }}

أمر سياسة بالحد الأدنى:

js
#!/usr/bin/env node let input = "";process.stdin.setEncoding("utf8");process.stdin.on("data", (chunk) => {  input += chunk;});process.stdin.on("end", () => {  const request = JSON.parse(input);  if (request.targetType === "plugin" && request.source?.kind === "local-path") {    process.stdout.write(      JSON.stringify({        protocolVersion: 1,        decision: "block",        reason: "مسارات Plugin المحلية غير معتمدة على هذا المضيف",      }),    );    return;  }  process.stdout.write(JSON.stringify({ protocolVersion: 1, decision: "allow" }));});

قائمة السماح لـ Skills المضمّنة

skills.allowBundledstring[]

قائمة سماح اختيارية لـ Skills المضمّنة فقط. عند ضبطها، لا تكون مؤهلة إلا Skills المضمّنة الواردة في القائمة. ولا تتأثر Skills المُدارة، أو الخاصة بمستوى الوكيل، أو الخاصة بمساحة العمل.

إدخالات كل Skill (skills.entries)

تطابق المفاتيح ضمن entries قيمة name الخاصة بالـ Skill افتراضيًا. إذا عرّفت Skill القيمة metadata.openclaw.skillKey، فاستخدم ذلك المفتاح بدلًا منها. ضع الأسماء التي تحتوي على شرطات بين علامتي اقتباس (يسمح JSON5 بالمفاتيح المقتبسة).

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk .enabled" type="boolean"> يعطّل false الـ Skill حتى إن كانت مضمّنة أو مثبّتة. أما Skill المضمّنة coding-agent فتتطلب الاشتراك الصريح — اضبطها على true وتأكد من تثبيت claude أو codex أو opencode أو CLI آخر مدعوم ومصادَق عليه.

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk .apiKey" type='string | { source, provider, id }'> حقل تسهيلي لـ Skills التي تعلن metadata.openclaw.primaryEnv. يدعم سلسلة نصية صريحة أو SecretRef: ‏{ source: "env", provider: "default", id: "VAR_NAME" }.

"skills.entries.<key�����r�
"skills.entries.<key�w₫��ܩ

قوائم سماح الوكلاء (agents)

استخدم إعداد الوكيل عندما تريد جذور Skills نفسها على الجهاز/مساحة العمل، لكن مجموعة مختلفة من Skills المرئية لكل وكيل.

json5
{  agents: {    defaults: {      skills: ["github", "weather"], // خط أساس مشترك    },    list: [      { id: "writer" }, // يرث github وweather      { id: "docs", skills: ["docs-search"] }, // يستبدل الإعدادات الافتراضية بالكامل      { id: "locked-down", skills: [] }, // بلا Skills    ],  },}
agents.defaults.skillsstring[]

قائمة سماح مشتركة كأساس ترثها الوكلاء التي تحذف agents.list[].skills. احذفها بالكامل لترك Skills بلا قيود افتراضيًا.

agents.list[].skillsstring[]

مجموعة Skills النهائية الصريحة لذلك الوكيل. القوائم الصريحة تستبدل الإعدادات الافتراضية الموروثة — ولا تُدمج معها. اضبطها على [] لعدم إظهار أي Skills لذلك الوكيل.

ورشة العمل (skills.workshop)

skills.workshop.autonomous.enabledbooleandefault: false

عندما تكون true، يمكن لـ OpenClaw إنشاء مقترحات معلّقة من التصحيحات الدائمة ويمكنه مراجعة الأعمال المكتملة الناجحة والجوهرية بعد أن يصبح النظام خاملاً. قد يضيف هذا تشغيل نموذج في الخلفية بعد الأدوار المؤهلة. يستمر إنشاء المهارات بطلب المستخدم و/learn في العمل عندما يكون الإعداد false.

راجع التعلّم الذاتي لمعرفة الأهلية والخصوصية والتكلفة والأذونات الخاصة بالمقترحات فقط واستكشاف الأخطاء وإصلاحها.

skills.workshop.approvalPolicy"pending" | "auto"default: "auto"

تتيح auto للوكيل التطبيق أو الرفض أو العزل بمبادرة منه من دون مطالبة موافقة إضافية. تتطلب pending موافقة المشغّل.

skills.workshop.allowSymlinkTargetWritesbooleandefault: false

اسمح لتطبيق ورشة المهارات بالكتابة عبر الروابط الرمزية لمهارات مساحة العمل التي يكون هدفها الحقيقي موثوقاً بالفعل بواسطة skills.load.allowSymlinkTargets. أبقِ هذا معطلاً ما لم يكن من المفترض أن تعدّل عمليات تطبيق المقترحات المُنشأة جذر المهارات المشترك ذاك.

skills.workshop.maxPendingnumberdefault: 50

الحد الأقصى للمقترحات المعلّقة والمعزولة المحتفَظ بها لكل مساحة عمل (النطاق المسموح: 1-200).

skills.workshop.maxSkillBytesnumberdefault: 40000

الحد الأقصى لحجم نص المقترح بالبايت (النطاق المسموح: 1024-200000). تُحدّ أوصاف المقترحات بشكل صارم ومنفصل عند 160 بايت، لأنها تظهر في مخرجات الاكتشاف والقوائم.

راجع ورشة المهارات للتعرّف على دورة حياة المقترح وأوامر CLI ومعاملات أداة الوكيل وطرائق Gateway التي يتحكم فيها هذا الإعداد.

جذور المهارات المرتبطة رمزياً

تُعد جذور مهارات مساحة العمل ووكيل المشروع والدليل الإضافي والمهارات المضمّنة حدود احتواء افتراضياً. يُتخطى مجلد مهارات مرتبط رمزياً ضمن <workspace>/skills إذا كان يُحل إلى خارج الجذر، مع تسجيل رسالة في السجل.

للسماح بتخطيط روابط رمزية مقصود، صرّح بالهدف الموثوق:

json5
{  skills: {    load: {      extraDirs: ["~/Projects/manager/skills"],      allowSymlinkTargets: ["~/Projects/manager/skills"],    },  },}

باستخدام هذا الإعداد، تُقبل <workspace>/skills/manager -> ~/Projects/manager/skills بعد حل المسار الحقيقي. تفحص extraDirs المستودع الشقيق مباشرةً؛ وتحافظ allowSymlinkTargets على المسار المرتبط رمزياً للتخطيطات الحالية.

لا يكتب تطبيق ورشة المهارات عبر تلك الروابط الرمزية افتراضياً. للسماح لتطبيق الورشة بتعديل المهارات ضمن أهداف الروابط الرمزية الموثوقة بالفعل، اشترك في ذلك بصورة منفصلة:

json5
{  skills: {    load: {      allowSymlinkTargets: ["~/Projects/manager/skills"],    },    workshop: {      allowSymlinkTargetWrites: true,    },  },}

تقبل أدلة ~/.openclaw/skills المُدارة وأدلة ~/.agents/skills الشخصية الروابط الرمزية لأدلة المهارات دون شروط بالفعل (مع استمرار تطبيق احتواء SKILL.md لكل مهارة) — ولا تلزم allowSymlinkTargets إلا لجذور مساحة العمل والدليل الإضافي ووكيل المشروع (<workspace>/.agents/skills).

المهارات المعزولة ومتغيرات البيئة

مرّر الأسرار إلى بيئة Docker معزولة باستخدام:

json5
{  agents: {    defaults: {      sandbox: {        docker: {          env: { GEMINI_API_KEY: "your-key-here" },        },      },    },  },}

تذكير بترتيب التحميل

text
workspace/skills      (الأعلى)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsالمهارات المضمّنةskills.load.extraDirs (الأدنى)

تسري تغييرات المهارات والإعداد في الجلسة الجديدة التالية عندما تكون المراقبة مفعّلة، أو في دور الوكيل التالي عندما تكتشف المراقبة تغييراً.

ذو صلة

Was this useful?
On this page

On this page