Skills

เวิร์กช็อป Skills

Status: proposal

Skill Workshop คือแนวทางภายใต้การกำกับดูแลของ OpenClaw สำหรับการสร้างและอัปเดต Skills ในพื้นที่ทำงาน เอเจนต์และผู้ปฏิบัติงานจะไม่เขียน SKILL.md โดยตรงผ่าน แนวทางนี้ แต่จะสร้าง ข้อเสนอ (ฉบับร่างที่รอดำเนินการ ซึ่งมีเนื้อหา การเชื่อมโยง เป้าหมาย สถานะเครื่องสแกน แฮช และข้อมูลเมตาสำหรับย้อนกลับ) ซึ่งจะกลายเป็น Skill ที่ใช้งานจริงก็ต่อเมื่อนำไปใช้แล้วเท่านั้น

Skill Workshop เขียนเฉพาะ Skills ในพื้นที่ทำงานเท่านั้น และจะไม่แตะต้อง Skills ที่รวมมาในชุด, ของ Plugin, จาก ClawHub, จากรูทเพิ่มเติม, ที่มีการจัดการ, ของเอเจนต์ส่วนบุคคล หรือของระบบ

วิธีการทำงาน

  • เริ่มจากข้อเสนอ: เนื้อหาที่สร้างขึ้นจะจัดเก็บเป็น PROPOSAL.md ไม่ใช่ SKILL.md
  • การนำไปใช้เป็นการเขียนจริงเพียงอย่างเดียว: การสร้าง อัปเดต และแก้ไข จะไม่เปลี่ยน Skills ที่ใช้งานอยู่
  • จำกัดขอบเขตในพื้นที่ทำงาน: การสร้างมีเป้าหมายเป็นรูท skills/ ของพื้นที่ทำงาน ส่วนการอัปเดตอนุญาตเฉพาะ Skills ในพื้นที่ทำงานที่เขียนได้
  • ไม่เขียนทับ: การสร้างจะล้มเหลวหาก Skill เป้าหมายมีอยู่แล้ว
  • ผูกกับแฮช: ข้อเสนอการอัปเดตจะผูกกับแฮชปัจจุบันของเป้าหมาย และเปลี่ยนเป็น stale หาก Skill ที่ใช้งานจริงเปลี่ยนก่อนนำข้อเสนอไปใช้
  • ควบคุมด้วยเครื่องสแกน: การนำไปใช้จะเรียกใช้เครื่องสแกนความปลอดภัยอีกครั้ง ก่อนเขียน
  • กู้คืนได้: การนำไปใช้จะเขียนข้อมูลเมตาสำหรับย้อนกลับก่อนแตะไฟล์ที่ใช้งานจริง
  • พื้นผิวที่สอดคล้องกัน: แชต, CLI และ Gateway เรียกใช้บริการเดียวกันทั้งหมด

วงจรชีวิต

text
create/update -> pendingrevise        -> pendingapply         -> appliedreject        -> rejectedquarantine    -> quarantinedtarget change -> stale

เฉพาะข้อเสนอที่มีสถานะ pending เท่านั้นที่สามารถแก้ไข นำไปใช้ ปฏิเสธ หรือกักกันได้

การดูแลจัดการวงจรชีวิต

Gateway ติดตามการใช้งาน Skill โดยรวมในฐานข้อมูลสถานะที่ใช้ร่วมกัน วันละครั้ง ระบบจะตรวจสอบ Skills ที่สร้างและนำไปใช้โดย Skill Workshop Skills ที่ไม่ได้ใช้งาน นานกว่า 30 วันจะเปลี่ยนเป็น stale และหลังจาก 90 วันจะเปลี่ยนเป็น archived โดยจะไม่รวมอยู่ในสแนปช็อต Skill ใหม่ของเอเจนต์ ไฟล์ Skill ที่เก็บถาวรจะยังคง ไม่เปลี่ยนแปลงบนดิสก์ Skills ที่เขียนด้วยตนเองจะไม่ถูกดูแลจัดการ มีเพียง Skills ที่สร้างจากข้อเสนอของ Skill Workshop เท่านั้นที่เข้าสู่การดูแลจัดการวงจรชีวิต

Skills ที่ปักหมุดจะข้ามการเปลี่ยนสถานะวงจรชีวิต Skill ที่มีสถานะ stale จะกลับเป็น active หลังจากถูกใช้งานและการตรวจรอบถัดไปทำงาน ส่วน Skills ที่เก็บถาวรจะกลับมาได้ผ่านการคืนค่าอย่างชัดเจนเท่านั้น:

