บทความ › AI

MCP แบบ Code Mode: ให้ AI เขียนโค้ดเรียก tool แทนเรียกทีละครั้ง

แทนการเรียก MCP tool ทีละครั้งแล้วอ่านผลทุกก้อน ให้ AI เขียนโค้ดเรียก tool เอง ตัวอย่าง 150,000 เหลือ 2,000 token, Code Mode ของ Cloudflare และราคาที่ต้องจ่าย

ขั้นสูง อ่าน 8 นาที 23 ตุลาคม 2569

อ่านจบแล้วจะรู้
  • การเรียก tool แบบเดิมเปลือง token สองทาง คือนิยาม tool ทุกตัวที่โหลดล่วงหน้า และผลกลางทางที่ไหลผ่านโมเดลทุกก้อน
  • ให้โมเดลเขียนโค้ดที่เรียก tool ผลกลางทางอยู่ในที่รันโค้ด โมเดลเห็นแค่ผลสุดท้าย Anthropic ยกตัวอย่างลดจาก 150,000 เหลือ 2,000 token
  • ราคาที่ต้องจ่ายคือ sandbox สำหรับรันโค้ดที่ AI เขียน พร้อมจำกัดทรัพยากร ปิดเน็ต และเฝ้าดู
  • คุ้มเมื่อมี tool เยอะ หรือข้อมูลกลางทางใหญ่ ถ้ามี tool ไม่กี่ตัวและผลเล็ก การเรียกตรงยังง่ายกว่า

ระบบ AI ที่ต่อ MCP server หลายตัว มักเจอปัญหาเดียวกัน ยังไม่ทันเริ่มงาน context ก็เต็มไปด้วยนิยาม tool และพอทำงานจริง ผลจาก tool ทุกก้อนก็ไหลผ่านโมเดล แม้มันแค่ต้องส่งต่อให้ tool ถัดไป แนวทางที่ Anthropic และ Cloudflare เสนอตรงกันคือ ให้โมเดลเขียนโค้ดที่เรียก tool แทน

ตรวจข้อเท็จจริงกับบทความ Code execution with MCP ของ Anthropic (พฤศจิกายน 2025), Code Mode ของ Cloudflare (กันยายน 2025) และ changelog ของ Cloudflare ณ ตุลาคม 2026 โค้ดในบทเป็นตัวอย่างประกอบแนวคิด ไม่ใช่ API ของผลิตภัณฑ์ใด

ปัญหา: token หายไปสองทาง

ถ้ายังไม่รู้ว่า MCP คืออะไร อ่าน EP6 MCP ให้ AI มีมือ ก่อน

ทางที่หนึ่ง นิยาม tool client ส่วนใหญ่โหลดชื่อ คำอธิบาย และ schema ของทุก tool เข้า context ตั้งแต่ต้น สมมติต่อ server ไว้ 10 ตัว ตัวละ 10-20 tool โมเดลต้องอ่านนิยามเป็นร้อยก่อนผู้ใช้พิมพ์อะไร

ทางที่สอง ผลกลางทาง งาน “ดึง transcript ประชุมจาก Google Drive แล้วแนบเข้า lead ใน Salesforce” แบบเรียกตรง โมเดลต้องเรียก tool แรก รับ transcript ทั้งฉบับเข้า context แล้วพิมพ์ transcript ทั้งฉบับอีกรอบเป็น input ของ tool ที่สอง ข้อความเดียวกันผ่านโมเดลสองรอบ ทั้งที่โมเดลไม่ต้องคิดอะไรกับมันเลย

นี่คือตัวอย่างที่ Anthropic ใช้ในบทความ เรียกตรงใช้ประมาณ 150,000 token เปลี่ยนเป็นรันโค้ดเหลือประมาณ 2,000 token

วิธีคิด: tool กลายเป็นไฟล์โค้ด

แทนการโหลดนิยามทั้งหมด ให้สร้าง wrapper ของแต่ละ tool เป็นไฟล์ในโฟลเดอร์ จัดตาม server

servers/
├── google-drive/
│   ├── getDocument.ts
│   └── index.ts
├── salesforce/
│   ├── updateRecord.ts
│   └── index.ts
└── sheets/
    ├── getRows.ts
    └── index.ts

โมเดลดูรายชื่อโฟลเดอร์ เปิดเฉพาะไฟล์ tool ที่ต้องใช้ แล้วเขียนโค้ดเรียก ตัวอย่างประกอบ (สมมติว่ามี server ชื่อ sheets):

// generated wrapper: one file per tool, calls the MCP server underneath
import { callMCPTool } from "../client";
export async function getRows(input: { sheetId: string }): Promise<Row[]> {
  return callMCPTool<Row[]>("sheets__get_rows", input);
}
// what the model writes, run inside the sandbox
import * as sheets from "./servers/sheets";

const rows = await sheets.getRows({ sheetId: "abc123" });
const pending = rows.filter((r) => r.Status === "pending");
console.log(`${pending.length} pending of ${rows.length}`);
console.log(pending.slice(0, 5));   // the model sees only this

