---
read_when:
    - คุณต้องการให้เอเจนต์สร้างหรืออัปเดต Skills จากแชต
    - คุณต้องตรวจทาน นำไปใช้ ปฏิเสธ หรือกักกันร่าง Skills ที่สร้างขึ้น
    - คุณกำลังกำหนดค่าการอนุมัติ ความเป็นอิสระ พื้นที่จัดเก็บ หรือขีดจำกัดของ Skill Workshop
    - คุณต้องการทราบว่าข้อเสนอการเรียนรู้ด้วยตนเองได้รับการตรวจสอบที่ใด
sidebarTitle: Skill Workshop
summary: สร้างและอัปเดต Skills ของพื้นที่ทำงานผ่านการตรวจสอบของเวิร์กช็อป Skills
title: เวิร์กช็อป Skills
x-i18n:
    generated_at: "2026-07-16T19:50:31Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: 2c2590f2a1bcad3b22ef8504eac7b3a44611c3fedc0df3832660f8926ce04252
    source_path: tools/skill-workshop.md
    workflow: 16
---

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

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

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

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

## วงจรชีวิต

```text
สร้าง/อัปเดต -> รอดำเนินการ
แก้ไขข้อเสนอ  -> รอดำเนินการ
นำไปใช้       -> นำไปใช้แล้ว
ปฏิเสธ        -> ถูกปฏิเสธ
กักกัน        -> ถูกกักกัน
เป้าหมายเปลี่ยน -> ล้าสมัย
```

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

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

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

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

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

```bash
openclaw skills curator status
openclaw skills curator pin <skill>
openclaw skills curator unpin <skill>
openclaw skills curator restore <skill>
```

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

## แชต

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

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

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

```text
/learn
/learn docs/runbook.md และ https://example.com/guide; เน้นการกู้คืน
```

เมื่อไม่มีคำขอ `/learn` จะขอให้ Agent กลั่นกรองเวิร์กโฟลว์ที่นำกลับมาใช้ซ้ำได้จาก
บทสนทนาปัจจุบัน เมื่อมีคำขอ Agent จะถือว่าพาธ, 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` ที่ Agent เป็นผู้เริ่มต้นจะทำงานโดยไม่มีข้อความแจ้ง
ขออนุมัติเพิ่มเติมตามค่าเริ่มต้น ตั้งค่า `skills.workshop.approvalPolicy` เป็น `"pending"`
เพื่อกำหนดให้ผู้ปฏิบัติงานอนุมัติก่อนดำเนินการเหล่านั้น

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

## 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 list
openclaw 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>` (พื้นที่ทำงานเป้าหมาย; ค่าเริ่มต้นอนุมานจาก
cwd จากนั้นใช้ Agent เริ่มต้น) และ `--json` (ผลลัพธ์แบบมีโครงสร้าง)
`propose-create`, `propose-update` และ `revise` ยังรองรับ `--goal <text>` และ
`--evidence <text>` เพื่อบันทึกบริบทของข้อเสนอควบคู่กับ `--proposal`

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

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

```markdown
---
name: "morning-catchup"
description: "ติดตามกล่องขาเข้ารายวัน: คัดแยก เก็บถาวร นำเสนอ ร่าง วางแผน"
status: proposal
version: "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
และพาธนอกโฟลเดอร์สนับสนุนมาตรฐาน

## เครื่องมือ Agent

โมเดลใช้ `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                          |

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

<Note>
`skill_workshop` เป็นเครื่องมือ Agent ในตัวและรวมอยู่ใน
`tools.profile: "coding"` หากนโยบายที่เข้มงวดกว่าซ่อนเครื่องมือนี้ ให้เพิ่ม
`skill_workshop` ไปยังรายการ `tools.allow` ที่ใช้งานอยู่ หรือใช้
`tools.alsoAllow: ["skill_workshop"]` เมื่อขอบเขตใช้โปรไฟล์ที่ไม่มี
`tools.allow` อย่างชัดเจน การทำงานในแซนด์บ็อกซ์จะไม่สร้าง
เครื่องมือ Skill Workshop ฝั่งโฮสต์ ดังนั้นให้ดำเนินการตรวจสอบข้อเสนอจากเซสชัน
Agent ฝั่งโฮสต์ตามปกติหรือผ่าน CLI
</Note>