การเปลี่ยนสถานะวงจรชีวิตและการคืนค่าจะมีผลกับเซสชันใหม่ ส่วนเซสชันที่กำลังทำงาน จะยังคงใช้สแนปช็อต Skill ปัจจุบันของตน

bash
openclaw skills curator statusopenclaw skills curator pin <skill>openclaw skills curator unpin <skill>openclaw skills curator restore <skill>

คำสั่งดูแลจัดการทั้งหมดรองรับ --json สถานะยังรายงานรายการที่อาจซ้อนทับกัน แบบกำหนดผลลัพธ์ได้ในฐานะคำแนะนำเท่านั้น โดยจะไม่รวม Skills หรือเรียกใช้โมเดล

แชต

ขอ Skill ที่ต้องการจากเอเจนต์ เอเจนต์จะเรียก skill_workshop และส่งคืน รหัสข้อเสนอ

เรียนรู้จากงานล่าสุด

ใช้ /learn เพื่อเปลี่ยนบทสนทนาปัจจุบันหรือแหล่งข้อมูลที่ระบุชื่อให้เป็น ข้อเสนอ Skill ที่อิงแนวทางมาตรฐาน:

text
/learn/learn docs/runbook.md and https://example.com/guide; focus on recovery

เมื่อไม่มีคำขอ /learn จะขอให้เอเจนต์สกัดเวิร์กโฟลว์ที่นำกลับมาใช้ซ้ำได้ จากบทสนทนาปัจจุบัน เมื่อมีคำขอ เอเจนต์จะถือว่าพาธ, URL, บันทึกที่วางมา และการอ้างอิงบทสนทนาเป็นแหล่งข้อมูล โดยยังคงปฏิบัติตามข้อกำหนดด้านจุดเน้น ขอบเขต และการตั้งชื่อ เอเจนต์จะรวบรวมแหล่งข้อมูลด้วยเครื่องมือที่มีอยู่ แล้วเรียก skill_workshop ด้วย action: "create"

ข้อเสนอที่ได้จะยังคงเป็น pending และ /learn จะไม่นำข้อเสนอไปใช้ ให้ตรวจสอบและนำไปใช้ผ่านขั้นตอนการอนุมัติตามปกติ หรือใช้ openclaw skills workshop

สร้าง:

text
สร้าง Skill ชื่อ morning-catchup ที่เรียกใช้กิจวัตรจัดการกล่องจดหมายเข้าของฉันทุกวันจันทร์

อัปเดต Skill ที่มีอยู่ในพื้นที่ทำงาน:

text
อัปเดต trip-planning ให้ตรวจสอบแผนผังที่นั่งก่อนจองด้วย

ปรับปรุงข้อเสนอที่รอดำเนินการ:

text
แสดงข้อเสนอ morning-catchup ให้ฉันดูแก้ไขให้ทำเครื่องหมายรายการที่ระบุว่าเร่งด่วนด้วยนำข้อเสนอ morning-catchup ไปใช้

apply, reject และ quarantine ที่เอเจนต์เป็นผู้เริ่มต้นจะแสดงข้อความแจ้ง ขออนุมัติโดยค่าเริ่มต้น ตั้งค่า skills.workshop.approvalPolicy เป็น "auto" เพื่อข้ามขั้นตอนนี้ในสภาพแวดล้อมที่เชื่อถือได้

ข้อความแจ้งจะระบุรหัสข้อเสนอและ Skill เป้าหมาย พร้อมแสดงคำอธิบายข้อเสนอ จำนวนไฟล์สนับสนุน และขนาดเนื้อหา คำขออนุมัติจะถูกจำกัดเวลาให้เสร็จก่อน ตัวเฝ้าระวังเครื่องมือของเอเจนต์ หากไม่มีการตัดสินใจก่อนข้อความแจ้งหมดอายุ การดำเนินการวงจรชีวิตจะไม่ทำงาน โดยข้อเสนอจะยังคงรอดำเนินการและไม่เปลี่ยนแปลง ให้ตัดสินใจภายหลังใน UI ของ Skill Workshop หรือเรียกใช้ openclaw skills workshop apply|reject|quarantine <proposal-id> เอเจนต์ไม่ควร ลองดำเนินการวงจรชีวิตที่หมดอายุซ้ำเป็นวงวน

CLI

