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 را وارد کنید که به نسخه‌ای مشخص نیاز دارید.

برای مخزن‌های کاتالوگ، از گردش‌کار قابل‌استفادهٔ مجدد ClawHub یعنی skill-publish.yml استفاده کنید. این گردش‌کار برای هر پوشهٔ Skills مستقیم زیر root (پیش‌فرض: skills)، یا فقط برای پوشه‌ای که به‌عنوان skill_path ارائه شده است، skill publish را فراخوانی می‌کند.

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 را با هر نشانی HTTPS تصویر به openclaw.plugin.json اضافه کنید.
  • مخزن منبع و فرادادهٔ دقیق کامیت را ارائه کنید، یا CLI را از یک نسخهٔ کاری مبتنی بر GitHub اجرا کنید تا بتواند آن‌ها را شناسایی کند.
  • پیش از انتشار، clawhub package validate <source> را اجرا کنید. برای یافته‌های مربوط به بسته، مانیفست، درون‌ریزی SDK یا دست‌ساخته، به رفع مشکلات اعتبارسنجی 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، از انتشار مورداعتماد بدون اطلاعات محرمانه پشتیبانی می‌کند. انتشارهای واقعی ناشی از ارسال برچسب همچنان به 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