## Skills ที่แนะนำ

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

### สแกนเซสชันที่ผ่านมา

Control UI สามารถตรวจสอบงานเก่าได้โดยไม่ต้องเปิดใช้การเรียนรู้ด้วยตนเองแบบอัตโนมัติ
เปิด **Plugins → Workshop** และเลือก **ค้นหาแนวคิด Skill** การสแกนจะเริ่มจาก
เซสชันที่เข้าเกณฑ์ล่าสุดและตรวจสอบงานสำคัญภายในช่วงที่จำกัด
โดยจะข้ามเซสชัน Cron, Heartbeat, hook, Agent ย่อย, ACP, ที่ Plugin เป็นเจ้าของ และเซสชันตรวจสอบ
ภายใน รวมถึงบทสนทนาที่มีเทิร์นของโมเดลน้อยกว่าหกเทิร์น

ผู้ตรวจสอบใช้โมเดลที่กำหนดค่าไว้ของ Agent ที่เลือก และรับชุดบทสนทนา
ที่ปกปิดข้อมูลลับและจำกัดขนาด โดยใช้เกณฑ์ที่รัดกุมแบบเดียวกับการตรวจสอบประสบการณ์:
รูปแบบการกู้คืนที่เป็นรูปธรรม หรือขั้นตอนที่เสถียรซึ่งจะลดการเรียกโมเดลหรือเครื่องมือ
ในอนาคตได้อย่างน้อยสองครั้ง งานประจำและข้อเท็จจริงเฉพาะครั้งไม่ควรสร้างข้อเสนอ

การสแกนหนึ่งครั้งสามารถสร้างหรือแก้ไขข้อเสนอที่รอดำเนินการได้สูงสุดสามรายการ แต่ไม่สามารถนำไปใช้
ปฏิเสธ กักกัน หรือแก้ไข Skill ที่ใช้งานจริง Workshop จะแสดงความครอบคลุมสะสม
ตัวอย่างเช่น **ตรวจสอบแล้ว 20 เซสชัน · 18 มิ.ย.–วันนี้ · พบ 2 แนวคิด** เลือก
**สแกนงานก่อนหน้านี้** เพื่อดำเนินการต่อจากเคอร์เซอร์เซสชันที่เก่าที่สุดซึ่งบันทึกไว้ หลังจาก
ตรวจสอบประวัติที่มีอยู่ทั้งหมดแล้ว การดำเนินการจะเปลี่ยนเป็น **สแกนงานใหม่**

การตรวจสอบย้อนหลังต้องดำเนินการด้วยตนเอง แม้ว่า
`skills.workshop.autonomous.enabled` จะเป็น `false` การคลิกแต่ละครั้งจะเริ่มการเรียกใช้โมเดล
ดังนั้นจึงอยู่ภายใต้ค่าบริการและข้อกำหนดการจัดการข้อมูลของผู้ให้บริการ เคอร์เซอร์และจำนวนความครอบคลุม
จะถูกจัดเก็บไว้ในฐานข้อมูลสถานะ OpenClaw ที่ใช้ร่วมกัน โดยจะไม่มีการคัดลอกเนื้อหาบันทึกการสนทนา
ไปยังสถานะการสแกน

เมื่อเปิดใช้งานการเก็บข้อมูลอัตโนมัติ OpenClaw ยังสามารถดำเนินการตรวจสอบแบบระมัดระวังหลังจากทำงานสำคัญ
สำเร็จ และหลังจากระบบเอเจนต์ทั้งหมดเข้าสู่สถานะว่าง การตรวจสอบแบบแยกส่วนดังกล่าวสามารถสร้างหรือ
แก้ไขข้อเสนอที่รอดำเนินการได้ไม่เกินหนึ่งรายการ โดยไม่สามารถอัปเดตสกิลที่ใช้งานอยู่ หรือนำไปใช้ ปฏิเสธ หรือกักกัน
ข้อเสนอได้ แม้ว่า `approvalPolicy` จะเป็น `"auto"`

