Thursday, October 8, 2026

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

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

[OpenCode - Multi-Agent] การจัดโครงสร้าง Subfolder และระบบ Name Resolution ของ Subagent ใน OpenCode

ในการพัฒนาและจัดระเบียบระบบ Multi-Agent ด้วย OpenCode เมื่อโครงการเริ่มมีขนาดใหญ่ขึ้น การจัดเก็บไฟล์ Agent ไว้ที่ Root Directory ทั้งหมดอาจทำให้โปรเจกต์ดูวุ่นวาย การจัดโครงสร้างแบบ Subfolder จึงเป็นทางออกที่ดี แต่รู้หรือไม่ว่า OpenCode มีกลไกการค้นหาและอ้างอิงชื่อ (Name Resolution) ที่มีรายละเอียดสำคัญซึ่ง Dev ต้องควรรู้!


1. พฤติกรรมหลักในการค้นหา Agent (Discovery Behavior)

OpenCode จะสแกนหาไฟล์ .md แบบ Recursive ลึกลงไปในโฟลเดอร์หลัก .opencode/agents/ ไม่ว่าจะซ้อนโฟลเดอร์ย่อยกี่ชั้นก็ตาม โดยมีเกณฑ์การระบุชื่อเรียก (Name Resolution) ดังนี้:

  • กรณีที่ 1 (อยู่ใน Subfolder โดยไม่ระบุ field name): หากเก็บไฟล์ไว้ที่ .opencode/agents/subagents/explorer.md โดยไม่มีฟิลด์ name กำหนดไว้ OpenCode จะนำ Relative Path มาต่อเป็น Prefix ส่งผลให้ชื่อเรียกกลายเป็น @subagents/explorer
  • กรณีที่ 2 (วางไว้ที่ Root หรือกำหนด name ชัดเจน): หากวางไว้ที่ Root .opencode/agents/explorer.md หรือระบุฟิลด์ name กำกับไว้ใน Frontmatter ชื่อเรียกจะกลายเป็น @explorer เสมอ

[OpenCode - Multi-Agent] คู่มือตั้งค่า OpenCode Agent Modes: ควบคุมสิทธิ์การทำงาน และจัดโครงสร้าง Multi-Agent

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


1. สรุปประเภท Mode: Primary, Subagent และ All

  • Primary Mode: เอเจนต์ระดับบนสุด (Main Orchestrator) เป็นผู้รับคำสั่งโดยตรงจากผู้ใช้ ทำหน้าที่ประมวลผลความต้องการภาพรวม วางแผนงาน และแจกจ่ายคำสั่งย่อยไปยัง Subagents
  • Subagent Mode: เอเจนต์ย่อยเฉพาะทาง ที่รอรับคำสั่งจาก Primary Agent หรือถูกเรียกใช้งานผ่าน @agent_name เพื่อทำภารกิจเฉพาะจุด (เช่น เขียนโค้ด, ตรวจ Security, เขียน Test)
  • All / Dual Mode: โหมดอเนกประสงค์ที่สามารถเป็นได้ทั้ง Primary Agent (คุยตรงกับผู้ใช้) และ Subagent (ถูกเอเจนต์ตัวอื่นเรียกไปช่วยงาน) ขึ้นอยู่กับบริบทของเวิร์กโฟลว์