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 }}

ใช้ dry_run: true เพื่อดูตัวอย่าง Skills ใหม่และ Skills ที่เปลี่ยนแปลงโดยไม่เผยแพร่

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 ใน openclaw.plugin.json โดยใช้ URL รูปภาพ HTTPS ใดก็ได้
  • ใส่รีโพซิทอรีต้นทางและข้อมูลเมตาของคอมมิตที่แน่นอน หรือใช้ 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 ที่รองรับในอนาคตสามารถใช้ OIDC/การเผยแพร่แบบเชื่อถือได้ โดยไม่ต้องจัดเก็บโทเค็น ClawHub ที่มีอายุใช้งานยาวนานไว้ในรีโพซิทอรี รีโพซิทอรีและชื่อไฟล์เวิร์กโฟลว์ที่กำหนดค่าต้องตรงกับคำกล่าวอ้าง OIDC ของ GitHub Actions หากระบุ --environment <name> ด้วย คำกล่าวอ้างสภาพแวดล้อมของ GitHub Actions ต้องตรงกับชื่อนั้นทุกประการ

ClawHub จะยืนยันรีโพซิทอรี GitHub ที่กำหนดค่าไว้เมื่อตั้งค่าผู้เผยแพร่ที่เชื่อถือได้ รีโพซิทอรีสาธารณะสามารถยืนยันผ่านข้อมูลเมตาสาธารณะของ GitHub ได้ รีโพซิทอรีส่วนตัวต้องอนุญาตให้ ClawHub เข้าถึงรีโพซิทอรีนั้นผ่าน GitHub เช่น ผ่านการติดตั้ง ClawHub GitHub App ในอนาคตหรือการผสานการทำงานกับ 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