bash
# สร้างopenclaw skills workshop propose-create \  --name morning-catchup \  --description "ติดตามกล่องจดหมายเข้าประจำวัน: คัดแยก เก็บถาวร นำเสนอ ร่าง วางแผน" \  --proposal ./PROPOSAL.md # อัปเดต Skill ที่มีอยู่ในพื้นที่ทำงานopenclaw skills workshop propose-update trip-planning --proposal ./PROPOSAL.md # แสดงรายการและตรวจสอบopenclaw skills workshop listopenclaw skills workshop inspect <proposal-id> # แก้ไขก่อนอนุมัติopenclaw skills workshop revise <proposal-id> --proposal ./PROPOSAL.md # ปิดงานopenclaw skills workshop apply <proposal-id>openclaw skills workshop reject <proposal-id> --reason "ซ้ำ"openclaw skills workshop quarantine <proposal-id> --reason "ต้องตรวจสอบความปลอดภัย"

คำสั่งย่อยทุกคำสั่งรองรับ --agent <id> (พื้นที่ทำงานเป้าหมาย โดยค่าเริ่มต้น จะอนุมานจากไดเรกทอรีทำงานปัจจุบันก่อน แล้วจึงใช้เอเจนต์เริ่มต้น) และ --json (ผลลัพธ์แบบมีโครงสร้าง) นอกจากนี้ propose-create, propose-update และ revise ยังรองรับ --goal <text> และ --evidence <text> เพื่อบันทึกบริบท ของข้อเสนอควบคู่กับ --proposal

เนื้อหาข้อเสนอ

ระหว่างรอดำเนินการ ข้อเสนอจะถูกจัดเก็บเป็น PROPOSAL.md พร้อม frontmatter ที่ใช้เฉพาะกับข้อเสนอ:

markdown
---name: "morning-catchup"description: "ติดตามกล่องจดหมายเข้าประจำวัน: คัดแยก เก็บถาวร นำเสนอ ร่าง วางแผน"status: proposalversion: "v1"date: "2026-05-30T00:00:00.000Z"---

เมื่อนำไปใช้ Skill Workshop จะเขียน SKILL.md ที่ใช้งานจริงและลบฟิลด์ ที่ใช้เฉพาะกับข้อเสนอ ได้แก่ status, version ของข้อเสนอ และ date ของข้อเสนอ

ไฟล์สนับสนุน

ใช้ --proposal-dir เมื่อ Skill ที่เสนอจำเป็นต้องมีไฟล์อยู่ข้าง PROPOSAL.md:

bash
openclaw skills workshop propose-create \  --name weekly-update \  --description "สรุปส่งท้ายวันศุกร์: สถิติ ไฮไลต์ สามเรื่องสำคัญที่สุดของสัปดาห์หน้า" \  --proposal-dir ./weekly-update-proposal

ไดเรกทอรีต้องมี PROPOSAL.md ไฟล์สนับสนุนต้องอยู่ภายใต้ assets/, examples/, references/, scripts/ หรือ templates/ Skill Workshop จะสแกน คำนวณแฮช และจัดเก็บไฟล์เหล่านี้พร้อมข้อเสนอ จากนั้นจึงเขียนไฟล์ไว้ข้าง SKILL.md ที่ใช้งานจริงเมื่อนำข้อเสนอไปใช้เท่านั้น

พาธไฟล์สนับสนุนที่จะถูกปฏิเสธ ได้แก่ พาธแบบสัมบูรณ์ ส่วนของพาธที่ซ่อนอยู่ การข้ามลำดับชั้นพาธ พาธที่ซ้อนทับกัน ไฟล์ที่เรียกใช้งานได้ ข้อความที่ไม่ใช่ UTF-8 ไบต์ null และพาธที่อยู่นอกโฟลเดอร์สนับสนุนมาตรฐาน

เครื่องมือของเอเจนต์

โมเดลใช้ skill_workshop โดยต้องมี action หนึ่งรายการ: create | update | revise | list | inspect | apply | reject | quarantine พารามิเตอร์อื่นจะใช้ตามการดำเนินการ:

พารามิเตอร์ ใช้โดย หมายเหตุ
name create, inspect, revise จำเป็นสำหรับ create; มิฉะนั้นใช้ระบุข้อเสนอที่รอดำเนินการตามชื่อ
description create, update, revise สูงสุด 160 ไบต์
skill_name update ชื่อหรือคีย์ของ Skill ที่มีอยู่
proposal_content create, update, revise จัดเก็บเป็น PROPOSAL.md; จำกัดด้วย skills.workshop.maxSkillBytes
support_files create, update, revise อาร์เรย์ของ { path, content }
goal, evidence create, update, revise บริบทข้อความอิสระ
proposal_id inspect, revise, apply, reject, quarantine ข้อเสนอเป้าหมาย
reason apply, reject, quarantine ไม่บังคับ
query, status, limit list กรอง/แบ่งหน้า โดย limit สูงสุด 50 และค่าเริ่มต้น 20

