Using ClawHub
انتشار
انتشار
انتشار، یک پوشه مهارت یا بسته Plugin را تحت مالک انتخابی شما به ClawHub ارسال میکند. ClawHub بررسی میکند که توکن شما مجاز به انتشار برای آن مالک باشد، فراداده، نام، نسخه، فایلها و اطلاعات منبع را اعتبارسنجی میکند، سپس انتشار را ذخیره کرده و بررسیهای امنیتی خودکار را آغاز میکند.
اگر اعتبارسنجی ناموفق باشد، چیزی منتشر نمیشود. انتشارهای جدید همچنین ممکن است تا پایان بازبینی در بخشهای عادی نصب و دانلود نمایش داده نشوند.
مهارتها
سادهترین مسیر انتشار، CLI است. وارد شوید، سپس یک پوشه مهارت محلی را منتشر کنید:
clawhub loginclawhub skill publish ./my-skill \ --slug my-skill \ --name "My Skill" \ --owner <owner>هنگام انتشار برای مالک یک سازمان، از --owner <handle> استفاده کنید. برای انتشار بهعنوان کاربر احراز هویتشده، آن را حذف کنید. در فرایند انتشار، محتوای بدون تغییر نادیده گرفته میشود. یک مهارت جدید از 1.0.0 شروع میشود و تغییرات بعدی بهطور خودکار نسخه اصلاحی بعدی را منتشر میکنند. تنها زمانی --version را وارد کنید که به نسخهای صریح نیاز دارید.
برای مخزنهای کاتالوگ، از
گردشکار skill-publish.yml قابلاستفاده مجدد ClawHub استفاده کنید.
این گردشکار، skill publish را برای هر پوشه مهارت بیواسطه در root (پیشفرض:
skills) یا فقط پوشه ارائهشده بهعنوان skill_path فراخوانی میکند.
jobs: publish: uses: openclaw/clawhub/.github/workflows/skill-publish.yml@main with: owner: <owner> dry_run: false secrets: clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}برای پیشنمایش مهارتهای جدید و تغییریافته بدون انتشار، از dry_run: true استفاده کنید.
Pluginها
Pluginها از نام بستههایی به سبک npm استفاده میکنند. نام بستههای دارای محدوده، مالک را در بخش نخست نام شامل میشوند:
@owner/package-nameمحدوده باید با مالک انتخابشده برای انتشار مطابقت داشته باشد. اگر نام بسته شما @openclaw/dronzer باشد، فقط میتوان آن را بهعنوان @openclaw منتشر کرد. اگر بهعنوان @vintageayu منتشر میکنید، نام بسته را به @vintageayu/dronzer تغییر دهید.
این کار مانع از آن میشود که بستهای فضای نام سازمانیای را ادعا کند که ناشر کنترلش نمیکند.
اگر مالک برحق یک سازمان، برند، محدوده بسته، شناسه مالک یا فضای نامی هستید که پیشتر در ClawHub ادعا یا رزرو شده است، یک درخواست ادعای سازمان / فضای نام با مدارک عمومی و غیرحساس باز کنید. برای آگاهی از موارد لازم و اطلاعاتی که نباید در درخواستهای عمومی درج شوند، به ادعاهای سازمان و فضای نام مراجعه کنید.
پیش از انتشار یک Plugin
- مالکی را انتخاب کنید که با محدوده بسته مطابقت داشته باشد.
openclaw.plugin.jsonرا درج کنید. Pluginهای کد همچنین بهpackage.jsonهمراه باopenclaw.compat.pluginApiوopenclaw.build.openclawVersionنیاز دارند.- برای نمایش یک نماد سفارشی کاتالوگ Plugin در صفحه اصلی و صفحات فهرست Pluginها،
iconرا با هر URL تصویر HTTPS بهopenclaw.plugin.jsonاضافه کنید. - فراداده مخزن منبع و کامیت دقیق را درج کنید، یا CLI را از یک نسخه کاری مبتنی بر GitHub اجرا کنید تا بتواند آنها را تشخیص دهد.
- پیش از انتشار،
clawhub package validate <source>را اجرا کنید. برای یافتههای مربوط به بسته، مانیفست، واردسازی SDK یا دستساخته، به اصلاحات اعتبارسنجی Plugin مراجعه کنید. - پیش از ایجاد یک انتشار،
clawhub package publish <source> --dry-runرا اجرا کنید. - انتظار داشته باشید انتشارهای جدید تا پایان بررسیها و تأییدهای امنیتی خودکار در بخشهای عمومی نصب نمایش داده نشوند.
انتشار مورداعتماد برای بستهها
راهاندازی انتشار مورداعتماد بستهها دو مرحله دارد:
- بسته را یکبار از طریق
clawhub package publishعادی، دستی یا احراز هویتشده با توکن منتشر کنید. این کار ردیف بسته را ایجاد میکند و مدیران بستهای را تعیین میکند که میتوانند پیکربندی ناشر مورداعتماد آن را تغییر دهند. - یکی از مدیران بسته، پیکربندی ناشر مورداعتماد GitHub Actions را تنظیم میکند:
clawhub package trusted-publisher set @owner/package-name \ --repository owner/repo \ --workflow-filename package-publish.ymlپس از تنظیم پیکربندی، انتشارهای پشتیبانیشده بعدی GitHub Actions میتوانند بدون ذخیره توکن بلندمدت ClawHub در مخزن، از OIDC/انتشار مورداعتماد استفاده کنند. مخزن و نام فایل گردشکار پیکربندیشده باید با ادعای OIDC در GitHub Actions مطابقت داشته باشند. اگر --environment <name> را نیز وارد کنید، ادعای محیط GitHub Actions باید دقیقاً با آن نام مطابقت داشته باشد.
هنگام تنظیم پیکربندی ناشر مورداعتماد، ClawHub مخزن پیکربندیشده GitHub را تأیید میکند. مخزنهای عمومی را میتوان از طریق فراداده عمومی GitHub تأیید کرد. مخزنهای خصوصی مستلزم دسترسی GitHub به آن مخزن برای ClawHub هستند؛ برای نمونه، از طریق نصب آتی GitHub App مربوط به ClawHub یا یک یکپارچهسازی مجاز دیگر با GitHub.
گردشکار قابلاستفاده مجدد فعلی انتشار بسته، از انتشار مورداعتماد بدون رمز برای انتشارهای workflow_dispatch، در صورت در دسترس بودن id-token: write، پشتیبانی میکند. انتشارهای واقعی ناشی از ارسال برچسب همچنان به clawhub_token نیاز دارند؛ بنابراین CLAWHUB_TOKEN را برای انتشارهای برچسب، نخستین انتشارها، بستههای نامطمئن یا انتشارهای اضطراری در دسترس نگه دارید.
پیکربندی را با موارد زیر بررسی یا حذف کنید:
clawhub package trusted-publisher get @owner/package-nameclawhub package trusted-publisher delete @owner/package-nameحذف پیکربندی ناشر مورداعتماد مسیر بازگشت است. این کار صدور توکن برای انتشارهای مورداعتماد آینده را تا زمانی که یکی از مدیران بسته دوباره پیکربندی را تنظیم کند، غیرفعال میکند.
پرسشهای متداول
محدوده بسته باید با مالک انتخابشده مطابقت داشته باشد
اگر محدوده بسته و مالک انتخابشده مطابقت نداشته باشند، ClawHub انتشار را رد میکند:
محدوده بسته "@openclaw" باید با مالک انتخابشده "@vintageayu" مطابقت داشته باشد.بهعنوان "@openclaw" منتشر کنید یا نام این بسته را به "@vintageayu/dronzer" تغییر دهید.برای رفع آن، یا مالک مشخصشده توسط محدوده بسته را انتخاب کنید، یا نام بسته را تغییر دهید تا محدوده با مالکی که میتوانید بهعنوان آن منتشر کنید مطابقت داشته باشد.
اگر نام بسته از قبل محدوده درستی دارد، اما بسته در مالکیت ناشر اشتباهی است، در عوض مالکیت را منتقل کنید:
clawhub package transfer @opik/opik-openclaw --to opikانتقال بسته یا مهارت را فقط زمانی انجام دهید که به مالک فعلی و ناشر مقصد، هر دو، دسترسی مدیر داشته باشید. انتقال بسته به شما اجازه نمیدهد در محدودهای منتشر کنید که قادر به مدیریتش نیستید.
اگر به مالک فعلی دسترسی ندارید، اما معتقدید سازمان، پروژه یا برند شما مالک برحق فضای نام است، یک درخواست ادعای سازمان / فضای نام با مدارک عمومی و غیرحساس برای بازبینی کارکنان باز کنید. پیش از ثبت، به ادعاهای سازمان و فضای نام مراجعه کنید.
این کار از فضاهای نام سازمانی محافظت میکند. بستهای با نام @openclaw/dronzer فضای نام
@openclaw را ادعا میکند؛ بنابراین فقط ناشرانی که به مالک @openclaw دسترسی دارند
میتوانند آن را منتشر کنند.