Friday, October 30, 2026

[OpenCode] OpenCode V2 Token Optimization Guide: ปรับ Config ยังไงให้ประหยัด Context และไม่สูบ Token

ถ้าคุณใช้ OpenCode สาย Agentic Coding เป็นประจำ ปัญหาที่เจอกันบ่อยที่สุดคือ Token Context โดนกินแบบสูบน้ำ ทั้งจาก System Prompt, Tool Schemas, History และ Output ที่ส่งกลับมาในทุกๆ Turn

บทความนี้สรุปคู่มือ OpenCode Token Optimization Guide (V2 Architecture) ที่จะช่วยให้คุณปรับ Config เพื่อลด Token Waste และรีดประสิทธิภาพสูงสุด โดยอ้างอิงจาก OpenCode v2.1.4 ครับ


1. Tool Output Limits (เทคนิคประหยัด Token ที่ได้ผลดีที่สุด)

การจำกัดขนาดข้อมูลที่ส่งกลับมาจากเครื่องมือ (Tools) คือจุดที่ช่วยตัด Token Waste ได้มากที่สุด:

{
  "tool_output": {
    "max_lines": 250, 
    "max_bytes": 10240
  }
}

เมื่อ Output ของ Tool เกินขนาดที่กำหนด OpenCode จะเซฟไฟล์เต็มลง Disk แล้วส่งกลับมาเฉพาะ Preview สั้นๆ เพื่อไม่ให้ท่วม Context ใน Session

[AI] System Instruction vs Skill: จัดสถาปัตยกรรม Prompt และบริหาร Token สำหรับ AI Agents

เวลาที่เราวางสถาปัตยกรรม Multi-Agent สำหรับการพัฒนาซอฟต์แวร์ โดยมี Lead Agent และบรรดา Sub-agents ทำงานร่วมกัน สิ่งที่นักพัฒนาซอฟต์แวร์มักมองข้ามไม่ได้คือเรื่องของ "การกำหนดบทบาทและการบริหาร Token Budget" คำถามคือเราควรยัดทุกอย่างไว้ในที่เดียว หรือควรแยกย่อยเพื่อคุมขอบเขตงานอย่างเหมาะสม?

หากเราใส่ฟังก์ชัน คู่มือ หรือเวิร์กโฟลว์ทั้งหมดลงไปใน System Instruction ของ Agent ตัวเดียวแบบเบ็ดเสร็จ ตัว Config จะพองโตขึ้นจนเกิดภาวะ Token Bloat ทันที ผลลัพธ์คือในทุกๆ Turn ของการสนทนา ระบบจะต้องส่งก้อนข้อมูลมหาศาลนี้วนซ้ำเข้า In-memory Context ซ้ำแล้วซ้ำเล่า ทำให้เปลืองค่าใช้จ่าย และส่งผลให้ Runtime ในการประมวลผลช้าลงอย่างเห็นได้ชัด ดังนั้น การทำความเข้าใจเส้นแบ่งระหว่างสิ่งที่ควรอยู่ใน System Instruction และสิ่งที่ควรถูกผลักไปเป็น Skill จึงเป็นกุญแจสำคัญในการแก้ปัญหานี้

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 แล้ว ระบบจะไม่เรียกใช้งานเอเจนต์เหล่านี้อีก