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 ใหม่และที่เปลี่ยนแปลงโดยไม่เผยแพร่

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 แบบกำหนดเองบนหน้าแรกและหน้ารายการ Plugin ให้เพิ่ม icon ลงใน openclaw.plugin.json โดยใช้ URL รูปภาพ HTTPS ใดก็ได้
  • ระบุรีโพซิทอรีซอร์สและข้อมูลเมตาของคอมมิตที่แน่นอน หรือใช้ CLI จาก เช็กเอาต์ที่รองรับโดย GitHub เพื่อให้ CLI ตรวจหาได้
  • เรียกใช้ clawhub package validate <source> ก่อนเผยแพร่ สำหรับข้อค้นพบเกี่ยวกับแพ็กเกจ แมนิเฟสต์ การนำเข้า SDK หรืออาร์ติแฟกต์ โปรดดู การแก้ไขการตรวจสอบความถูกต้องของ Plugin
  • เรียกใช้ clawhub package publish <source> --dry-run ก่อนสร้างรีลีส
  • คาดว่ารีลีสใหม่จะยังไม่ปรากฏบนช่องทางการติดตั้งสาธารณะจนกว่าการตรวจสอบ ความปลอดภัยอัตโนมัติและการยืนยันจะเสร็จสิ้น

การเผยแพร่ที่เชื่อถือได้สำหรับแพ็กเกจ

การเผยแพร่แพ็กเกจที่เชื่อถือได้มีการตั้งค่า 2 ขั้นตอน:

  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 สำหรับรีโพซิทอรีนั้น เช่น ผ่านการติดตั้ง 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
สโคปแพ็กเกจ "@openclaw" ต้องตรงกับเจ้าของที่เลือก "@vintageayu"เผยแพร่ในนาม "@openclaw" หรือเปลี่ยนชื่อแพ็กเกจนี้เป็น "@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