Thursday, October 15, 2026

[Important - OpenCode] OpenCode ประกาศเปลี่ยนผ่านสู่ V2! สรุปคู่มือ Migration และฟิลด์ที่ถูกลบถาวร

ถ้าใครใช้ OpenCode แล้วจู่ๆ เปิดไฟล์ Config ใน VSCode ขึ้นมาเจอแจ้งเตือน Deprecated ทั้งที่เมื่อวานยังใช้ได้ปกติ ไม่ต้องตกใจไปครับ! บทความนี้จะสรุปสาเหตุ ไทม์ไลน์การย้ายจาก V1 ไป V2 พร้อมวิธีจัดการ Config ให้เข้าที่เข้าทางกันครับ


ทำไมจู่ๆ ถึงขึ้นเตือน Deprecated? (Timeline & Migration)

สาเหตุหลักไม่ได้เกิดจากโปรแกรม OpenCode Runtime มีปัญหา แต่เป็นเพราะไทม์ไลน์การอัปเดตของตัวระบบ, Schema ฝั่ง Server และ VSCode ดังนี้ครับ:

  • ปล่อย V2 เวอร์ชันใหม่: OpenCode V2 เริ่มปล่อย Beta ช่วงต้นเดือนกรกฎาคม 2026 และเปิดตัวเวอร์ชัน 2.0 อย่างเป็นทางการเมื่อประมาณ 20 กรกฎาคม 2026
  • ช่วง Push Phase (30 ก.ย. – 6 ต.ค. 2026): ในเวอร์ชัน v1.18.34 / v1.18.35 / v1.19.0 ตัวคำสั่ง /update ถูกเปลี่ยน Endpoint จากเดิมที่เคยดึง Patch ย่อยของ V1 ให้หันไปโหลดและติดตั้ง V2 แทน โดยจะไม่มีการ Auto-update บังคับข้ามเวอร์ชัน และไม่มี Hard EOL ตัดการทำงานเด็ดขาด
  • Server อัปเดต Schema (14 ต.ค. 2026): ในเวอร์ชัน V2 2.0.29 ตัว Schema กลางบน Server ถูกอัปเดตให้ระบุว่าฟิลด์ V1 ติดสถานะ Deprecated
  • VSCode ดึง Schema ใหม่มาตรวจ: พอ VSCode รีสตาร์ทหรือเคลียร์แคช ตัว Editor เลยไปดึง Schema ใหม่จาก URL ($schema: https://opencode.ai/config.json) มาเช็ก ทำให้แสดงเตือน Deprecated บนฟิลด์เดิมทันที

สรุปสั้นๆ: ตัวโปรแกรมกับ Schema กลางเปลี่ยนเป็น V2 แล้ว ฟิลด์ V1 ในไฟล์ JSON เดิมเลยโดนเตือนใน Editor แต่ตัว OpenCode V2 Runtime ยังใจดี อ่านและแปลงค่าเดิมแบบ In-memory normalization ให้ทำงานต่อได้ตามปกติครับ

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 ตามพาธจริง