الانتقال إلى المحتوى الرئيسي
توجد معظم إعدادات skills ضمن skills في ~/.openclaw/openclaw.json. وتوجد الرؤية الخاصة بالوكيل ضمن agents.defaults.skills وagents.list[].skills.
{
  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: "pending",
      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 },
    },
  },
}
لإنشاء الصور المدمج، استخدم agents.defaults.imageGenerationModel مع أداة image_generate الأساسية بدلا من skills.entries. إدخالات skill مخصصة فقط لسير عمل skills المخصصة أو التابعة لجهات خارجية.

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

skills.load.extraDirs
string[]
أدلة skills إضافية لفحصها، بأدنى أسبقية (بعد skills المدمجة وskills الخاصة بـ Plugin). يتم توسيع المسارات مع دعم ~.
أدلة أهداف حقيقية موثوقة يمكن أن تُحل إليها مجلدات skills الرمزية، حتى عندما يكون الرابط الرمزي خارج الجذر المكوّن. استخدم هذا لتخطيطات مستودعات شقيقة مقصودة مثل <workspace>/skills/manager -> ~/Projects/manager/skills. أبق هذه القائمة ضيقة — لا توجهها إلى جذور واسعة مثل ~ أو ~/Projects.
skills.load.watch
boolean
افتراضي:"true"
راقب مجلدات skills وحدّث لقطة skills عندما تتغير ملفات SKILL.md. يغطي ذلك الملفات المتداخلة ضمن جذور skills المجمعة.
skills.load.watchDebounceMs
number
افتراضي:"250"
نافذة إزالة الارتداد لأحداث مراقب skills بالميلي ثانية.

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

skills.install.preferBrew
boolean
افتراضي:"true"
فضّل مثبّتات Homebrew عندما يكون brew متاحا.
skills.install.nodeManager
"npm" | "pnpm" | "yarn" | "bun"
افتراضي:"\"npm\""
تفضيل مدير حزم Node لتثبيتات skills. يؤثر هذا فقط في تثبيتات skills — يجب أن يظل وقت تشغيل Gateway يستخدم Node (لا يوصى بـ Bun لـ WhatsApp/Telegram). استخدم openclaw setup --node-manager لـ npm أو pnpm أو bun؛ عيّن "yarn" يدويا لتثبيتات skills المدعومة بـ Yarn.
skills.install.allowUploadedArchives
boolean
افتراضي:"false"
اسمح لعملاء Gateway الموثوقين ذوي operator.admin بتثبيت أرشيفات zip خاصة تم تجهيزها عبر skills.upload.*. لا تحتاج تثبيتات ClawHub العادية إلى هذا الإعداد.

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

استخدم security.installPolicy عندما يحتاج المشغّلون إلى أمر محلي موثوق للموافقة على تثبيتات skills وPlugin أو حظرها بسياسة خاصة بالمضيف. تعمل السياسة بعد أن يجهّز OpenClaw مواد المصدر وقبل متابعة التثبيت أو التحديث. تنطبق على skills في ClawHub، وskills المرفوعة، وskills من Git/محلية، ومثبّتات اعتماديات skills، ومصادر تثبيت/تحديث Plugin.
{
  security: {
    installPolicy: {
      enabled: true,
      // Omit targets to cover every supported target.
      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.enabled
boolean
افتراضي:"false"
يفعّل سياسة التثبيت المملوكة للمشغّل. عند تفعيلها من دون أمر exec صالح، تفشل التثبيتات بإغلاق آمن.
security.installPolicy.targets
("skill" | "plugin")[]
مرشّح هدف اختياري. عند حذفه، تنطبق السياسة على كل هدف مدعوم حتى لا تفشل التثبيتات الجديدة بشكل مفتوح على نحو غير متوقع.
security.installPolicy.exec.command
string
مسار مطلق إلى ملف السياسة التنفيذي الموثوق. يشغّله OpenClaw من دون صدفة ويتحقق من المسار قبل الاستخدام.
security.installPolicy.exec.args
string[]
وسيطات ثابتة تُمرر بعد command.
security.installPolicy.exec.timeoutMs
number
افتراضي:"10000"
أقصى زمن تشغيل فعلي لقرار سياسة واحد.
security.installPolicy.exec.noOutputTimeoutMs
number
افتراضي:"timeoutMs"
أقصى مدة من دون مخرجات stdout أو stderr قبل أن تفشل السياسة بإغلاق آمن.
security.installPolicy.exec.maxOutputBytes
number
افتراضي:"1048576"
أقصى عدد مقبول من بايتات stdout وstderr مجتمعة من عملية السياسة.
security.installPolicy.exec.env
Record<string, string>
متغيرات بيئة حرفية تُقدم إلى عملية السياسة.
security.installPolicy.exec.passEnv
string[]
أسماء متغيرات البيئة المنسوخة من عملية OpenClaw إلى عملية السياسة. تُمرر المتغيرات المسماة فقط.
security.installPolicy.exec.trustedDirs
string[]
قائمة سماح اختيارية بالأدلة التي قد تحتوي ملف السياسة التنفيذي.
security.installPolicy.exec.allowInsecurePath
boolean
افتراضي:"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:
{
  "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"
  }
}
أمر سياسة بسيط:
#!/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: "local plugin paths are not approved on this host",
      }),
    );
    return;
  }
  process.stdout.write(JSON.stringify({ protocolVersion: 1, decision: "allow" }));
});

