Skills
کارگاه Skills
کارگاه Skills مسیر تحت حاکمیت OpenClaw برای ایجاد و بهروزرسانی مهارتهای فضای کاری است.
عاملها و اپراتورها در این مسیر فایلهای فعال SKILL.md را مستقیما
نمینویسند. آنها ابتدا یک پیشنهاد ایجاد میکنند. پیشنهاد یک پیشنویس در انتظار است که
محتوای پیشنهادی مهارت، اتصال هدف، وضعیت اسکنر، هشها، فراداده فایلهای پشتیبان
و فراداده بازگشت را در بر دارد. فقط وقتی اعمال شود به یک مهارت زنده تبدیل میشود.
کارگاه Skills فقط مهارتهای فضای کاری را مینویسد. مهارتهای بستهبندیشده، Plugin، ClawHub، ریشه اضافی، مدیریتشده، عامل شخصی یا سیستمی را تغییر نمیدهد.
نحوه کار
- اول پیشنهاد: محتوای تولیدشده مهارت بهعنوان
PROPOSAL.mdذخیره میشود، نهSKILL.md. - اعمال تنها نوشتن زنده است: ایجاد، بهروزرسانی و بازبینی، مهارتهای فعال را تغییر نمیدهند.
- محدود به فضای کاری: ایجادها ریشه
skills/فضای کاری را هدف میگیرند. بهروزرسانیها فقط برای مهارتهای قابل نوشتن فضای کاری مجازند. - بدون بازنویسی: اگر مهارت هدف از قبل وجود داشته باشد، ایجاد شکست میخورد.
- وابسته به هش: پیشنهادهای بهروزرسانی به هش فعلی هدف متصل میشوند و اگر مهارت زنده پیش از اعمال تغییر کند، کهنه میشوند.
- پشت دروازه اسکنر: اعمال، پیش از نوشتن اسکن را دوباره اجرا میکند.
- قابل بازیابی: اعمال، پیش از تغییر فایلهای زنده، فراداده بازگشت را مینویسد.
- سطحهای یکسان: چت، CLI و Gateway همگی سرویس یکسان کارگاه Skills را فراخوانی میکنند.
چرخه عمر
create/update -> pendingrevise -> pendingapply -> appliedreject -> rejectedquarantine -> quarantinedtarget change -> staleفقط پیشنهادهای pending میتوانند بازبینی، اعمال، رد یا قرنطینه شوند.
چت
از عامل، مهارتی را که میخواهید درخواست کنید. عامل skill_workshop را فراخوانی میکند و
یک شناسه پیشنهاد برمیگرداند.
ایجاد:
Make a skill called morning-catchup that runs my Monday inbox routine.بهروزرسانی یک مهارت موجود فضای کاری:
Update trip-planning to also check seat maps before booking.تکرار روی یک پیشنهاد در انتظار:
Show me the morning-catchup proposal.Revise it to also flag anything marked urgent.Apply the morning-catchup proposal.بهصورت پیشفرض، apply، reject و quarantine که عامل آغاز میکند، پیش از اجرا
یک اعلان تایید نشان میدهند. برای رد شدن از اعلان در محیطهای مورد اعتماد،
skills.workshop.approvalPolicy را روی "auto" تنظیم کنید.
CLI
ایجاد پیشنهاد مهارت جدید:
openclaw skills workshop propose-create \ --name morning-catchup \ --description "Daily inbox catch-up: triage, archive, surface, draft, plan" \ --proposal ./PROPOSAL.mdایجاد پیشنهاد بهروزرسانی برای یک مهارت موجود فضای کاری:
openclaw skills workshop propose-update trip-planning --proposal ./PROPOSAL.mdفهرست و بازرسی:
openclaw skills workshop listopenclaw skills workshop inspect <proposal-id>بازبینی پیش از تایید:
openclaw skills workshop revise <proposal-id> --proposal ./PROPOSAL.mdبستن پیشنهاد:
openclaw skills workshop apply <proposal-id>openclaw skills workshop reject <proposal-id> --reason "Duplicate"openclaw skills workshop quarantine <proposal-id> --reason "Needs security review"محتوای پیشنهاد
تا زمانی که در انتظار است، پیشنهاد بهصورت PROPOSAL.md با frontmatter مخصوص پیشنهاد
ذخیره میشود:
---name: "morning-catchup"description: "Daily inbox catch-up: triage, archive, surface, draft, plan"status: proposalversion: "v1"date: "2026-05-30T00:00:00.000Z"---هنگام اعمال، کارگاه Skills فایل فعال SKILL.md را مینویسد و فیلدهای مخصوص پیشنهاد
را حذف میکند: status، version پیشنهاد، و date پیشنهاد.
فایلهای پشتیبان
وقتی مهارت پیشنهادی به فایلهایی کنار PROPOSAL.md نیاز دارد، از --proposal-dir استفاده کنید:
openclaw skills workshop propose-create \ --name weekly-update \ --description "Friday wrap-up: stats, highlights, next week's top three" \ --proposal-dir ./weekly-update-proposalدایرکتوری باید شامل PROPOSAL.md باشد. فایلهای پشتیبان باید زیر این مسیرها باشند:
assets/examples/references/scripts/templates/
کارگاه Skills فایلهای پشتیبان را اسکن، هش و همراه پیشنهاد ذخیره میکند. آنها
فقط هنگام اعمال، کنار SKILL.md زنده نوشته میشوند.
مسیرهای ردشده فایل پشتیبان شامل مسیرهای مطلق، بخشهای مخفی مسیر، پیمایش مسیر، مسیرهای همپوشان، فایلهای اجرایی از دایرکتوریهای پیشنهاد، متن غیر UTF-8، بایتهای null، و فایلهای خارج از پوشههای استاندارد پشتیبان است.
ابزار عامل
مدل از skill_workshop استفاده میکند:
action: create | update | revise | list | inspect | apply | reject | quarantineعاملها باید برای کار مهارت تولیدشده از skill_workshop استفاده کنند. آنها نباید
فایلهای پیشنهاد را از طریق write، edit، exec، فرمانهای shell یا عملیات مستقیم
سیستم فایل ایجاد یا تغییر دهند.
تایید و خودمختاری
{ skills: { workshop: { autonomous: { enabled: false, }, allowSymlinkTargetWrites: false, approvalPolicy: "pending", maxPending: 50, maxSkillBytes: 40000, }, },}autonomous.enabled: به OpenClaw اجازه میدهد پس از نوبتهای موفق، از سیگنالهای پایدار گفتوگو پیشنهادهای در انتظار ایجاد کند. پیشفرض:false.allowSymlinkTargetWrites: به اعمال اجازه میدهد از طریق symlinkهای مهارت فضای کاری بنویسد، اگر هدف واقعی آنها درskills.load.allowSymlinkTargetsفهرست شده باشد. پیشفرض:false.approvalPolicy: "pending": پیش ازapply،rejectیاquarantineآغازشده توسط عامل، یک اعلان تایید لازم دارد.approvalPolicy: "auto": از آن اعلان تایید عبور میکند. عامل همچنان باید عمل را فراخوانی کند.maxPending: تعداد پیشنهادهای در انتظار و قرنطینهشده را برای هر فضای کاری محدود میکند.maxSkillBytes: اندازه بدنه پیشنهاد را محدود میکند. پیشفرض:40000.
توضیحات پیشنهاد همیشه به ۱۶۰ بایت محدود میشوند.
متدهای Gateway
skills.proposals.listskills.proposals.inspectskills.proposals.createskills.proposals.updateskills.proposals.reviseskills.proposals.applyskills.proposals.rejectskills.proposals.quarantineمتدهای فقطخواندنی به operator.read نیاز دارند. متدهای تغییردهنده به
operator.admin نیاز دارند.
ذخیرهسازی
<OPENCLAW_STATE_DIR>/skill-workshop/ proposals.json proposals/<proposal-id>/ proposal.json PROPOSAL.md rollback.json assets/ examples/ references/ scripts/ templates/دایرکتوری وضعیت پیشفرض: ~/.openclaw.
proposal.json: رکورد کانونی پیشنهاد.proposals.json: نمایه فهرستکردن سریع، قابل بازسازی از پوشههای پیشنهاد.PROPOSAL.md: پیشنهاد مهارت در انتظار.rollback.json: فراداده بازیابی که پیش از تغییر فایلهای زنده توسط اعمال نوشته میشود.
محدودیتها
- توضیح: ۱۶۰ بایت.
- بدنه پیشنهاد:
skills.workshop.maxSkillBytes(پیشفرض ۴۰٬۰۰۰). - فایلهای پشتیبان: ۶۴ عدد برای هر پیشنهاد.
- اندازه فایل پشتیبان: هرکدام ۲۵۶ KB، در مجموع ۲ MB.
- پیشنهادهای در انتظار و قرنطینهشده:
skills.workshop.maxPendingبرای هر فضای کاری (پیشفرض ۵۰).
عیبیابی
| مشکل | راهحل |
|---|---|
Skill proposal description is too large |
description را به ۱۶۰ بایت یا کمتر کوتاه کنید. |
Skill proposal content is too large |
بدنه پیشنهاد را کوتاه کنید یا skills.workshop.maxSkillBytes را افزایش دهید. |
Target skill changed after proposal creation |
پیشنهاد را بر اساس هدف فعلی بازبینی کنید، یا یک پیشنهاد جدید بسازید. |
Proposal scan failed |
یافتههای اسکنر را بررسی کنید، سپس پیشنهاد را بازبینی یا قرنطینه کنید. |
untrusted symlink target |
skills.load.allowSymlinkTargets را پیکربندی کنید و skills.workshop.allowSymlinkTargetWrites را فقط برای ریشههای مشترک مهارت که عمدی هستند فعال کنید. |
Support file paths must be under one of... |
فایلهای پشتیبان را زیر assets/، examples/، references/، scripts/ یا templates/ منتقل کنید. |
| پیشنهاد در فهرست نمایش داده نمیشود | فضای کاری انتخابشده --agent و OPENCLAW_STATE_DIR را بررسی کنید. |
عامل نمیتواند skill_workshop را فراخوانی کند |
سیاست ابزار فعال و حالت اجرا را بررسی کنید. coding ابزار را شامل میشود؛ سیاستهای محدودکننده tools.allow باید آن را صریحا فهرست کنند، و اجراهای sandbox شده باید از یک نشست معمولی عامل سمت میزبان یا CLI استفاده کنند. |
مرتبط
- Skills برای ترتیب بارگذاری، تقدم و قابلیت مشاهده
- ایجاد مهارتها برای مبانی
SKILL.mdدستنویس - پیکربندی Skills برای طرحواره کامل
skills.workshop - CLI مهارتها برای فرمانهای
openclaw skills