Skills

کارگاه Skills

Status: proposal

کارگاه Skill مسیر تحت حاکمیت OpenClaw برای ایجاد و به‌روزرسانی Skills فضای کاری است. عامل‌ها و اپراتورها هرگز از طریق این مسیر مستقیماً SKILL.md را نمی‌نویسند — آن‌ها یک پیشنهاد (پیش‌نویس در انتظار شامل محتوا، اتصال هدف، وضعیت اسکنر، هش‌ها و فرادادهٔ بازگردانی) ایجاد می‌کنند که تنها پس از اعمال‌شدن به یک Skill فعال تبدیل می‌شود.

کارگاه Skill فقط Skills فضای کاری را می‌نویسد. هرگز به Skills همراه، Plugin، ClawHub، ریشهٔ اضافی، مدیریت‌شده، عامل شخصی یا سیستمی دست نمی‌زند.

نحوهٔ کار

  • ابتدا پیشنهاد: محتوای تولیدشده به‌صورت PROPOSAL.md ذخیره می‌شود، نه SKILL.md.
  • اعمال تنها نوشتن زنده است: ایجاد، به‌روزرسانی و بازبینی هرگز Skills فعال را تغییر نمی‌دهند.
  • محدود به فضای کاری: ایجادها ریشهٔ skills/ فضای کاری را هدف می‌گیرند؛ به‌روزرسانی‌ها فقط برای Skills قابل‌نوشتن فضای کاری مجازند.
  • بدون بازنویسی: اگر Skill هدف از قبل وجود داشته باشد، ایجاد ناموفق می‌شود.
  • مقید به هش: پیشنهادهای به‌روزرسانی به هش فعلی هدف متصل می‌شوند و اگر Skill زنده پیش از اعمال تغییر کند، به حالت stale می‌روند.
  • مقید به اسکنر: اعمال، اسکنر امنیتی را پیش از نوشتن دوباره اجرا می‌کند.
  • قابل‌بازیابی: اعمال پیش از دست‌زدن به فایل‌های زنده، فرادادهٔ بازگردانی را می‌نویسد.
  • سطوح سازگار: گفت‌وگو، CLI و Gateway همگی همان سرویس را فراخوانی می‌کنند.

چرخهٔ حیات

text
ایجاد/به‌روزرسانی -> در انتظاربازبینی           -> در انتظاراعمال              -> اعمال‌شدهرد                 -> ردشدهقرنطینه            -> قرنطینه‌شدهتغییر هدف          -> منقضی

فقط یک پیشنهاد pending را می‌توان بازبینی، اعمال، رد یا قرنطینه کرد.

سامان‌دهی چرخهٔ حیات

Gateway میزان استفادهٔ تجمیعی از Skill را در پایگاه دادهٔ وضعیت مشترک ردیابی می‌کند. روزی یک‌بار، Skills ایجاد و اعمال‌شده توسط کارگاه Skill را بررسی می‌کند. Skills استفاده‌نشده برای بیش از 30 روز به stale تبدیل می‌شوند؛ پس از 90 روز به archived تبدیل می‌شوند و در snapshotهای جدید Skills عامل قرار نمی‌گیرند. فایل‌های Skill بایگانی‌شده روی دیسک بدون تغییر باقی می‌مانند. Skills نوشته‌شده به‌صورت دستی هرگز سامان‌دهی نمی‌شوند؛ فقط Skills ایجادشده توسط پیشنهادهای کارگاه Skill وارد سامان‌دهی چرخهٔ حیات می‌شوند.

Skills سنجاق‌شده از گذارهای چرخهٔ حیات عبور نمی‌کنند. یک Skill منقضی پس از استفاده‌شدن و اجرای پیمایش بعدی به active بازمی‌گردد. Skills بایگانی‌شده فقط از طریق یک بازیابی صریح بازمی‌گردند:

گذارهای چرخهٔ حیات و بازیابی‌ها بر نشست‌های جدید اعمال می‌شوند؛ نشست‌های در حال اجرا snapshot فعلی Skill خود را حفظ می‌کنند.

bash
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 مبتنی بر استانداردها استفاده کنید:

text
/learn/learn docs/runbook.md و https://example.com/guide؛ تمرکز بر بازیابی

بدون درخواست، /learn از عامل می‌خواهد گردش‌کار قابل‌استفادهٔ مجدد را از گفت‌وگوی فعلی استخراج کند. با وجود درخواست، عامل مسیرها، URLها، یادداشت‌های جای‌گذاری‌شده و ارجاعات گفت‌وگو را به‌عنوان منبع در نظر می‌گیرد و هم‌زمان الزامات تمرکز، دامنه و نام‌گذاری را رعایت می‌کند. منابع را با ابزارهای موجود خود گردآوری می‌کند، سپس skill_workshop را با action: "create" فراخوانی می‌کند.

پیشنهاد حاصل در حالت pending باقی می‌ماند؛ /learn هرگز آن را اعمال نمی‌کند. آن را از طریق جریان عادی تأیید یا با openclaw skills workshop بررسی و اعمال کنید.

ایجاد:

text
یک Skill به نام morning-catchup بساز که روال صندوق ورودی دوشنبهٔ من را اجرا کند.

به‌روزرسانی یک Skill موجود فضای کاری:

text
trip-planning را به‌روزرسانی کن تا پیش از رزرو، نقشهٔ صندلی‌ها را نیز بررسی کند.

تکرار روی یک پیشنهاد در انتظار:

text
پیشنهاد morning-catchup را به من نشان بده.آن را بازبینی کن تا هر مورد علامت‌گذاری‌شده به‌عنوان فوری را نیز مشخص کند.پیشنهاد morning-catchup را اعمال کن.

apply، reject و quarantine آغازشده توسط عامل، به‌طور پیش‌فرض بدون یک درخواست تأیید اضافی اجرا می‌شوند. skills.workshop.approvalPolicy را روی "pending" تنظیم کنید تا پیش از این اقدامات، تأیید اپراتور الزامی شود.

وقتی تأیید لازم باشد، درخواست، شناسهٔ پیشنهاد و Skill هدف را مشخص می‌کند و توضیحات پیشنهاد، تعداد فایل‌های پشتیبان و اندازهٔ بدنه را نشان می‌دهد. درخواست‌های تأیید محدود شده‌اند تا پیش از ناظر ابزار عامل پایان یابند. اگر پیش از انقضای درخواست تصمیمی نرسد، اقدام چرخهٔ حیات اجرا نمی‌شود: پیشنهاد در انتظار و بدون تغییر باقی می‌ماند. بعداً در رابط کاربری کارگاه Skill تصمیم بگیرید یا openclaw skills workshop apply|reject|quarantine <proposal-id> را اجرا کنید. عامل‌ها نباید یک اقدام چرخهٔ حیات منقضی‌شده را در یک حلقه دوباره امتحان کنند.

CLI

bash
# ایجاد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 مختص پیشنهاد ذخیره می‌شود:

markdown
---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 استفاده کنید:

bash
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" باشد.

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

تأیید و خودمختاری

json5
{  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" را می‌پذیرد؛ نتایج را همیشه به‌صورت پیشنهادهای در انتظار باقی می‌گذارد.

ذخیره‌سازی

text
&lt;OPENCLAW_STATE_DIR&gt;/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 استفاده کنند؛ آن فرمان اکنون توضیح می‌دهد که کارگاه مهارت داخلی است و در صورت کاربرد، همان راهنمای سیاست را نمایش می‌دهد.

مرتبط

Was this useful?
On this page

On this page