قائمة سماح skills المدمجة

skills.allowBundled
string[]
قائمة سماح اختيارية لـ skills المدمجة فقط. عند تعيينها، تكون skills المدمجة في القائمة فقط مؤهلة. لا تتأثر skills المُدارة، وعلى مستوى الوكيل، وعلى مستوى مساحة العمل.

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

تطابق المفاتيح ضمن entries اسم skill name افتراضيا. إذا عرّفت skill metadata.openclaw.skillKey، فاستخدم ذلك المفتاح بدلا منه. ضع الأسماء الموصولة بشرطات بين علامتي اقتباس (يسمح JSON5 بالمفاتيح المقتبسة).
skills.entries.<key>.enabled
boolean
يعطّل false هذه skill حتى عندما تكون مدمجة أو مثبتة. إن skill المدمجة coding-agent اختيارية — عيّنها إلى true وتأكد من تثبيت ومصادقة أحد claude أو codex أو opencode أو CLI آخر مدعوم.
skills.entries.<key>.apiKey
string | { source, provider, id }
حقل ملاءمة لـ skills التي تعلن metadata.openclaw.primaryEnv. يدعم سلسلة نصية صريحة أو SecretRef: { source: "env", provider: "default", id: "VAR_NAME" }.
skills.entries.<key>.env
Record<string, string>
متغيرات بيئة تُحقن لتشغيل الوكيل. لا تُحقن إلا عندما لا يكون المتغير مضبوطا بالفعل في العملية.
skills.entries.<key>.config
object
حاوية اختيارية لحقول إعدادات مخصصة لكل skill.

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

استخدم إعدادات الوكيل عندما تريد جذور skills نفسها على الجهاز/مساحة العمل ولكن مجموعة skills مرئية مختلفة لكل وكيل.
{
  agents: {
    defaults: {
      skills: ["github", "weather"], // shared baseline
    },
    list: [
      { id: "writer" }, // inherits github, weather
      { id: "docs", skills: ["docs-search"] }, // replaces defaults entirely
      { id: "locked-down", skills: [] }, // no skills
    ],
  },
}
agents.defaults.skills
string[]
قائمة سماح أساسية مشتركة ترثها الوكلاء التي تحذف agents.list[].skills. احذفها بالكامل لترك skills غير مقيدة افتراضيا.
agents.list[].skills
string[]
مجموعة skills نهائية صريحة لذلك الوكيل. القوائم الصريحة تستبدل الافتراضات الموروثة — ولا تدمج معها. عيّنها إلى [] لعدم كشف أي skills لذلك الوكيل.
قوائم سماح skills الخاصة بالوكيل هي مرشح رؤية وتحميل لاكتشاف skills في OpenClaw، والمطالبات، واكتشاف أوامر الشرطة المائلة، ومزامنة sandbox، ولقطات skills. وهي ليست حدّ تفويض وقت الصدفة. إذا كان بإمكان الوكيل تشغيل exec على المضيف، فيمكن لتلك الصدفة أن تظل تشغّل عملاء خارجيين أو تقرأ ملفات المضيف المرئية لمستخدم التنفيذ، بما في ذلك سجلات عملاء MCP مثل ~/.openclaw/skills/config/mcporter.json. لعزل MCP لكل وكيل، ادمج قوائم سماح skills مع عزل sandbox/مستخدم نظام التشغيل، وارفض exec المضيف أو ضعه ضمن قائمة سماح ضيقة، وفضّل بيانات اعتماد لكل وكيل على خادم MCP.

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

