Using ClawHub

انتشار

انتشار

انتشار، یک پوشه Skills یا بسته Plugin را زیر مالکی که انتخاب می‌کنید به ClawHub می‌فرستد. ClawHub بررسی می‌کند که توکن شما بتواند برای آن مالک منتشر کند، فراداده، نام، نسخه، فایل‌ها و اطلاعات منبع را اعتبارسنجی می‌کند، سپس انتشار را ذخیره کرده و بررسی‌های امنیتی خودکار را آغاز می‌کند.

اگر اعتبارسنجی ناموفق باشد، چیزی منتشر نمی‌شود. انتشارهای جدید همچنین ممکن است تا پایان بازبینی، در مسیرهای نصب و دانلود معمول نمایش داده نشوند.

Skills

ساده‌ترین مسیر انتشار، CLI است. وارد شوید، سپس یک پوشه Skills محلی را منتشر کنید:

bash
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 داده شده است.

yaml
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 استفاده می‌کنند. نام‌های بسته دارای دامنه، مالک را در بخش نخست نام شامل می‌شوند:

text
@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 را اجرا کنید.
  • انتظار داشته باشید انتشارهای جدید تا پایان بررسی‌های امنیتی خودکار و راستی‌آزمایی، در سطوح نصب عمومی نمایش داده نشوند.

انتشار معتمد برای بسته‌ها

انتشار معتمد بسته، راه‌اندازی دو مرحله‌ای دارد:

  1. بسته را یک‌بار از طریق clawhub package publish معمولی دستی یا احراز هویت‌شده با توکن منتشر کنید. این کار ردیف بسته را ایجاد می‌کند و مدیران بسته‌ای را که می‌توانند پیکربندی منتشرکننده معتمد آن را تغییر دهند، تعیین می‌کند.
  2. یک مدیر بسته، پیکربندی منتشرکننده معتمد GitHub Actions را تنظیم می‌کند:
bash
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 را برای انتشارهای تگ، انتشارهای اولیه، بسته‌های نامعتمد، یا انتشارهای اضطراری در دسترس نگه دارید.

پیکربندی را با این دستورها بررسی یا حذف کنید:

bash
clawhub package trusted-publisher get @owner/package-nameclawhub package trusted-publisher delete @owner/package-name

حذف پیکربندی منتشرکننده معتمد، مسیر بازگشت است. این کار صدور توکن انتشار معتمد آینده را غیرفعال می‌کند تا زمانی که یک مدیر بسته دوباره پیکربندی را تنظیم کند.

پرسش‌های متداول

دامنه بسته باید با مالک انتخاب‌شده مطابقت داشته باشد

اگر دامنه بسته و مالک انتخاب‌شده مطابقت نداشته باشند، ClawHub انتشار را رد می‌کند:

text
Package scope "@openclaw" must match selected owner "@vintageayu".Publish as "@openclaw" or rename this package to "@vintageayu/dronzer".

برای رفع آن، یا مالکی را انتخاب کنید که دامنه بسته نام می‌برد، یا نام بسته را تغییر دهید تا دامنه با مالکی که می‌توانید به‌عنوان آن منتشر کنید مطابقت داشته باشد.

اگر نام بسته از قبل دامنه درست را دارد اما بسته در مالکیت منتشرکننده اشتباه است، به‌جای آن مالکیت را منتقل کنید:

sh
clawhub package transfer @opik/opik-openclaw --to opik

انتقال بسته یا Skills را فقط زمانی استفاده کنید که به هر دو مالک فعلی و منتشرکننده مقصد دسترسی مدیر دارید. انتقال بسته اجازه نمی‌دهد در دامنه‌ای منتشر کنید که نمی‌توانید مدیریت کنید.

اگر به مالک فعلی دسترسی ندارید اما باور دارید سازمان، پروژه، یا برند شما مالک قانونی فضای نام است، یک مسئله ادعای سازمان / فضای نام با شواهد عمومی و غیرحساس برای بازبینی کارکنان باز کنید. پیش از ثبت، ادعاهای سازمان و فضای نام را ببینید.

این از فضاهای نام سازمانی محافظت می‌کند. بسته‌ای با نام @openclaw/dronzer ادعای فضای نام @openclaw را دارد، بنابراین فقط منتشرکنندگانی که به مالک @openclaw دسترسی دارند می‌توانند آن را منتشر کنند.

Was this useful?
On this page

On this page