- 3
- เมษายน
OpenClaw Deep Dive Series EP.2 — จาก EP.1 ที่เราติดตั้ง OpenClaw และสร้าง AI Agent ตัวแรก กันไปแล้ว ตอนนี้ถึงเวลาเจาะลึก "Skills" — หัวใจที่ทำให้ OpenClaw ทำงานได้มากกว่า Chatbot ธรรมดา Skills คือชุดคำสั่งที่สอนให้ Agent ทำงานเฉพาะทาง เปรียบเหมือน Plugin ที่เพิ่มความสามารถใหม่ๆ ให้ Agent ของคุณ และที่สำคัญ — คุณสามารถสร้าง Custom Skill ของตัวเองได้! ไม่ว่าจะเป็นการดึงข้อมูลจาก Database, เรียก API ภายในองค์กร หรือสั่งงานระบบ ERP ผ่านภาษาธรรมชาติ
สรุปสั้น — สิ่งที่จะได้เรียนรู้ในบทความนี้:
- Skill คืออะไร — Plugin ที่สอนให้ Agent ทำงานเฉพาะทาง
- Built-in Skills — 8+ Skills ที่มีมาให้พร้อมใช้ทันที
- Skill Architecture — Trigger, Execute, Respond ทำงานอย่างไร
- สร้าง Custom Skill — ตัวอย่างจริง Skill "ตรวจสอบสถานะ Server"
- Testing & Debugging — วิธีทดสอบและแก้ปัญหา Skill
- Deploy Skill สู่ Production — พร้อมข้อควรระวังด้าน Security
OpenClaw Skills คืออะไร?
Skill คือ Plugin ที่สอนให้ AI Agent ทำงานเฉพาะทางได้ — ถ้า Agent เหมือนพนักงานใหม่ Skills ก็เหมือน "คู่มือการทำงาน" ที่สอนให้ทำงานแต่ละอย่าง เช่น คู่มือการอนุมัติเอกสาร คู่มือการตรวจสอบสต็อก หรือคู่มือการสรุปรายงาน ยิ่งมี Skill มากเท่าไหร่ Agent ก็ยิ่งทำงานได้หลากหลายมากขึ้น
Skill แต่ละตัวถูกกำหนดด้วยไฟล์ Config (YAML/JSON) ที่ระบุ ชื่อ, คำอธิบาย, Trigger Pattern (เงื่อนไขที่ทำให้ Skill ทำงาน) และ Action (สิ่งที่ Skill ทำจริง) ทำให้ระบบเป็น Modular — เพิ่ม/ลบ/แก้ไข Skill ได้โดยไม่ต้องแก้โค้ดหลักของ OpenClaw
| ประเภท | ความสามารถ | ตัวอย่าง |
|---|---|---|
| Chatbot ธรรมดา | ตอบคำถามแค่ Text — ไม่สามารถทำงานอื่นได้ | "สวัสดีครับ มีอะไรให้ช่วยไหม?" |
| Agent ไม่มี Skills | ทำงานทั่วไปได้ (อ่านไฟล์ รัน Command) แต่ไม่รู้งานขององค์กร | "อ่านไฟล์ report.csv ให้หน่อย" |
| Agent + Custom Skills | ทำงานเฉพาะทางขององค์กรได้ — รู้ว่า "อนุมัติใบเบิก" ต้องเรียก API ไหน | "อนุมัติใบเบิกเลขที่ PO-2569-0042" |
Built-in Skills — มีอะไรมาให้พร้อมใช้?
OpenClaw มี Built-in Skills มาให้หลายตัว ครอบคลุมงานพื้นฐานที่ Agent ควรทำได้:
| Skill | ความสามารถ | ตัวอย่างคำสั่ง |
|---|---|---|
| file_manager | อ่าน/เขียน/ลบ/ย้ายไฟล์ | "สร้างไฟล์ summary.txt สรุปข้อมูล" |
| shell_executor | รัน Shell Commands | "เช็ค disk space เครื่องนี้" |
| web_browser | ท่องเว็บ ค้นหา สกรีนช็อต | "ค้นข่าว AI วันนี้ สรุปให้ 5 ข้อ" |
| email_handler | อ่าน/ส่ง/จัดการอีเมล | "ร่างอีเมลตอบลูกค้าเรื่องใบเสนอราคา" |
| calendar_sync | ดูปฏิทิน ตั้งนัด เตือนความจำ | "นัดประชุมวันศุกร์บ่าย 2" |
| code_interpreter | รัน Python/JS Code | "คำนวณ ROI จากตัวเลขนี้" |
| image_analyzer | วิเคราะห์รูปภาพ (ถ้า Model รองรับ Vision) | "ดูรูปนี้แล้วบอกว่ามีอะไรบ้าง" |
| api_caller | เรียก REST API ภายนอก | "ดึงอัตราแลกเปลี่ยนวันนี้" (เปรียบเทียบกับ Ollama API) |
Built-in Skills ครอบคลุมงานทั่วไป แต่จุดแข็งที่แท้จริงของ OpenClaw คือความสามารถในการ สร้าง Custom Skill ที่ตอบโจทย์งานเฉพาะขององค์กร
Skill Architecture — ทำงานอย่างไร?
เมื่อผู้ใช้ส่งข้อความเข้ามา OpenClaw จะประมวลผลผ่าน Skill Router ซึ่งทำหน้าที่จับคู่ข้อความกับ Skill ที่เหมาะสม:
User Message → Skill Router → Match Trigger → Execute Action → Return Response
| | | | |
"เช็คสถานะ ตรวจสอบ พบ Trigger รัน ping ส่งผลลัพธ์
server" ทุก Skill "เช็คสถานะ" server กลับผู้ใช้
Skill แต่ละตัวประกอบด้วย 3 ส่วนหลัก:
| ส่วนประกอบ | หน้าที่ | ตัวอย่าง |
|---|---|---|
| Trigger | เงื่อนไขที่ทำให้ Skill ทำงาน (keyword, pattern, intent) | คำว่า "เช็คสถานะ", "server status", regex pattern |
| Action | สิ่งที่ Skill ทำจริง (API call, file operation, computation) | รัน ping server, เรียก REST API, query database |
| Response | ผลลัพธ์ที่ส่งกลับ (text, file, image, structured data) | "Server ออนไลน์ Uptime 99.9% Response Time 23ms" |
ระบบ Trigger รองรับหลายรูปแบบ — ตั้งแต่ keyword matching อย่างง่าย (เช่น ถ้ามีคำว่า "สถานะ server" ให้ทำงาน) ไปจนถึง intent detection ที่ใช้ AI วิเคราะห์ว่าผู้ใช้ต้องการอะไร แม้จะพิมพ์ต่างจาก keyword ที่กำหนดไว้
สร้าง Custom Skill ตัวแรก — ขั้นตอนทีละขั้น
มาลองสร้าง Skill "ตรวจสอบสถานะ Server" ที่ ping server แล้วรายงานผลกลับให้ผู้ใช้ โดยแบ่งเป็น 4 ขั้นตอน:
Step 1: สร้างไฟล์ Skill Config
# skills/server-status.yaml
name: "server_status"
description: "ตรวจสอบสถานะ Server แล้วรายงานผล"
version: "1.0.0"
triggers:
- type: "keyword"
patterns:
- "เช็คสถานะ server"
- "server status"
- "เซิร์ฟเวอร์ทำงานอยู่ไหม"
- "ping server"
action:
type: "script"
handler: "skills/handlers/server-status.js"
response:
format: "text"
template: |
สถานะ Server:
- Host: {{host}}
- Status: {{status}}
- Response Time: {{responseTime}}ms
- Uptime: {{uptime}}
Step 2: เขียน Action Logic (Handler)
// skills/handlers/server-status.js
const { exec } = require('child_process');
const util = require('util');
const execAsync = util.promisify(exec);
module.exports = async function serverStatus(context) {
// รายการ Server ที่ต้องตรวจสอบ
const servers = [
{ name: "Web Server", host: "192.168.10.87" },
{ name: "Database", host: "192.168.10.88" },
{ name: "API Gateway", host: "192.168.10.89" }
];
const results = [];
for (const server of servers) {
try {
const start = Date.now();
await execAsync(`ping -c 1 -W 3 ${server.host}`);
const responseTime = Date.now() - start;
results.push({
host: `${server.name} (${server.host})`,
status: "Online",
responseTime,
uptime: "N/A"
});
} catch (error) {
results.push({
host: `${server.name} (${server.host})`,
status: "Offline",
responseTime: "-",
uptime: "-"
});
}
}
return { results };
};
Step 3: Register Skill ใน Config
# config/skills.yaml — ลงทะเบียน Skill ทั้งหมด
skills:
# Built-in Skills
- file_manager
- shell_executor
- web_browser
- email_handler
# Custom Skills
- path: "skills/server-status.yaml" # Skill ใหม่ที่เราสร้าง
# - path: "skills/sales-report.yaml" # เพิ่มได้เรื่อยๆ
Step 4: ทดสอบ Skill
# รัน Agent พร้อม Custom Skill
npm start -- --agent agents/my-first-agent.yaml
# ส่งข้อความทดสอบ (ผ่าน WhatsApp, Telegram หรือ CLI)
> เช็คสถานะ server
# ผลลัพธ์ที่ได้:
# สถานะ Server:
# - Web Server (192.168.10.87): Online, 23ms
# - Database (192.168.10.88): Online, 15ms
# - API Gateway (192.168.10.89): Offline
เพียง 4 ขั้นตอนก็ได้ Custom Skill ที่ใช้งานได้จริง! และเนื่องจาก Skill เป็น Modular คุณสามารถเพิ่ม Skill ใหม่ได้เรื่อยๆ โดยไม่กระทบ Skill ที่มีอยู่แล้ว
ตัวอย่างจริง — 3 Custom Skills สำหรับองค์กร
นอกจาก Skill ตรวจสอบ Server แล้ว ลองดูตัวอย่าง Custom Skills ที่องค์กรสามารถสร้างเพื่อเชื่อมกับระบบภายใน:
| Skill | Trigger | Action | Response |
|---|---|---|---|
| สรุปรายงานยอดขาย | "สรุปยอดขาย", "ยอดขายเดือนนี้" | ดึงข้อมูลจาก Database → คำนวณสรุป | ยอดรวม, เทียบเดือนก่อน, Top 5 สินค้าขายดี |
| อนุมัติใบเบิก | "อนุมัติใบเบิก PO-xxxx" | รับเลขที่ใบเบิก → เรียก ERP API → อนุมัติ | สถานะ: อนุมัติสำเร็จ, ยอด, ผู้ขอ, วันที่ |
| แจ้งเตือนสต็อกต่ำ | "เช็คสต็อก", "สินค้าใกล้หมด" | Query สต็อกจาก DB → เทียบกับเกณฑ์ขั้นต่ำ | รายการสินค้าที่ต่ำกว่าเกณฑ์ + แนะนำจำนวนสั่งซื้อ |
ทั้ง 3 ตัวอย่างนี้แสดงให้เห็นว่า Custom Skill สามารถเชื่อมต่อกับระบบที่องค์กรมีอยู่แล้ว ไม่ว่าจะเป็น Database, REST API หรือระบบ ERP — ทำให้ AI Agent กลายเป็น "ผู้ช่วยที่รู้งาน" จริงๆ
Testing & Debugging Skills
ก่อน Deploy Skill ไปใช้งานจริง ควรทดสอบให้เรียบร้อยก่อน OpenClaw มี Test Framework ในตัว:
# ทดสอบ Skill แบบ Standalone (Unit Test)
npm run test:skill -- --skill skills/server-status.yaml
# ทดสอบพร้อม Mock Data
npm run test:skill -- --skill skills/server-status.yaml --mock
# ดู Log แบบ Verbose
npm run test:skill -- --skill skills/server-status.yaml --verbose
# ผลลัพธ์:
# [PASS] Trigger "เช็คสถานะ server" → matched
# [PASS] Trigger "server status" → matched
# [PASS] Trigger "สวัสดี" → not matched (correct)
# [PASS] Action executed → 3 servers checked
# [PASS] Response format → valid
ปัญหาที่พบบ่อยและวิธีแก้:
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|---|---|
| Trigger ไม่ match | Keyword/Pattern ไม่ตรงกับข้อความผู้ใช้ | เพิ่ม Pattern ให้ครอบคลุม หรือใช้ intent detection |
| API Timeout | API ภายนอกตอบช้าหรือไม่ตอบ | ตั้ง timeout + retry logic + fallback response |
| Permission Denied | Skill ไม่มีสิทธิ์เข้าถึง resource | ตรวจสอบสิทธิ์ของ User ที่รัน Agent ดู หลักการ Least Privilege |
| JSON Parse Error | API Response รูปแบบไม่ถูกต้อง | เพิ่ม try-catch + validate response schema |
ข้อควรระวังเรื่อง Security:
- Credentials ต้องปลอดภัย — Skill ที่เรียก API ภายนอก ต้องเก็บ API Key / Password ไว้ในไฟล์
.envเท่านั้น ห้าม hardcode ลงใน Skill Config หรือ Handler โดยเด็ดขาด - Shell Command ต้อง whitelist — Skill ที่รัน Shell Command ต้องกำหนดรายการคำสั่งที่อนุญาตไว้ชัดเจน ป้องกันไม่ให้ผู้ใช้สั่ง
rm -rf /ผ่าน Agent - Input Validation — ต้องตรวจสอบ Input จากผู้ใช้ทุกครั้ง ป้องกัน SQL Injection และ Command Injection
- เปิดใช้ 2FA — สำหรับ Skill ที่ทำงานสำคัญ (เช่น อนุมัติเอกสาร โอนเงิน) ควรมีขั้นตอนยืนยันตัวตนเพิ่มเติม
Saeree ERP + Custom Skills:
ด้วย Custom Skills องค์กรสามารถสร้าง AI Agent ที่ทำงานร่วมกับระบบ ERP ได้ เช่น ตรวจสอบงบประมาณ อนุมัติเอกสาร สรุปรายงาน — Saeree ERP กำลังพัฒนา AI Assistant ที่จะเชื่อมต่อกับระบบ ERP ผ่าน Skills เหล่านี้ สนใจระบบ ERP ที่พร้อมรองรับ AI ในอนาคต ปรึกษาทีมงานฟรี ไม่มีค่าใช้จ่าย
OpenClaw Deep Dive Series — อ่านต่อ
OpenClaw Deep Dive Series — 6 ตอนเจาะลึก AI Agent:
- EP.1: ติดตั้ง OpenClaw และสร้าง AI Agent ตัวแรก
- EP.2: เจาะลึก OpenClaw Skills — สร้าง Custom Skill ตั้งแต่ศูนย์ (บทความนี้)
- EP.3: OpenClaw Kernel Module ภาคปฏิบัติ — เขียน Module เองทีละขั้น
- EP.4: สร้าง Multi-Agent Workflow ด้วย OpenClaw
- EP.5: Deploy OpenClaw สู่ Production — Security, Monitoring, Scaling
- EP.6: เชื่อม OpenClaw กับ ERP — สร้าง AI Assistant สำหรับองค์กร
"Skills คือสิ่งที่เปลี่ยน AI Agent จากผู้ช่วยทั่วไป เป็นพนักงานเฉพาะทางที่รู้งานขององค์กรคุณ — สร้างเองได้ไม่ต้องรอใคร"
- ทีมงาน Saeree ERP