skills.workshop.autonomous.enabled
boolean
افتراضي:"false"
عندما تكون true، يمكن للوكلاء إنشاء مقترحات معلّقة من إشارات محادثة دائمة بعد أدوار ناجحة. يمر إنشاء skills الذي يطلبه المستخدم دائما عبر Skill Workshop بغض النظر عن هذا الإعداد.
skills.workshop.approvalPolicy
"pending" | "auto"
افتراضي:"\"pending\""
يتطلب pending موافقة المشغّل قبل التطبيق أو الرفض أو العزل بمبادرة من الوكيل. يتيح auto هذه الإجراءات دون موافقة.
اسمح لتطبيق Skill Workshop بالكتابة عبر الروابط الرمزية لـ Skills في مساحة العمل التي يكون هدفها الحقيقي موثوقًا به بالفعل بواسطة skills.load.allowSymlinkTargets. أبقِ هذا معطّلًا ما لم يكن من المفترض أن تعدّل تطبيقات المقترحات المولّدة جذر Skill المشترك ذاك.
skills.workshop.maxPending
number
افتراضي:"50"
الحد الأقصى للمقترحات المعلّقة والمعزولة المحتفَظ بها لكل مساحة عمل.
skills.workshop.maxSkillBytes
number
افتراضي:"40000"
الحد الأقصى لحجم نص المقترح بالبايت. أوصاف المقترحات محددة بحد صارم قدره 160 بايت لأنها تظهر في مخرجات الاكتشاف والقوائم.

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

افتراضيًا، تكون جذور Skills الخاصة بمساحة العمل ووكيل المشروع والدليل الإضافي والمضمّنة حدود احتواء. يتم تخطي مجلد Skill المرتبط رمزيًا ضمن <workspace>/skills إذا كان يحل إلى خارج الجذر، مع رسالة سجل. للسماح بتخطيط رابط رمزي مقصود، صرّح بالهدف الموثوق:
{
  skills: {
    load: {
      extraDirs: ["~/Projects/manager/skills"],
      allowSymlinkTargets: ["~/Projects/manager/skills"],
    },
  },
}
باستخدام هذا التكوين، يتم قبول <workspace>/skills/manager -> ~/Projects/manager/skills بعد حل المسار الحقيقي. يفحص extraDirs المستودع الشقيق مباشرة؛ ويحافظ allowSymlinkTargets على المسار المرتبط رمزيًا للتخطيطات الحالية. لا يكتب تطبيق Skill Workshop عبر تلك الروابط الرمزية افتراضيًا. للسماح لتطبيق Workshop بتعديل Skills ضمن أهداف روابط رمزية موثوق بها بالفعل، اشترك بشكل منفصل:
{
  skills: {
    load: {
      allowSymlinkTargets: ["~/Projects/manager/skills"],
    },
    workshop: {
      allowSymlinkTargetWrites: true,
    },
  },
}
تقبل أدلة ~/.openclaw/skills المُدارة و~/.agents/skills الشخصية بالفعل الروابط الرمزية لأدلة Skills (لا يزال احتواء SKILL.md لكل Skill مطبقًا).

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

ينطبق skills.entries.<skill>.env وapiKey على تشغيلات المضيف فقط. داخل صندوق عزل لا يكون لهما أي تأثير — ستفشل Skill التي تعتمد على GEMINI_API_KEY مع apiKey not configured ما لم يُعطَ صندوق العزل المتغير بشكل منفصل.
مرّر الأسرار إلى صندوق عزل Docker باستخدام:
{
  agents: {
    defaults: {
      sandbox: {
        docker: {
          env: { GEMINI_API_KEY: "your-key-here" },
        },
      },
    },
  },
}
يمكن للمستخدمين الذين لديهم وصول إلى عفريت Docker فحص قيم sandbox.docker.env من خلال بيانات Docker الوصفية. استخدم ملف أسرار مركّبًا، أو صورة مخصصة، أو مسار تسليم آخر عندما لا يكون هذا الانكشاف مقبولًا.

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

workspace/skills      (highest)
workspace/.agents/skills
~/.agents/skills
~/.openclaw/skills
bundled skills
skills.load.extraDirs (lowest)
تسري تغييرات Skills والتكوين في الجلسة الجديدة التالية عندما يكون المراقب ممكّنًا، أو في دور الوكيل التالي عندما يكتشف المراقب تغييرًا.

ذات صلة

مرجع Skills

ما هي Skills، وترتيب التحميل، والضبط، وتنسيق SKILL.md.

إنشاء Skills

تأليف Skills مخصصة لمساحة العمل.

Skill Workshop

قائمة انتظار المقترحات لـ Skills التي يصوغها الوكيل.

أوامر الشرطة المائلة

كتالوج أوامر الشرطة المائلة الأصلية وتوجيهات الدردشة.