ข้อมูล 10,000 แถวอยู่ในที่รันโค้ด โมเดลเห็นแค่สิ่งที่ console.log ออกมา

ให้โมเดลเขียนโค้ดเปิดเฉพาะ tool ที่ใช้ผลกลางทางอยู่ใน sandbox~2,000 tokenเรียก tool ตรงนิยาม tool โหลดหมดผลทุกก้อนผ่านโมเดล~150,000 token
ตัวอย่างของ Anthropic: งานเดียวกัน token ลดลง 98.7%

ตัวอย่างคำนวณ

ตัวเลขของ Anthropic: 1 − 2,000 ÷ 150,000 = 1 − 0.0133 = 0.987 คือลดลง 98.7% ตรงกับที่บทความระบุ

ลองกับ sheet 10,000 แถว (สมมติแถวละประมาณ 40 token เป็นตัวเลขเพื่อคิดตาม)

เรียก tool ตรงให้โค้ดกรองก่อน
ผลที่เข้า context10,000 × 40 = 400,000 token5 แถว × 40 = 200 token + บรรทัดสรุป
พอดี context window ไหมล้น window ของหลายโมเดลสบาย
ถ้าต้องส่งต่อให้ tool ถัดไปโมเดลต้องพิมพ์ข้อมูลซ้ำอีกรอบโค้ดส่งต่อเอง ไม่ผ่านโมเดล

ประเด็นคือ ส่วนที่ประหยัดโตตามขนาดข้อมูลกลางทาง งานที่ผลเล็กอยู่แล้ว (เช่นถามอุณหภูมิหนึ่งค่า) แทบไม่ได้อะไร

ข้อดีอื่นนอกจาก token

  • วนลูปและเงื่อนไขในโค้ด เช่นรอจนมีข้อความ “deployment complete” ใน Slack เขียนเป็น loop กับ setTimeout ได้ ไม่ต้องสลับเรียก tool กับคำสั่ง sleep หลายสิบรอบ
  • ข้อมูลส่วนตัวไม่ต้องผ่านโมเดล ผลกลางทางอยู่ในที่รันโค้ดเป็นค่าเริ่มต้น Anthropic ยังเสนอให้ client แทนค่าอย่างอีเมลเป็น token เช่น [EMAIL_1] ก่อนถึงโมเดล แล้วคืนค่าจริงตอนส่งระหว่าง tool
  • เก็บ state และ skill โค้ดเขียนผลลงไฟล์ได้ และฟังก์ชันที่ใช้ได้ดีเก็บไว้ในโฟลเดอร์ใช้ซ้ำ

Code Mode ของ Cloudflare

Cloudflare ทำแนวคิดเดียวกันเป็นของจริงใน Agents SDK เรียกว่า Code Mode (บทความ 26 กันยายน 2025 โดย Kenton Varda และ Sunil Pai)

  • SDK ดึง schema จาก MCP server แล้วสร้าง TypeScript API พร้อม type และ doc comment จากคำอธิบายใน schema
  • โมเดลเห็น tool เดียวคือ “รัน TypeScript” แทน tool เป็นสิบ
  • โค้ดรันใน V8 isolate ผ่าน Worker Loader API บทความบอกว่าเริ่มได้ในไม่กี่มิลลิวินาที ใช้หน่วยความจำไม่กี่ MB จึงสร้างใหม่ทุกครั้งแล้วทิ้งได้
  • ปิดอินเทอร์เน็ต fetch() และ connect() ใช้ไม่ได้ เข้าถึง MCP server ได้ผ่าน binding ที่ให้ไว้เท่านั้น
  • โค้ดไม่ถือ key binding ได้รับอนุญาตไว้แล้ว ตัวกลางเป็นคนแนบ token ให้

สถานะ ณ ตุลาคม 2026: changelog ของ Cloudflare วันที่ 24 มีนาคม 2026 ประกาศว่า Dynamic Workers (ชื่อใหม่ของความสามารถนี้) เป็น open beta สำหรับผู้ใช้ Workers แบบเสียเงิน ระบุ Code Mode เป็น use case แรก และอ้างว่า “ประหยัด token และค่าใช้จ่ายได้ถึง 80%” ตัวเลขนี้เป็นของผู้ขาย ราคาดูจาก changelog ที่ลิงก์ไว้ท้ายบท

Code Mode ไม่ได้ลบ MCP ทิ้ง MCP ยังเป็นท่อเชื่อมและจัดการสิทธิ์ ที่เปลี่ยนคือโมเดลคุยกับท่อนั้นด้วยโค้ด

ราคาที่ต้องจ่าย

ทั้งสองบทความพูดตรงกัน: รันโค้ดที่ AI เขียน ต้องมีที่รันที่ปลอดภัย ซึ่งแปลว่างานเพิ่ม

เรียก tool ตรงให้โมเดลเขียนโค้ด
ต้องมี sandboxไม่ต้อง: แยกไฟล์ ปิดเน็ต จำกัด CPU/RAM/เวลา
token เมื่อข้อมูลกลางทางใหญ่สูงต่ำ
ตรวจสอบย้อนหลังเห็นทุก call ใน log ของ agentต้องเก็บโค้ดที่รันและ log ของ sandbox เพิ่ม
จุดพังโมเดลเลือก tool ผิดเลือกผิดได้เหมือนกัน และโค้ดยัง bug ได้
เหมาะกับtool ไม่กี่ตัว ผลเล็กtool เยอะ ข้อมูลใหญ่ งานหลายขั้น