เอเจนต์ต้องใช้ skill_workshop สำหรับงาน Skill ที่สร้างขึ้น และต้องไม่สร้าง หรือเปลี่ยนไฟล์ข้อเสนอผ่าน write, edit, exec, คำสั่งเชลล์ หรือการดำเนินการกับระบบไฟล์โดยตรง

Skills ที่แนะนำ

OpenClaw ตรวจจับคำสั่งที่ใช้ได้อย่างต่อเนื่อง เช่น “ครั้งหน้า”, “จำไว้ว่าต้อง” และการแก้ไขเชิงตอบสนองเมื่อการโต้ตอบแบบอินเทอร์แอกทีฟสิ้นสุดลง รวมถึงการโต้ตอบ ที่ล้มเหลว ในการโต้ตอบครั้งถัดไป เอเจนต์จะเสนอให้บันทึกเวิร์กโฟลว์ล่าสุด ที่ตรวจพบผ่าน skill_workshop โดยผู้ใช้เป็นผู้ตัดสินใจว่าจะสร้างข้อเสนอหรือไม่ คำแนะนำในตัวนี้จะไม่สร้างหรือเปลี่ยน Skill ด้วยตนเอง เปิดใช้ skills.workshop.autonomous.enabled เพื่อสร้างข้อเสนอที่รอดำเนินการโดยตรงแทน

การอนุมัติและการทำงานอัตโนมัติ

json5
{  skills: {    workshop: {      autonomous: {        enabled: false,      },      allowSymlinkTargetWrites: false,      approvalPolicy: "pending",      maxPending: 50,      maxSkillBytes: 40000,    },  },}
การตั้งค่า ค่าเริ่มต้น ผล
autonomous.enabled false สร้างข้อเสนอที่รอดำเนินการโดยตรง แทนการเสนอเวิร์กโฟลว์ล่าสุดที่ตรวจพบในการโต้ตอบครั้งถัดไป
allowSymlinkTargetWrites false อนุญาตให้การนำไปใช้เขียนผ่าน symlink ของ Skill ในพื้นที่ทำงาน ซึ่งเป้าหมายจริงอยู่ในรายการ skills.load.allowSymlinkTargets
approvalPolicy "pending" "pending" กำหนดให้มีข้อความแจ้งขออนุมัติก่อน apply, reject หรือ quarantine ที่เอเจนต์เป็นผู้เริ่มต้น ส่วน "auto" จะข้ามข้อความแจ้ง (เอเจนต์ยังคงต้องเรียกการดำเนินการ)
maxPending 50 จำกัดจำนวนข้อเสนอที่รอดำเนินการและถูกกักกันต่อพื้นที่ทำงาน (1-200)
maxSkillBytes 40000 จำกัดขนาดเนื้อหาข้อเสนอเป็นไบต์ (1024-200000)

การเก็บข้อมูลอัตโนมัติสามารถตรวจจับกฎสำหรับอนาคต (เช่น “นับจากนี้ไป”) และการแก้ไขเชิงตอบสนอง (เช่น “นั่นไม่ใช่สิ่งที่ฉันขอ”) ระบบจะจัดกลุ่มคำสั่งใหม่ ตามหัวข้อเป็นข้อเสนอสูงสุดสามรายการต่อการโต้ตอบ จับคู่คำศัพท์ไปยัง Skills ในพื้นที่ทำงานที่เขียนได้และมีอยู่แล้ว และแก้ไขข้อเสนอที่รอดำเนินการของตนเอง เมื่อมีการแก้ไขเพิ่มเติมที่มุ่งไปยัง Skill เดียวกัน

คำอธิบายข้อเสนอจะถูกจำกัดไว้ที่ 160 ไบต์เสมอ โดยไม่ขึ้นกับ maxSkillBytes

เมธอดของ Gateway

เมธอด ขอบเขต
skills.proposals.list operator.read
skills.proposals.inspect operator.read
skills.proposals.create operator.admin
skills.proposals.update operator.admin
skills.proposals.revise operator.admin
skills.proposals.requestRevision operator.admin
skills.proposals.apply operator.admin
skills.proposals.reject operator.admin
skills.proposals.quarantine operator.admin
skills.curator.status operator.read
skills.curator.pin operator.admin
skills.curator.unpin operator.admin
skills.curator.restore operator.admin

requestRevision ใช้ได้ผ่าน Gateway เท่านั้น (ไม่มีคำสั่ง CLI หรือเครื่องมือของเอเจนต์ที่เทียบเท่า): โดยจะ ส่งต่อคำแนะนำการแก้ไขแบบข้อความอิสระไปยังเซสชันแชตของเอเจนต์เจ้าของ แทนการแทนที่ PROPOSAL.md โดยตรง สำหรับ UI ที่ขอให้เอเจนต์ แก้ไขแทนการส่งเนื้อหาใหม่ตามตัวอักษร

