Get started
CLI
CLI
حزمة CLI: clawhub، والملف التنفيذي: clawhub.
ثبّتها عموميًا باستخدام npm أو pnpm:
npm i -g clawhub# orpnpm add -g clawhubثم تحقّق منها:
clawhub --helpclawhub loginclawhub whoamiالأعلام العمومية
--workdir <dir>: دليل العمل (الافتراضي: cwd؛ يعود إلى مساحة عمل Clawdbot إذا كانت مضبوطة)--dir <dir>: دليل التثبيت ضمن دليل العمل (الافتراضي:skills)--site <url>: عنوان URL الأساسي لتسجيل الدخول عبر المتصفح (الافتراضي:https://clawhub.ai)--registry <url>: عنوان URL الأساسي للـ API (الافتراضي: يُكتشف تلقائيًا، وإلاhttps://clawhub.ai)--no-input: تعطيل المطالبات
مكافئات البيئة:
CLAWHUB_SITE(القديمCLAWDHUB_SITE)CLAWHUB_REGISTRY(القديمCLAWDHUB_REGISTRY)CLAWHUB_WORKDIR(القديمCLAWDHUB_WORKDIR)
وكيل HTTP
تحترم CLI متغيرات بيئة وكيل HTTP القياسية للأنظمة الموجودة خلف وكلاء الشركات أو الشبكات المقيّدة:
HTTPS_PROXY/https_proxyHTTP_PROXY/http_proxyNO_PROXY/no_proxy
عند ضبط أي من هذه المتغيرات، توجّه CLI الطلبات الصادرة عبر
الوكيل المحدد. يُستخدم HTTPS_PROXY لطلبات HTTPS، وHTTP_PROXY
لـ HTTP العادي. ويتم احترام NO_PROXY / no_proxy لتجاوز الوكيل لـ
مضيفين أو نطاقات محددة.
هذا مطلوب على الأنظمة التي تُحظر فيها الاتصالات الصادرة المباشرة (مثل حاويات Docker، أو Hetzner VPS بإنترنت عبر وكيل فقط، أو جدران حماية الشركات).
مثال:
export HTTPS_PROXY=http://proxy.example.com:3128export NO_PROXY=localhost,127.0.0.1clawhub search "my query"عند عدم ضبط أي متغير وكيل، يبقى السلوك دون تغيير (اتصالات مباشرة).
ملف الضبط
يخزّن رمز API الخاص بك + عنوان URL المخبأ للسجل.
- macOS:
~/Library/Application Support/clawhub/config.json - Linux/XDG:
$XDG_CONFIG_HOME/clawhub/config.jsonأو~/.config/clawhub/config.json - Windows:
%APPDATA%\\clawhub\\config.json - مسار رجوع قديم: إذا لم يكن
clawhub/config.jsonموجودًا بعد لكنclawdhub/config.jsonموجود، تعيد CLI استخدام المسار القديم - تجاوز:
CLAWHUB_CONFIG_PATH(القديمCLAWDHUB_CONFIG_PATH)
الأوامر
login / auth login
- الافتراضي: يفتح المتصفح إلى
<site>/cli/authويكمل عبر استدعاء loopback. - بلا واجهة:
clawhub login --token clh_... - تفاعلي عن بُعد/بلا واجهة: يطبع
clawhub login --deviceرمزًا وينتظر بينما تفوّضه عند<site>/cli/device.
whoami
- يتحقق من الرمز المخزّن عبر
/api/v1/whoami.
token
- يطبع رمز API المخزّن إلى stdout.
- مفيد لتمرير رمز تسجيل دخول محلي عبر أنبوب إلى أوامر إعداد أسرار CI.
star <skill> / unstar <skill>
- يضيف Skills أو يزيلها من تمييزاتك.
- يستدعي
POST /api/v1/stars/<slug>وDELETE /api/v1/stars/<slug>. - يتجاوز
--yesالتأكيد.
search <query...>
- يستدعي
/api/v1/search?q=.... - يتضمن الخرج slug الخاص بالـ Skills، ومعرّف المالك، واسم العرض، ودرجة الصلة.
- يعطي البحث أفضلية لمطابقات رموز slug/الاسم الدقيقة قبل شعبية التنزيل. رمز slug مستقل مثل
mapيطابقpersonal-mapبقوة أكبر من السلسلة الفرعية داخلamap. - الشعبية عامل ترتيب أولي صغير، وليست ضمانًا للظهور في أعلى النتائج.
- إذا كان ينبغي أن تظهر Skills لكنها لا تظهر، شغّل
clawhub inspect @owner/slugأثناء تسجيل الدخول للتحقق من تشخيصات الإشراف المرئية للمالك قبل إعادة تسمية البيانات الوصفية.
explore
- يسرد أحدث Skills عبر
/api/v1/skills?limit=...&sort=createdAt(مرتبة حسبcreatedAtتنازليًا). - الأعلام:
--limit <n>(1-200، الافتراضي: 25)--sort newest|updated|rating|downloads|trending(الافتراضي: newest). لا تزال أسماء sort المستعارة القديمة للتثبيت تعمل للتوافق.--json(خرج قابل للقراءة آليًا)
- الخرج:
<slug> v<version> <age> <summary>(يُقتطع الملخص إلى 50 حرفًا).
inspect @owner/slug
- يجلب بيانات Skills الوصفية وملفات الإصدار دون تثبيت.
--version <version>: فحص إصدار محدد (الافتراضي: الأحدث).--tag <tag>: فحص إصدار موسوم (مثلlatest).--versions: سرد سجل الإصدارات (الصفحة الأولى).--limit <n>: الحد الأقصى لعدد الإصدارات المراد سردها (1-200).--files: سرد ملفات الإصدار المحدد.--file <path>: جلب محتوى الملف الخام (الملفات النصية فقط؛ حد 200KB).--json: خرج قابل للقراءة آليًا.
install @owner/slug
- يحل أحدث إصدار للمالك والـ Skills المحددين.
- ينزّل ملف zip عبر
/api/v1/download. - يستخرجه إلى
<workdir>/<dir>/<slug>. - يرفض الكتابة فوق Skills المثبتة؛ شغّل
clawhub unpin <skill>أولًا. - يكتب:
<workdir>/.clawhub/lock.json(القديم.clawdhub)<skill>/.clawhub/origin.json(القديم.clawdhub)
uninstall <skill>
- يزيل
<workdir>/<dir>/<slug>ويحذف إدخال ملف القفل. - يرسل قياسات استخدام بأفضل جهد أثناء تسجيل الدخول كي يمكن إلغاء تنشيط أعداد التثبيت الحالية.
- تفاعلي: يطلب التأكيد.
- غير تفاعلي (
--no-input): يتطلب--yes.
list
- يقرأ
<workdir>/.clawhub/lock.json(القديم.clawdhub). - يعرض
pinnedبجانب Skills المجمّدة باستخدامclawhub pin، بما في ذلك السبب الاختياري.
pin <skill>
- يعلّم Skills مثبتة على أنها مثبتة في ملف القفل.
- يسجل
--reason <text>سبب تجميد Skills. - تتجاوز
update --allSkills المثبتة، وترفضهاupdate <skill>المباشرة. - ترفض Skills المثبتة أيضًا
install --forceحتى لا تُستبدل البايتات المحلية عن طريق الخطأ.
unpin <skill>
- يزيل تثبيت ملف القفل من Skills مثبتة بحيث يمكن للتحديثات المستقبلية تعديلها.
update [@owner/slug] / update --all
- يحسب البصمة من الملفات المحلية.
- إذا طابقت البصمة إصدارًا معروفًا: لا توجد مطالبة.
- إذا لم تطابق البصمة:
- يرفض افتراضيًا
- يكتب فوقها باستخدام
--force(أو مطالبة، إذا كان تفاعليًا)
- لا تُحدّث Skills المثبتة أبدًا بواسطة
--force. - يفشل
update <skill>سريعًا لـ Skills المثبتة ويخبرك بتشغيلclawhub unpin <skill>أولًا. - يتجاوز
update --allقيم slug المثبتة ويطبع ملخصًا لما بقي مجمّدًا.
skill publish <path>
- يقارن بصمة الحزمة المحلية مع ClawHub ويخرج بنجاح عندما يكون المحتوى منشورًا بالفعل.
- تعتمد Skills الجديدة افتراضيًا
1.0.0؛ وتعتمد Skills التي تغيرت افتراضيًا إصدار التصحيح التالي. - يحدد
--version <version>إصدارًا صراحة وينشر حتى عندما يطابق المحتوى إصدارًا موجودًا. - يحل
--dry-runالنشر دون رفع؛ ويطبع--jsonنتيجة قابلة للقراءة آليًا. - ينشر
--owner <handle>تحت معرّف ناشر مؤسسة/مستخدم عندما يكون للفاعل صلاحية الناشر. - ينقل
--migrate-ownerSkills موجودة إلى--ownerأثناء نشر إصدار جديد. يتطلب وصول admin/owner لدى كلا الناشرين. - يشرح
docs/publishing.mdسلوك المالك والمراجعة. - يعني نشر Skills أنها صادرة تحت
MIT-0على ClawHub. - Skills المنشورة مجانية للاستخدام والتعديل وإعادة التوزيع دون إسناد.
- لا يدعم ClawHub Skills مدفوعة أو تسعيرًا لكل Skills.
- الاسم المستعار القديم:
publish <path>.
clawhub skill publish ./my-skill --dry-runclawhub skill publish ./my-skillclawhub skill publish ./my-skill --version 2.0.0GitHub Actions
يستدعي سير العمل القابل لإعادة الاستخدام في ClawHub
skill-publish.yml
الأمر skill publish لـ skill_path واحد، أو لكل مجلد Skills مباشر
تحت root (الافتراضي: skills). يتجاوز Skills غير المتغيرة ويستخدم
سلوك إصدار التصحيح التلقائي نفسه.
اضبط dry_run: true للمعاينة دون رمز. تتطلب عمليات النشر الحقيقية
سر clawhub_token.
sync
- يفحص دليل العمل الحالي، ودليل Skills المضبوط، وأي
مجلدات
--root <dir>بحثًا عن مجلدات Skills محلية تحتويSKILL.mdأوskill.md. - يقارن بصمة كل Skills محلية مع ClawHub وينشر Skills الجديدة أو المتغيرة فقط.
- تنشر Skills الجديدة كـ
1.0.0؛ وتنشر Skills المتغيرة إصدار التصحيح التالي افتراضيًا. استخدم--bump minor|majorلدفعات التحديث التي ينبغي أن تنتقل بخطوة semver أكبر. - يعرض
--dry-runخطة النشر دون رفع؛ ويطبع--jsonخطة قابلة للقراءة آليًا. - ينشر
--allكل Skills جديدة أو متغيرة دون مطالبة. بدون--all، تتيح لك الطرفيات التفاعلية اختيار Skills المراد نشرها. - ينشر
--owner <handle>تحت معرّف ناشر مؤسسة/مستخدم عندما يكون للفاعل صلاحية الناشر. syncنشر باتجاه واحد فقط. لا يثبّت أو يحدّث أو ينزّل أو يبلّغ عن قياسات استخدام التثبيت/التنزيل.
clawhub sync --all --dry-runclawhub sync --allclawhub sync --root ./skills --owner openclaw --bump minorscan --slug <slug>
- يتطلب
clawhub login. - يشغّل ClawHub ClawScan عبر
POST /api/v1/skills/-/scan، ثم يستطلع حتى يصبح الفحص نهائيًا. - الفحوصات غير متزامنة وقد تستغرق وقتًا للإكمال. أثناء الانتظار في الطابور، يعرض مؤشّر الطرفية موضع الفحص الحالي ذي الأولوية وعدد الفحوصات التي تسبقه.
- تتطلب الفحوصات المنشورة ملكية أو صلاحية إدارة الناشر. يمكن للمشرفين/المسؤولين استخدام الواجهة الخلفية نفسها عبر
clawhub-admin. - يكون
--updateصالحًا فقط مع--slug؛ يكتب نتائج الفحص المنشور الناجحة مرة أخرى إلى الإصدار المحدد. - ينزّل
--output <file.zip>أرشيف التقرير الكامل معmanifest.jsonوclawscan.jsonوskillspector.jsonوstatic-analysis.jsonوvirustotal.jsonوREADME.md. - يطبع
--jsonاستجابة الاستطلاع الكاملة للأتمتة. - لم تعد فحوصات المسار المحلي مدعومة. ارفع إصدارًا جديدًا، ثم استخدم
scan downloadلاسترداد نتائج الفحص المخزّنة لذلك الإصدار المقدّم.
clawhub scan --slug gifgrepclawhub scan --slug gifgrep --version 1.2.3clawhub scan --slug gifgrep --update --output report.zipscan download <name>
- يتطلب
clawhub login. - ينزّل ملف ZIP لتقرير الفحص المخزّن لإصدار Skills أو Plugin مقدّم، بما في ذلك الإصدارات التي حجبتها أو أخفتها فحوصات أمان ClawHub.
- تستخدم تنزيلات Skills قيمة slug الخاصة بالـ Skills وتكون افتراضيًا
--kind skill. - تستخدم تنزيلات Plugin اسم الحزمة وتتطلب
--kind plugin. --versionمطلوب كي يفحص المؤلفون الإصدار المقدّم بدقة الذي حظره ClawHub.- يختار
--output <file.zip>مسار الوجهة.
clawhub scan download gifgrep --version 1.2.3clawhub scan download @scope/demo --version 2.0.0 --kind plugin --output report.zipGitHub Actions
يوفر ClawHub سير عمل رسميًا قابلًا لإعادة الاستخدام عند
/.github/workflows/skill-publish.yml
لمستودعات Skills ومستودعات الفهارس.
إعداد فهرس نموذجي:
name: Skill Publish on: pull_request: workflow_dispatch: jobs: dry-run: if: github.event_name == 'pull_request' uses: openclaw/clawhub/.github/workflows/skill-publish.yml@v1 with: owner: nvidia dry_run: true publish: if: github.event_name == 'workflow_dispatch' uses: openclaw/clawhub/.github/workflows/skill-publish.yml@v1 with: owner: nvidia dry_run: false secrets: clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}ملاحظات:
- تكون
rootافتراضيًاskillsلمستودعات الفهارس. - مرّر
skill_path: skills/review-helperلمعالجة مجلد Skills واحد. - يطابق
ownerعلم CLI--owner؛ احذفه للنشر باسم المستخدم المصادق عليه. - يستخدم نشر Skills في V1
clawhub_token؛ أما النشر الموثوق عبر GitHub OIDC فهو للحزم فقط حاليًا.
delete <skill>
- بدون
--version، احذف Skills حذفًا ناعمًا (المالك أو المشرف أو المسؤول). - يستدعي
DELETE /api/v1/skills/{slug}. - عمليات الحذف الناعم التي يبدأها المالك تحجز المعرّف اللطيف لمدة 30 يومًا؛ ويطبع الأمر وقت الانتهاء.
- يحذف
--version <version>نهائيًا إصدارًا واحدًا مملوكًا غير أحدث إصدار عبر مسار يفشل مغلقًا ومخصّص للإصدار. لا يمكن استعادة الإصدارات المحذوفة أو نشرها مجددًا. انشر بديلًا قبل حذف أحدث إصدار حالي. لا يتجاوز موظفو المنصة الملكية في هذا التدفق الخاص بالإصدار فقط. - يسجل
--reason <text>ملاحظة إشراف عند الحذف الناعم الكامل للـ Skills وفي سجل التدقيق. --note <text>اسم مستعار لـ--reason.- يتجاوز
--yesالتأكيد.
undelete <skill>
- استعد Skills مخفية (المالك أو المشرف أو المسؤول).
- لا توجد استعادة حذف للإصدارات؛ لا يمكن استعادة الإصدارات المحذوفة نهائيًا.
- يستدعي
POST /api/v1/skills/{slug}/undelete. - يسجل
--reason <text>ملاحظة إشراف على Skills وفي سجل التدقيق. --note <text>اسم مستعار لـ--reason.- يتجاوز
--yesالتأكيد.
hide <skill>
- أخفِ Skills (المالك أو المشرف أو المسؤول).
- اسم مستعار لـ
delete.
unhide <skill>
- ألغِ إخفاء Skills (المالك أو المشرف أو المسؤول).
- اسم مستعار لـ
undelete.
skill rename <skill> <new-name>
- أعد تسمية Skills مملوكة واحتفظ بالمعرّف اللطيف السابق كاسم مستعار لإعادة التوجيه.
- يستدعي
POST /api/v1/skills/{slug}/rename. - يتجاوز
--yesالتأكيد.
skill merge <source> <target>
- ادمج Skills مملوكة واحدة في Skills مملوكة أخرى.
- يتوقف المعرّف اللطيف للمصدر عن الظهور علنًا ويصبح اسمًا مستعارًا لإعادة التوجيه إلى الهدف.
- يستدعي
POST /api/v1/skills/{sourceSlug}/merge. - يتجاوز
--yesالتأكيد.
transfer
- سير عمل نقل الملكية.
- تنشئ عمليات النقل إلى معرّفات المستخدمين طلبًا معلقًا يقبله المستلم.
- تُطبَّق عمليات النقل إلى معرّفات المؤسسات/الناشرين فورًا فقط عندما يكون لدى المنفّذ وصول مسؤول إلى كل من المالك الحالي والناشر الوجهة.
- الأوامر الفرعية:
transfer request <skill> <handle> [--message "..."] [--yes]transfer list [--outgoing]transfer accept <skill> [--yes]transfer reject <skill> [--yes]transfer cancel <skill> [--yes]
- نقاط النهاية:
POST /api/v1/skills/{slug}/transferPOST /api/v1/skills/{slug}/transfer/acceptPOST /api/v1/skills/{slug}/transfer/rejectPOST /api/v1/skills/{slug}/transfer/cancelGET /api/v1/transfers/incomingGET /api/v1/transfers/outgoing
package explore [query...]
- يتصفح أو يبحث في كتالوج الحزم الموحّد عبر
GET /api/v1/packagesوGET /api/v1/packages/search. - استخدم هذا للـ plugins وإدخالات عائلات الحزم الأخرى؛ يبقى
searchعلى المستوى الأعلى سطح البحث في Skills. - الأعلام:
--family skill|code-plugin|bundle-plugin--official--executes-code--target <target>,--os <os>,--arch <arch>,--libc <libc>--requires-browser,--requires-desktop,--requires-native-deps--requires-external-service,--external-service <name>--binary <name>,--os-permission <name>--artifact-kind legacy-zip|npm-pack--npm-mirror--limit <n>(1-100، الافتراضي: 25)--json
أمثلة:
clawhub package explore --family code-pluginclawhub package explore --family code-plugin --os darwin --requires-desktopclawhub package explore --family code-plugin --artifact-kind npm-packclawhub package explore --npm-mirrorclawhub package explore episodic-claw --family code-pluginpackage inspect <name>
- يجلب بيانات تعريف الحزمة دون تثبيت.
- استخدم هذا لبيانات تعريف Plugin، والتوافق، والتحقق، والمصدر، وفحص الإصدار/الملفات.
--version <version>: افحص إصدارًا محددًا (الافتراضي: latest).--tag <tag>: افحص إصدارًا موسومًا (مثلlatest).--versions: اسرد سجل الإصدارات (الصفحة الأولى).--limit <n>: الحد الأقصى للإصدارات المراد سردها (1-100).--files: اسرد ملفات الإصدار المحدد.--file <path>: اجلب محتوى الملف الخام (الملفات النصية فقط؛ حد 200KB).--json: مخرجات قابلة للقراءة آليًا.
package download <name>
- يحل إصدار حزمة عبر
GET /api/v1/packages/{name}/versions/{version}/artifact. - ينزّل الأثر من
downloadUrlالخاص بالمحلّل. - يتحقق من ClawHub SHA-256 لكل الآثار.
- بالنسبة إلى آثار ClawPack npm-pack، يتحقق أيضًا من سلامة npm
sha512، وnpm shasum، واسم/إصدارpackage.jsonفي الأرشيف. - تُنزَّل إصدارات ZIP القديمة عبر مسار ZIP القديم.
- الأعلام:
--version <version>: نزّل إصدارًا محددًا.--tag <tag>: نزّل إصدارًا موسومًا (الافتراضي:latest).-o, --output <path>: ملف أو دليل الإخراج.--force: اكتب فوق ملف إخراج موجود.--json: مخرجات قابلة للقراءة آليًا.
أمثلة:
clawhub package download @openclaw/example-plugin --tag latestclawhub package download @openclaw/example-plugin --version 1.2.3 -o artifacts/package verify <file>
- يحسب ClawHub SHA-256، وسلامة npm
sha512، وnpm shasum لأثر محلي. - مع
--package، يحل بيانات التعريف المتوقعة من ClawHub ويقارن الملف المحلي ببيانات تعريف الأثر المنشور. - مع أعلام البصمة المباشرة، يتحقق دون بحث عبر الشبكة.
- الأعلام:
--package <name>: اسم الحزمة لحل بيانات تعريف الأثر المتوقعة.--version <version>أو--tag <tag>: إصدار الحزمة المتوقع.--sha256 <hex>: ClawHub SHA-256 المتوقع.--npm-integrity <sri>: سلامة npm المتوقعة.--npm-shasum <sha1>: npm shasum المتوقع.--json: مخرجات قابلة للقراءة آليًا.
أمثلة:
clawhub package verify ./example-plugin-1.2.3.tgz --package @openclaw/example-plugin --version 1.2.3clawhub package verify ./example-plugin-1.2.3.tgz --sha256 <hex>package validate <source>
- يشغّل Plugin Inspector المضمّن في ClawHub CLI على مجلد حزمة Plugin محلية.
- الوضع الافتراضي هو التحقق غير المتصل/الثابت، دون تحديد أو استيراد نسخة OpenClaw محلية.
- أخطاء التوافق الصارمة تخرج بقيمة غير صفرية. تُطبع النتائج التحذيرية فقط لكنها تخرج بقيمة صفرية.
- الأعلام:
--out <dir>: اكتب تقارير Plugin Inspector إلى هذا الدليل.--openclaw <path>: افحص مقابل نسخة OpenClaw محلية صريحة.--runtime: فعّل التقاط وقت التشغيل؛ يستورد كود Plugin.--allow-execute: اسمح بالتقاط وقت التشغيل في مساحة عمل معزولة.--no-mock-sdk: عطّل OpenClaw SDK الوهمي أثناء التقاط وقت التشغيل.--json: مخرجات قابلة للقراءة آليًا.
مثال:
clawhub package validate ./example-pluginإذا أبلغ التحقق عن نتيجة في الحزمة أو البيان أو استيراد SDK أو الأثر، فراجع إصلاحات تحقق Plugin، ثم أعد تشغيل الأمر.
package delete <name>
- بدون
--version، يحذف حزمة وكل الإصدارات حذفًا ناعمًا. - يحذف
--version <version>نهائيًا إصدارًا واحدًا مملوكًا غير أحدث إصدار عبر مسار يفشل مغلقًا ومخصّص للإصدار. لا يمكن استعادة الإصدارات المحذوفة أو نشرها مجددًا. انشر بديلًا قبل حذف أحدث إصدار حالي. يتطلب هذا التدفق الخاص بالإصدار فقط مالك الحزمة أو مسؤول ناشر مؤسسة؛ لا يتجاوز موظفو المنصة ملكية الحزمة. - يتطلب الحذف الناعم للحزمة بالكامل مالك الحزمة، أو مالك/مسؤول ناشر مؤسسة، أو مشرف المنصة، أو مسؤول المنصة.
- الأعلام:
--version <version>: احذف نهائيًا إصدارًا واحدًا غير أحدث إصدار.--yes: تجاوز التأكيد.--json: مخرجات قابلة للقراءة آليًا.
مثال:
clawhub package delete @openclaw/example-plugin --yesclawhub package delete @openclaw/example-plugin --version 1.2.3 --yespackage undelete <name>
- يستعيد حزمة وإصدارات محذوفة حذفًا ناعمًا.
- لا توجد استعادة حذف للإصدارات؛ لا يمكن استعادة الإصدارات المحذوفة نهائيًا.
- يتطلب مالك الحزمة، أو مالك/مسؤول ناشر مؤسسة، أو مشرف المنصة، أو مسؤول المنصة.
- يستدعي
POST /api/v1/packages/{name}/undelete. - الأعلام:
--yes: تجاوز التأكيد.--json: مخرجات قابلة للقراءة آليًا.
مثال:
clawhub package undelete @openclaw/example-plugin --yespackage transfer <name>
- ينقل حزمة إلى ناشر آخر.
- يتطلب وصول مسؤول إلى كل من مالك الحزمة الحالي والناشر الوجهة، ما لم ينفذه مسؤول منصة.
- يجب نقل أسماء الحزم ذات النطاق إلى مالك النطاق المطابق.
- يستدعي
POST /api/v1/packages/{name}/transfer. - الأعلام:
--to <owner>: معرّف الناشر الوجهة.--reason <text>: سبب تدقيق اختياري.--json: مخرجات قابلة للقراءة آليًا.
مثال:
clawhub package transfer @openclaw/example-plugin --to openclawpackage report
- أمر موثّق للإبلاغ عن حزمة إلى المشرفين.
- يستدعي
POST /api/v1/packages/{name}/report. - التقارير على مستوى الحزمة، ويمكن ربطها اختياريًا بإصدار، وتصبح مرئية للمشرفين للمراجعة.
- لا تُخفي التقارير الحزم تلقائيًا ولا تحظر التنزيلات بذاتها.
- الأعلام:
--version <version>: إصدار حزمة اختياري لإرفاقه بالتقرير.--reason <text>: سبب التقرير المطلوب.--json: مخرجات قابلة للقراءة آليًا.
مثال:
clawhub package report @openclaw/example-plugin --version 1.2.3 --reason "suspicious native payload"package moderation-status
- أمر للمالك للتحقق من رؤية الإشراف على الحزمة.
- يستدعي
GET /api/v1/packages/{name}/moderation. - يعرض حالة فحص الحزمة الحالية، وعدد التقارير المفتوحة، وحالة الإشراف اليدوي لأحدث إصدار، وحالة حظر التنزيل، وأسباب الإشراف.
- الأعلام:
--json: مخرجات قابلة للقراءة آليًا.
مثال:
clawhub package moderation-status @openclaw/example-pluginpackage readiness <name>
- يتحقق مما إذا كانت الحزمة جاهزة لاستهلاك OpenClaw في المستقبل.
- يستدعي
GET /api/v1/packages/{name}/readiness. - يبلّغ عن العوائق أمام الحالة الرسمية، وتوفر ClawPack، وبصمة الأثر، ومصدر المنشأ، وتوافق OpenClaw، وأهداف المضيف، وبيانات تعريف البيئة، وحالة الفحص.
- الأعلام:
--json: مخرجات قابلة للقراءة آليًا.
مثال:
clawhub package readiness @openclaw/example-pluginpackage migration-status <name>
- يعرض حالة ترحيل موجهة للمشغل لحزمة قد تستبدل Plugin مضمنًا في OpenClaw.
- يستدعي نقطة نهاية الجاهزية المحسوبة نفسها مثل
package readiness، لكنه يطبع حالة مركّزة على الترحيل، وأحدث إصدار، وحالة الحزمة الرسمية، والفحوصات، والعوائق. - الأعلام:
--json: مخرجات قابلة للقراءة آليًا.
مثال:
clawhub package migration-status @openclaw/example-pluginpublisher create <handle>
- ينشئ ناشر مؤسسة مملوكًا للمستخدم الموثّق.
- يُطبَّع المعرّف إلى أحرف صغيرة ويمكن تمريره مع
@أو بدونها. - ناشرو المؤسسات المنشؤون حديثًا ليسوا موثوقين/رسميين افتراضيًا.
- يفشل إذا كان المعرّف مستخدمًا بالفعل من ناشر موجود أو مستخدم أو مسار محجوز.
clawhub publisher create opik --display-name "Opik"package publish <source>
- ينشر Plugin كود أو Plugin حزمة عبر
POST /api/v1/packages. - يقبل
<source>ما يلي:- مسار مجلد محلي:
./my-plugin - أرشيف tarball محلي بتنسيق ClawPack npm-pack:
./my-plugin-1.2.3.tgz - مستودع GitHub:
owner/repoأوowner/repo@ref - عنوان URL على GitHub:
https://github.com/owner/repo
- مسار مجلد محلي:
- تُكتشف البيانات الوصفية تلقائيًا من
package.jsonوopenclaw.plugin.jsonو علامات حزم OpenClaw الحقيقية مثل.codex-plugin/plugin.jsonو.claude-plugin/plugin.jsonو.cursor-plugin/plugin.json. - تُعامل مصادر
.tgzعلى أنها ClawPack. يرفع CLI بايتات npm-pack الدقيقة ويستخدم محتوياتpackage/المستخرجة فقط للتحقق والملء المسبق للبيانات الوصفية. - تُحزم مجلدات Plugin الكود في أرشيف ClawPack npm قبل الرفع حتى تتمكن تثبيتات OpenClaw من التحقق من الأثر الدقيق. أما مجلدات Plugin الحزمة فما زالت تستخدم مسار النشر بالملفات المستخرجة.
- بالنسبة إلى مصادر GitHub، تُملأ نسبة المصدر تلقائيًا من المستودع والالتزام المحلول والمرجع والمسار الفرعي.
- بالنسبة إلى المجلدات المحلية، تُكتشف نسبة المصدر تلقائيًا من git المحلي عندما يشير جهاز origin البعيد إلى GitHub.
- يجب أن تصرّح Plugins الكود الخارجية بـ
openclaw.compat.pluginApiوopenclaw.build.openclawVersionصراحةً. لا يُستخدمpackage.json.versionعلى المستوى الأعلى كبديل احتياطي للتحقق عند النشر. - يعاين
--dry-runحمولة النشر المحلولة من دون رفعها. - يُخرج
--jsonناتجًا مقروءًا آليًا لاستخدامه في CI. - ينشر
--owner <handle>تحت مقبض ناشر مستخدم أو مؤسسة عندما يملك الفاعل صلاحية النشر. - يجب أن تتطابق أسماء الحزم ذات النطاق مع المالك المحدد. راجع
docs/publishing.md. - ما زالت الأعلام الحالية (
--familyو--nameو--versionو--source-repoو--source-commitو--source-refو--source-path) تعمل كتجاوزات. - تتطلب مستودعات GitHub الخاصة
GITHUB_TOKEN.
clawhub package publish ./plugin.tgz --owner openclawالتدفق المحلي الموصى به
استخدم --dry-run أولًا حتى تتمكن من تأكيد بيانات الحزمة الوصفية المحلولة
ونسبة المصدر قبل إنشاء إصدار حي:
npm packclawhub package publish ./my-plugin-1.2.3.tgz --family code-plugin --dry-runclawhub package publish ./my-plugin-1.2.3.tgz --family code-pluginتدفق المجلد المحلي
بالنسبة إلى Plugins الكود، ينشئ نشر المجلد أثر ClawPack من مجلد الحزمة ويرفعه:
clawhub package publish ./my-plugin --family code-plugin --dry-runclawhub package publish ./my-plugin --family code-pluginالحد الأدنى من package.json لـ --family code-plugin
تحتاج Plugins الكود الخارجية إلى قدر صغير من بيانات OpenClaw الوصفية في
package.json. هذا البيان الأدنى كافٍ لنشر ناجح:
{ "name": "@myorg/openclaw-my-plugin", "version": "1.0.0", "type": "module", "openclaw": { "extensions": ["./index.ts"], "compat": { "pluginApi": ">=2026.3.24-beta.2" }, "build": { "openclawVersion": "2026.3.24-beta.2" } }}الحقول المطلوبة:
openclaw.compat.pluginApiopenclaw.build.openclawVersion
ملاحظات:
package.json.versionهو إصدار نشر حزمتك، لكنه لا يُستخدم كبديل احتياطي للتحقق من توافق/بناء OpenClaw.openclaw.hostTargetsوopenclaw.environmentبيانات وصفية اختيارية. قد يعرضها ClawHub عند وجودها، لكنها غير مطلوبة للنشر.openclaw.compat.minGatewayVersionوopenclaw.build.pluginSdkVersionإضافات اختيارية إذا كنت تريد نشر بيانات وصفية أكثر تفصيلًا للتوافق.- إذا كنت تستخدم إصدارًا أقدم من CLI
clawhub، فقم بالترقية قبل النشر حتى تعمل فحوصات ما قبل الإقلاع المحلية قبل الرفع. - إذا أبلغ التحقق عن رمز معالجة، فراجع إصلاحات تحقق Plugin.
GitHub Actions
يوفر ClawHub أيضًا سير عمل رسميًا قابلًا لإعادة الاستخدام في
/.github/workflows/package-publish.yml
لمستودعات Plugin.
إعداد مستدعٍ نموذجي:
name: Package Publish on: pull_request: workflow_dispatch: push: tags: - "v*" jobs: dry-run: if: github.event_name == 'pull_request' uses: openclaw/clawhub/.github/workflows/package-publish.yml@v0.12.0 with: dry_run: true publish: if: github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/') permissions: contents: read id-token: write uses: openclaw/clawhub/.github/workflows/package-publish.yml@v0.12.0 with: dry_run: false secrets: clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}ملاحظات:
- يعيّن سير العمل القابل لإعادة الاستخدام
sourceافتراضيًا إلى مستودع المستدعي. - بالنسبة إلى المستودعات الأحادية، مرّر
source_pathحتى ينشر سير العمل مجلد حزمة Plugin، على سبيل المثالsource_path: extensions/codex. - ثبّت سير العمل القابل لإعادة الاستخدام على وسم مستقر أو SHA التزام كامل. لا تشغّل نشر الإصدارات من
@main. - يجب أن يستخدم
pull_requestالقيمةdry_run: trueحتى يبقى CI غير ملوِّث. - يجب أن تقتصر عمليات النشر الحقيقية على الأحداث الموثوقة مثل
workflow_dispatchأو دفع الوسوم. - لا يعمل النشر الموثوق من دون سر إلا على
workflow_dispatch؛ ما زالت عمليات دفع الوسوم تحتاج إلىclawhub_token. - أبقِ
clawhub_tokenمتاحًا للنشر الأول أو الحزم غير الموثوقة أو عمليات النشر الطارئة. - يرفع سير العمل نتيجة JSON كأثر ويعرضها كمخرجات لسير العمل.
package trusted-publisher get <name>
- يعرض إعداد ناشر GitHub Actions الموثوق لحزمة.
- استخدم هذا بعد تعيين الإعداد لتأكيد المستودع واسم ملف سير العمل وتثبيت البيئة الاختياري.
- الأعلام:
--json: ناتج مقروء آليًا.
مثال:
clawhub package trusted-publisher get @openclaw/example-pluginpackage trusted-publisher set <name>
- يربط أو يستبدل إعداد ناشر GitHub Actions الموثوق لحزمة موجودة.
- يجب إنشاء الحزمة أولًا من خلال
clawhub package publishالعادي اليدوي أو المصادق عليه برمز. - بعد تعيين الإعداد، يمكن لعمليات نشر GitHub Actions المدعومة مستقبلًا استخدام OIDC/النشر الموثوق من دون رمز ClawHub طويل الأمد.
- يجب أن يكون
--repository <repo>بصيغةowner/repo. - يجب أن يطابق
--workflow-filename <file>اسم ملف سير العمل في.github/workflows/. --environment <name>اختياري. عند تكوينه، يجب أن تطابق بيئة GitHub Actions في مطالبة OIDC تمامًا.- يتحقق ClawHub من مستودع GitHub المُكوّن عند تشغيل هذا الأمر. يمكن التحقق من المستودعات العامة عبر بيانات GitHub الوصفية العامة. تتطلب المستودعات الخاصة أن يمتلك ClawHub وصولًا إلى مستودع GitHub ذاك، مثلًا عبر تثبيت GitHub App مستقبلي خاص بـ ClawHub أو تكامل GitHub مصرح آخر.
- الأعلام:
--repository <repo>: مستودع GitHub، مثلopenclaw/example-plugin.--workflow-filename <file>: اسم ملف سير العمل، مثلpackage-publish.yml.--environment <name>: بيئة GitHub Actions اختيارية بمطابقة دقيقة.--json: ناتج مقروء آليًا.
مثال:
clawhub package trusted-publisher set @openclaw/example-plugin \ --repository openclaw/example-plugin \ --workflow-filename package-publish.yml \ --environment releasepackage trusted-publisher delete <name>
- يزيل إعداد الناشر الموثوق من حزمة.
- استخدم هذا كتراجع إذا كان يلزم تعطيل أو إعادة إنشاء سير العمل أو المستودع أو تثبيت البيئة.
- يجب أن تستخدم عمليات النشر الحقيقية المستقبلية النشر المصادق العادي حتى يُعيّن الإعداد مرة أخرى.
- الأعلام:
--json: ناتج مقروء آليًا.
مثال:
clawhub package trusted-publisher delete @openclaw/example-pluginقياسات تثبيت عن بُعد
- تُرسل بعد
clawhub install <slug>عند تسجيل الدخول، ما لم يتم تعيينCLAWHUB_DISABLE_TELEMETRY=1. - الإبلاغ يتم بأفضل جهد. لا تفشل أوامر التثبيت إذا كانت القياسات عن بُعد غير متاحة.
- التفاصيل:
docs/telemetry.md.