เรื่อง sandbox บนเครื่องนักพัฒนา อ่านต่อใน บทเรื่อง sandbox ให้ AI เขียนโค้ด

ข้อผิดพลาดที่เจอบ่อย

  • รันโค้ดที่ AI เขียนด้วย eval หรือ node บนเซิร์ฟเวอร์จริง นี่คือการเปิดให้ใครก็ตามที่ฉีดข้อความเข้า context ได้ รันโค้ดบนเครื่องคุณ ดู บทเรื่อง prompt injection
  • เปิดเน็ตให้ sandbox “เผื่อไว้” โค้ดที่อ่านข้อมูลลับได้และส่งออกเน็ตได้ คือช่องรั่วสำเร็จรูป ให้เข้าถึงแค่ MCP server ที่ต้องใช้
  • ใส่ API key ใน env ของ sandbox ให้ตัวกลางนอก sandbox เป็นคนแนบ key แบบ binding ของ Cloudflare
  • log ข้อมูลทั้งก้อนออกมา console.log(rows) ทำให้ประหยัดได้เป็นศูนย์ ข้อมูลกลับเข้า context เต็ม ๆ
  • ไม่จำกัดเวลา loop ที่รอเหตุการณ์ต้องมี timeout ไม่งั้นค้างจนกินทรัพยากร
  • ใช้กับทุกงาน ถ้า agent มี tool 3 ตัวและผลเล็ก ความซับซ้อนของ sandbox ไม่คุ้ม บทเรียนเรื่องออกแบบ tool ให้ดีตั้งแต่แรกอยู่ใน บทเรียนจาก MCP server จริง 18 เครื่องมือ

แหล่งอ้างอิง

คำถามที่พบบ่อย

Code Mode แทน MCP เลยหรือเปล่า

ไม่ MCP ยังเป็นชั้นที่ใช้ค้นหา tool ต่อเชื่อม และจัดการสิทธิ์เหมือนเดิม ที่เปลี่ยนคือวิธีที่โมเดลเรียก แทนที่จะส่ง JSON เรียกทีละ tool มันเขียนโค้ดที่เรียก tool เหล่านั้นผ่าน API ที่สร้างจาก MCP

ทำไมโมเดลเขียนโค้ดได้ดีกว่าเรียก tool

Cloudflare ให้เหตุผลว่าโมเดลเห็นโค้ด TypeScript จริงมาเยอะมากตอนฝึก ส่วนรูปแบบ tool call เป็นข้อมูลสังเคราะห์ที่เห็นน้อยกว่ามาก นี่เป็นข้อสังเกตของผู้เขียนบทความ ยังไม่มีตัวเลขวัดในบทความนั้น

รันโค้ดที่ AI เขียนบนเครื่องตัวเองได้ไหม

ไม่ควรรันตรง ๆ บนเครื่องหรือเซิร์ฟเวอร์ที่มีของจริง ต้องมี sandbox ที่จำกัดไฟล์ เน็ต เวลา และหน่วยความจำ และไม่ให้โค้ดถือ key เอง

คำสั่งและค่าตั้งในบทความทดสอบบนระบบตัวอย่าง ลองบนเครื่องทดสอบก่อนใช้กับระบบจริงเสมอ

อ่านต่อ

#AIกลาง

Sandbox ให้ AI เขียนโค้ด: จำกัดไฟล์และเน็ตด้วย bubblewrap กับ Seatbelt

ให้ AI coding agent รันคำสั่งได้เองโดยไม่ต้องกดอนุมัติทุกครั้ง ด้วย sandbox ระดับ OS ตั้งขอบเขตไฟล์และเน็ตยังไง ค่าเริ่มต้นที่ต้องรู้ และส่วนที่ sandbox ไม่ครอบ

อ่าน 8 นาที
#AIกลาง

บทเรียนจาก MCP server จริง 18 เครื่องมือ ที่ AI ใช้ทำ วิดีโอ

ออกแบบ MCP server ที่ AI ใช้ถูก: ชื่อเป็นกลุ่ม เช็กโควตาก่อนจ่าย งานนานคืน id ส่งไฟล์เป็น path ไม่ใช่ base64 key อยู่ใน env และเครื่องมือเผยแพร่ต้องให้คนยืนยัน

อ่าน 13 นาที
#AIเริ่มต้น

EP6 MCP ให้ AI มีมือ เขียนเครื่องมือครั้งเดียว ใช้ได้กับ AI หลายตัว

MCP คือมาตรฐานที่ให้ AI ต่อกับระบบอื่น เช่น ฐานข้อมูลหรือระบบบทความ เขียน MCP server ตัวเล็กใน 10 บรรทัด ต่อเข้า Claude Code และสิ่งที่ต้องระวังก่อนให้ AI แตะระบบจริง

อ่าน 4 นาที