Skills
کارگاه Skills
Skill Workshop مسیر تحتنظارت OpenClaw برای ایجاد و بهروزرسانی Skills فضای کاری است. عاملها و اپراتورها هرگز از طریق این مسیر مستقیماً SKILL.md را نمینویسند — آنها یک پیشنهاد ایجاد میکنند (پیشنویس در انتظار شامل محتوا، پیوند مقصد، وضعیت اسکنر، هشها و فرادادهٔ بازگردانی) که تنها پس از اعمالشدن به یک Skill فعال تبدیل میشود.
Skill Workshop فقط Skills فضای کاری را مینویسد. این ابزار هرگز به Skills داخلی، Plugin، ClawHub، خارج از ریشه، مدیریتشده، عامل شخصی یا سیستمی دست نمیزند.
نحوهٔ کار
- ابتدا پیشنهاد: محتوای تولیدشده بهصورت
PROPOSAL.mdذخیره میشود، نهSKILL.md. - اعمال، تنها نوشتن زنده است: ایجاد، بهروزرسانی و بازبینی هرگز Skills فعال را تغییر نمیدهند.
- محدود به فضای کاری: مقصد ایجادها ریشهٔ
skills/فضای کاری است؛ بهروزرسانی فقط برای Skills قابلنوشتن فضای کاری مجاز است. - بدون بازنویسی: اگر Skill مقصد از قبل وجود داشته باشد، ایجاد ناموفق میشود.
- مقید به هش: پیشنهادهای بهروزرسانی به هش فعلی مقصد مقید میشوند و اگر Skill فعال پیش از اعمال تغییر کند، به وضعیت
staleمیروند. - مشروط به اسکنر: اعمال، پیش از نوشتن اسکنر امنیتی را دوباره اجرا میکند.
- قابلبازیابی: اعمال پیش از دستزدن به فایلهای فعال، فرادادهٔ بازگردانی را مینویسد.
- سطوح یکپارچه: گفتوگو، CLI و Gateway همگی سرویس یکسانی را فراخوانی میکنند.
چرخهٔ حیات
ایجاد/بهروزرسانی -> در انتظاربازبینی -> در انتظاراعمال -> اعمالشدهرد -> ردشدهقرنطینه -> قرنطینهشدهتغییر مقصد -> کهنهفقط یک پیشنهاد pending را میتوان بازبینی، اعمال، رد یا قرنطینه کرد.
ساماندهی چرخهٔ حیات
Gateway میزان استفادهٔ تجمیعی از Skill را در پایگاه دادهٔ وضعیت مشترک ردیابی میکند. روزی یکبار، Skills ایجاد و اعمالشده توسط Skill Workshop را بررسی میکند. Skills که بیش از ۳۰ روز استفاده نشده باشند stale میشوند؛ پس از ۹۰ روز به وضعیت archived میروند و در تصویرهای لحظهای جدید Skills عامل گنجانده نمیشوند. فایلهای Skills بایگانیشده روی دیسک بدون تغییر باقی میمانند. Skills نوشتهشده بهصورت دستی هرگز ساماندهی نمیشوند؛ فقط Skills ایجادشده از پیشنهادهای Skill Workshop وارد ساماندهی چرخهٔ حیات میشوند.
Skills سنجاقشده از گذارهای چرخهٔ حیات مستثنا هستند. یک Skill کهنه پس از استفاده و اجرای پیمایش بعدی به وضعیت active بازمیگردد. Skills بایگانیشده فقط با بازیابی صریح بازمیگردند:
گذارهای چرخهٔ حیات و بازیابیها برای نشستهای جدید اعمال میشوند؛ نشستهای در حال اجرا تصویر لحظهای فعلی Skills خود را حفظ میکنند.
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 از عامل میخواهد گردشکار قابلاستفادهٔ مجدد را از گفتوگوی فعلی استخراج کند. با وجود درخواست، عامل مسیرها، نشانیهای وب، یادداشتهای جایگذاریشده و ارجاعات گفتوگو را بهعنوان منبع در نظر میگیرد و در عین حال الزامات تمرکز، دامنه و نامگذاری را رعایت میکند. عامل منابع را با ابزارهای موجود خود گردآوری میکند و سپس 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 را روی "auto" تنظیم کنید.
اعلان، شناسهٔ پیشنهاد و Skill مقصد را مشخص میکند و توضیحات پیشنهاد، تعداد فایلهای پشتیبان و اندازهٔ بدنه را نمایش میدهد. درخواستهای تأیید محدودیت زمانی دارند تا پیش از مهلت پایشگر ابزار عامل پایان یابند. اگر پیش از انقضای اعلان تصمیمی دریافت نشود، عملیات چرخهٔ حیات اجرا نمیشود: پیشنهاد در انتظار و بدون تغییر باقی میماند. بعداً در رابط کاربری Skill Workshop تصمیم بگیرید یا 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 و با فرادادهٔ ابتدایی ویژهٔ پیشنهاد ذخیره میشود:
---name: "morning-catchup"description: "رسیدگی روزانه به صندوق ورودی: اولویتبندی، بایگانی، برجستهسازی، پیشنویس، برنامهریزی"status: proposalversion: "v1"date: "2026-05-30T00:00:00.000Z"---هنگام اعمال، Skill Workshop فایل فعال 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 Workshop آنها را اسکن و هش میکند و همراه پیشنهاد ذخیره میکند، سپس فقط هنگام اعمال آنها را در کنار SKILL.md فعال مینویسد.
مسیرهای ردشدهٔ فایلهای پشتیبان: مسیرهای مطلق، بخشهای پنهان مسیر، پیمایش مسیر، مسیرهای همپوشان، فایلهای اجرایی، متن غیر UTF-8، بایتهای تهی و مسیرهای خارج از پوشههای استاندارد پشتیبان.
ابزار عامل
مدل از skill_workshop با یک action الزامی استفاده میکند:
create | update | revise | list | inspect | apply | reject | quarantine.
پارامترهای دیگر بسته به عملیات اعمال میشوند:
| پارامتر | مورداستفاده | توضیحات |
|---|---|---|
name |
create، inspect، revise |
برای create الزامی است؛ در موارد دیگر پیشنهاد در انتظار را بر اساس نام پیدا میکند |
description |
create، update، revise |
حداکثر ۱۶۰ بایت |
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 برابر ۵۰ و پیشفرض آن ۲۰ است |
عاملها باید برای کارهای تولیدشدهٔ Skill از skill_workshop استفاده کنند. آنها نباید فایلهای پیشنهاد را از طریق write، edit، exec، فرمانهای پوسته یا عملیات مستقیم سامانهٔ فایل ایجاد یا تغییر دهند.
Skills پیشنهادی
OpenClaw دستورالعملهای ماندگاری مانند «دفعهٔ بعد»، «به خاطر بسپار که» و اصلاحات واکنشی را هنگام پایان یک نوبت تعاملی، از جمله نوبتهای ناموفق، تشخیص میدهد. در نوبت بعدی، عامل پیشنهاد میکند جدیدترین گردشکار تشخیصدادهشده از طریق skill_workshop ذخیره شود؛ کاربر تصمیم میگیرد که آیا پیشنهادی ایجاد شود یا نه. این پیشنهاد داخلی بهتنهایی هیچ Skill را ایجاد یا تغییر نمیدهد. برای ایجاد مستقیم پیشنهادهای در انتظار، skills.workshop.autonomous.enabled را فعال کنید.
تأیید و خودمختاری
{ skills: { workshop: { autonomous: { enabled: false, }, allowSymlinkTargetWrites: false, approvalPolicy: "pending", maxPending: 50, maxSkillBytes: 40000, }, },}| تنظیم | پیشفرض | اثر |
|---|---|---|
autonomous.enabled |
false |
بهجای پیشنهاد جدیدترین گردشکار تشخیصدادهشده در نوبت بعدی، مستقیماً پیشنهادهای در انتظار ایجاد میکند. |
allowSymlinkTargetWrites |
false |
به اعمال اجازه میدهد از طریق پیوندهای نمادین Skills فضای کاری بنویسد که مقصد واقعی آنها در skills.load.allowSymlinkTargets فهرست شده است. |
approvalPolicy |
"pending" |
"pending" پیش از apply، reject یا quarantine آغازشده توسط عامل به اعلان تأیید نیاز دارد. "auto" اعلان را رد میکند (عامل همچنان باید عملیات را فراخوانی کند). |
maxPending |
50 |
تعداد پیشنهادهای در انتظار و قرنطینهشده در هر فضای کاری را محدود میکند (۱ تا ۲۰۰). |
maxSkillBytes |
40000 |
اندازهٔ بدنهٔ پیشنهاد را بر حسب بایت محدود میکند (۱۰۲۴ تا ۲۰۰۰۰۰). |
ثبت خودمختار، قواعد آیندهنگرانه (برای مثال، «از این پس») و اصلاحات واکنشی (برای مثال، «این چیزی نیست که خواستم») را تشخیص میدهد. این قابلیت دستورالعملهای جدید را بر اساس موضوع، حداکثر در سه پیشنهاد در هر نوبت گروهبندی میکند، تطابقهای واژگانی را به Skills قابلنوشتن موجود فضای کاری هدایت میکند و وقتی اصلاح دیگری همان Skill را هدف قرار دهد، پیشنهاد در انتظار خود را بازبینی میکند.
توضیحات پیشنهاد، مستقل از maxSkillBytes، همیشه به ۱۶۰ بایت محدود است.
روشهای Gateway
| روش | دامنه |
|---|---|
skills.proposals.list |
operator.read |
skills.proposals.inspect |
operator.read |
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 را جایگزین کند.
ذخیرهسازی
<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 (پیشفرض ۴۰٬۰۰۰؛ سقف قطعی ۱ MiB) |
| فایلهای پشتیبان | ۶۴ فایل برای هر پیشنهاد |
| اندازهٔ فایل پشتیبان | هرکدام ۲۵۶ KiB، در مجموع ۲ MiB |
| پیشنهادهای در انتظار + قرنطینهشده | 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 باید آن را صریحاً فهرست کنند و اجراهای جعبهشنی باید از نشست عادی عامل در سمت میزبان یا 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