Friday, October 9, 2026

[OpenCode] เจาะลึก customize-opencode: Built-in Skill หัวใจสำคัญสำหรับการตั้งค่า OpenCode ให้ถูกต้องและปลอดภัย

ในการพัฒนาและใช้งาน OpenCode การตั้งค่าไฟล์คอนฟิกอย่างถูกต้องถือเป็นเรื่องวิกฤต เพราะหากระบุฟิลด์ผิดเพียงเล็กน้อย ระบบจะปฏิเสธการทำงานทันทีด้วย ConfigInvalidError ตัวระบบจึงออกแบบ Built-in Skill ที่ชื่อว่า customize-opencode ขึ้นมา เพื่อทำหน้าที่ควบคุมและนำทางการแก้ไขคอนฟิกของ OpenCode โดยเฉพาะ


1. บทบาทและหน้าที่หลักของ customize-opencode

Skill นี้ถูกปรับแต่งระดับ Core (ผ่าน packages/core/src/plugin/skill.ts) อยู่ในตำแหน่ง <built-in> จึงไม่ใช่ไฟล์สคริปต์ทั่วไป โดยมีหน้าที่หลักดังนี้:

  • นำทางการแก้ไขคอนฟิกอย่างถูกต้อง: แนะนำ Structure และ Schema ล่าสุดจาก https://opencode.ai/config.json เพื่อป้องกันโครงสร้างไฟล์ผิดพลาด
  • ดูแลขอบเขตการตั้งค่าทั้งหมด: ครอบคลุมการตั้งค่าใน opencode.json, opencode.jsonc, ไฟล์ใน .opencode/ และ ~/.config/opencode/
  • จัดการส่วนประกอบของระบบ: สั่งการสร้างหรือแก้ไข Agents, Subagents, Skills, Plugins, MCP Servers และ Permission Rules
  • ให้แนวทางแก้ไขเมื่อคอนฟิกมีปัญหา (Recovery Escape Hatches): แนะนำการใช้ Environmental Variables เช่น OPENCODE_DISABLE_PROJECT_CONFIG หรือ OPENCODE_PURE เพื่อกู้คืนระบบเมื่อไฟล์คอนฟิกมีปัญหา

Thursday, October 8, 2026

[OpenCode] วิธีจัดการ Built-in Agents และ Subagents ใน OpenCode: ปิด Primary และ Override โมเดล

การปรับแต่งคอนฟิกใน OpenCode เมื่อต้องการเอาเอเจนต์ที่ไม่ต้องการใช้งานออก หรือเปลี่ยนมาใช้เอเจนต์ฉบับของเราแทน สามารถทำได้ดังนี้ครับ:


1. Disable Built-in Primary Agent (plan & build)

หากต้องการปิดการใช้งาน Primary Agent เริ่มต้นอย่าง plan หรือ build สามารถระบุค่า "disable": true ในไฟล์คอนฟิกหลัก (เช่น opencode.json) ได้โดยตรง:

{
  "agent": {
    "plan": {
      "disable": true
    },
    "build": {
      "disable": true
    }
  }
}

เมื่อสั่ง Disable แล้ว ระบบจะไม่เรียกใช้งานเอเจนต์เหล่านี้อีก

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

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

[OpenCode - Multi-Agent] การจัดโครงสร้าง Subfolder ของ Subagent ใน OpenCode

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


1. โครงสร้างและการค้นหา Agent (Discovery Behavior & Directory Tree)

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

.opencode/
└── agents/
    ├── lead.md                 # เรียกใช้ผ่าน @lead
    └── subagents/
        ├── explorer.md         # เรียกใช้ผ่าน @subagents/explorer
        └── tester.md           # เรียกใช้ผ่าน @subagents/tester

หากวางไว้ที่ Root โครงสร้างชื่อจะเป็น @explorer เสมอ แต่ถ้าอยู่ในโฟลเดอร์ย่อย ชื่อเรียกจะถูกแปลงเป็น @subagents/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 (ถูกเอเจนต์ตัวอื่นเรียกไปช่วยงาน) ขึ้นอยู่กับบริบทของเวิร์กโฟลว์