Skills

پیکربندی Skills

بیشتر پیکربندی Skills زیر skills در ~/.openclaw/openclaw.json قرار دارد. قابلیت مشاهدهٔ مختص هر عامل زیر agents.defaults.skills و agents.entries.*.skills قرار دارد.

json5
{  skills: {    allowBundled: ["gemini", "peekaboo"],    load: {      extraDirs: ["~/Projects/agent-scripts/skills"],      allowSymlinkTargets: ["~/Projects/manager/skills"],      watch: true,    },    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[]

دایرکتوری‌های اضافی Skill برای اسکن، با کمترین اولویت (پایین‌تر از Skills همراه و Plugin). مسیرها با پشتیبانی از ~ گسترش می‌یابند.

skills.load.allowSymlinkTargetsstring[]

دایرکتوری‌های مقصد واقعی و مورد اعتماد که پوشه‌های Skill دارای پیوند نمادین می‌توانند به آن‌ها تفکیک شوند، حتی وقتی پیوند نمادین خارج از ریشهٔ پیکربندی‌شده قرار دارد. از این گزینه برای چیدمان‌های عمدی مخزن‌های هم‌سطح، مانند <workspace>/skills/manager -> ~/Projects/manager/skills، استفاده کنید. این فهرست را محدود نگه دارید — به ریشه‌های گسترده‌ای مانند ~ یا ~/Projects اشاره نکنید.

skills.load.watchbooleandefault: true

پوشه‌های Skill را پایش کنید و هنگام تغییر فایل‌های SKILL.md تصویر لحظه‌ای Skills را تازه‌سازی کنید. فایل‌های تودرتو زیر ریشه‌های گروه‌بندی‌شدهٔ Skill را نیز پوشش می‌دهد.

نصب (skills.install)

skills.install.preferBrewbooleandefault: true

در صورت موجود بودن brew، نصب‌کننده‌های Homebrew را ترجیح دهید.

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 را می‌پذیرند؛ برای نصب Skills مبتنی بر Yarn، مقدار "yarn" را مستقیماً در پیکربندی تنظیم کنید.

skills.install.allowUploadedArchivesbooleandefault: false

به کلاینت‌های مورد اعتماد operator.admin در Gateway اجازه دهید بایگانی‌های zip خصوصی آماده‌شده از طریق skills.upload.* را نصب کنند. نصب‌های معمول ClawHub به این تنظیم نیاز ندارند.

خط‌مشی نصب اپراتور (security.installPolicy)

هنگامی که اپراتورها به یک فرمان محلی مورد اعتماد برای تأیید یا مسدودسازی نصب Skills و Plugins با خط‌مشی مختص میزبان نیاز دارند، از security.installPolicy استفاده کنید. خط‌مشی پس از آن اجرا می‌شود که OpenClaw محتوای منبع را آماده کرده و پیش از آن‌که نصب یا به‌روزرسانی ادامه یابد. این خط‌مشی بر Skills مربوط به ClawHub، Skills بارگذاری‌شده، Skills مربوط به Git/محلی، نصب‌کننده‌های وابستگی Skill و منابع نصب/به‌روزرسانی Plugin اعمال می‌شود.

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)

هنگامی از پیکربندی عامل استفاده کنید که می‌خواهید ریشه‌های Skill ماشین/فضای کاری یکسان باشند، اما مجموعهٔ Skills قابل مشاهده برای هر عامل متفاوت باشد.

json5
{  agents: {    defaults: {      skills: ["github", "weather"], // خط پایهٔ مشترک    },    list: [      { id: "writer" }, // github و weather را به ارث می‌برد      { id: "docs", skills: ["docs-search"] }, // پیش‌فرض‌ها را کاملاً جایگزین می‌کند      { id: "locked-down", skills: [] }, // بدون Skill    ],  },}
agents.defaults.skillsstring[]

فهرست مجاز خط پایهٔ مشترک که عامل‌های فاقد agents.entries.*.skills آن را به ارث می‌برند. برای آن‌که Skills به‌طور پیش‌فرض نامحدود باقی بمانند، این گزینه را کاملاً حذف کنید.

agents.entries.*.skillsstring[]

مجموعهٔ نهایی و صریح Skills برای آن عامل. فهرست‌های صریح، پیش‌فرض‌های به‌ارث‌رسیده را جایگزین می‌کنند — با آن‌ها ادغام نمی‌شوند. برای آن‌که هیچ Skill برای آن عامل نمایان نشود، مقدار را روی [] تنظیم کنید.

Workshop (skills.workshop)

skills.workshop.autonomous.enabledbooleandefault: false

وقتی true باشد، OpenClaw می‌تواند از اصلاحات ماندگار پیشنهادهای در انتظار ایجاد کند و پس از بی‌کار شدن سیستم، کارهای تکمیل‌شدهٔ موفق، قابل‌توجه و اساسی را بازبینی کند. این قابلیت می‌تواند پس از نوبت‌های واجد شرایط، یک اجرای پس‌زمینه‌ای مدل اضافه کند. ایجاد Skill با درخواست کاربر و /learn هنگامی که تنظیم false است همچنان کار می‌کنند.

برای معیارهای واجد شرایط بودن، حریم خصوصی، هزینه، مجوزهای صرفاً پیشنهادی و عیب‌یابی، به خودآموزی مراجعه کنید.

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

auto اجازه می‌دهد عامل بدون درخواست تأیید اضافی، اعمال، رد یا قرنطینه را آغاز کند. pending به تأیید اپراتور نیاز دارد.

skills.workshop.allowSymlinkTargetWritesbooleandefault: false

به اعمال Skill Workshop اجازه می‌دهد از طریق پیوندهای نمادین Skill در فضای کاری بنویسد که هدف واقعی آن‌ها از قبل توسط skills.load.allowSymlinkTargets مورد اعتماد است. این گزینه را غیرفعال نگه دارید، مگر اینکه اعمال پیشنهادهای تولیدشده باید آن ریشهٔ مشترک Skill را تغییر دهد.

skills.workshop.maxPendingnumberdefault: 50

حداکثر تعداد پیشنهادهای در انتظار و قرنطینه‌شده که در هر فضای کاری نگه‌داری می‌شوند (محدودهٔ مجاز: 1-200).

skills.workshop.maxSkillBytesnumberdefault: 40000

حداکثر اندازهٔ بدنهٔ پیشنهاد بر حسب بایت (محدودهٔ مجاز: 1024-200000). توضیحات پیشنهاد به‌طور جداگانه به‌صورت سخت‌گیرانه به 160 بایت محدود می‌شوند، زیرا در خروجی کشف و فهرست‌سازی ظاهر می‌شوند.

برای چرخهٔ عمر پیشنهاد، فرمان‌های CLI، پارامترهای ابزار عامل و روش‌های Gateway که این پیکربندی کنترل می‌کند، به Skill Workshop مراجعه کنید.

ریشه‌های Skill دارای پیوند نمادین

به‌طور پیش‌فرض، ریشه‌های Skill مربوط به فضای کاری، عامل پروژه، دایرکتوری اضافی و Skillهای همراه، مرزهای محصورسازی هستند. پوشهٔ Skill دارای پیوند نمادین زیر <workspace>/skills که به بیرون از ریشه منتهی شود، همراه با یک پیام گزارش نادیده گرفته می‌شود.

برای مجاز کردن یک چیدمان عمدی پیوند نمادین، هدف مورد اعتماد را اعلام کنید:

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

با این پیکربندی، <workspace>/skills/manager -> ~/Projects/manager/skills پس از تفکیک realpath پذیرفته می‌شود. extraDirs مخزن هم‌سطح را مستقیماً اسکن می‌کند؛ allowSymlinkTargets مسیر دارای پیوند نمادین را برای چیدمان‌های موجود حفظ می‌کند.

اعمال Skill Workshop به‌طور پیش‌فرض از طریق این پیوندهای نمادین نمی‌نویسد. برای اینکه اعمال Workshop بتواند Skillهای زیر اهداف پیوند نمادینِ از قبل مورد اعتماد را تغییر دهد، جداگانه آن را فعال کنید:

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

دایرکتوری‌های مدیریت‌شدهٔ ~/.openclaw/skills و شخصیِ ~/.agents/skills از قبل پیوندهای نمادین دایرکتوری Skill را بدون شرط می‌پذیرند (محصورسازی SKILL.md برای هر Skill همچنان اعمال می‌شود) — allowSymlinkTargets فقط برای ریشه‌های فضای کاری، دایرکتوری اضافی و عامل پروژه (<workspace>/.agents/skills) لازم است.

Skillهای سندباکس‌شده و متغیرهای محیطی

اطلاعات محرمانه را به این شکل به یک سندباکس Docker منتقل کنید:

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

یادآوری ترتیب بارگذاری

text
workspace/skills      (بالاترین)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsSkillهای همراهskills.load.extraDirs (پایین‌ترین)

وقتی ناظر فعال باشد، تغییرات Skillها و پیکربندی در نشست جدید بعدی اعمال می‌شوند؛ یا وقتی ناظر تغییری را تشخیص دهد، در نوبت بعدی عامل اعمال می‌شوند.

مرتبط

Was this useful?
On this page

On this page