Using ClawHub
انتشار
انتشار
انتشار، یک پوشه Skills یا بسته Plugin را زیر مالکی که انتخاب میکنید به ClawHub میفرستد. ClawHub بررسی میکند که توکن شما بتواند برای آن مالک منتشر کند، فراداده، نام، نسخه، فایلها و اطلاعات منبع را اعتبارسنجی میکند، سپس انتشار را ذخیره کرده و بررسیهای امنیتی خودکار را آغاز میکند.
اگر اعتبارسنجی ناموفق باشد، چیزی منتشر نمیشود. انتشارهای جدید همچنین ممکن است تا پایان بازبینی، در مسیرهای نصب و دانلود معمول نمایش داده نشوند.
Skills
سادهترین مسیر انتشار، CLI است. وارد شوید، سپس یک پوشه Skills محلی را منتشر کنید:
clawhub loginclawhub skill publish ./my-skill \ --slug my-skill \ --name "My Skill" \ --owner <owner>هنگام انتشار برای مالک سازمانی، از --owner <handle> استفاده کنید. برای انتشار بهعنوان کاربر احراز هویتشده، آن را حذف کنید. انتشار از محتوای بدون تغییر عبور میکند. یک Skills جدید از 1.0.0 شروع میشود و تغییرات بعدی بهطور خودکار نسخه وصله بعدی را منتشر میکنند. فقط زمانی --version را بدهید که به نسخهای صریح نیاز دارید.
برای مخزنهای کاتالوگ، از
گردشکار بازاستفادهپذیر skill-publish.yml
در ClawHub استفاده کنید. این گردشکار، skill publish را برای هر پوشه Skills مستقیم زیر 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 }}برای پیشنمایش Skillsهای جدید و تغییریافته بدون انتشار، از 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 سفارشی،
iconرا با هر URL تصویر HTTPS بهopenclaw.plugin.jsonاضافه کنید. - مخزن منبع و فراداده کامیت دقیق را شامل کنید، یا از CLI در یک checkout مبتنی بر GitHub استفاده کنید تا بتواند آنها را تشخیص دهد.
- پیش از انتشار،
clawhub package validate <source>را اجرا کنید. برای یافتههای بسته، manifest، ایمپورت SDK، یا artifact، رفعهای اعتبارسنجی 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 راستیآزمایی شوند. مخزنهای خصوصی نیاز دارند ClawHub به آن مخزن GitHub دسترسی داشته باشد، برای مثال از طریق نصب آینده GitHub App در ClawHub یا یک یکپارچهسازی مجاز دیگر با GitHub.
گردشکار بازاستفادهپذیر فعلی انتشار بسته، از انتشار معتمد بدون راز برای انتشارهای workflow_dispatch پشتیبانی میکند، زمانی که id-token: write در دسترس باشد. انتشارهای واقعی با push تگ همچنان به clawhub_token نیاز دارند، پس CLAWHUB_TOKEN را برای انتشارهای تگ، انتشارهای اولیه، بستههای نامعتمد، یا انتشارهای اضطراری در دسترس نگه دارید.
پیکربندی را با این دستورها بررسی یا حذف کنید:
clawhub package trusted-publisher get @owner/package-nameclawhub package trusted-publisher delete @owner/package-nameحذف پیکربندی منتشرکننده معتمد، مسیر بازگشت است. این کار صدور توکن انتشار معتمد آینده را غیرفعال میکند تا زمانی که یک مدیر بسته دوباره پیکربندی را تنظیم کند.
پرسشهای متداول
دامنه بسته باید با مالک انتخابشده مطابقت داشته باشد
اگر دامنه بسته و مالک انتخابشده مطابقت نداشته باشند، ClawHub انتشار را رد میکند:
Package scope "@openclaw" must match selected owner "@vintageayu".Publish as "@openclaw" or rename this package to "@vintageayu/dronzer".برای رفع آن، یا مالکی را انتخاب کنید که دامنه بسته نام میبرد، یا نام بسته را تغییر دهید تا دامنه با مالکی که میتوانید بهعنوان آن منتشر کنید مطابقت داشته باشد.
اگر نام بسته از قبل دامنه درست را دارد اما بسته در مالکیت منتشرکننده اشتباه است، بهجای آن مالکیت را منتقل کنید:
clawhub package transfer @opik/opik-openclaw --to opikانتقال بسته یا Skills را فقط زمانی استفاده کنید که به هر دو مالک فعلی و منتشرکننده مقصد دسترسی مدیر دارید. انتقال بسته اجازه نمیدهد در دامنهای منتشر کنید که نمیتوانید مدیریت کنید.
اگر به مالک فعلی دسترسی ندارید اما باور دارید سازمان، پروژه، یا برند شما مالک قانونی فضای نام است، یک مسئله ادعای سازمان / فضای نام با شواهد عمومی و غیرحساس برای بازبینی کارکنان باز کنید. پیش از ثبت، ادعاهای سازمان و فضای نام را ببینید.
این از فضاهای نام سازمانی محافظت میکند. بستهای با نام @openclaw/dronzer ادعای فضای نام @openclaw را دارد، بنابراین فقط منتشرکنندگانی که به مالک @openclaw دسترسی دارند میتوانند آن را منتشر کنند.