พื้นที่จัดเก็บ

text
&lt;OPENCLAW_STATE_DIR&gt;/skill-workshop/  proposals.json  proposals/<proposal-id>/    proposal.json    PROPOSAL.md    rollback.json    assets/    examples/    references/    scripts/    templates/

ไดเรกทอรีสถานะเริ่มต้น: ~/.openclaw

  • proposal.json: ระเบียนข้อเสนอหลัก
  • proposals.json: ดัชนีสำหรับแสดงรายการอย่างรวดเร็ว ซึ่งสร้างใหม่ได้จากโฟลเดอร์ข้อเสนอ
  • PROPOSAL.md: ข้อเสนอ Skills ที่รอดำเนินการ
  • rollback.json: เมทาดาทาสำหรับการกู้คืนที่เขียนไว้ก่อนนำการเปลี่ยนแปลงไปใช้กับไฟล์จริง

ขีดจำกัด

ขีดจำกัด ค่า
คำอธิบาย 160 ไบต์
เนื้อหาข้อเสนอ skills.workshop.maxSkillBytes (ค่าเริ่มต้น 40,000; ขีดจำกัดสูงสุด 1 MiB)
ไฟล์ประกอบ 64 ไฟล์ต่อข้อเสนอ
ขนาดไฟล์ประกอบ ไฟล์ละ 256 KiB รวมทั้งหมด 2 MiB
ข้อเสนอที่รอดำเนินการและถูกกักกัน skills.workshop.maxPending ต่อเวิร์กสเปซ (ค่าเริ่มต้น 50)

การแก้ไขปัญหา

ปัญหา วิธีแก้ไข
Skill proposal description is too large ย่อ description ให้เหลือไม่เกิน 160 ไบต์
Skill proposal content is too large ย่อเนื้อหาข้อเสนอหรือเพิ่มค่า skills.workshop.maxSkillBytes
Target skill changed after proposal creation แก้ไขข้อเสนอให้สอดคล้องกับเป้าหมายปัจจุบัน หรือสร้างข้อเสนอใหม่
Proposal scan failed ตรวจสอบผลการตรวจพบของเครื่องสแกน แล้วแก้ไขหรือกักกันข้อเสนอ
untrusted symlink target กำหนดค่า skills.load.allowSymlinkTargets และเปิดใช้ skills.workshop.allowSymlinkTargetWrites เฉพาะสำหรับราก Skills ที่ใช้ร่วมกันโดยตั้งใจ
Support file paths must be under one of... ย้ายไฟล์ประกอบไปไว้ภายใต้ assets/, examples/, references/, scripts/ หรือ templates/
ข้อเสนอไม่ปรากฏในรายการ ตรวจสอบเวิร์กสเปซ --agent ที่เลือกและ OPENCLAW_STATE_DIR
เอเจนต์เรียกใช้ skill_workshop ไม่ได้ ตรวจสอบนโยบายเครื่องมือและโหมดการทำงานที่ใช้งานอยู่ coding มีเครื่องมือนี้รวมอยู่แล้ว ส่วนนโยบาย tools.allow ที่เข้มงวดต้องระบุเครื่องมือนี้อย่างชัดเจน และการทำงานในแซนด์บ็อกซ์ต้องใช้เซสชันเอเจนต์ฝั่งโฮสต์ตามปกติหรือ CLI

การวินิจฉัยนโยบายเครื่องมือ

เมื่อเปิดใช้การบันทึกอัตโนมัติ openclaw doctor จะเรียกใช้การตรวจสอบ core/doctor/skill-workshop-tool-policy สำหรับเอเจนต์เริ่มต้น หากนโยบาย ซ่อน skill_workshop คำเตือนจะระบุเลเยอร์การกำหนดค่าแรกที่กีดกันเครื่องมือนี้และ การเปลี่ยนแปลง allow หรือ alsoAllow ที่ต้องดำเนินการอย่างชัดเจน คู่มือปฏิบัติงานรุ่นเก่าอาจยังใช้ openclaw plugins inspect skill-workshop อยู่ ปัจจุบันคำสั่งดังกล่าวจะอธิบายว่า Skill Workshop มีอยู่ในระบบแล้ว และแสดงคำแนะนำด้านนโยบายเดียวกันเมื่อเกี่ยวข้อง

เนื้อหาที่เกี่ยวข้อง

Was this useful?
On this page

On this page