ดูรายละเอียดการเปิดใช้งาน คุณสมบัติที่เข้าเกณฑ์ ความเป็นส่วนตัวและค่าใช้จ่าย
เกณฑ์ข้อเสนอ และการแก้ไขปัญหาได้ที่ [การเรียนรู้ด้วยตนเอง](/tools/self-learning)

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

```json5
{
  skills: {
    workshop: {
      autonomous: {
        enabled: false,
      },
      allowSymlinkTargetWrites: false,
      approvalPolicy: "auto",
      maxPending: 50,
      maxSkillBytes: 40000,
    },
  },
}
```

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

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

สำหรับงานสำคัญที่สำเร็จโดยไม่มีการแก้ไขอย่างชัดเจน การเรียกใช้โมเดลที่เลือกแบบแยกส่วน
จะตัดสินว่าเส้นทางการดำเนินงานที่เสร็จสมบูรณ์ผ่านเกณฑ์ข้อเสนอแบบระมัดระวังหรือไม่
โมเดลเบื้องหน้าจะไม่ได้รับพรอมต์ให้เรียนรู้ก่อนตอบกลับ ผู้ตรวจสอบเบื้องหลังจะเก็บรักษา
การเรียกใช้เบื้องหน้าไว้เป็นแหล่งที่มาของข้อเสนอ ไม่สามารถเข้าถึงเครื่องมือทั่วไปของเอเจนต์ และไม่สามารถตัดสินใจ
เกี่ยวกับวงจรชีวิตได้ การตรวจสอบจะเริ่มขึ้นก็ต่อเมื่อรันไทม์เบื้องหน้ารายงานทั้งโมเดลที่แปลงค่าแล้วอย่างแน่นอน
และรายงานว่า `skill_workshop` พร้อมใช้งานจริง ดังนั้นนโยบายเครื่องมือ
ที่เข้มงวดหรือไม่ทราบสถานะจะปิดกั้นโดยค่าเริ่มต้นและไม่สร้างข้อเสนอ

ดูพฤติกรรมการตรวจสอบอัตโนมัติและโมเดลความปลอดภัยฉบับสมบูรณ์ได้ที่
[การเรียนรู้ด้วยตนเอง](/tools/self-learning)

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

## เมธอดของ Gateway

| เมธอด                             | ขอบเขต            |
| ---------------------------------- | ---------------- |
| `skills.proposals.list`            | `operator.read`  |
| `skills.proposals.inspect`         | `operator.read`  |
| `skills.proposals.historyStatus`   | `operator.read`  |
| `skills.proposals.historyScan`     | `operator.admin` |
| `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 ที่ขอให้เอเจนต์
แก้ไขแทนการส่งเนื้อหาใหม่ตามตัวอักษร

`historyStatus` และ `historyScan` เป็นเมธอดสนับสนุน Control UI โดย `historyScan`
ยอมรับ `direction: "older" | "newer"` และจะปล่อยให้ผลลัพธ์เป็น
ข้อเสนอที่รอดำเนินการเสมอ

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

```text
<OPENCLAW_STATE_DIR>/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`: ข้อเสนอสกิลที่รอดำเนินการ
- `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` เฉพาะสำหรับรากสกิลที่ตั้งใจใช้ร่วมกัน                                                                  |
| `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 มีมาให้ในตัว และแสดงคำแนะนำด้านนโยบายเดียวกันเมื่อเกี่ยวข้อง

## ที่เกี่ยวข้อง

- [สกิล](/th/tools/skills) สำหรับลำดับการโหลด ลำดับความสำคัญ และการมองเห็น
- [การเรียนรู้ด้วยตนเอง](/tools/self-learning) สำหรับข้อเสนอสกิลหลังการทำงานแบบระมัดระวัง
- [การสร้างสกิล](/th/tools/creating-skills) สำหรับพื้นฐาน `SKILL.md`
  ที่เขียนด้วยตนเอง
- [การกำหนดค่าสกิล](/th/tools/skills-config) สำหรับสคีมา `skills.workshop` ฉบับเต็ม
- [CLI สำหรับสกิล](/th/cli/skills) สำหรับคำสั่ง `openclaw skills`
