Skills
کارگاه Skills
کارگاه Skill مسیر تحت حاکمیت OpenClaw برای ایجاد و بهروزرسانی Skills فضای کاری
است. عاملها و اپراتورها هرگز از طریق این مسیر مستقیماً SKILL.md را نمینویسند
— آنها یک پیشنهاد (پیشنویس در انتظار شامل محتوا، اتصال هدف،
وضعیت اسکنر، هشها و فرادادهٔ بازگردانی) ایجاد میکنند که تنها پس از اعمالشدن
به یک Skill فعال تبدیل میشود.
کارگاه Skill فقط Skills فضای کاری را مینویسد. هرگز به Skills همراه، Plugin، ClawHub، ریشهٔ اضافی، مدیریتشده، عامل شخصی یا سیستمی دست نمیزند.
نحوهٔ کار
- ابتدا پیشنهاد: محتوای تولیدشده بهصورت
PROPOSAL.mdذخیره میشود، نهSKILL.md. - اعمال تنها نوشتن زنده است: ایجاد، بهروزرسانی و بازبینی هرگز Skills فعال را تغییر نمیدهند.
- محدود به فضای کاری: ایجادها ریشهٔ
skills/فضای کاری را هدف میگیرند؛ بهروزرسانیها فقط برای Skills قابلنوشتن فضای کاری مجازند. - بدون بازنویسی: اگر Skill هدف از قبل وجود داشته باشد، ایجاد ناموفق میشود.
- مقید به هش: پیشنهادهای بهروزرسانی به هش فعلی هدف متصل میشوند و اگر
Skill زنده پیش از اعمال تغییر کند، به حالت
staleمیروند. - مقید به اسکنر: اعمال، اسکنر امنیتی را پیش از نوشتن دوباره اجرا میکند.
- قابلبازیابی: اعمال پیش از دستزدن به فایلهای زنده، فرادادهٔ بازگردانی را مینویسد.
- سطوح سازگار: گفتوگو، CLI و Gateway همگی همان سرویس را فراخوانی میکنند.
چرخهٔ حیات
ایجاد/بهروزرسانی -> در انتظاربازبینی -> در انتظاراعمال -> اعمالشدهرد -> ردشدهقرنطینه -> قرنطینهشدهتغییر هدف -> منقضیفقط یک پیشنهاد pending را میتوان بازبینی، اعمال، رد یا قرنطینه کرد.
ساماندهی چرخهٔ حیات
Gateway میزان استفادهٔ تجمیعی از Skill را در پایگاه دادهٔ وضعیت مشترک ردیابی میکند. روزی یکبار،
Skills ایجاد و اعمالشده توسط کارگاه Skill را بررسی میکند. Skills استفادهنشده برای
بیش از 30 روز به stale تبدیل میشوند؛ پس از 90 روز به archived تبدیل میشوند و
در snapshotهای جدید Skills عامل قرار نمیگیرند. فایلهای Skill بایگانیشده روی
دیسک بدون تغییر باقی میمانند. Skills نوشتهشده بهصورت دستی هرگز ساماندهی نمیشوند؛ فقط Skills ایجادشده توسط
پیشنهادهای کارگاه Skill وارد ساماندهی چرخهٔ حیات میشوند.
Skills سنجاقشده از گذارهای چرخهٔ حیات عبور نمیکنند. یک Skill منقضی پس از استفادهشدن و
اجرای پیمایش بعدی به active بازمیگردد. Skills بایگانیشده فقط از طریق یک
بازیابی صریح بازمیگردند:
گذارهای چرخهٔ حیات و بازیابیها بر نشستهای جدید اعمال میشوند؛ نشستهای در حال اجرا snapshot فعلی Skill خود را حفظ میکنند.
openclaw skills curator statusopenclaw skills curator pin <skill>openclaw skills curator unpin <skill>openclaw skills curator restore <skill>همهٔ فرمانهای ساماندهنده --json را میپذیرند. وضعیت همچنین نامزدهای همپوشانی قطعی را
فقط بهعنوان پیشنهاد گزارش میکند؛ هرگز Skills را ادغام نمیکند یا مدلی را فراخوانی نمیکند.
گفتوگو
Skill موردنظر را از عامل بخواهید؛ عامل skill_workshop را فراخوانی میکند و یک
شناسهٔ پیشنهاد برمیگرداند.
یادگیری از کارهای اخیر
از /learn برای تبدیل گفتوگوی فعلی یا منابع نامگذاریشده به یک
پیشنهاد Skill مبتنی بر استانداردها استفاده کنید:
/learn/learn docs/runbook.md و https://example.com/guide؛ تمرکز بر بازیابیبدون درخواست، /learn از عامل میخواهد گردشکار قابلاستفادهٔ مجدد را از
گفتوگوی فعلی استخراج کند. با وجود درخواست، عامل مسیرها، URLها، یادداشتهای
جایگذاریشده و ارجاعات گفتوگو را بهعنوان منبع در نظر میگیرد و همزمان الزامات تمرکز، دامنه و
نامگذاری را رعایت میکند. منابع را با ابزارهای موجود خود گردآوری میکند، سپس
skill_workshop را با action: "create" فراخوانی میکند.
پیشنهاد حاصل در حالت pending باقی میماند؛ /learn هرگز آن را اعمال نمیکند. آن را از طریق
جریان عادی تأیید یا با openclaw skills workshop بررسی و
اعمال کنید.
ایجاد:
یک Skill به نام morning-catchup بساز که روال صندوق ورودی دوشنبهٔ من را اجرا کند.بهروزرسانی یک Skill موجود فضای کاری:
trip-planning را بهروزرسانی کن تا پیش از رزرو، نقشهٔ صندلیها را نیز بررسی کند.تکرار روی یک پیشنهاد در انتظار:
پیشنهاد morning-catchup را به من نشان بده.آن را بازبینی کن تا هر مورد علامتگذاریشده بهعنوان فوری را نیز مشخص کند.پیشنهاد morning-catchup را اعمال کن.apply، reject و quarantine آغازشده توسط عامل، بهطور پیشفرض بدون یک
درخواست تأیید اضافی اجرا میشوند. skills.workshop.approvalPolicy را روی "pending"
تنظیم کنید تا پیش از این اقدامات، تأیید اپراتور الزامی شود.
وقتی تأیید لازم باشد، درخواست، شناسهٔ پیشنهاد و Skill هدف را مشخص میکند
و توضیحات پیشنهاد، تعداد فایلهای پشتیبان و اندازهٔ بدنه را نشان میدهد.
درخواستهای تأیید محدود شدهاند تا پیش از ناظر ابزار عامل پایان یابند. اگر پیش از
انقضای درخواست تصمیمی نرسد، اقدام چرخهٔ حیات اجرا نمیشود:
پیشنهاد در انتظار و بدون تغییر باقی میماند. بعداً در رابط کاربری کارگاه Skill تصمیم بگیرید یا
openclaw skills workshop apply|reject|quarantine <proposal-id> را اجرا کنید. عاملها نباید
یک اقدام چرخهٔ حیات منقضیشده را در یک حلقه دوباره امتحان کنند.
CLI
# ایجادopenclaw skills workshop propose-create \ --name morning-catchup \ --description "جمعبندی روزانهٔ صندوق ورودی: اولویتبندی، بایگانی، برجستهسازی، پیشنویس، برنامهریزی" \ --proposal ./PROPOSAL.md # بهروزرسانی یک Skill موجود فضای کاری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 "تکراری"openclaw skills workshop quarantine <proposal-id> --reason "نیازمند بررسی امنیتی"هر زیرفرمان --agent <id> (فضای کاری هدف؛ بهطور پیشفرض ابتدا از
دایرکتوری کاری فعلی استنباط میشود و سپس عامل پیشفرض) و --json (خروجی ساختاریافته) را میپذیرد.
propose-create، propose-update و revise همچنین --goal <text> و
--evidence <text> را میپذیرند تا زمینهٔ پیشنهاد را در کنار --proposal ثبت کنند.
محتوای پیشنهاد
هنگام انتظار، پیشنهاد بهصورت PROPOSAL.md با frontmatter مختص
پیشنهاد ذخیره میشود:
---name: "morning-catchup"description: "جمعبندی روزانهٔ صندوق ورودی: اولویتبندی، بایگانی، برجستهسازی، پیشنویس، برنامهریزی"status: proposalversion: "v1"date: "2026-05-30T00:00:00.000Z"---هنگام اعمال، کارگاه Skill فایل فعال SKILL.md را مینویسد و فیلدهای
مختص پیشنهاد را حذف میکند: status، version پیشنهاد و date پیشنهاد.
فایلهای پشتیبان
وقتی Skill پیشنهادی به فایلهایی در کنار
PROPOSAL.md نیاز دارد، از --proposal-dir استفاده کنید:
openclaw skills workshop propose-create \ --name weekly-update \ --description "جمعبندی جمعه: آمار، نکات برجسته، سه اولویت هفتهٔ آینده" \ --proposal-dir ./weekly-update-proposalدایرکتوری باید شامل PROPOSAL.md باشد. فایلهای پشتیبان باید در
assets/، examples/، references/، scripts/ یا templates/ قرار داشته باشند. کارگاه Skill
آنها را اسکن، هش و همراه پیشنهاد ذخیره میکند، سپس فقط هنگام اعمال آنها را
در کنار SKILL.md زنده مینویسد.
مسیرهای ردشدهٔ فایل پشتیبان: مسیرهای مطلق، بخشهای مسیر مخفی، پیمایش مسیر، مسیرهای همپوشان، فایلهای اجرایی، متن غیر UTF-8، بایتهای تهی و مسیرهای خارج از پوشههای استاندارد پشتیبان.
ابزار عامل
مدل از skill_workshop با یک action الزامی استفاده میکند:
create | update | revise | list | inspect | apply | reject | quarantine.
پارامترهای دیگر بسته به اقدام اعمال میشوند:
| پارامتر | مورداستفادهٔ | یادداشتها |
|---|---|---|
name |
create، inspect، revise |
برای create الزامی است؛ در غیر این صورت یک پیشنهاد در انتظار را با نام برطرف میکند |
description |
create، update، revise |
حداکثر 160 بایت |
skill_name |
update |
نام یا کلید Skill موجود |
proposal_content |
create، update، revise |
بهصورت PROPOSAL.md ذخیره میشود؛ محدودشده توسط skills.workshop.maxSkillBytes |
support_files |
create، update، revise |
آرایهای از { path, content } |
goal، evidence |
create، update، revise |
زمینهٔ متن آزاد |
proposal_id |
inspect، revise، apply، reject، quarantine |
پیشنهاد هدف |
reason |
apply، reject، quarantine |
اختیاری |
query، status، limit |
list |
فیلتر/صفحهبندی؛ حداکثر limit برابر 50 و پیشفرض 20 است |
عاملها باید برای کار Skill تولیدشده از skill_workshop استفاده کنند. آنها نباید
فایلهای پیشنهاد را از طریق write، edit، exec، فرمانهای shell
یا عملیات مستقیم سیستم فایل ایجاد یا تغییر دهند.
Skills پیشنهادی
OpenClaw دستورالعملهای بادوامی مانند «دفعهٔ بعد»، «به خاطر بسپار که» و اصلاحات واکنشی را
هنگام پایان یک نوبت تعاملی، از جمله نوبتهای ناموفق، تشخیص میدهد. در نوبت بعدی، عامل پیشنهاد میدهد
جدیدترین گردشکار تشخیصدادهشده از طریق skill_workshop ذخیره شود؛ کاربر تصمیم میگیرد که آیا یک
پیشنهاد ایجاد شود یا نه. این پیشنهاد داخلی بهتنهایی هیچ Skillی را ایجاد یا تغییر نمیدهد. برای ایجاد
مستقیم پیشنهادهای در انتظار، skills.workshop.autonomous.enabled را فعال کنید. در رابط کاربری Control،
زبانهٔ Workshop همان تنظیم را بهصورت کلید یادگیری خودکار در سربرگ صفحه و
بهصورت دکمهٔ فعالسازی در تابلوی خالی پیشنهادها ارائه میکند.
اسکن نشستهای گذشته
رابط کاربری Control میتواند بدون فعالکردن یادگیری خودکار مستقل، کارهای قدیمیتر را بررسی کند. Plugins → Workshop را باز کنید و Find skill ideas را انتخاب کنید. اسکن از جدیدترین نشستهای واجد شرایط آغاز میشود و یک پنجرهٔ محدود از کارهای قابلتوجه را بررسی میکند. نشستهای cron، heartbeat، hook، subagent، ACP، متعلق به Plugin و بررسی داخلی، همچنین گفتوگوهایی با کمتر از شش نوبت مدل را نادیده میگیرد.
بازبین از مدل پیکربندیشدهٔ عامل انتخابشده استفاده میکند و یک بستهٔ رونوشت با اسرار حذفشده و اندازهٔ محدود دریافت میکند. همان معیار محافظهکارانهٔ بررسی تجربه را اعمال میکند: یک الگوی بازیابی مشخص یا رویهای پایدار که دستکم دو فراخوانی آتی مدل یا ابزار را حذف کند. کارهای معمول و واقعیتهای یکباره نباید پیشنهادی ایجاد کنند.
هر اسکن میتواند حداکثر سه پیشنهاد در انتظار را ایجاد یا بازبینی کند. نمیتواند یک Skill زنده را اعمال، رد، قرنطینه یا ویرایش کند. Workshop پوشش تجمعی را نشان میدهد، برای مثال 20 نشست بررسی شد · 18 ژوئن تا امروز · 2 ایده یافت شد. برای ادامه از مکاننمای ذخیرهشدهٔ قدیمیترین نشست، Scan earlier work را انتخاب کنید. پس از تمامشدن تاریخچهٔ موجود، اقدام به Scan new work تبدیل میشود.
بازبینی تاریخی حتی زمانی که
skills.workshop.autonomous.enabled برابر با false باشد، دستی است. هر کلیک یک اجرای مدل را آغاز میکند،
بنابراین قیمتگذاری ارائهدهنده و شرایط مدیریت داده اعمال میشوند. نشانگر و شمارشهای پوشش
در پایگاهداده وضعیت مشترک OpenClaw ذخیره میشوند؛ محتوای رونوشت
در وضعیت اسکن کپی نمیشود.
با فعالبودن ثبت خودمختار، OpenClaw میتواند پس از کار موفق و قابلتوجه و پس از بیکارشدن کل سامانه عامل نیز بازبینی محافظهکارانهای انجام دهد. آن بازبینی ایزوله میتواند حداکثر یک پیشنهاد در انتظار را ایجاد یا
بازنگری کند. نمیتواند یک مهارت فعال را بهروزرسانی کند یا پیشنهادی را اعمال، رد یا قرنطینه کند،
حتی زمانی که approvalPolicy برابر با "auto" باشد.
برای جزئیات فعالسازی، واجد شرایط بودن، حریم خصوصی و هزینه، آستانه پیشنهاد و عیبیابی، به خودیادگیری مراجعه کنید.
تأیید و خودمختاری
{ skills: { workshop: { autonomous: { enabled: false, }, allowSymlinkTargetWrites: false, approvalPolicy: "auto", maxPending: 50, maxSkillBytes: 40000, }, },}| تنظیم | پیشفرض | اثر |
|---|---|---|
autonomous.enabled |
false |
از اصلاحات صریح و، پس از یک تأخیر بیکاری، از کار تکمیلشده قابلتوجهی که بازیابی قابلاستفاده مجدد یا صرفهجویی معنادار در رفتوبرگشت دارد، پیشنهادهای در انتظار ایجاد میکند. |
allowSymlinkTargetWrites |
false |
به عملیات اعمال اجازه میدهد از طریق پیوندهای نمادین مهارت فضای کاری که مقصد واقعی آنها در skills.load.allowSymlinkTargets فهرست شده است، بنویسد. |
approvalPolicy |
"auto" |
"auto" از یک درخواست تأیید اضافی برای apply، reject یا quarantine آغازشده توسط عامل صرفنظر میکند (عامل همچنان باید کنش را فراخوانی کند). "pending" به تأیید نیاز دارد. |
maxPending |
50 |
تعداد پیشنهادهای در انتظار و قرنطینهشده را در هر فضای کاری محدود میکند (1-200). |
maxSkillBytes |
40000 |
اندازه بدنه پیشنهاد را برحسب بایت محدود میکند (1024-200000). |
ثبت خودمختار، قواعد آیندهنگر (برای مثال، «از این پس») و اصلاحات واکنشی (برای مثال، «این چیزی نیست که درخواست کردم») را تشخیص میدهد. دستورالعملهای جدید را بر اساس موضوع، در هر نوبت در حداکثر سه پیشنهاد گروهبندی میکند، موارد منطبق با واژگان را به مهارتهای قابلنوشتن موجود در فضای کاری هدایت میکند و هنگامی که اصلاح دیگری همان مهارت را هدف قرار دهد، پیشنهاد در انتظار خودش را بازنگری میکند.
برای کار موفق و قابلتوجهی که اصلاح صریحی ندارد، اجرای ایزولهای از مدل انتخابشده
تصمیم میگیرد که آیا مسیر تکمیلشده از آستانه محافظهکارانه پیشنهاد عبور میکند یا نه. از
مدل پیشزمینه خواسته نمیشود پیش از پاسخدادن یاد بگیرد. بازبین پسزمینه، اجرای
پیشزمینه را بهعنوان منشأ پیشنهاد حفظ میکند، نمیتواند به ابزارهای عمومی عامل دسترسی داشته باشد و نمیتواند درباره چرخهعمر
تصمیمگیری کند. بازبینی تنها زمانی آغاز میشود که زماناجرای پیشزمینه هم مدل دقیق حلشده خود
و هم اینکه skill_workshop واقعاً در دسترس بوده است را گزارش کند. بنابراین سیاست ابزار
محدودکننده یا ناشناخته بهصورت بسته شکست میخورد و هیچ پیشنهادی ایجاد نمیکند.
برای رفتار کامل بازبینی خودمختار و مدل ایمنی، به خودیادگیری مراجعه کنید.
توضیحات پیشنهاد، مستقل از
maxSkillBytes، همیشه به 160 بایت محدود میشوند.
متدهای Gateway
| متد | دامنه |
|---|---|
skills.proposals.list |
operator.read |
skills.proposals.inspect |
operator.read |
skills.proposals.historyStatus |
operator.read |
skills.proposals.historyScan |
operator.admin |
skills.proposals.create |
operator.admin |
skills.proposals.update |
operator.admin |
skills.proposals.revise |
operator.admin |
skills.proposals.requestRevision |
operator.admin |
skills.proposals.apply |
operator.admin |
skills.proposals.reject |
operator.admin |
skills.proposals.quarantine |
operator.admin |
skills.curator.status |
operator.read |
skills.curator.pin |
operator.admin |
skills.curator.unpin |
operator.admin |
skills.curator.restore |
operator.admin |
requestRevision فقط مختص Gateway است (هیچ معادل CLI یا ابزار عامل ندارد): این متد
دستورالعملهای بازنگری با متن آزاد را به نشست گفتوگوی عامل مالک ارسال میکند،
بهجای آنکه PROPOSAL.md را مستقیماً جایگزین کند؛ برای رابطهای کاربریای که از عامل میخواهند
بهجای ارسال محتوای جدید تحتاللفظی، آن را بازنگری کند.
historyStatus و historyScan متدهای پشتیبانی رابط کاربری کنترل هستند. historyScan
مقدار direction: "older" | "newer" را میپذیرد؛ نتایج را همیشه بهصورت
پیشنهادهای در انتظار باقی میگذارد.
ذخیرهسازی
<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: فراداده بازیابی که پیش از اعمال تغییرات بر فایلهای فعال نوشته میشود.
محدودیتها
| محدودیت | مقدار |
|---|---|
| توضیحات | 160 بایت |
| بدنه پیشنهاد | skills.workshop.maxSkillBytes (پیشفرض 40,000؛ سقف قطعی 1 MiB) |
| فایلهای پشتیبان | 64 برای هر پیشنهاد |
| اندازه فایل پشتیبان | هرکدام 256 KiB، در مجموع 2 MiB |
| پیشنهادهای در انتظار + قرنطینهشده | skills.workshop.maxPending برای هر فضای کاری (پیشفرض 50) |
عیبیابی
| مشکل | راهحل |
|---|---|
Skill proposal description is too large |
description را به 160 بایت یا کمتر کوتاه کنید. |
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 باید آن را صریحاً فهرست کنند و اجراهای سندباکسشده باید از یک نشست عادی عامل در سمت میزبان یا CLI استفاده کنند. |
عیبیابی سیاست ابزار
هنگامی که ثبت خودمختار فعال است، openclaw doctor
بررسی core/doctor/skill-workshop-tool-policy را برای عامل پیشفرض اجرا میکند. اگر سیاست،
skill_workshop را پنهان کند، هشدار نام نخستین لایه پیکربندی حذفکننده و
تغییر دقیق allow یا alsoAllow موردنیاز را اعلام میکند. راهنماهای عملیاتی قدیمیتر ممکن است همچنان از
openclaw plugins inspect skill-workshop استفاده کنند؛ آن فرمان اکنون توضیح میدهد که کارگاه مهارت
داخلی است و در صورت کاربرد، همان راهنمای سیاست را نمایش میدهد.
مرتبط
- Skills برای ترتیب بارگذاری، تقدم و مشاهدهپذیری
- خودیادگیری برای پیشنهادهای محافظهکارانه مهارت پس از اجرا
- ایجاد مهارتها برای مبانی
SKILL.mdدستنویس - پیکربندی Skills برای طرحواره کامل
skills.workshop - CLI مربوط به Skills برای فرمانهای
openclaw skills