Thursday, October 8, 2026

[OpenCode] สร้าง Workflow อัตโนมัติใน OpenCode ด้วย Custom Slash Commands

ในการพัฒนาระบบด้วย OpenCode หลายคนอาจเกิดข้อสงสัยว่า โครงสร้างของ .opencode/commands/ มีไว้ทำอะไร และความแตกต่างระหว่าง Instruction กับ Custom Command คืออะไร ในเมื่อทั้งคู่ต่างก็ใช้ควบคุม AI ได้เหมือนกัน บทความนี้จะพาไปเจาะลึกบทบาท ศูนย์รวมคำสั่งลัด และแนวทางการนำไปประยุกต์ใช้พัฒนาซอฟต์แวร์จริง


1. กำหนดเวิร์กโฟลว์อัตโนมัติด้วย .opencode/commands/

โฟลเดอร์ .opencode/commands/ ทำหน้าที่เป็นศูนย์รวมสคริปต์คำสั่งลัด (Custom Slash Commands) ช่วยให้เราล็อกลำดับเวิร์กโฟลว์ซ้ำๆ ให้ AI ทำงานตามขั้นตอนที่กำหนดได้ทันที:

  • เปลี่ยน Markdown เป็น Custom Command: เพียงสร้างไฟล์ .md ในโฟลเดอร์นี้ เช่น refactor.md จะกลายเป็นคำสั่ง /refactor ใน CLI อัตโนมัติ
  • ลำดับงานอัตโนมัติ (Automated Workflow): ล็อกกระบวนการทำงานให้เป็นมาตรฐาน เช่น ตรวจสอบโค้ด, ปรับปรุงโครงสร้าง, เขียน Test และรันสแกนความปลอดภัยตามลำดับ
  • สร้างมาตรฐานให้ทีม (Team Standardization): เมื่อแชร์โฟลเดอร์นี้ลงใน Git Repository ทุกคนในทีมจะรันเวิร์กโฟลว์ด้วยมาตรฐานเดียวกันทั้งหมด

2. ความแตกต่างระหว่าง Instruction และ Command

แม้ว่าทั้งสองส่วนจะใช้ข้อความควบคุม AI แต่มันถูกออกแบบมาเพื่อทำงานคนละระดับและคนละขอบเขต (Scope):

หัวข้อ Instruction (กฎและบทบาท) Command (สคริปต์เวิร์กโฟลว์)
เปรียบเหมือน Job Description / กฎระเบียบ SOP / สคริปต์รันกระบวนการทำงาน
พฤติกรรม สอดแทรกอยู่ใน System Prompt คอยกำกับทุกๆ บทสนทนาแบบ passive ทำงานเมื่อถูกเรียกใช้ผ่าน Slash Command เท่านั้น (Event-driven)
ขอบเขตการทำงาน กำหนดหน้าที่ สิทธิ์การเข้าถึง และสไตล์การตอบคำถามของ AI ร้อยเรียงขั้นตอนการทำงานเฉพาะกิจให้สำเร็จเป็นรอบๆ ไป
ตำแหน่งจัดเก็บ opencode.json, .opencode/agents/*.md, AGENTS.md .opencode/commands/*.md

สรุปสั้นๆ: Instruction คือการบอกว่า "คุณคือใคร และต้องปฏิบัติตามกฎอะไรบ้าง" ส่วน Command คือการบอกว่า "เมื่อฉันเรียกใช้ปุ่มนี้ ให้เริ่มรันขั้นตอนที่ 1, 2, 3... ทันที"


3. การใช้ Custom Command ในงานพัฒนาจริง

Custom Command ใน OpenCode ทำหน้าที่เป็น Prompt Workflow Template ที่รองรับการรับค่า Arguments จากผู้ใช้ผ่านตัวแปร เช่น $ARGUMENTS ช่วยให้เราสร้างคำสั่งย่อที่ยืดหยุ่นและนำกลับมาใช้ซ้ำได้ง่าย

ตัวอย่างการเขียน Command สำหรับ Refactor โค้ด (.opencode/commands/refactor.md)

---
description: ปรับปรุงโครงสร้างโค้ดให้อ่านง่าย มีประสิทธิภาพ และตรงตาม Clean Code (ใช้งาน: /refactor <ชื่อไฟล์หรือฟังก์ชัน>)
---

เป้าหมายที่ต้องการ Refactor: **$ARGUMENTS**

ให้ดำเนินการตามขั้นตอนต่อไปนี้อย่างเคร่งครัด:

1. **วิเคราะห์โค้ดเดิม:** ตรวจหา Code Smells, ความซับซ้อน (Cyclomatic Complexity) หรือจุดที่ซ้ำซ้อน
2. **ปรับปรุงโครงสร้าง:** แยกฟังก์ชันให้เล็กและกระชับ ปรับชื่อตัวแปรให้สื่อความหมาย และนำ Clean Code Principles มาปรับใช้
3. **ตรวจสอบความถูกต้อง:** ตรวจสอบให้แน่ใจว่าพฤติกรรมเดิมของระบบไม่เสียหาย
4. **สรุปผล:** แสดงรายการจุดที่มีการเปลี่ยนแปลงพร้อมอธิบายเหตุผล

4. ตัวอย่างการใช้งานใน OpenCode CLI

เมื่อต้องการใช้งาน ผู้ใช้เพียงพิมพ์เรียก Slash Command พร้อมแนบข้อมูลเป้าหมายเข้าไปในคำสั่งได้ทันที:

/refactor src/services/auth.ts

ระบบจะนำข้อความ src/services/auth.ts เข้าไปแทนที่ตัวแปร $ARGUMENTS อัตโนมัติ แล้ว AI จะเริ่มรันขั้นตอนการวิเคราะห์ ปรับโครงสร้าง และสรุปผลตามลำดับที่ล็อกไว้ในไฟล์ Command ทันที


บทสรุป

การแยกบทบาทระหว่าง Instruction (คุมพฤติกรรมหลัก) และ Command ในโฟลเดอร์ .opencode/commands/ (คุมลำดับงานเฉพาะกิจ) จะช่วยเปลี่ยนการสั่งงาน AI จากเดิมที่เป็นการพิมพ์คุยไปมาแบบสะเปะสะปะ ให้กลายเป็นเวิร์กโฟลว์ที่ได้มาตรฐาน รวดเร็ว และลดความผิดพลาดในการพัฒนาซอฟต์แวร์ได้อย่างแท้จริง

No comments:

Post a Comment