ถ้าใครใช้ 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 ให้ทำงานต่อได้ตามปกติครับ
3 จุดใหญ่ที่มี Breaking Changes (Intentional Breaking Changes)
- Plugins: ปรับไปใช้ Plugin API รูปแบบใหม่ ทำให้ Plugin เดิมของ V1 รันตรงๆ ไม่ได้อีกต่อไป
- Server API & Clients: ปรับปรุงข้อตกลงและสัญญาการเชื่อมต่อ (Revised contracts) ใหม่
- Terminal Client: เลิกระบบแยกชั้นไฟล์
tui.json(c)แล้วรวมเป็นไฟล์ Config เดี่ยวcli.jsonแบบ Global (ระบบย้ายให้อัตโนมัติ)
ฟิลด์ที่โดนลบถาวร (Final Deletions Verified - 15 ต.ค. 2026)
จากการตรวจสอบไฟล์ Config ล่าสุด มีฟิลด์ที่เลิกใช้แล้วและต้องลบออก (DELETE) ดังนี้:
small_model→ ลบออก (DELETE): V2 ไม่มีฟิลด์นี้ในระดับ Top-level แล้ว ตัวระบบจะ auto-select โมเดลสำหรับงาน Maintenance ให้เองcompaction.prune:true→ ลบออก (DELETE): กลายเป็นค่าค้างไว้เฉยๆ ไม่ส่งผลอะไร (no-op) ใน V2 ให้เปลี่ยนไปใช้keep.tokens+bufferหรือเหลือไว้แค่auto:trueก็พอmcp.servers.context7.oauth:false→ ลบออก (DELETE): ให้ลบออกตอนสถานะเป็นdisabled:true(ค่อยใส่กลับมาตอนเปิดใช้ API-key server พร้อมใส่ headers +oauth:false)
ตารางเปลี่ยนชื่อฟิลด์ (Field Migrations V1 → V2)
| Category | โครงสร้างเดิม (V1) | โครงสร้างใหม่ (V2) |
|---|---|---|
| Share | autoshare: bool |
share: manual|auto|disabled |
| Permissions | permission:{bash,task}tools:{websearch:false} |
permissions:[{action,resource,effect}](bash → shell, task → subagent, write+patch → edit) |
| Agents | agent:{prompt,disable,variant,maxSteps,permission}และ mode map |
agents:{system,disabled,model#variant,steps,permissions,request.body}(prompt → system, disable → disabled, maxSteps → steps, temperature/top_p/options → request.body) |
| Snapshots | snapshot |
snapshots (ค่า bool เหมือนเดิม) |
| Media | attachment->{image} |
media->{image} |
| MCP | mcp.<name>/{enabled,timeout:NN,clientId...}experimental.mcp_timeout |
mcp.servers.<name>/{disabled (ตรงข้าม enabled),timeout:{catalog,execution},client_id...}mcp.timeout.catalog/execution |
| Providers | provider.{npm:@ai-sdk/...,options.baseURL} |
providers.{package:@opencode/ai/providers/*,settings.baseURL,env,headers/body} |
| เหมือนเดิม | shell, model, default_agent, share |
|
แนวทางย้ายระบบที่แนะนำ (Recommended Path)
- ทดสอบก่อน: สำรองหรือเก็บไฟล์ Config เดิมไว้ แล้วลองรันบน V2 ดูว่า Models, Credentials, Agents, Permissions และ MCP ยังทำงานถูกต้องไหม
- Port ส่วนเสริม: พอร์ต Plugins และระบบที่ต่อกับ Server API ให้เข้ากับโครงสร้าง V2
- Convert อัตโนมัติ (Optional): สั่งแปลงไฟล์ Config ทั้งหมดเป็น V2 Native ได้ง่ายๆ ด้วยการส่ง Prompt ให้ AI:
"Migrate my OpenCode configuration, including file-based definitions, from V1 to native V2. Preserve behavior."
No comments:
Post a Comment