Moonshot เปิดซอร์ส AgentENV — โครงสร้างพื้นฐาน sandbox ที่ใช้เทรน agentic RL ของ Kimi K3 บูตเครื่องใหม่ใน 50 มิลลิวินาที
หลังจากที่ น้ำหนักของ Kimi K3 ลงจริงบน Hugging Face เมื่อวันที่ 27 ก.ค. (ที่บล็อกนี้เขียนถึงไปเมื่อเช้า) ทีม kvcache-ai ก็ปล่อยของอีกชิ้นตามมาในวันเดียวกัน — และสำหรับคนที่เทรนโมเดลเอง ชิ้นนี้อาจมีค่ากว่าตัวน้ำหนักด้วยซ้ำ
AgentENV (ชื่อย่อ AENV) คือแพลตฟอร์มสำหรับ รันสภาพแวดล้อมของ agent ในสเกลใหญ่ ที่ README ระบุตรง ๆ ว่า “powering agentic RL training for Kimi K3” — คือเป็นโครงสร้างพื้นฐานตัวจริงที่ใช้เทรนโมเดลตัวนั้น ปล่อยออกมาภายใต้ไลเซนส์ MIT เขียนด้วย Rust repo เพิ่งเปิดสาธารณะเมื่อ 23 ก.ค. 2026 และภายในห้าวันมีดาวแตะ 955 ดวง แล้ว
ทำไมของชิ้นนี้ถึงสำคัญกับคนเทรน agent
ปัญหาที่คนนอกวงมองไม่เห็นของ agentic RL คือ ทุก rollout ต้องมีเครื่อง Linux จริงหนึ่งเครื่อง — มีไฟล์ซิสเต็ม มี network stack มีโพรเซสที่รันอยู่จริง เพราะ agent ต้องพิมพ์คำสั่ง แก้ไฟล์ รันเทสต์แล้วดูว่า exit code เป็นอะไร ไม่ใช่แค่พ่นข้อความออกมา
เวลาเทรนในสเกลของโมเดลระดับ K3 นั่นแปลว่าต้องมี sandbox หลายหมื่นถึงหลายแสนตัว เกิดและดับตลอดเวลา ซึ่ง Docker ธรรมดาเอาไม่อยู่ทั้งในแง่ isolation และในแง่ต้นทุนต่อตัว AgentENV ตอบด้วยสี่เรื่องหลักตามที่ README ระบุ:
- สเกลข้ามเครื่องด้วย Firecracker + overlaybd — รัน Firecracker microVM จำนวนมากกระจายข้ามเครื่อง โดยดึงอิมเมจแบบ OCI โหลดตามต้องการ (on demand) ผ่าน overlaybd ดิสก์ในเครื่องทำหน้าที่เป็นแคชที่มีขอบเขต เก็บข้อมูลร้อนไว้แล้วไล่ข้อมูลเย็นออก ทำให้อิมเมจรวมกันใหญ่เกินความจุดิสก์ได้ โดยไม่ต้อง pre-warm ทุกโฮสต์
- ทำให้ sandbox ที่ว่างอยู่แทบไม่มีต้นทุน — สภาพแวดล้อมที่หนุนด้วย snapshot บูตหรือ resume ได้ต่ำกว่า 50 ms และ pause ต่ำกว่า 100 ms ตัวที่ไม่มีงานทำจะคืน CPU และแรมออกไปแล้วกลับมาใหม่เมื่อมีงานเข้า
- snapshot และ fork เป็นความสามารถระดับพื้นฐาน — snapshot ทั้งหน่วยความจำและส่วนที่เปลี่ยนของไฟล์ซิสเต็มแบบ incremental เสร็จภายใน 100 ms แม้ในกรณีที่มีการเขียนดิสก์หนัก ๆ และ sandbox ที่กำลังรันอยู่สามารถ fork ออกเป็นหลายตัวที่อิสระต่อกัน สำหรับงาน agent แบบขนาน ตัว snapshot เก็บลง object storage แบบ S3-compatible หรือ distributed filesystem ที่แชร์กันได้
- รักษาความหนาแน่นเมื่อรันไปนาน ๆ — ใช้ ublk สำหรับ I/O ประสิทธิภาพสูงและแชร์ page cache ของโฮสต์ระหว่างข้อมูลสตอเรจกับ memory snapshot ส่วน memory ballooning คืนแรมที่ guest ไม่ใช้แล้วกลับให้โฮสต์ ทำให้ overcommit สูง ๆ ยังอยู่ได้แม้สภาพแวดล้อมจะรันไปเรื่อย ๆ จนต่างกันมากขึ้น
ความสามารถ fork คือจุดที่น่าสนใจที่สุดในเชิงการวิจัย เพราะมันแปลว่าคุณสามารถพา agent เดินไปถึงจุดกลางทางของงานหนึ่ง แล้ว แตกเส้นทางออกเป็นสิบเส้นจากสถานะเดียวกันเป๊ะ ๆ เพื่อเทียบว่าการตัดสินใจแบบไหนดีกว่า — เป็นท่าที่ tree search และ best-of-n sampling บนงานที่มี state ต้องการ แต่ทำได้ยากมากถ้า sandbox ของคุณคือคอนเทนเนอร์ธรรมดา
จุดที่ทำให้ย้ายเข้ามาได้ง่าย: API เข้ากันได้กับ E2B
ส่วนที่ลดแรงเสียดทานมากที่สุดคือ AgentENV เปิด HTTP API ที่เข้ากันได้กับ E2B — ชี้ตัวแปร E2B_API_URL มาที่เซิร์ฟเวอร์ตัวเอง แล้วใช้ E2B SDK ตัวมาตรฐานทั้ง Python และ TypeScript ได้โดยไม่ต้องแก้โค้ดเลย
นี่คือกลยุทธ์ที่ฉลาด: E2B เป็นบริการ sandbox แบบ hosted ที่คนสร้าง agent ใช้กันเยอะอยู่แล้ว การเลือกทำ API ให้ compatible แทนที่จะออกแบบใหม่ทั้งหมด แปลว่าใครที่เขียนโค้ดไว้กับ E2B อยู่แล้วสามารถ ย้ายมารันบนเครื่องตัวเองได้ด้วยการเปลี่ยน environment variable ตัวเดียว
ฝั่ง CLI (aenv) ก็หน้าตาคุ้นมือคนใช้ Docker:
# ดึงอิมเมจมาทำเป็น template
aenv pull docker.io/library/ubuntu:latest --name ubuntu
# สร้าง sandbox แล้วเข้า shell เลย
aenv start ubuntu
aenv start ubuntu --detach # เอาแค่ ID ไม่ต้อง attach
aenv exec <sandbox-id> ls -la / # ยิงคำสั่งเดียวจบ
aenv pause <sandbox-id>
aenv resume <sandbox-id>
aenv timeout <sandbox-id> 600 # ต่ออายุ TTL อีก 600 วินาที
aenv list พ่นตารางเมื่ออยู่บน TTY และพ่น JSON เมื่อถูก pipe ต่อ (สั่ง override ได้ด้วย --output table|json) — รายละเอียดเล็ก ๆ ที่บอกว่าคนออกแบบคิดถึงการเอาไปต่อกับสคริปต์จริง
ข้อควรรู้ก่อนลองจริง — และคำเตือนเรื่องความปลอดภัย
ข้อกำหนดของระบบไม่ใช่ของเบา: ต้องเป็น Linux kernel 6.8 ขึ้นไป และต้องเข้าถึง /dev/kvm ได้เพื่อรัน Firecracker ส่วนสคริปต์ติดตั้งอัตโนมัติรองรับเฉพาะ Ubuntu 24.04 (ทางเลือกอื่นคือ Docker หรือคอมไพล์เอง ส่วนการดีพลอยแบบคลัสเตอร์ด้วย Docker Compose / Kubernetes อยู่ในเอกสารแยก)
และจุดที่ ห้ามมองข้าม — README ขึ้นกล่องเตือนไว้ชัดว่า:
AgentENV ยังไม่รองรับการทำ authorization อย่าเปิด API ออกสู่เครือข่ายสาธารณะ ให้รันบนเครือข่ายที่เชื่อถือได้เท่านั้น หรือวางไว้หลัง proxy ที่ทำ authorization พร้อมการควบคุมเครือข่ายที่เหมาะสม
แปลตรง ๆ คือถ้าเปิดพอร์ต 8000 ออกอินเทอร์เน็ต เท่ากับยื่นสิทธิ์สร้าง VM บนเครื่องคุณให้คนทั้งโลก นี่เป็นซอฟต์แวร์ที่ปล่อยออกมาจากระบบภายในของแล็บ ไม่ใช่ผลิตภัณฑ์ที่ผ่านการทำ hardening มาแล้ว
มุมมอง AI Curator
สิ่งที่น่าสนใจที่สุดของข่าวนี้ไม่ใช่ตัวเลข 50 ms แต่เป็น สิ่งที่การเปิดซอร์สชิ้นนี้เผยให้เห็นเกี่ยวกับต้นทุนจริงของการเทรน agent
ตลอดปีที่ผ่านมา บทสนทนาเรื่อง “โมเดลเปิด” วนอยู่กับคำถามเดียวคือน้ำหนักโมเดลเปิดหรือไม่เปิด แต่คนที่เคยลองเทรน agent เองรู้ดีว่าน้ำหนักคือของที่ ได้มาฟรีที่สุด ในสมการ ส่วนที่แพงและลอกยากคือ สนามซ้อม — สภาพแวดล้อมที่ verify ผลได้จริง รันได้เป็นแสนตัวพร้อมกัน และถูกพอที่จะทิ้งได้ นี่เป็นแพตเทิร์นเดียวกับที่เราเห็นในโพสต์ KAT-Coder-V2.5 เมื่อวานที่ทีม KwaiKAT ทุ่มเทให้ AutoBuilder จนดันอัตราสร้างสภาพแวดล้อมสำเร็จจาก 16.5% เป็น 57.2% — คนละทีม คนละประเทศ แต่ค้นพบว่าคอขวดอยู่ที่เดียวกัน
การที่ Moonshot ยอมปล่อยชั้นนี้ออกมาแบบ MIT จึงเป็นการเปิดที่ “ลึก” กว่าการปล่อยน้ำหนักเสียอีก เพราะมันย่นระยะให้ทีมที่เล็กกว่าข้ามงานวิศวกรรมระบบที่กินเวลาเป็นปีไปได้เลย
สำหรับทีมไทยและอาเซียน ผมคิดว่านี่คือของที่ควรจับตามากกว่าน้ำหนัก K3 ขนาด 1.56 TB ที่แทบไม่มีใครในภูมิภาคมีเครื่องรันไหว — เพราะ AgentENV ไม่ต้องใช้ GPU มันคืองานฝั่ง CPU/หน่วยความจำล้วน ๆ ทีมที่มีเซิร์ฟเวอร์ระดับกลางไม่กี่เครื่องก็ตั้งฟาร์ม sandbox ของตัวเองได้ ซึ่งเปิดประตูสองบานที่เป็นจริงกว่าการเทรนโมเดลฐาน: (1) การ fine-tune แบบ RL บนงานเฉพาะทางภาษาไทย เช่น agent ที่ต้องทำงานกับระบบ ERP หรือเอกสารราชการไทย ที่คุณสร้าง environment ให้ตรวจผลอัตโนมัติได้; และ (2) การใช้เป็น runtime ให้ agent ที่รันจริงในโปรดักชัน ไม่ใช่แค่ตอนเทรน — เพราะความเข้ากันได้กับ E2B แปลว่าองค์กรที่ติดเรื่อง data residency สามารถถอดจากบริการ sandbox ต่างประเทศมารันในประเทศได้โดยแทบไม่ต้องแก้โค้ด
ข้อควรระวังคือ อย่าเพิ่งเอาไปวางในโปรดักชันแบบเปิดสู่ภายนอก จนกว่าเรื่อง authorization จะมาถึง repo อายุห้าวันกับ 11 คอมมิตแรกยังเป็นซอฟต์แวร์ที่ต้องอ่านโค้ดก่อนไว้ใจ — แต่ในฐานะเครื่องมือทดลองภายใน มันมาถูกจังหวะพอดี
แหล่งข่าว
อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา
Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ
Betelgeuse ฟอร์ก llama.cpp ที่เปิดเมื่อ 31 ต.ค. ดึง expert จาก NVMe เข้า VRAM ตามต้องการ อ้าง 22 tok/s แบบไม่ทิ้ง expert แต่ README เตือนเองว่ายังทดลองและตัวเลขมาจากคนละรอบ วันเดียวกันผู้พัฒนา Basalt เผยผลวัดว่าแฟล็กเร่งความเร็วทำคุณภาพ Q8 ตกไปใกล้ Q2
กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง
ต่อจากที่เราพบกฎนี้ในไบนารี Claude Code ผู้ใช้เริ่มรายงานว่างานเชิงพาณิชย์ถูกปฏิเสธ และ Tom's Hardware กับ Mashable หยิบไปรายงาน แต่เมื่อไล่ issue ที่อ้างถึง พบว่าหลายรายการเกิดก่อนกฎจะมา จึงน่าจะเป็นตัวกรองด้านไซเบอร์ ส่วน Anthropic ยังไม่ชี้แจง
Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้
รายงานอิสระพบว่าฟีเจอร์ agent_summary ของ Claude Code ส่ง transcript เต็มของ background agent ไปถามสถานะทุก ~30 วินาที คิดเป็น 16.4% ของค่าใช้จ่ายในระบบของผู้วัด Issue เปิดมาตั้งแต่ ส.ค. ยังไม่มีสวิตช์ปิดที่รองรับ เราตรวจพบโค้ดนี้ใน 2.1.314 และพบกฎใหม่เรื่องเกมที่ไม่อยู่ใน changelog